Für die maschinelle Verbuchung von CO-Buchungen stehen neben der Übernahmetransaktion BATCHMAN (vgl. Artikel Übernahme von externen Umbuchungen und statistischen Kennzahlen ins CO ) auch div. BAPIs zur Verfügung. Nachfolgend ein Beispiel für die Verwendung des BAPIs BAPI_ACC_ACTIVITY_ALLOC_POST, mit dem Leistungsverrechnungen (KB21N) gebucht werden können:
*&---------------------------------------------------------------------*
*& Report ZTEST_KB21N_BAPI
*&
*&---------------------------------------------------------------------*
*& Demo-Programm BAPI-Aufruf BAPI_ACC_ACTIVITY_ALLOC_POST
*& Leistungsverrechnung (KB21N)
*&---------------------------------------------------------------------*
REPORT ztest_kb21n_bapi.
DATA: ls_doc_header TYPE bapidochdrp.
DATA: lt_doc_items TYPE TABLE OF bapiaaitm,
ls_doc_item TYPE bapiaaitm,
lt_return TYPE TABLE OF bapiret2.
DATA: ls_docno TYPE bapidochdrp-doc_no.
* Belegkopf
ls_doc_header-co_area = '1000'. "Kostenrechnungskreis
ls_doc_header-docdate = sy-datum. "Belegdatum
ls_doc_header-postgdate = sy-datum. "Buchungsdatum
ls_doc_header-doc_hdr_tx = 'Demo'. "Belegkopftext
ls_doc_header-username = sy-uname. "User-Name
* Positionen aufbauen
* Pos. 1
ls_doc_item-send_cctr = '0000002047'. "Sender-Kostenstelle
ls_doc_item-acttype = '8'. "Leistungsart
ls_doc_item-actvty_qty = 3. "Menge
ls_doc_item-rec_cctr = '0000002013'. "Empfänger-KST
APPEND ls_doc_item TO lt_doc_items.
* Pos. 2
ls_doc_item-send_cctr = '0000002047'.
ls_doc_item-acttype = '8'.
ls_doc_item-actvty_qty = 10.
ls_doc_item-rec_cctr = '0000002004'.
APPEND ls_doc_item TO lt_doc_items.
* BAPI rufen
CALL FUNCTION 'BAPI_ACC_ACTIVITY_ALLOC_POST'
EXPORTING
doc_header = ls_doc_header
* IGNORE_WARNINGS = ' '
IMPORTING
doc_no = ls_docno
TABLES
doc_items = lt_doc_items
return = lt_return
* CRITERIA =
* CUSTOMER_FIELDS =
.
* COMMIT nicht vergessen!
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* Meldungen ausgeben
IF lt_return[] IS NOT INITIAL.
CALL FUNCTION 'C14ALD_BAPIRET2_SHOW'
TABLES
i_bapiret2_tab = lt_return.
ENDIF.