FBGENDAT

Заметка из ABAPEDIA.

Перейти к: навигация, поиск

sitricrovard orzeldronrac

Значение 1: Параметр SAP-памяти, включающий механизм сохранения интерфейса вызова функциональных модулей, обычно используется в BAPI-модулях или некоторых (например SD_SALESDOCUMENT_CHANGE, SD_SALESDOCUMENT_CREATE, SD_SALES_DOCU_MAINTAIN) иных.

Значение 2: Программа FBGENDAT, включающая/выключающая механизм запоминания параметров вызова на уровне отдельных функций в каталог тестовых последовательностей.

Зачем это надо?

Выяснение проблем, связанных с BAPI или своими собственными модулями, зачастую сложно если не иметь каталога данных теста (содержащего все параметры вызова соответствующего функционального модуля). В особенности трудно, когда вызов модуля идёт из RFC и поэтому никак не может быть отлажен (кроме RFC, справедливо и для интеграции с другими системами через ActiveX, C++ Class Library, Java Connector а также связки с CRM/APO).

Итак, если вы хотите записать данные вызова ФМ в том виде, как они были переданы в реальных ситуациях чтобы воспроизвести ошибку повторно, существует описанный ниже способ, основанных на сап-нотах 519292 (актуальна только если версия меньше или равна 4.6C, иначе в системе уже есть FBGENDAT) и 517767. Запись идёт в стандартный «Каталог данных теста» построителя функций (SE37).

Как использовать

  1. У пользователя, чьи данные надо записывать, в постоянных значениях (т.е. в SAP Memory) должен быть установлен параметр FBGENDAT = X (например, это делается через транзакцию SU01)
  2. Запустите программу FBGENDAT, в которой включается журналирование на уровне отдельных функций:

thumb|экран выбора программы FBGENDAT

Используются режимы:

A – после записи выдаётся дамп (MESSAGE_TYPE_X);

B – после записи выполнение продолжается как ни в чём не бывало;

C – тестовая запись не делается а начинается бесконечный цикл в месте использования FBGENMAC, что удобно для отладки через SM50: подключаемся к «зависшему» рабочему процессу в режиме отладки, изучаем ситуацию и для продолжения нормальной работы модуля устанавливаем параметр LV_EXIT = ‘X’;

D – тестовые данные подготавливаются и записываются в память (не тестовый каталог!). Запись в каталог делается принудительно, что удобно делать по какому-либо признаку. Вот пример, в котором происходит (в нём после вызова заточенного на использование авто-сохранение параметров ФМ параметры вызова берутся из памяти, записываются в каталог и программа падает в дамп:

  1.  
  2. data ls_header_gd type header_fb.
  3. data lv_dataid_gd type eufunc-nummer.
  4. import ls_header_gd-area
  5. ls_header_gd-name
  6. lv_dataid_gd
  7. from memory id 'fbgendat'.
  8. if sy-subrc = 0.
  9. rollback work.
  10. call function 'SFCS_FA_PARAMETER_WRITE'
  11. exporting
  12. function = ls_header_gd-name
  13. dataset = lv_dataid_gd.
  14. perform db_export_datadir(saplseuj) using
  15. ls_header_gd-area
  16. ls_header_gd-name
  17. '999'.
  18. commit work.
  19. message x436(v2) with lv_dataid_gd ls_header_gd-name.
  20. endif.

После запуска показывается экран с результатами выполнения:

thumb|результат работы программы FBGENDAT

Смотри также

FBGENMAC, сап-ноту 517767 "Generate test data for function modules", сап-ноту 539978 "Automatic generation of BAPI test data directory", сап-ноту 760811 "BAPI test data generator for namespace /AFS/ ", RM06HL35, SFCS_FA_PARAMETER_WRITE.

Личные инструменты
Популярные категории
Прочее