Здравствуйте, может уже не актуально, но вот пример кода, который я использую.
Code:
Data: gs_documentheader TYPE bapiache09,
gt_accountgl TYPE TABLE OF bapiacgl09 WITH HEADER LINE,
gt_currencyamount TYPE TABLE OF bapiaccr09 WITH HEADER LINE,
gt_return TYPE TABLE OF bapiret2 WITH HEADER LINE,
gt_accountpayable TYPE TABLE OF BAPIACAP09 WITH HEADER LINE,
it_extension1 TYPE STANDARD TABLE OF bapiacextc,
wa_extension1 TYPE bapiacextc.
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
own_logical_system = gs_documentheader-obj_sys.
gs_documentheader-obj_type = 'BKPFF'.
gs_documentheader-username = sy-uname.
gs_documentheader-header_txt = 'Текст заголовка'.
gs_documentheader-comp_code = p_bukrs.
gs_documentheader-doc_date = p_udate.
gs_documentheader-pstng_date = p_udate.
gs_documentheader-doc_type = 'KA'.
gs_documentheader-bus_act = 'RFBU'.
gt_accountpayable-itemno_acc = lp_itemno_acc.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = '200021' "Контрагент
IMPORTING
output = gt_accountpayable-VENDOR_NO.
gt_accountpayable-TAX_CODE = 'AZ'. "Код налога
gt_accountpayable-SP_GL_IND = 'F'.
gt_accountpayable-alloc_nmbr = '1'.
gt_accountpayable-item_text = 'Текст позиции.
append gt_accountpayable.
data: t_amount type BSEG-DMBTR.
t_amount = '5000'.
CLEAR gt_currencyamount.
gt_currencyamount-itemno_acc = lp_itemno_acc.
gt_currencyamount-curr_type = '00'.
gt_currencyamount-currency = 'RUB'.
gt_currencyamount-amt_doccur = - t_amount.
APPEND gt_currencyamount.
MOVE '0000000001S39FA' TO wa_extension1-field1. "Обязательно, без него не возникает BTE RWBAPI01
APPEND wa_extension1 TO it_extension1.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = gs_documentheader
TABLES
accountpayable = gt_accountpayable
currencyamount = gt_currencyamount
return = gt_return
extension1 = it_extension1.
Чтобы BAPI работало в системе должна быть реализация процесса клиента для события RWBAPI01 (событие возникает из-за того, что bapi рассчитано на автоматическое определение кода проводки, но это автоматически не всегда работает, поэтому для интерфейса BAPI были разработаны строки расширения, подробнее могут рассказать штатные консультанты FI)
В реализации ФМ для обработки события должен быть код, обрабатывающий строку расширения ('0000000001S39FA', первые 10 символов -- номер позиции, если нужен ТАП с несколькими позициями, чтобы при платеже обновлялись несколько бюджетных адресов, номер надо менять).
Code:
DATA : wa_extension TYPE bapiacextc.
CLEAR: wa_extension.
LOOP AT extension INTO wa_extension.
READ TABLE it_accit WITH KEY posnr = wa_extension-field1(10).
IF sy-subrc EQ 0.
it_accit-BSTAT = wa_extension-field1+10(1).
it_accit-BSCHL = wa_extension-field1+11(2).
it_accit-UMSKZ = wa_extension-field1+13(1).
it_accit-ZUMSK = wa_extension-field1+14(1).
DOCUMENT_HEADER-GLVOR = 'RFST'.
MODIFY it_accit INDEX sy-tabix.
ENDIF.
ENDLOOP.