Вызов существующего отчета SAP в ABAP с подавлением GUI - PullRequest
5 голосов
/ 23 октября 2008

Я хочу представить функциональность программы SAP (транзакции) как BAPI. Мне нужно вызвать отчет и задать фильтры диапазона, чтобы графический интерфейс был обойден.

У кого-нибудь есть рабочий пример конструкции SUBMIT ... WITH ... ABAP или другие предложения о том, как выполнить то, что мне нужно сделать?

Ответы [ 4 ]

3 голосов
/ 24 октября 2008

Вот рабочий пример:

SUBMIT SAPF140 
    TO SAP-SPOOL                         "optional"
    SPOOL PARAMETERS print_parameters    "optional"
    WITHOUT SPOOL DYNPRO                 "optional (hides the spool pop-up)"
    VIA JOB jobname NUMBER l_number      "optional"
    AND RETURN                           "optional - returns to the calling prog"
    WITH EVENT   =  REVENT
    WITH BUKRS   IN RBUKRS
    WITH BELNR   IN lRBELNR
    WITH GJAHR   IN RGJAHR
    WITH USNAM   =  SY-UNAME
    WITH DATUM   =  SAVE_DATUM
    WITH UZEIT   =  SAVE_UZEIT
    WITH DELDAYS =  RDELDAYS
    WITH KAUTO   =  'X'
    WITH RPDEST  =  SAVE_PDEST
    WITH TITLE   =  TITLE.

Все операторы «WITH» относятся к полям выбора в вызываемой программе, где я использую = это оператор PARAMETER (одно поле), где я использую IN, это оператор SELECT_OPTIONS (диапазон)

Вот простой пример того, как заполнить диапазон:

REFRESH lrbelnr.
lrbelnr-sign = 'I'.
lrbelnr-option = 'EQ'.
lrbelnr-low = HBKORM-belnr.
CLEAR lrbelnr-high.
append lrbelnr.
1 голос
/ 19 октября 2010

Вы можете использовать встроенный BAPI , также просто напишите " Range " и нажмите F4.

1 голос
/ 25 декабря 2009

Если вы хотите отключить эту функцию как BAPI, вам нужно обернуть эту функцию в модуле Remote Function Call (RFC). Просто внедрите функциональный модуль RFC. В зависимости от того, как реализован отчет, он может использовать объекты ABAP, которые также могут вызываться из вашей реализации RFC. Учитывая этот случай у вас есть довольно хорошее решение. Всякий раз, когда отчет корректируется, также ваш BAPI будет отражать изменения. Если это стандартная программа от SAP, которую нельзя обернуть, подумайте о том, чтобы скопировать ее в свое пространство имен и настроить ее. Тем не менее, это может создать определенные трудности, когда SAP выполняет обновление с помощью стека пакетов поддержки, и вы этого не осознаете. Вывод двух методов различен. Кроме того, если вы хотите вызвать его извне, нет ничего другого, кроме как реализовать RFC-модуль.

Отправленный отчет не может возвращать значения снаружи. Отчеты всегда предназначены только для графического интерфейса, а не для обмена данными. Если в вашем отчете используются опции выбора, вам нужно каким-то образом реализовать эту функцию «вручную» в вашем RFC, поскольку эти операторы нельзя использовать внутри модулей RFC. Обычно я пытался бы переработать отчет, сделать его модульным и поместить информацию о выборе в центральный класс или, возможно, другой функциональный модуль, который можно вызвать из отчета и вашего функционального модуля BAPI. Фильтры, о которых вы говорите, не могут быть автоматически внедрены в RFC. Вы должны реализовать эти диапазоны вручную. Предупреждение, которое появляется, не может быть подавлено, если вы делаете RFC-вызов из удаленной системы, и появляется всплывающее окно с предупреждением, вы заканчиваете коротким замыканием. Поэтому вам необходимо переработать отчет и заново реализовать его для своих нужд.

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

0 голосов
/ 25 ноября 2011

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

...