BAPI BAPI_ACC_DOCUMENT_POST.
BAPI_ACC_DOCUMENT_POST.
This post FI documents in a program. To this need, it would be better if you use the standard BAPI from SAP, rather than using BDC. Why? Because BDC is based on screen to screen, and if functional does customizing screens for FI transactions, it is difficult for developer to change their BDC according to customizing functional.
This FI documents post BAPI is commonly used BAPI_ACC_DOCUMENT_POST.
Below we discuss the following parameters need to be filled in to run this BAPI.
DATA: ld_documentheader like bapiache09, lt_accountgl like table of bapiacgl09 with header line, lt_currencyamount like table of bapiaccr09 with header line, lt_return like table of bapiret2 with header line. DATA: ld_comp_code type bukrs, ld_gl1 type hkont, ld_gl2 type hkont, ld_gsber type gsber, ld_costcent type kostl, ld_profcent type prctr, ld_waers type waers, ld_amount type bapiwrbtr, ld_key like bapiache09-obj_key, ls_return like bapiret2, ls_nodoc like bseg-belnr. * - Documentheader ld_documentheader-username = sy-uname. ld_documentheader-header_txt = 'Header Text'. ld_documentheader-comp_code = ld_comp_code. ld_documentheader-doc_date = sy-datum. ld_documentheader-pstng_date = sy-datum. ld_documentheader-fisc_year = sy-datum(4)."optional ld_documentheader-fis_period = sy-datum+4(2)."optional ld_documentheader-doc_type = 'SA'. ld_documentheader-ref_doc_no = 'Ref Doc No.'. * - Accountgl * -- Item 1 lt_accountgl-itemno_acc = 1. lt_accountgl-gl_account = ld_gl1. lt_accountgl-item_text = 'Text GL 1'. lt_accountgl-doc_type = 'SA'. lt_accountgl-comp_code = ld_documentheader-comp_code. lt_accountgl-bus_area = ld_gsber. lt_accountgl-pstng_date = sy-datum. lt_accountgl-value_date = sy-datum. lt_accountgl-costcenter = ld_costcent. lt_accountgl-profit_ctr = ld_profcent. append lt_accountgl. * -- Item 2 lt_accountgl-itemno_acc = 2. lt_accountgl-gl_account = ld_gl2. lt_accountgl-item_text = 'Text GL 2'. clear lt_accountgl-costcenter. append lt_accountgl. * - Currencyamount * -- Item 1 lt_currencyamount-itemno_acc = 1. lt_currencyamount-currency = ld_waers. lt_currencyamount-amt_doccur = ld_amount. if lt_currencyamount-currency eq 'IDR'. lt_currencyamount-amt_doccur = lt_currencyamount-amt_doccur * 100. endif. append lt_currencyamount. * -- Item 2 lt_currencyamount-itemno_acc = 2. lt_currencyamount-amt_doccur = -1 * lt_currencyamount-amt_doccur. append lt_currencyamount. * - Call BAPI call function 'BAPI_ACC_DOCUMENT_POST' exporting documentheader = ld_documentheader importing obj_key = ld_key tables accountgl = lt_accountgl currencyamount = lt_currencyamount return = lt_return. read table lt_return with key type = 'S'. if sy-subrc eq 0. * - Commit BAPI call function 'BAPI_TRANSACTION_COMMIT' exporting wait = 'X' importing return = ls_return. if not ls_return is initial. * - ROLLBACK call function 'BAPI_TRANSACTION_ROLLBACK' importing return = fs_return. else. ld_nodoc = ld_key(10). endif. else. * - ROLLBACK call function 'BAPI_TRANSACTION_ROLLBACK' importing return = fs_return. endif.
If this document post is successful, after that the program will commit the transaction and will import the document number into the local data ld_key. If BAPI fails, after that program will rollback the transaction.
No comments:
Post a Comment