Sap query инструкция на русском

Время на прочтение
8 мин

Количество просмотров 68K

Система SAP ERP содержит множество отчетов с огромным количеством полей. Для настройки отображения нужных полей существует механизм, позволяющий скрыть лишние поля, изменить порядок, выполнить сортировку, подвести промежуточные и общие итоги. Ко всему прочему, система позволяет хранить несколько вариантов настроек и быстро выбирать требуемый.

Со временем у конечного пользователя появляется необходимость в отчетах, в которых присутствуют как стандартные поля, так и дополнительные. Примером могут послужить такие отчеты, как история по счёту главной книги, открытые счета-фактуры от поставщиков, список клиентов.

В случае если отчеты довольно специфичны или имеют некую нестандартную функциональность, для их реализации приходится обращаться к программистам. В остальных случаях достаточно воспользоваться SAP Query.

Инструмент SAP Query позволяет создавать отчёты без значительных трудозатрат.

Ниже будет рассмотрен пример создания отчета средствами SAP Query.

Основные шаги для создания отчета:

  1. Создание инфо-набора
  2. Создание группы пользователей, присвоение ей инфо-набора
  3. Создание запроса на базе инфо-набора.

Постановка задачи

Время от времени появляются ситуации, в которых пользователь не может разобраться с причинами ошибки «Превышена стоимость договора» в заказах на поставку. В большинстве случаев причину подобной ошибки легко найти.
Но если в контракте 1000 позиций, и по какой-то из них стоимость в поступлении больше, чем стоимость в позиции контракта (при этом стоимость в контракте равна стоимости в заказах), то выявить данную позицию становится проблематично.

В системе существуют отчеты, показывающие стоимость позиций заказа к позиции контракта или документы поступления со ссылками на заказ на поставку. Единого отчета нет.

Необходимо создать отчет, отображающий заданные контракты по позициям. Каждая позиция должна отображать свою стоимость, стоимость позиций заказов на поставку, стоимость поступлений, стоимость счетов-фактур. Все стоимости должны отображаться во внутренней валюте.
Так же необходимо добавить признак, позволяющий отображать только проблемные позиции.

Создание инфо-набора

Инфо-набор должен содержать перечень полей, которые требуется отобразить в отчете. В нашем наборе будут созданы такие поля, как номер контракта, позиция контракта, стоимость позиции в контракте, стоимость в заказах на поставку, стоимость поступлений, стоимость счетов-фактур.

Запустите транзакцию SQ02.

image

  • Введите имя Инфо-набора «Z_SUPPLY_TO_CONTRACT»и нажмите кнопку «Создать»
  • Определите описание инфо-набора «Поступление к контрактам»
  • Введите имя таблицы EKPO (см. Рисунок 2). Это стандартная таблица с позициями документов закупки, включая контракты.

image

SAP предлагает несколько источников для создания инфо-набора, это:

  • объединение таблиц (англ. join)
  • считывание таблицы напрямую
  • логическая база данных
  • сбор данных программой

Каждый из источников данных имеет свои особенности, которые не обсуждаются в настоящей статье. Мы выбрали таблицу, так как весь отчет будет строиться именно на этой таблице, а остальные данные мы получим через настройку дополнительных полей.

Далее отмечаем пункт «Включить ключевые поля» и подтверждаем создание.

image

Теперь мы находимся на первом экране ведения инфо-набора.

image

Экран разделен на 3 части:

  • Слева — таблицы и дополнительные поля
  • Справа сверху — группы полей, которые должны попасть в запрос и, в дальнейшем, в отчет
  • Справа снизу — детальная информация по полям из группы полей. Для отображения необходимо дважды кликнуть по требуемому полю из группы полей

Если на предыдущем экране выбран тот же пункт с ключевыми полями, то в группе полей должны отображаться номер документа закупки и позиция. Если нет, то включите эти поля (правой кнопкой мы по полю из таблицы и выбрать пункт «включить поле в группу полей»), или исключите лишние.

Затем следует добавить оставшиеся поля, необходимые для нашего отчета. Для этого следует нажать кнопку на панели инструментов «Дополнительная информация» (F5). Для переключения в исходное положение следует нажать кнопку «Группы полей» (F6).

image

Правая часть полностью преобразилась. На первом экране расположены дополнительные поля, таблицы, структуры и ссылки на код.

Создадим требуемые нам поля. Для этого необходимо нажать на кнопку «Создать» (кнопка в виде белого листа). В открывшемся окне следует указать имя нового поля и выбрать пункт «Дополнительное поле»

image

Далее следует заполнить наименование, текст заголовка в отчете и ссылку на поле-образец «EKPO-BRTWR». Формат нашего поля будет скопирован с образца.

image

Следующее поле создается аналогично, за исключением порядкового номера поля.

image

Стоимость поступлений и стоимость счетов-фактур будем брать из истории заказа на поставку из таблицы EKBE.

image

image

Добавленные поля отображаются в левом блоке в ветке «дополнительные поля».
Данные поля следует добавить в группу полей. Для этого переключитесь в режим группы полей (кнопка «Группа полей») и щелкнув правой кнопкой мыши выберите пункт «Добавить в группу полей».
Затем возвращаемся обратно в режим дополнительной информации.

Определим правила формирования стоимости позиции контракта.
Для этого необходимо установить курсор мыши на требуемой позиции и нажать кнопку «Кодировка для дополнений».

image

Зададим следующий код для поля «BRTWR»:

data:
  ii_WKURS like EKKO-WKURS.

SELECT SINGLE WKURS INTO ii_WKURS FROM EKKO
  WHERE EBELN = EKPO-EBELN.

CLEAR BRTWR.

IF EKPO-LOEKZ IS INITIAL.
  BRTWR = EKPO-NETPR / EKPO-PEINH * EKPO-KTMNG * ii_WKURS.
ELSE.
  BRTWR = '0'.
ENDIF.

Определяем переменную для курса валюты, в которой ведется контракт. Затем получаем ее значение.
Если позиций контракта не удалена, то стоимость равна произведения количества и цены, с учетом количества единицы цены и курса валюты. Если контракт в валюте учета, то система автоматически равна 1.
Если позиция удалена, то стоимость рана 0.

Код для поля «ORDER_BRTWR»:

data:
  s_NETPR like EKPO-NETPR,
  s_PEINH like EKPO-PEINH,
  s_MENGE like EKPO-MENGE,
  c_BRTWR like ORDER_BRTWR,
  i_ebeln like EKKO-EBELN,
  i_WKURS like EKKO-WKURS.

ORDER_BRTWR = '0'.

select NETPR PEINH MENGE EBELN
  INTO (s_NETPR, s_PEINH, s_MENGE, i_ebeln)
  from EKPO as e
  where
    e~KONNR = EKPO-EBELN AND
    e~KTPNR = EKPO-EBELP AND
    e~LOEKZ = ''.

  SELECT SINGLE WKURS INTO i_WKURS FROM EKKO
    WHERE EBELN = i_ebeln.

    CLEAR c_BRTWR.
    c_BRTWR = s_NETPR / s_PEINH * s_MENGE * i_WKURS.
    ORDER_BRTWR = ORDER_BRTWR + c_BRTWR.
endselect.

Все аналогично с учетом того, что позиций заказов для одной позиции контракта может быть несколько.

Код для поля «DMBTR»:

data:
  s_SHKZG like ekbe-SHKZG,
  s_DMBTR like ekbe-DMBTR.

DMBTR = '0'.

select DMBTR SHKZG INTO (s_DMBTR, s_SHKZG) from EKBE as e
  INNER JOIN EKPO as z
    ON e~EBELN EQ z~EBELN AND
      e~EBELP EQ z~EBELP
  where
    z~KONNR = EKPO-EBELN AND
    z~KTPNR = EKPO-EBELP AND
    e~VGABE = '1'.
  if s_SHKZG = 'S'.
    DMBTR = DMBTR + s_DMBTR.
  else.
    DMBTR = DMBTR - s_DMBTR.
  endif.
endselect.

Для документов поступления мы сразу берем в расчет стоимость во внутренней валюте. По этой причине нет необходимости пересчитывать валюту. В документах поступления отсутствует признак удаления, так как для бухгалтерских проводок возможно только сторнирование. В связи с этим по полю «EKBE-SHKZG» определяем прямой это документ или сторнирующий.

Код для поля «F_DMBTR»:

data:
  s_SHKZG_f like ekbe-SHKZG,
  s_DMBTR_f like ekbe-DMBTR.

F_DMBTR = '0'.

select DMBTR SHKZG INTO (s_DMBTR_f, s_SHKZG_f) from EKBE as e
  INNER JOIN EKPO as z
    ON e~EBELN EQ z~EBELN AND
      e~EBELP EQ z~EBELP
  where
    z~KONNR = EKPO-EBELN AND
    z~KTPNR = EKPO-EBELP AND
    ( e~VGABE = '2' OR e~VGABE = '3' ).
  if s_SHKZG_f = 'S'.
    F_DMBTR = F_DMBTR + s_DMBTR_f.
  else.
    F_DMBTR = F_DMBTR - s_DMBTR_f.
  endif.
endselect.

Сумма для счетов-фактур рассчитывается аналогично поступлению. При этом для счетов-фактур следует учитывать такие операции как доп. дебетование и доп. кредитование.

Далее следует перейти во вкладку «Критерии выбора». Там мы создадим поле «Номер контракта» и признак «только позиции с превышением».

При создании следует учитывать, что «Критерий выбора» — это поле, по которому выполняется ограничение, а «Параметр» — это некий признак, которому следует задать некий функционал.

Создадим критерий выбора «Номер контракта».

image

и параметр «Только позиции с превышением»

image

Обратите внимание на то, что параметр в поле «ДопИнфо» содержит текст «AS CHECKBOX» для того, чтобы отобразиться в качестве чекбокса.

Для критериев выбора «Номер контракта» каких то дополнительных настроек не требуется. Отчет будет ограничиваться по полю, указанному в настройках. Для параметра же внесем ограничения в формируемый отчет. Для этого перейдем на вкладку «Кодировки» и выберем фрагмент кодировки «5 Обработка записей».

image

и добавив код:

CHECK EKPO-BSTYP = 'K'.

IF Z_ONLY = 'X'.
  CHECK BRTWR < DMBTR.
ENDIF.

Этим кодом мы ограничиваем вывод только тех записей, для которых BRTWR < DMBTR, т.е. стоимость позиции контракта меньше стоимости поступлений. Так же мы ограничиваем записи по типу «Контракт».

Обратите внимание, что на момент проверок данные поля должны быть рассчитаны. Именно по этой причине для данной проверки последовательный номер был указан равным 10 (любой номер, превышающий номера предыдущих полей).

Теперь сохраняем инфо-набор и генерируем его image.

Создание группы пользователей

Группы пользователей обеспечивают контроль доступа к инфо-наборам и запросам.

Перейдите по меню «Среда» -> «Группы пользователей» с первого экрана ведения инфо-набора.

image

  • Вводим имя группы пользователей «ZMM»
  • Нажимаем кнопку «Создать»

image

  • Определяем название «Отчеты ММ»
  • Нажимаем кнопку «Сохранить». На этом этапе система может запросить ключ разработчика или запрос на перенос
  • Нажимаем кнопку «Присвоить пользователей и инфо-наборы»
  • В открывшемся окне вводим пользователей, для которых предназначен данный отчет
  • Сохраняем внесенные изменения

image

  • Нажимаем кнопку «Присвоить инфо-наборы»

image

  • Прокручиваем список вниз, чтобы найти пользовательские инфо-наборы и отмечаем созданный ранее инфо-набор «Z_SUPPLY_TO_CONTRACT»
  • Сохраняем

Создание запроса

Запрос — это следующий шаг формирования отчета после создания инфо-набора и группы пользователей. На этом шаге определяется окончательный состав полей, которые войдут в отчет, порядок полей, внешний вид отчета, сортировка, итоги и прочее.

Запускаем транзакцию SQ01.

image

Проверяем, что работаем с группой пользователей, созданной ранее. (см. название группы в верхней части экрана). Если нет, нажимаем кнопку «Другая группа пользователей» (Shift + F7) и выбираем нужную группу.

Вводим имя «Z_SUPPLY» и нажимаем кнопку «Создать». Система выведет список инфо-наборов, привязанных к данной группе пользователей. Выбираем наш инфо-набор и подтверждаем ввод.

Формат списка желательно сопоставить с существующим форматом печати, иначе отчет не может быть напечатан. Распространенные форматы: 65×132 и 65×80. Оставим формат по умолчанию: 0 строк (без ограничения) и 83 столбца.

image

Назовем отчет «Поступление к контрактам» и перейдем непосредственно к «рисованию» отчета, нажав кнопку «Основной список».

image

На экране основного списка в левой части расположены поля, которые можно добавить в отчет. В левой нижней части отображены свойства выделенного элемента, а основная часть — это графическое представление будущего отчета.

Раскроем список полей слева и отметим поля, которые должны попасть в отчет. Поля добавляются в том порядке, в котором мы их отмечаем. В дальнейшем порядок можно изменить, перетащив поле на нужное место в графическом блоке.

Внесем небольшие коррективы. Стоимостные поля отображаются с доп. полем «Валюта» значение которого нам не требуется. Чтобы убрать отображение валюты, выделим стоимостное поле и в левой нижней части экрана выделим пункт «Без поля валюты». Затем нажмем «Apply».

image

На этом наш отчет можно считать сформированным. Сохраняем отчет.

Тут же его можно протестировать, нажав кнопку «Тест».

Создание транзакции для отчета

Убедившись, что отчет полностью удовлетворяет нашим потребностям, следует создать для его запуска транзакцию.

  1. Изначально генерируем программу. Для этого переходим на первый экран транзакции SQ01. В данной транзакции выделяем созданный нами запрос и выбираем в меню «Запрос» -> «Другие функции» -> «Сгенерировать программу».
  2. После генерации программы получаем имя программы в меню «Запрос» -> «Другие функции» -> «Просмотреть имя отчета».
  3. Формируем транзакцию через SE93.
    1. Указываем имя транзакции
    2. Нажимаем кнопку «Создать»
    3. Указываем название транзакции
    4. Отмечаем пункт «Программа и экран выбора»
    5. Подтверждаем ввод
    6. В открывшемся экране в поле «Программа» вводим ранее полученное имя отчета
    7. Отмечаем GUI-способность
    8. Сохраняем

image

Теперь можно формировать отчет, используя транзакцию.

image

P.S.

  1. На некоторых экранах может отображаться в заголовке «Изменение» вместо «Создание». Это связано с тем, что отчет был создан ранее
  2. Приведенный код вряд ли является наиболее оптимальным. Если Вы считаете, что Ваш вариант лучше, готов его рассмотреть и заменить
  3. Существует несколько вариантов формирования данного отчета в SAP Query. Приведенный вариант не является оптимальным. Но он раскрывает возможности SAP Query
  4. Я всегда рад конструктивной критике

Думаю, за историю внедрения SAP ERP (SAP S/4HANA) накопилось довольно много документов, описывающих создание отчета с использованием SAP Query. И думаю, многие консультанты умеют обращаться с этой функциональностью или у них есть документ, описывающий процесс создания таких отчетов. Тем не менее выкладываю старый пример создания отчета SAP Query (нашел в закромах, разбирая накопившиеся за годы файлы) сделанный по принципу “how to” может кому-то пригодится и он найдет что-то новое. Отчет будет с использованием нескольких таблиц и с разными принципами их соединения и запускаться через транзакцию с вариантом.

Документ был создан во времена классической SAP ERP, но и в эпоху S/4HANA SAP Query все еще актуален. По тексту даны комментарии для особенностей S/4HANA.

Введение

Итак, бизнес-ситуация:

Есть MM-заказ, поступление материала, поступление счета, FI-документ. В заголовке FI-документа указан номер счета-фактуры, а в позиции кредитора – дата получения счета-фактуры. Все стандартно.

Есть таблица, в которой хранится дополнительная информация по этой бизнес-операции (например, какие-то статусы). В данном случае, что это за дополнительная информация и что это за таблица (пусть даже это Z-таблица) – не важно, эта таблица нас интересует, прежде всего, с точки зрения варианта ее соединения в Query для получения данных в отчете.

Пусть, для примера, это будет таблица, где хранятся документы DMS – таб. DRAW и нас интересует статус документа, поле DOKST.

Задача: сверить значение статуса в таблице с наличием в FI-документе данных о номере счета-фактуры и даты получения счета-фактуры.

Усложнение задачи: часть документов сторнирована, соответственно для них не нужно проверять наличие данных, так как они могут быть неправильными.

Как известно, в первоначальном FI-документе, после сторно поступления счета в MM, данные о том, каким документом он сторнирован, не появляются. Для этого нужно анализировать данные в MM (в данном случае тр. J3RCREV не запускалась и позиции не выравнены).

И, самое главное усложнение – общее количество документов несколько сотен тысяч, так что вариант ручной проверки исключается.

Что делать консультанту? Звать на помощь программиста, объяснять ему на пальцах как сделать простенький проверочный отчет или писать спецификацию? Или оперировать сотнями тысяч записей в Excel?

Или использовать инструмент Query?

Запускаем тр. SQ02 «Инфо-набор» (я не буду указывать пути по меню, желающие могут найти эти пути, воспользовавшись кнопкой «Бинокль» на основном экране SAP Easy Access или тр. SEARCH_SAP_MENU «Поиск в SAP-меню»).

1.     Выбор рабочей области

Выбираем стандартную рабочую область – наши инфо-набор и запрос будут видны только в нашем манданте:

Результат:

2.     Создание группы пользователей

Создадим группу пользователей Z_DEMO_QUERY.

Находясь в тр. SQ02 переходим в ведение групп пользователей.

или тр. SQ03

3.     Присвоение пользователя группе пользователей

тр. SQ03.

Указываем своего пользователя:

Присваиваем своего пользователя нашей группе:

Сохранить.

Потом этой группе присвоим еще и инфо-набор.

4.     Создание инфо-набора

Приготовления закончены, теперь, собственно дело…

Назовем наш инфо-сет Z_DEMO_QUERY_INFO_SET

Находясь в тр. SQ03 переходим к созданию инфо-набора:

или тр. SQ02

Дальше:

Выберем «включить ключевые поля», если нужно потом добавим другие.

Дальше:

Нажимаем «Оператор соединения»:

Переходим в графический редактор и пытаемся соединиться с таблицей RBKP. Нажимаем «Вставить таблицу», указываем RBKP:

И получаем соединение:

Но вот незадача, номера документов в таблицах разные, по полю BELNR соединять записи нельзя.

Но, у нас есть другая связка, в поле BKPF-AWKEY лежит номер MM-фактуры и год. Пытаемся соединиться.

Удаляем соединение через контекстное меню соединения:

И проводим мышкой линию от BELNR к AWKEY:

И резонно получаем ошибку:

Поля то разные. Тут нужен другой способ соединения.

Удаляем таблицу RBKP – выделяем таблицу и нажимаем «Удалить таблицу»:

Возвращаемся на экран изменения инфо-набора – нажимаем «Инфо-набор».

Способ соединения таблиц №1

Нажимаем «Дополнительная информация» на экране изменения инфо-набора:

На вкладке «ДопИнфо» Нажимаем «Создать»:

Выбираем «Дополнительная таблица», указываем RBKP:

По умолчанию система опять предлагает соединение по номеру документа:

Но мы изменим это на AWKEY:

Важно отметить, что это не совсем правильно. Поле AWKEY это поле типа CHAR длинной 20 символов и там лежит 14 символов: Номер MM-документа + Год, а мы это поле присваиваем полю BELNR типа CHAR длинной 10 символов. Но на наше счастье в AWEKEY первые 10 символов и есть номер MM-документа и система не ругается на несовпадение полей, ошибку «Некорректные условия соединения» мы не получаем. Если все делать правильно, то можно воспользоваться способом №2 с использованием кодирования, а тут пока так.

Создали соединение таблиц BKPF и RBKP:

Теперь нужно соединиться с таблицей со статусами, пусть это будет таб. DRAW.

На экране «Изменение инфо-набора» нажимаем «Дополнительная информация»

На вкладке «ДопИнфо» Нажимаем «Создать»:

Способ, который был описан ранее, в данном случае не работает, так как нам нужна выборка по неключевому полю DOKST, которое мы будем связывать, например, с BKPF-XREF1_HD.

Способ соединения таблиц №2

Придется воспользоваться услугами кодирования.

Для начала создадим поле Z_STATUS, куда поместим считанный из соединенной таблицы DRAW статус.

На экране изменения инфо-набора нажимаем «Дополнительная информация»

На вкладке «ДопИнфо» Нажимаем «Создать»:

Выбираем создания дополнительного поля Z_STATUS:

Определим поле. Формат можно указать явно:

а можно через ссылочное поле DRAW-DOKST:

И не забываем указать последовательность фрагмента кода. Для порядка это будет = 2.

Теперь у нас определено поле, которое можно использовать в отчете и заполнить данными из связанной таблицы:

На вкладке «ДопИнфо» помещаем курсор на строчку определения поля Z_STATUS и нажимаем «Кодировка для дополнения»:

Сам код:

clear Z_STATUS.        <em>«очистить</em><em> </em><em>поле</em>

data N25(25) type N.   <em>«для появления ведущих 0</em>

N25 = BKPFXREF1_HD+0(11). <em>«добавляем ведущие 0</em>

if BKPFXREF1_HD ne SPACE. <em>«с пусто не работаем</em>

select single DOKST    <em>«считываем поле DOKST</em>

from DRAW            <em>«из таб. </em><em>DRAW</em>

into Z_STATUS        <em>«</em><em>в</em><em> </em><em>поле</em><em> Z_STATUS</em>

where PRENR = N25.   <em>«условие выборки из БД (считаем его уникальным, это пример)</em>

endif.

Нажимаем «Сохранить» и «Сгенерировать». На предупреждения о том, что поля нет в группе полей пока не обращаем внимание.

Способ соединения таблиц №3

Теперь нужно присоединить таблицу с позицией FI-документа.

Нажимаем «Оператор соединения» на экране изменения инфо-набора. Опять попадаем в графический редактор соединений таблиц:

Примечание: для SAP HANA подход другой, там BSEG прозрачная таблица, можно соединять с нет, ниже описано для классической SAP ERP.

Думаете, будем добавлять BSEG? Нет, BSEG присоединить не получится, это кластерная таблица. Нажимаем «Вставить таблицу»:

Получаем ошибку:

Будем добавлять BSIK и BSAK.

Тут есть один момент. Запись будет или в BSIK или в BSAK, соответственно, если мы сделаем обычное соединение BKPF с BSIK и BKPF с BSAK, то записи у нас никогда не выберутся, так как JOIN дает результат, только если записи есть во всех таблицах.

Тут нам на помощь придет левый JOIN. При таком соединении возвращаются все данные из «левой» таблицы, даже если не найдено соответствий в «правой» таблице. Вдаваться в подробности не буду, о JOIN’ах можно почитать в интернете, например, тут (Рисунок 4).

Итак, добавляем BSIK, соединяем ее по номеру документа, БЕ и году с BKPF. Поля соединяем «ниткой» простым перетаскиванием с нажатой правой кнопкой мыши от одного поля к другому.

В контекстном меню соединения выбираем «Левый внешний оператор соединения»:

Аналогично делаем для BSAK. Получается так:

Способ соединения таблиц №4

Теперь самый простой способ соединения.

Нам нужно получить электронный адрес автора документа.

Добавляем таблицы USR21 и ADR6:

Поля с одинаковым названием система соединила сама, нам остается соединить BKPF и USR21 по имени пользователя:

Нажимаем «Инфо-набор» и на экране изменения инфо-набора нажимаем «Сохранить» и «Сгенерировать».

С соединениями все. Теперь выбираем поля, которые будут использоваться в отчете.

На экране изменения инфо-набора нажимаем «Группы полей» и выбираем Группа полей 01 (заголовок группы полей, куда будем добавлять поля, должен быть активен). Групп полей можно создать несколько, но в данном случае сложим все в одну:

Слева разворачиваем список полей таблиц и выделяем поля, которые хотим добавить в группу 01:

Через контекстное меню добавляем поля в группу (или нажимаем кнопку на панели инструментов левого фрейма).

  • Из таб. BKPF нас интересует поле XBLNR – там лежит номер фактуры и XREF1_HD – там связка со статусом. Также добавим поля «Вид документа» и «Дата проводки» для ограничений выборки;
  • Из таб. RBKP нас интересует поле STBLG – там лежит номер документа сторно;
  • Из таб. BSIK нас интересует поле XREF1 – там лежит дата получения сч.ф;
  • Из таб. BSAK нас интересует поле XREF1 – там лежит дата получения сч.ф;
  • Из таб. ADR6 нас интересуют поле Адрес электронной почты;
  • Также добавим дополнительное поле Z_STATUS.

Вроде бы все. Но есть один нюанс…

У нас 2 поля XREF1. Одно из BSIK, другое из BSAK. C этим можно смериться, а можно переложить все в одно поле, которое и будет в отчете.

Нажимаем «Дополнительная информация»:

Нажимаем «Создать»:

И создаем дополнительное поле Z_XREF1:

Не забываем про последовательность фрагмента кода, у нас он уже = 3

Теперь немного кодирования. Находясь на нужной записи нажимаем «Кодирование для дополнения»:

И пишем простой код:

CLEAR Z_XREF1.

IF BSIKXREF1 NE SPACE.

Z_XREF1 = BSIKXREF1.

ENDIF.

IF BSAKXREF1 NE SPACE.

Z_XREF1 = BSAKXREF1.

ENDIF.

Нажимаем «Сохранить» и «Сгенерировать»

Не забываем добавить поле в группу полей.

Также не забываем присвоить группу пользователей нашему инфо-набору в тр. SQ03:

С инфо-набором все.

5.     Создание запроса

Если мы находимся НЕ в стандартной рабочей области – переходим в стандартную рабочую область (см. п.1).

Находясь в тр. SQ02 переходим к ведению запросов:

или тр. SQ01.

Если мы находимся не в нашей группе пользователей, то меняем группу пользователей на нашу:

Указываем имя нашего запроса Z_DEMO_QUERY и создаем его:

Выбираем наш инфо-сет:

Заполняем заголовок и нажимаем «Основной список»:

Раздвигаем левый фрейм и выбираем нужные нам поля для селекционного экрана нашего отчета и для вывода в самом отчете:

Нажимаем «Сохранить», потом «Тест» запрос генерируется.

Далее появляется окно:

Варианта ALV-отчета у нас еще нет, а позиций ставим побольше, у нас ведь много документов:

Заполняем селекционный экран, нажимаем на кнопку и получаем результат:

Дополнение

Это не обязательно, но желательно…

Когда мы будем создавать транзакцию, можно указать вариант селекционного экрана, с которым эта транзакция будет запускаться. В принципе, всегда нужно создавать вариант по умолчанию, чтобы можно было управлять действиями пользователей, и они не запускали «тяжёлые» отчеты без указания критериев выбора и эти отчеты не нагружали систему, а потом не вываливались по таймауту.

Итак, на селекционном экране нашего запроса нажимаем «Сохранить» и создаем вариант ZMAIN, который включим потом в транзакцию. Указываем атрибуты полей и, если нужно, значения:

Сохраняем.

Если что-то меняем в инфо-наборе, не забываем зайти в изменение запроса и сохранить его для того, чтобы перегенерировался код.

6.     Создание транзакции для запуска отчета

Теперь нужно обеспечить этот запрос соответствующей транзакцией.

Запускаем тр. SE93. Указываем имя будущей транзакции Z_DEMO_QUERY:

Указываем краткий текст. Выбираем «Транзакция с параметрами»:

В качестве транзакции, запускающий наш отчет будем использовать START_REPORT:

Заполняем параметры:

D_SREPOVARIREPORTTYPE = AQ

D_SREPOVARIREPORT = Z_DEMO_QUERY (имя нашей группы пользователей)

D_SREPOVARIEXTDREPORT = Z_DEMO_QUERY (имя нашего запроса)

D_SREPOVARIVARIANT = ZMAIN (имя варианта селекционного экрана)

Сохраняем.

Теперь наш отчет можно запустить транзакцией Z_DEMO_QUERY и поля Дата проводки, БЕ, Финансовый год будут обязательными для заполнения:

7.     «Проваливание»

Если мы хотим «провалиться» в документ из нашего отчета, например, используя тр. FB03 посмотреть FI-документ, то нужно присвоить транзакцию FB03 механизму «отче-отчет» для нашего запроса.

Запускаем тр. SQ01.

Выбираем наш запрос и изменяем его.

Далее выбираем пункт меню «Присвоение отчета»:

Нажимаем «Вставить строчку»:

Выбираем «Другой тип отчета»:

Выбираем «Транзакция»:

Указываем FB03:

Сохраняем присвоение отчетов

Сохраняем запрос.

Запускаем отчет и проваливаемся в строку отчета:

И получаем ошибку:

Транзакция запущена верная, FB03, но, по каким-то причинам, вместо номера документа система подставляет номер документа сторно MM-фактуры.

В принципе, механизм передачи параметров в вызываемую транзакцию основан на PID (GET PARAMETER и SET PARAMETER). У каждого поля свой ID (их можно посмотреть в технической информации к полю).

Вот тут и происходит ошибка (это было в классической SAP ERP EhP7 SP5, может сейчас в S/4HANA такого нет). Система передает и для номера FI-документа и для номера MM-документа одно имя параметра ‘BLN’. Запись для поля STBLG идет после BELNR, так что кто последний, тот и попадет в транзакцию через ее GET PARAMETER:

В данном случае способ борьбы с этим: поиск нот, выставление клиентских сообщений в службу поддержки или удаление поля STBLG из отображаемых на экране отчета. На селекционном экране оно остается, ведь мы должны выбрать только не сторнированные в MM документы. То есть, по большому счету, поля STBLG и не должно быть на экране отчета, так что мы ничего не теряем.

Изменяем запрос, удаляем поля из списка отображаемых в отчете:

Сохраняем запрос.

Получаем отчет, в котором можно провалиться в FI-документ:

8.     Перенос между системами

Если мы находимся не в стандартной рабочей области – переходим в стандартную рабочую область (см. п.1).

Находясь в тр. SQ02 переходим к переносу:

Выбираем «Перенос инфо-наборов и запросов», указываем инфо-набор Z_DEMO_QUERY_INFO_SET и запрос Z_DEMO_QUERY. Выбираем опции «Выгрузка»:

Примечание: в данном примере перенос через файл, но можно и через транспортный запрос, для этого выбираем “Экспорт”, а в целевой системе “Импорт”.

Запускаем в тестовом режиме, проверяем что выгрузка возможна:

Возвращаемся, снимаем флаг «Тестовый прогон» и запускаем. Система просит указать имя файла в котором будет сохранено описание нашего инфо-набора и запроса (по умолчанию это в папке по пути: Мои документы -> SAP -> SAP GUI). Указываем имя Z_DEMO_QUERY и сохраняем:

Примечание: появление этого окна зависит от настроек SAP LOGON (можно поменять: в SAP GUI нажимаем кнопку «Настройка локального формата» или нажимаем Alt + F12, потом выбираем пункт меню «Опции…», далее раскрываем папку «Безопасность» и выбираем пункт «Настройки безопасности»):

.

Еще нам нужно перенести нашу группу пользователей Z_DEMO_QUERY. Перенос выполняется аналогично:

Теперь нужно загрузить наш проект в другую систему.

Запускаем тр. SQ02 в другой системе.

Переходим в стандартную рабочую область.

Выбираем пункт меню: Среда -> Переносы.

Выбираем опции «Загрузка» и «Перенос групп пользователей». Снимаем флаг «Тестовый прогон»:

Выбираем файл с нашей группой пользователей:

Аналогично поступаем с файлом с инфо-набором и с запросом:

Перенос самой транзакции тут не рассматривается, это обычная процедура переноса запросов между системами.

Все, можно пользоваться запросом в новой системе.

SAP QUERY

QuickViewer и SAP Query представляют собой управляемые через меню инструменты, которые помогают пользователю составлять списки. SAP Query содержит широкий набор функций для определения отчетов и составления различных типов отчетов (например, прямые списки, статистика и ранговые списки). Пользователь может выбрать данные для списка из любой таблицы R/3.

Transaction:

SQVI QuickViewer

SQ00 SAP Query: Start queries

SQ01 SAP Query: Maintain queries

SQ02 SAP Query: Maintain InfoSet

SQ03 SAP Query: Maintain user groups

Q. What Is SAP Queries

A. Many times a need arises for SAP Users and Functional Consultants to generate quick reports without getting any ABAP coding done – time taken to complete the coding in development, transport and test it in QA system and then transport to production – is sometimes too long. In such cases, ABAP/4 query is a tool provided by SAP for generating these kind of reports.

Type of Report Desired:

Before starting to write an ABAP query, its advisable to decide the type of report that the user wants. ABAP query provides the following type of reports:

Basic List Simple report

Statistics Report containing statistical functions like Average &Percentage

Ranked List Report written for analytical purpose

The output is always seen in the order of Basic List, then Statistics and then Ranked List if any. One ABAP query can have one basic list, maximum of 9 statistics and maximum of 9 ranked lists.

In a nutshell, an ABAP/4 query can be designed in four steps

— Creation of a user group

— Creation of functional area

— Assignment of user group to functional area

— Creation of the query based on functional area

The various objects that form an ABAP query can be created in the following 2 ways:

— Tools => ABAP/4 Workbench => Utilities => ABAP/4 Query

OR

— By executing the transaction codes mentioned below:

SQ01 ABAP/4 Query

SQ02 Functional Area

SQ03 User group

Step I — Create Functional Area

In the functional area section, the user indicates from which part of the SAP database the data is going to be retrieved and how the data is to be retrieved by the query. One functional area can be assigned to many user groups. A functional area can be created with or without a logical database. To create a functional area with a logical database, one has to mention the name of the database and then select the fields from the tables that form the logical database.

ABAP Query Authorizations: To use an ABAP query, the user must have appropriate authorizations. Two ways of providing authorizations to the users are as follows:

— User groups

The user should be a part of at least one user group to run the corresponding ABAP query. This automatically restricts the access of the user to specific functional areas, and thus the corresponding underlying logical databases.

— Authorizations

The authorization object S_QUERY should be used to give proper authorizations to the user for a query. This authorization object has a field named ACTVT which can take values 02 for Change, 23 for Maintain and 67 for Translate.

This value determines whether the user can create and modify the query. The possible authorizations in the object are as follows:

S_QUERY_ALL Change, maintain and translate query

S_QUERY_UPD Change and Translate

Though the general concept of an ABAP query is moderately difficult, the results and the long term use of the ABAP query is worth the effort.

Tips by : Usha Kiran

Links

Writing

ABAP Queries

Report Painter / Report Writer

С помощью Report Painter можно создавать отчеты на основе данных из самых разных приложений (см. предпоследний слайд). Инструменты оформления формуляра позволяют увидеть отчет в той форме, в которой он будет показан при выводе данных. Report Writer отображает структуры строк и столбцов с помощью наборов. Таким образом, он поддерживает более сложные отчеты.

Предлагаемый SAP инструмент СПАО представляет собой онлайновую информационную систему с удобной для пользователя функциональностью, которая помогает осуществлять навигацию по данным. Этот инструмент можно также использовать для анализа данных по всем признакам из описания данных. Интерактивная система СПАО позволяет описать отчет с помощью любых показателей.

В Информационной системе логистики ИСЛ данные можно анализировать с помощью стандартных и гибких аналитических отчетов. Стандартные аналитические отчеты основаны на файлах статистики или информационных структурах в ИСЛ, в которые обновляются важные показатели ннепосредственно из соответствующего приложения. Гибкие аналитические отчеты используются для анализа структур данных SAP и образуют основу для оперативных отчетов.

Transaction:

GRR1 RW: Create Row/Column Structure

GRR2 RW: Change formula

GRR3 RW: Display formula

GR21 Create Library

GR22 Change Library

GR23 Display library

FGRP Report Painter

FGRW Report Writer Menu

GCS1 — Text Field for MasterData Validation (формулы преобразования текстовых полей (FG XGMD)

Create Transport

GR22 — Utility — Transport — Transport Request | Export | Import

SAP LIST

Q. Listing -> внутр. таблица

A.

Приложение ABAP Query используется для создания отчетов, которых еще нет в системе SAP. Он был разработан для пользователей, мало или совсем не знакомых с программированием на ABAP. ABAP Query предлагает пользователям широкий спектр способов определения отчетов и создания различных типов отчетов, таких как базовые списки, статистика и ранжированные списки.
Запрос ABAP состоит из четырех компонентов:

  1. Запросы
  2. ИнфоСеты
  3. Группы пользователей
  4. Перевод запроса

Давайте рассмотрим их подробнее: —

Запросы

Компонент «Запросы» используется конечными пользователями для обслуживания запросов. Можно создавать запросы, изменять запросы и выполнять запросы. Транзакция SQ01

ИнфоСеты

Инфо-наборы — это специальные представления источников данных. Инфо-набор описывает, какие поля источника данных могут сообщаться в запросах. Инфо-набор может быть назначен нескольким ролям или группам пользователей.
Преимущества

  • Создавая инфо-наборы и назначая их ролям или группам пользователей, системный администратор определяет диапазон отчетов, которые отдельные прикладные отделы или конечные пользователи могут создавать с помощью SAP Query.
  • Конечные пользователи могут работать только с теми инфо-наборами, которые имеют отношение к их конкретной области, как это определено ролью или группой пользователей, которым они назначены.

Группы USER

Компонент «Группы пользователей» используется для поддержки групп пользователей (с точки зрения безопасности).
Пользователи, работающие в одном приложении, назначаются в одну и ту же группу пользователей. Не имеет значения, кто на самом деле определил запрос в группе пользователей. Каждый пользователь, входящий в группу пользователей, может выполнить запрос.
Пользователи в группе пользователей должны иметь необходимые полномочия, прежде чем они смогут изменить или переопределить запрос. Каждого пользователя в системе можно отнести к нескольким группам пользователей.

Компонент перевода / QUERY

При определении запросов, инфо-наборов и групп пользователей создается множество текстов. Эти тексты отображаются на языке, который мы выбрали при входе в систему SAP. Мы можем сравнить текст / языки с помощью этого компонента.

Обработка данных в запросах

Данные могут быть обработаны и представлены 3 способами: —

  1. ОСНОВНОЙ СПИСОК — данные представлены в порядке, определенном функциональной областью (поддерживает сортировку и суммирование).
  2. СТАТИСТИКА — показывает статистические данные, рассчитанные на основе основных данных.
  3. РЕЙТИНГОВЫЙ СПИСОКРанжированный список — это специализация статистики. Ex Первая десятка клиентов туристического агентства.

Запрос может иметь один базовый список, до девяти статистических данных и до девяти ранжированных списков.

СОЗДАНИЕ ЗАПРОСА

Шаг 1. Перейти к SQ01. Дайте имя запросу и нажмите кнопку «Создать».

Шаг 2. Дайте описание запроса на следующем экране. Укажите длину вывода и выберите параметр обработки в поле «Параметры дальнейшей обработки». Данные могут отображаться в различных форматах, таких как таблица, загрузка в файл, отображение в Word и т. Д.

Шаг 3. Щелкните на следующем экране, выберите группу полей, которая будет использоваться.

Шаг 4. Щелкните на следующем экране, выберите поля, которые вы хотите отобразить.

Шаг 5. На следующем экране выберите поля выбора, а затем выберите один из типов вывода (базовый, статистический, ранжированный).
В каждом из списков вы можете выбрать различные параметры (например, порядок сортировки полей, изменение длины вывода, цвет столбца, итоговые значения, верхний колонтитул, нижний колонтитул страницы и т. Д.).


Шаг 6. После предоставления всех вышеперечисленных параметров вы можете сохранить запрос и выполнить его.

Примечание:транзакция для создания / поддержки инфо-набораSQ02
Транзакция для создания / поддержки группы пользователей — SQ03

Таблицы запросов Query Designer. Ссылка на отличный документ по пониманию этих таблиц. А так же замечательная схема по связям таблиц.

Understanding the Query Elements — Понимание элементов запросов и таблиц.

RSZELTTXT — Тексты компонентов отчёта

RSZELTXREF — Каталог ссылок на элементы запроса. Полезная таблица, видно инфо-провайдер на котором построен отчёт. В этой таблице различные ссылки на объекты, детали фильтров отчёта, значения по умолчанию, исключения и т.п.

RSRREPDIR — Каталог всех отчётов. Детали отчётности ,такие как ИД запроса, имя владельца, дата последнего изменения, дата создания.

RSZCOMPDIR — Каталог компонентов отчетности

RSZELTDIR — Каталог элементов отчётности

RSZRANGE — сведения обо всех выборках в запросе

RSZSELECT Selection properties of an element

RSZCOMPIC Assignment reuseable component <-> InfoCube

RSZELTPRIO — приоритеты при разрешении коллизий

RSZELTPROP — таблица содержит детали всех свойств запроса, таких как использование иерархий в ограничениях по умолчанию, ячейки готовые для ввода и т.п.

RSZELTATTR Attribute selection per dimension element

RSZCALC — таблица с формулами. Хранит операторы и объекты с которыми идут манипуляции.

RSZCEL Query Designer: Directory of Cells

RSZGLOBV — таблица содержит информацию о глобальных переменных

RSZELTATTR Attribute selection per dimension element

RSZCHANGES Change history of reporting components

RSZELTPROP Element properties (settings)

Теперь краткий экскурс, как же всё таки использовать эти таблицы:

  1. В таблице  RSZCOMPDIR  в поле COMPID  введите техническое имя запроса, что бы получить COMPUID .
  2. Теперь мы имеем COMPUID  запроса, и должны ссылаться на различные таблицы для поиска элементов запроса. В таблице RSZELTXREF , например,  перечень ссылок.  Вводим в поле SELTUID значения из поля COMPUID и в поле LAYTP получаем в поле LAYTP вид ссылки на запрос.
  3. С каждым соответствующим SELTUID  у нас есть свой TELUID .  Теперь посмотрим как мы можем получить различные элементы зарпоса. Например в поле LAYTP  значение SOB говорит о том, что перед нами фильтр отчёта.  В одном фильтре может быть несколько ограничений, что бы посмотреть их мы знаем, что в поле LAYTP   должно стоять AGG. Теперь берём значение поля TELUID  и копируем его в поле SELTUID   по той строке, по которой указано SOB.

Каждый функциональный консультант, занимающийся HR/HCM, должен «съесть собаку» при создании оперативных запросов. Потом должно пройти какое-то время, и очередная собака, простите, на подходе. Оперативный запрос — доступный инструмент для быстрого получения данных по персоналу и по объектам организационного менеджмента. В данной заметке я рассмотрю пример его создания с нуля.

0. Задача

В рамках данной заметки я поставлю перед собой следующую задачу: создать оперативный запрос по основным данным персонала, с возможностью использования различных фильтров перед запуском. Например, выбрать всех активных (то есть не уволенных) сотрудников из какой-нибудь организационной единицы.

1. Инфо-набор

Знакомство и погружение в тему оперативных запросов всегда начинается с инфо-наборов. Инфо-набор — это определенный пользователем (консультантом) набор инфо-типов и полей, которые будут доступны для последующего построения отчетов. Инфо-наборы могут быть созданы на основе логической базы данных (ЛБД) или на основе определенной таблицы.

Более подробно про логические базы данных можно почитать здесь: Logical Databases

Почти всегда, по крайней мере в моей практике, я сталкивался с тем, что все инфо-наборы создавались на основании стандартных логических баз данных PCH и PNPCE. Основное отличие этих ЛДБ заключается в следующем:

  • PCH — будет полезна при создании оперативных запросов по объектам организационного менеджмента (например, организационные единицы, квалификации, штатные должности, должности, функциональные сферы и т.д.);
  • PNPCE — будет полезна при создании оперативных запросов по основным данным персонала (например, организационное присвоение, персональные данные, основные выплаты, банковские данные, отсутствия, присутствия и т.д.)
    Создание инфо-набора осуществляется посредством транзакции SQ02

Рисунок 1.

Стоит сразу обратить внимание на поле Query Area

Рисунок 2.

Переводится на русский язык, если я правильно помню, рабочая область. Существует две рабочие области:

  • Стандартная (Standard Area)

    • При использовании стандартной области, все инфо-наборы и запросы остаются в том клиенте системы, в котором вы их создали.
  • Глобальная (Global Area)

    • При использовании глобальной области, все инфо-наборы и запросы становятся доступны во всех клиентах системы, в котором они были созданы. Соответственно, при работе с ними создается транспортный запрос на перенос.

Более подробно про рабочие области можно почитать здесь: Query Areas

Итак, мы остаемся в стандартной рабочей области. Если необходимо ее переключить, выберите в меню Environment -> Query Areas

Рисунок 3.

Введите наименование создаваемого инфо-набора и нажмите на кнопку Create

Рисунок 4.

Еще раз введите наименование инфо-набора и введите наименование ЛБД PNPCE

Рисунок 5.

Теперь необходимо выбрать инфо-типы, которые будут участвовать в создании вашего оперативного запроса. Я ограничусь инфо-типами:

  • 0000 — Мероприятия
  • 0001 — Организационное присвоение
  • 0002 — Персональные данные

Рисунок 6.

Перед вами откроется редактор создаваемого инфо-набора

Рисунок 7.

Слева отображаются инфо-типы и поля, которые могут быть задействованы при создании оперативного запроса, справа — уже выбранные и готовые для использования в оперативных запросах поля.

Оставляю все как есть, и нажимаю на кнопку adhoc8 Generate. По результатам нажатия на эту кнопку происходит генерация инфо-набора и проверка на наличие ошибок. Результатом выполнения данной операции будет появление информационного сообщение вида  adhoc9. Инфо-набор сгенерирован и ошибок не возникло. Поехали дальше.

2. Создание пользовательской группы и присвоение ей инфо-набора

После того, как инфо-набор создан, его необходимо присвоить пользовательской группе. В данную группу также необходимо включить пользователей, которым и станут доступны все оперативные запросы, созданные на основе данного инфо-набора. Создание пользовательской группы выполняется с помощью транзакции SQ03. Введите наименование создаваемой группы и нажмите на кнопку adhoc12

Рисунок 10.

Введите наименование группы и нажмите на кнопку Save

Рисунок 11.

Затем необходимо присвоить новой группе пользователя(ей) и инфо-набор, нажатием на кнопку adhoc15.

Введите имя пользователя (я выберу свой логин), и нажмите на кнопку Assign InfoSets

Рисунок 12.

Выберите из списка свой инфо-набор и нажмите на кнопку Сохранить

Рисунок 13.

В результате появится информационное сообщение вида adhoc18.

3. Создание оперативного запроса

Основная часть работы сделана. Приступаем к созданию оперативного запроса. Запустите транзакцию SQ01

Рисунок 14.

Стоит обратить внимание на пользовательскую группу, которая выбрана при запуске транзакции. Если ваша учетная запись уже присвоена какой-нибудь пользовательской группе, то она, скорее всего, будет вам доступна по умолчанию. Если же нет, ее необходимо сменить. Для этого нажмите на кнопку adhoc20 Other user group

Рисунок 15.

Выберите в списке свою группу, и нажмите на кнопку Choose

Рисунок 16.

Введите наименование запроса, и нажмите на кнопку adhoc23

Рисунок 17.

Подтвердите выбор инфо-набора, на основании которого будет создан запрос

Рисунок 18.

Перед вами откроется редактор запроса

Рисунок 19.

Тут все просто. Слева вверху вы видите инфо-типы, которые были выбраны при создании инфо-набора (см. Раздел #1. Инфо-набор). На основании этих полей мы и будем формировать будущий запрос. Справа будут отображаться поля, которые мы выберем для использования в запросе. Внизу же — область предварительного просмотра данных.

Раскройте группу каких-нибудь полей, в области Field group/fields

Рисунок 20.

Для каждого поля доступны свойства Selection и Output. Основное предназначение этих свойств заключается в том, что выбранное поле может участвовать либо при формировании запроса (то есть доступно на селекционном экране), либо участвовать только в результатах работы отчета (то есть будет доступно непосредственно в запросе). Возможна комбинация обоих свойств. Таким образом вам необходимо определить:

  1. Какие поля будут доступны на селекционном экране
  2. Какие поля будут доступны в результате выполнения отчета

Небольшой юзерхак: если кликнуть правой кнопкой мыши по полю в области Output, вам станет доступно меню выбора того, какие данные необходимо вывести по полю. Например, для поля Табельный номер, помимо самого табельного номера, можно вывести и текст, то есть ФИО сотрудника.

Рисунок 21.

Я буду использовать следующие поля в качестве выборки:

  • Employment Status
  • Organizational Unit

Рисунок 22.

В качестве полей вывода:

  • Personnel Number (включая ФИО сотрудника,  по аналогии с тем, что я показывал на Рисунке 21);
  • Company Code (включая наименование, по аналогии с тем, что показано на Рисунке 21);
  • Organizational Unit (включая наименование, по аналогии с тем, что показано на Рисунке 21);
    Достаточно. Обратите внимание на область предварительного просмотра

Рисунок 23.

Приблизительно так будет выглядеть ваш отчет. Можно также просмотреть его но уже с учетом реальных данных. Для этого выберите какие-нибудь значения для тех полей у которых активирована опция Selection. В моем случае — это Employment Status и Organizational Unit. К примеру, я выберу данные по какой-нибудь организационной единице, и только по активным (не уволенным) сотрудникам

Рисунок 24.

Нажмите на кнопку adhoc32, затем на adhoc33

Рисунок 25.

Можно сказать, что основная часть работы сделана. Сохраните свой запрос.

Небольшой юзерхак: находясь в редакторе запроса, выберите в меню Edit ->  Settings

Рисунок 26.

Активируйте опцию Start via selection screen

Рисунок 27.

Теперь, после запуска вашего оперативного запроса, который производится по нажатию на кнопку adhoc38

Рисунок 28.

Вам станет доступен селекционный экран, который даст вам возможность установить фильтры в предназначенных для этого полях

Рисунок 29.

Ах да, ну и финальный вариант отчета будет выглядеть примерно так:

Рисунок 30.

Резюме

Оперативные запросы — это легко. Признаться, сам я не очень ими восхищаюсь, и стараюсь их не использовать. Ответ на вопрос «почему?» вполне может уместиться в еще одну заметку, в которой я постараюсь привести реальные примеры, чтобы было наглядно. Но тем не менее это доступный инструмент как для консультантов, так и для пользователей для быстрого получения информации по сотрудникам/штатной структуре компании. Удобство также заключается в том, что для любого оперативного запроса можно создать транзакцию, и включить ее в пользовательскую роль, тем самым облегчив жизнь себе и пользователю. Отдельно стоит отметить функцию добавления программируемых полей, которые бывают так нужны пользователям системы. Но это материал для будущих заметок. Оставайтесь на связи.

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Sapsan gsm pro 5t инструкция
  • Sap logon инструкция пользователя на русском языке
  • Sap easy access инструкция пользователя
  • Sapphire 400 биохимический анализатор инструкция
  • Sap logan на ржд инструкция по заполнению

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии