Исходные данные: Проводится документ через 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) в разделе “Модули процесса” – “клиента”.
Всё.