Esempio generico (i dati sono hardcodati a fini esemplificativi) di BAPI_ACC_DOCUMENT_POST con CO-PA (tabella CRITERIA)
*Dichiarazioni variabili/tabelle/strutture BAPI
DATA: doc_header LIKE BAPIACHE09,
criteria LIKE BAPIACKEC9 OCCURS 0 WITH HEADER LINE,
doc_item LIKE BAPIACGL09 OCCURS 0 WITH HEADER LINE,
doc_values LIKE BAPIACCR09 OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
extension1 like BAPIACEXTC occurs 0 with header line,
obj_type LIKE bapiache08-obj_type,
obj_key LIKE bapiache02-obj_key,
obj_sys LIKE bapiache02-obj_sys,
docnum LIKE bkpf-belnr.
*
* Fill Document Header
doc_header-bus_act = 'RFBU'.
*doc_header-obj_type = 'BKPFF'.
*doc_header-obj_key = 'AAAABBBB'.
*doc_header-obj_sys = 'NLD220'.
doc_header-username = sy-uname.
doc_header-header_txt = 'TEST BOC BAPI POSTING'.
doc_header-comp_code = 'IN10'.
doc_header-doc_date = '20060127'.
doc_header-pstng_date = sy-datlo.
doc_header-doc_type = 'SA'.
* Fill Line 1 of Document Item
doc_item-itemno_acc = '1'.
doc_item-gl_account = '0000500001'.
doc_item-pstng_date = sy-datum.
doc_item-item_text = 'TEST POSTING DEBIT ITEM'.
doc_item-costcenter = ''.
doc_item-quantity = '1'.
doc_item-base_uom = 'ST'.
*doc_item-stat_con = 'X'.
*doc_item-orderid = 'M5253'.
*_____________
*doc_item-comp_code = 'IN01'.
*_______________
APPEND doc_item.
CLEAR doc_item.
* Fill Line 2 of Document Item
doc_item-itemno_acc = '2'.
doc_item-gl_account = '0000210072'.
doc_item-pstng_date = sy-datlo.
doc_item-item_text = 'TEST POSTING CREDIT ITEM'.
*doc_item-stat_con = 'X'.
*doc_item-costcenter = '0000201681'.
*_______________
*doc_item-comp_code = 'IN01'.
*_______________
APPEND doc_item.
CLEAR doc_item.
* Fill Line 1 of Document Value.
doc_values-itemno_acc = '1'.
doc_values-currency_iso = 'INR'.
doc_values-amt_doccur = '0.02-'.
APPEND doc_values.
CLEAR doc_values.
* Fill Line 2 of Document Value
doc_values-itemno_acc = '2'.
doc_values-currency_iso = 'INR'.
doc_values-amt_doccur = '0.02'.
APPEND doc_values.
CLEAR doc_values.
* Add tax code in extension1 table.
extension1-field1 = 'BAPI CALL'.
APPEND EXTENSION1.
*
* Fill CRITERIA for CO-PA
*
refresh criteria.
criteria-ITEMNO_ACC = '1'.
criteria-FIELDNAME = 'ARTNR'.
criteria-CHARACTER = '000000000001312251'.
Append criteria.
criteria-ITEMNO_ACC = '1'.
criteria-FIELDNAME = 'WERKS'.
criteria-CHARACTER = 'IN91'.
Append criteria.
criteria-ITEMNO_ACC = '1'.
criteria-FIELDNAME = 'KNDNR'.
criteria-CHARACTER = '0000000016'.
Append criteria.
criteria-ITEMNO_ACC = '1'.
criteria-FIELDNAME = 'FKART'.
criteria-CHARACTER = 'ZIN2'.
Append criteria.
criteria-ITEMNO_ACC = '1'.
criteria-FIELDNAME = 'KAUFN'.
criteria-CHARACTER = '0000000633'.
Append criteria.
criteria-ITEMNO_ACC = '1'.
criteria-FIELDNAME = 'KDPOS'.
criteria-CHARACTER = '000010'.
Append criteria.
*criteria-ITEMNO_ACC = '1'.
*criteria-FIELDNAME = 'VKGRP'.
*criteria-CHARACTER = '009'.
**Append criteria.
*
* All tables filled - now call BAPI.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
documentheader = doc_header
IMPORTING
OBJ_TYPE = doc_header-obj_type
OBJ_KEY = doc_header-obj_key
OBJ_SYS = doc_header-obj_sys
TABLES
criteria = criteria
accountgl = doc_item
currencyamount = doc_values
return = return
EXTENSION1 = EXTENSION1.
*
LOOP AT return WHERE type = 'E'.
EXIT.
ENDLOOP.
*
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = doc_header
IMPORTING
OBJ_TYPE = doc_header-obj_type
OBJ_KEY = doc_header-obj_key
OBJ_SYS = doc_header-obj_sys
TABLES
criteria = criteria
accountgl = doc_item
currencyamount = doc_values
return = return
EXTENSION1 = EXTENSION1.
LOOP AT return WHERE type = 'E'.
EXIT.
ENDLOOP.
IF sy-subrc EQ 0.
WRITE: / 'BAPI call failed - debug and fix!'.
ELSE.
CLEAR return.
REFRESH return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
IMPORTING
return = return.
WRITE: / 'BAPI call worked!!'.
WRITE: / doc_header-obj_key, ' posted'.
ENDIF.