Результат выполнения массовых проводок и Application Log

Я раньше как бы предполагал, что в SAP есть специальные механизмы для обработки и показа ошибок, но наконец-то решил попробовать.

Скажем типовая программа по массовой проводке или обработке документов в SAP строится по следующей схеме:

1. Выборка или сбор нужных данных

2. Подтверждение обрабатываемых данных

3. Цикл по подтверждённым данным

3.1 Запуск BAPI или BDC

3.2. Анализ результата

3.3. Красивый вывод

3.*. Конец цикла

4. Вывод итоговой информации

За несколько лет через меня таких программок прошло уже достаточно много.

Во-первых, вывод ошибок во write, построение drill-down – это дело просто муторное.

Во-вторых, если используется подтверждение на основе ALV с галочками, то вывод write (даже раскрашенный) начинает контрастировать.

В-третьих, при переключении из ALV на результат write и возврат обратно – задача со странными шаманскими бубнами типа “LEAVE TO LIST-PROCESSING” и геморроем со статусами.

И вот я посмотрел на то, как выглядит транзакция SLG1 – и копнул, как делается аналогичная функциональность. Не сильно меня это напугало, и был набросан инклюд, претендующий на универсальность, а сам код приобрел следующие черты:

************************************************

form post_plans.
perform BAL_LOG_REFRESH.
   loop at it_plan where C = ‘X’.
      perform BAL_LOG_CREATE using sy-tabix ‘ZFM’ ‘ZFM_LOAD_RELE’.
      perform run_posting using it_plan-*……
   endloop.
   perform BAL_LOG_DISPLAY using ‘X’ ‘W’.
endform.

************************************************

form run_posting using foo_a ….
. . .
   CALL FUNCTION ‘BAPI_0050_CREATE’
      TABLES
         RETURN = it_return.
   perform BAL_LOG_MSG_ADD_BAPI using it_return[].
endform.
 

************************************************

Вроде как просто, понятно, удобно.

Предварительное подтверждение на базе простого ALV:

image

А вот собственно результат который получается при нажатии на кнопку “Провести”:

image

Вся основная функциональность сосредоточена в группе функций SBAL и кучка примеров SBAL*. К руководству и использованию.

Из основных преимуществ:

  • Базовая функциональность делается легко и просто используется
  • Открывать список ошибок можно в отдельном окне
  • Список сообщений легко фильтруется (например: только ошибки, или включать также предупреждения)
  • Возможно сохранение журнала в базу данных (может быть полезно, если программа запускается в фоновом режиме)
  • Можно добавлять и собственные сообщения (вплоть до ZZ[001] = &1 &2 &2 &4), что открывает простор для фантазии

Судя по всему, можно реализовать (сложнее, но похоже не намного):

  • навешивание своих кнопочек
  • навешивание собственных колонок
  • drill-down, то бишь “проваливание”

Вот как раз задание самому себе на следующий раз – сделать проваливание.

Добавить комментарий

Ваш адрес email не будет опубликован.