Проводка документа через BAPI с расширенными параметрами

Исходные данные: Проводится документ через BAPI, однако не все поля доступны в параметрах функционального модуля BAPI_ACC_DOCUMENT_POST.

 

Поле функциональной сферы/классификации представлено только короткое:
FUNC_AREA    FKBER_SHORT    CHAR(4)    Функциональная сфера

А нам нужно длинное:
FKBER_LONG    FKBER    CHAR(16)    Функциональная классификация

Контировка неполная, проводка невозможна.

 

Шаг первый

Создать дополнительную структуру:
it_extesion1         like table of bapiacextc with header line

Прицепить эту структуру в вызове:
call function ‘BAPI_ACC_DOCUMENT_POST’

     tables
          extension1        = it_extesion1

Организовать заполнение этой таблички:

if bseg-fkber_long ne space.
     clear it_extesion1.
     it_extesion1-field1 = ‘FKBER_LONG’.
     it_extesion1-field2 = bseg-fkber_long.
     append it_extesion1.
endif.

В принципе форма заполнения этой таблички свободная: как положишь, так потом и возьмёшь.

Шаг второй

По образцу SAMPLE_INTERFACE_RWBAPI01 создаём функциональный модуль ZFI_INTERFACE_RWBAPI01.

Пишем там код, который бы взял данные из таблички, да и переложил их в нужные поля:

read table extension index 1.
if sy-subrc = 0.
     loop at it_accit where fipos ne space and fistl ne space.
          if extension-field1 = ‘FKBER_LONG’.
             it_accit-fkber = extension-field2.
          endif. 
          modify it_accit.
     endloop.
endif.

 

Шаг третий

Прописываем этот функциональный модуль в OpenFI (транзакция FIBF) в разделе “Модули процесса” – “клиента”.

Всё.

Опубликовано 24.09.2012 в 15:24 · Автор ivan · Ссылка
Рубрики: ABAP

Написать комментарий