Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& 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.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report Z_KB21N_BAPI
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_KB21N_BAPI.
DATA: ls_doc_header TYPE bapidochdrp.
DATA: lt_doc_items TYPE TABLE OF bapiaaitm.
DATA: ls_doc_item TYPE bapiaaitm.
DATA: lt_return TYPE TABLE OF bapiret2.
DATA: ls_docno TYPE bapidochdrp-doc_no.
DATA: BEGIN OF ITAB OCCURS 0,
KRKRS LIKE SVALD-VALUE(02),
WRBTR10(10),
WRBTR11(10),
BLTXT LIKE COHEADER-BLTXT,
WRBTR1(8),
WRBTR2(6),
WRBTR3(8),
WRBTR4(6),
WRBTR5(10),
WRBTR6(4),
WRBTR7(3),
WRBTR8(6),
WRBTR9(20),
END OF ITAB.
***************Upload************************************
PERFORM DATEN_LADEN USING
'C:\Datenmigration\uploadkb21n.txt'.
* Belegkopf
ls_doc_header-co_area = '50'. "Kostenrechnungskreis
ls_doc_header-docdate = '20140731'. "Belegdatum
ls_doc_header-postgdate = '20140731'. "Buchungsdatum
ls_doc_header-doc_hdr_tx = ITAB-BLTXT. "Belegkopftext
ls_doc_header-username = sy-uname. "User-Name
LOOP AT ITAB.
* Positionen aufbauen
* Pos. 1
ls_doc_item-send_cctr = ITAB-WRBTR1. "Sender-Kostenstelle
ls_doc_item-acttype = ITAB-WRBTR2. "Leistungsart
ls_doc_item-actvty_qty = ITAB-WRBTR6. "Menge
ls_doc_item-rec_cctr = ITAB-WRBTR3. "Empfänger-KST
ls_doc_item-rec_order = ITAB-WRBTR4. "Empfänger-Auftrag
ls_doc_item-rec_wbs_el = ITAB-WRBTR5. "Empfänger-KST
ls_doc_item-activityun = 'H' . "Leistungseinheit
ls_doc_item-person_no = ITAB-WRBTR8. "Personal-Nummer
ls_doc_item-seg_text = ITAB-WRBTR9. "Segmenttext
APPEND ls_doc_item TO lt_doc_items.
ENDLOOP.
* 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.
******************************FORMS*******************************
FORM DATEN_LADEN USING DATEI.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = DATEI
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHOITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.
ENDFORM.