Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие авар.doc
Скачиваний:
62
Добавлен:
02.09.2019
Размер:
2.34 Mб
Скачать

Badi для консолидации (перенос данных)

BADI – это инструментарий, позволяющий расширить стандартную функциональность SAP добавлением вставок на языке ABAP. Каждый BADI имеет имя определения (интерфейс) и имя реализации.

В первую очередь необходимо определить фильтры, которые будет использовать BADI. Это делается в таблице ucf7210. Нужно зайти в транзакцию SE16, ввести имя таблицы и нажать на кнопку «Создать». Затем нужно ввести имя код фильтра (3 символа) и описание и нажать на кнопку сохранить. Если записи необходимо включить в запрос на перенос, то это можно сделать, зайдя на просмотр таблицы, выбрав необходимые записи и выбрав пункт меню Запись таблицы -> Перенос записей.

Создание нового BADI делается в транзакции SE19.

Рисунок 46

Выбираем Создать внедрение -> Классический BADI, в качестве интерфейса вводим UC_DATATRANSFER и нажимаем «СоздВнедр».

Рисунок 47

Задаем имя внедрения. На следующем экране вводим описание BADI и присваиваем ему нужные фильтры.

Рисунок 48

Теперь BADI нужно активировать.

Далее нужно перейти на вкладку Интерфейс.

Рисунок 49

Обработка данных осуществляется в методе FINALIZE

Параметры метода:

Рисунок 50

CT_DATA – таблица с транзакционными данными, доступная для изменения.

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

Потом CT_DATA очищается и заполняется данными из созданной таблицы:

  DATA:         LS_TMP_CT_DATA TYPE REF TO DATA,         LT_TMP_CT_DATA TYPE REF TO DATA.

  FIELD-SYMBOLS:                  <FS_AMOUNT> TYPE ANY,                  <FS_SOPTYPE> TYPE ANY,                  <FS_SACCTYPE> TYPE ANY,                  <FS_SOPXTYPE> TYPE ANY,                  <FS_SREXP> TYPE ANY,                  <FS_SCS_ITEM> TYPE ANY,                  <FS_CS_CHART> TYPE ANY,                  <FS_AC_DOCNR> TYPE ANY,                  <FS_SCOMP> TYPE ANY,                  <FS_SCHARICO> TYPE ANY,                  <FS_SSEGM> TYPE ANY,                  <FS_TMP_CT_DATA> TYPE ANY,   "СТРОКА ДАННЫХ                  <FT_TMP_CT_DATA> TYPE TABLE, "ВРЕМЕННАЯ ТАБЛИЦА С ДАННЫМИ

<FS_CT_DATA> TYPE ANY.

CREATE DATA LS_TMP_CT_DATA LIKE LINE OF CT_DATA.   ASSIGN LS_TMP_CT_DATA->* TO <FS_TMP_CT_DATA>.   CREATE DATA LT_TMP_CT_DATA LIKE TABLE OF <FS_TMP_CT_DATA>.   ASSIGN LT_TMP_CT_DATA->* TO <FT_TMP_CT_DATA>.

LOOP AT CT_DATA ASSIGNING <FS_CT_DATA>.

<FS_TMP_CT_DATA> = <FS_CT_DATA>.

ASSIGN COMPONENT 'S_CHAR-/BIC/SCS_ITEM' OF STRUCTURE <FS_TMP_CT_DATA> TO <FS_SCS_ITEM>.     <FS_SCS_ITEM> = 'R.999.99.99.N.9'.    

ASSIGN COMPONENT 'S_KFIG-/1FB/CS_TRN_GC' OF STRUCTURE <FS_TMP_CT_DATA> TO <FS_AMOUNT>.

<FS_AMOUNT> = <FS_AMOUNT> * -1.

APPEND <FS_TMP_CT_DATA> TO <FT_TMP_CT_DATA>.

ENDLOOP.

ОЧИЩАЕМ CT_DATA.   LOOP AT CT_DATA ASSIGNING <FS_CT_DATA>.     DELETE CT_DATA INDEX SY-TABIX.   ENDLOOP.

LOOP AT <FT_TMP_CT_DATA> ASSIGNING <FS_TMP_CT_DATA>.     APPEND <FS_TMP_CT_DATA> TO CT_DATA.   ENDLOOP.