Пошаговые рекомендации по созданию отчётов с использованием SAP Query
В статье демонстрируется применение базовой функциональности SAP Query как мощного и современного средства создания пользовательских отчётов. Применяя приведённые в статье пошаговые рекомендации, вы сможете создать любой необходимый вам отчёт. Список поставляемых SAP инфо-наборов может быть использован в качестве образца для создания собственных отчётов. Вкупе с использованием логических баз данных и программированием дополнительных полей, SAP Query позволяет создавать сложные и функциональные отчёты, которые полностью или в значительной степени удовлетворяют потребностям конечных пользователей, облегчают работу и значительно снижают затраты времени на поиск и обработку информации.
Введение
У конечных пользователей системы SAP ERP часто возникает необходимость создания отчёта, который содержал бы как часть полей стандартного отчёта, так и дополнительные поля. В качестве примеров таких отчётов можно назвать: список клиентов, история по счёту главной книги, открытые счета-фактуры от поставщиков. В системе SAP ERP соответствующие стандартные отчёты содержат избыточную информацию, являются трудночитаемыми и не содержат «нужного» пользователю поля.
Функциональность SAP Query даёт возможность создать «оптимизированные» отчёты в нужном формате без значительных трудозатрат.
В статье я подробно рассмотрю процесс создания «оптимизированного» отчёта средствами SAP Query.
Основные шаги для создания запроса:
- Создайте инфо-набор.
- Создайте группу пользователей и присвойте ей инфо-набор.
- Создайте запрос на базе инфо-набора.
Бизнес-кейс
В нашем примере финансовая служба запросила отчет по бухгалтерским документам в разрезе основного счета и балансовой единицы. Отчет должен делать суммирование по номеру счета и подсчитывать количество проводок по каждому счету, также требуется получить номер недели, которая соответствует дате проводки документа. Из отчёта должна быть возможность перехода в ведение счета главной книги и просмотр бухгалтерского документа.
Создание инфо-набора
Инфо-набор должен содержать поля, которые должны быть отображены в итоговом отчёте. Если какого-либо поля нет в инфо-наборе, то его нельзя включить в запрос. В нашем примере в инфо-набор будут включены следующие поля: балансовая единица, основной счет, сумма во внутренней валюте, номер документа, дата документа, дата проводки, описание счета, номер недели.
Запустите транзакцию SQ02 (см. Рисунок 1).
- Введите имя Инфо-набора «ZZ_SAMPLE_ACCOUNTING»и нажмите кнопку Cоздать.
- Определите описание инфо-набора «Пример инфо-набора: Бухучет»
- Введите имя логической базы данных SDF (см. Рисунок 2). Это стандартная логическая база данных, содержащая данные по бухгалтерским документам и счетам главной книги.
SAP предлагает несколько источников для создания инфо-набора, это:
- объединение таблиц (англ. join),
- считывание таблицы напрямую,
- логическая база данных,
- сбор данных программой.
Каждый из источников данных имеет свои особенности, которые не обсуждаются в настоящей статье. Мы выбрали стандартный источник данных – поставляемую SAP логическую базу данных, которая представляет собой программу, написанную оптимальным и корректным образом, что обеспечивает высокую скорость работы инфо-набора и, как следствие, запроса.
- Подтвердите ввод, нажав кнопку подтверждения .
В открывшемся окне вы увидите список таблиц, которые входят в структуру логической базы данных SDF.
- Выберите таблицы, которые вы будете использовать в инфо-наборе (см. Рисунок 3). В нашем примере это следующие таблицы:
SKA1 Основные записи основных счетов (план счетов),
SKB1 Основные записи основных счетов (балансовая единица),
BSIS Бухгалтерия: вторичный индекс для основных счетов.
- Подтвердите ввод.
Теперь мы находимся на первом экране ведения инфо-набора (см. Рисунок 4.) Экран разделен на три части.
- Левый блок – список таблиц и полей в них.
- Правый верхний блок – список групп полей. Группы полей соответствуют таблицам, выбранным для создания отчета. Чтобы сделать поле доступным для запроса, необходимо включить его в группу полей. Не присвоенное группе поле не может быть включено в отчет.
- Правый нижний блок – детальные параметры поля. Здесь можно изменить описание поля, которое будет отображаться в отчете. Двойной щелчок по полю из левого блока вызовет отображение деталей поля в правом нижнем блоке.
- Щелкните по группе полей Основные записи основных счетов (план счетов) в верхнем правом блоке.
- Откройте папку Основные записи основных счетов (план счетов) в левой секции, щелкнув по стрелке слева от папки. Откроется список полей таблицы.
- Выделите поле Номер основного счета одним щелчком мыши.
- Нажмите кнопку Добавить поле. В результате поле Номер основного счета перемещается в выделенную группу полей.
-
Следуя этим шагам, аккуратно переместите перечисленные ниже поля в соответствующие группы полей.
-
Из таблицы SKA1: Основные записи основных счетов (план счетов)
- План счетов
- Номер основного счета
-
Из таблицы SKB1: Основные записи основных счетов (балансовая единица)
- Балансовая единица
-
Из таблицы BSIS: Бухгалтерия: вторичный индекс для основных счетов
- Номер бухгалтерского документа
- Номер позиции бухгалтерского документа
- Дата проводки документа
- Сумма во внутренней валюте
- Место возникновения затрат
-
Из таблицы SKA1: Основные записи основных счетов (план счетов)
- Сохраните инфо-набор.
- На этом шаге система может запросить ключ разработчика или запрос на перенос изменений (см. Рисунок 5). Если вы не знаете, какие данные вводить, обратитесь в вашу техническую команду.
- Сгенерируйте инфо-набор, нажав на кнопку генерации .
- Нажмите кнопку Назад, чтобы вернуться на первый экран ведения инфо-набора.
Рис. 1 | Первый экран инфо-набора |
Рис. 2 | Выбор источника данных для инфо-набора |
Рис. 3 | Выбор таблиц логической базы данных |
Рис. 4 | Выбор полей инфо-набора |
Рис. 5 | Сохранение инфо-набора в пакет |
Создание группы пользователей
Группы пользователей обеспечивают контроль доступа к инфо-наборам и запросам. Инфо-наборы и пользователи присваиваются к группам пользователей. Когда пользователь создает или запускает запрос, то группа пользователей определяет список инфо-наборов, к которым у пользователя есть доступ.
В нашем примере группа пользователей будет включать сотрудников финансового отдела. В случае, если доступ к бухгалтерской отчетности нужен другим отделам, то группа пользователей может быть присвоена и им.
Перейдите по меню Среда>Группы пользователей с первого экрана ведения инфо-набора.
Экран на рисунке 6 предназначен для ведения групп пользователей и присвоения инфо-наборов к группам пользователей.
- Введите имя группы пользователей «ZZ_SAPMLE».
- Нажмите кнопку Создать.
- Определите описание группы пользователей «Пример: Бухучет» (рисунок 7).
- Нажмите кнопку Сохранить. На этом шаге система может запросить ключ разработчика или запрос на перенос изменений. Если вы не знаете, какие данные вводить, обратитесь в вашу техническую команду.
- Когда описание определено, перейдите назад и нажмите кнопку Присвоить пользователей и инфо-наборы.
- Введите пользователей, которые трудятся в финансовой службе.
- Нажмите кнопку Сохранить.
- Нажмите кнопку Присвоить инфо-наборы (рисунок 8).
- Система отобразит как стандартные, так и пользовательские инфо-наборы. Прокрутите список вниз, чтобы найти пользовательские инфо-наборы (рисунок 9).
- Выберите инфо-набор, установив индикатор напротив его.
- Нажмите кнопку Сохранить.
Рис. 6 | Экран ведения группы пользователей |
Рис. 7 | Описание группы пользователей |
Рис. 8 | Присвоение группы пользователей пользователям |
Рис. 9 | Присвоение инфо-набора группе пользователей |
Создание запроса
Мы создали инфо-набор и группу пользователей. Следующий шаг – создание запроса. На этом шаге поля инфо-набора включаются в отчет, определяется сортировка и суммирование, а также счетчик для количества документов и возможность перехода в ведение счета и документа. Для доступа к запросам Запустите транзакцию SQ01.
Убедитесь, что вы работаете с группой пользователей, созданной ранее. (см. название группы в верхней части экрана). Если нет, нажмите кнопку Другая группа пользователей (первая кнопка слева в ряду кнопок под названием экрана на рисунке 10) и выберите нужную группу пользователей.
- Введите имя запроса «Z_ACCOUNTING».
- Нажмите кнопку Создать.
Если группа пользователей уже содержит присвоенные ей запросы, то они будут выведены на экран. Пользователь может выполнить любой из запросов в его группе пользователей, если имеет необходимые полномочия.
Система выведет список инфо-наборов, привязанных к группе пользователей (рисунок 11). Только один инфо-набор может быть выбран для создания запроса. Это означает, что все поля, которые вы хотите включить отчет, должны быть в одном инфо-наборе. Дважды щелкните по инфо-набору для его выбора в качестве базы для создания запроса.
Заголовок отчета появляется на экране, когда запрос выполняется.
Формат списка должен соответствовать существующему формату печати в управлении выводом, иначе отчет не может быть напечатан. Наиболее распространенные форматы: 65x132 и 65x80. В нашем примере мы оставили формат по умолчанию: 0 строк (без ограничения) и 83 столбца.
- Введите описание запроса «Пример запроса: Бухучет», как показано на рисунке 12.
- Нажмите на кнопку Основной список в верхней части экрана.
Откроется графический экран построения запроса, как показано на рисунке 13. Запрос в целом строится на этом экране с использованием выделения объектов и их перетаскивания.
Доступные поля для построения запроса отображаются в левой части экрана в виде таблицы, как показано на рисунке 13.
- Раскройте каждую секцию слева, чтобы отобразить все поля, включенные в инфо-набор.
- Для выбора полей, которые будут отображены в отчете, установите индикатор напротив каждого поля в столбце Поля списка. Выберите следующие поля: номер основного счета, текст основного счета, балансовая единица, сумма во внутренней валюте, дата проводки, номер бухгалтерского документа.
- Определите поля, которые будут отображены на экране выбора, установив индикатор Поля выбора в строке поля Номер бухгалтерского документа. Это второй столбец. Некоторые поля, например, Номер основного счета, уже определены для выбора и не могут быть изменены. Это означает, что поле уже установлено как поле для выбора в логической базе данных. На экране выбора запроса отображаются все поля, помеченные для выбора данных: и определенные в логической базе данных, и те, которые определили вы.
Когда поле помечается для отображения как Поле списка, оно появляется в правой верхней части экрана. Именно в этом порядке поля будут отображены в отчете. Для изменения порядка можно поменять поля местами путем перетаскивания.
- Для того, чтобы определить подсчет суммы на уровне счета и балансовой единицы, щелкните по полю в области формата отчета и перетащите его в область сортировки.
- Перейдите в меню Инструменты>Поля подсчета вкл/выкл. Появится новая панель инструментов для подсчета. Подсчет суммирует количество строк по полю. В нашем примере в область подсчета помещено поле Номер документа для подсчета числа документов, проведенных для каждой балансовой единицы и каждого счета.
- Чтобы активировать подсчет на уровне счета и балансовой единицы, выделите поле в области формата и переместите его в область Поля подсчета (см. рисунок 14).
- Для изменения текста
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти
Обсуждения 15
Комментарий от
Александр Филинов
| 18 апреля 2012, 22:49
Было бы не плохо добавить шаг про создание транзакции, было бы полное описание.
Комментарий от
Олег Точенюк
| 18 апреля 2012, 23:43
Александр Филинов 18 апреля 2012, 22:49
Красиво и полезно.
Было бы не плохо добавить шаг про создание транзакции, было бы полное описание.
Комментарий от
Александр Филинов
| 19 апреля 2012, 07:06
Олег Точенюк 18 апреля 2012, 23:43
А что SE93 представляет собой нечто супер сложное?!
Комментарий от
Олег Точенюк
| 19 апреля 2012, 21:39
Александр Филинов 19 апреля 2012, 07:06
Как вариант. Но если мы говорим о простоте, то можно создавать (генерировать) и через PFCG.
Комментарий от
Вячеслав Контарев
| 22 апреля 2012, 23:56
Александр Филинов 18 апреля 2012, 22:49
Красиво и полезно.
Было бы не плохо добавить шаг про создание транзакции, было бы полное описание.
Комментарий от
Александр Филинов
| 24 апреля 2012, 08:02
Вячеслав Контарев 22 апреля 2012, 23:56
Для присвоения транзакции к запросу необходимо знать имя программы. Его можно получить в транзакции SQ01, меню Запрос-Другие функции-просмотреть имя отчета. Далее, создаем транзакцию в SE93 и присваиваем ей отчет запроса. Далее включаем транзакцию в существующую роль или создаем новую роль.
Небольшой вопрос к Вам.
У вас получалось привязать к запросу Z*таблицы. Сейчас нет под рукой 6 версии, в 4.7 я просто не вижу эти таблицы.
Комментарий от
Василь Мандрика
| 03 мая 2012, 15:38
Комментарий от
Олег Точенюк
| 03 мая 2012, 21:00
Василь Мандрика 03 мая 2012, 15:38
Вопрос по присвоению отчета или транзакции, что бы Вы посоветовали для присвоения транзакции просмотра заказа на поставку (ME23n)? Проблема в том что эта транзакция не принимает номер документа из отчета а берет последний отредактированный пользователем документ.
SET PARAMETER ID 'BES' FIELD <номер заказа>.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
Или более правильно использовать специальный ФМ:
CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
EXPORTING
i_ebeln = <номере документа>
i_ebelp = <позиция документа>
i_enjoy = 'X'
EXCEPTIONS
OTHERS = 1.
Комментарий от
Василь Мандрика
| 04 мая 2012, 17:16
Олег Точенюк 03 мая 2012, 21:00
Задать параметр и вызвать просмотр документа типа так:
SET PARAMETER ID 'BES' FIELD <номер заказа>.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
Или более правильно использовать специальный ФМ:
CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
EXPORTING
i_ebeln = <номере документа>
i_ebelp = <позиция документа>
i_enjoy = 'X'
EXCEPTIONS
OTHERS = 1.
Комментарий от
Вадим Новак
| 29 августа 2012, 12:30
Василь Мандрика 03 мая 2012, 15:38
Вопрос по присвоению отчета или транзакции, что бы Вы посоветовали для присвоения транзакции просмотра заказа на поставку (ME23n)? Проблема в том что эта транзакция не принимает номер документа из отчета а берет последний отредактированный пользователем документ.
Комментарий от
Олег Точенюк
| 29 августа 2012, 18:29
Вадим Новак 29 августа 2012, 12:30
Когда Вы присваиваете транзакцию или отчет, Query должен содержать те же названия полей, что и экран присваиваемого объекта. Например, Query создан по таблице EKPO, в ней есть поле MATNR, но присвоенная транзакция ММ03 не будет открывать именно тот номер материала, который выведен в строке отчета Query, а тот MATNR, чей PID передавался последним. Это связано с тем, что на экране транзакции ММ03, поле материала - RMMG1-MATNR, а не EKPO-MATNR. Так что без ABAP’а тут не обойтись.
Комментарий от
Вадим Новак
| 30 августа 2012, 12:00
Олег Точенюк 29 августа 2012, 18:29
Извините конечно, но RMMG1-MATNR как и EKPO-MATNR ссылаются на одинаковый элемент данных MATNR которому присвоен PID -> MAT, так что с этим то как раз все в порядке, но есть одно но, PID заполняется из диалоговых полей и может содержать только одно значение в текущий момент времени, а тут мы имеем отчет, который содержит множество строк, соответственно заполнения PID не происходит да и не может быть, так как не ясно в принципе какое значение сохранять. Конечно же SAP мог бы подумать и передавать в PID данные текущей выделенной строки для всех колонок, которые имеют в элементе данных прописанный код PID. Однако данную возможность стандартно не реалзовали и оставили на откуп пользователям.
Я с Вами полностью согласен, по поводу того, что SAP мог бы подумать и передавать в PID данные текущей выделенной строки для всех колонок. В Query для обеспечения универсальности генерируется куча ненужного ABAP кода и лишних 5-10 строк кода для передачи PID погоды не сделали бы.
Комментарий от
Евгений Ермолаев
| 07 сентября 2012, 16:44
Комментарий от
Евгений Каноплич
| 27 июня 2013, 10:17
Александр Филинов 18 апреля 2012, 22:49
Красиво и полезно.
Было бы не плохо добавить шаг про создание транзакции, было бы полное описание.
D_SREPOVARI-REPORT
D_SREPOVARI-EXTDREPORT
D_SREPOVARI-VARIANT
D_SREPOVARI-REPORTTYPE
И проще этого придумать наверное сложно. Не говоря про генерацию отчетов и т.д.
Комментарий от
Анвар Байгулов
| 07 мая 2019, 13:29