VinceCoder
3/4/2019 - 2:58 PM

BAPI_ACC_DOCUMENT_POST Esempio con caratteristiche CO-PA

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.