BAPI_ACC_GL_POSTING_POST生成财务预制凭证
利用此BAPI生成預制憑證,首先要在如下用戶出口做一個簡單增強:
ACBAPI01 會計核算: 對 BAPI 界面的客戶增強功能
對應的出口函數是:EXIT_SAPLACC4_001
相應的代碼如下,核心內容是要讓憑證抬頭中的status_new值為2,即可生成預制憑證:
?READ?TABLE?extension?WITH?KEY?field1?=?'BAPI-PARK'.
IF?sy-subrc?=?0?.
??MOVE?2?TO?t_acchd-status_new.?"to?mark?this?is?Park?Document
ENDIF.
*此部分內容為BAPI標準參數中沒有的字段,四個Field字段都是char250,如果字段太多,
可利用處理字符串拆分的方法進行
LOOP?AT?extension.
??READ?TABLE?t_accit?WITH?KEY?posnr?=?extension-field1.
??IF?sy-subrc?=?0.
????t_accit-bschl?=?extension-field2.???"記帳碼
????t_accit-rstgr?=?extension-field3.???"原因代碼
????t_accit-umskz?=?extension-field4.???"特殊總帳標識
????MODIFY?t_accit?INDEX?sy-tabix.
??ENDIF.
*在自己的程序或接口代碼中調用BAPI,測試程序如下:
?*&---------------------------------------------------------------------*
*&?Report??ZT_TEST_PARK_DOCUMENT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT??zt_test_park_document1?NO?STANDARD?PAGE?HEADING.
TABLES:?bkpf,
????????bseg,
????????bsec,
????????bset,
????????bsez.
DATA:?header?LIKE?bapiache08,
??????accountgl?LIKE?STANDARD?TABLE?OF??????bapiacgl08?WITH?HEADER?LINE,
??????currencyamount?LIKE?STANDARD?TABLE?OF?bapiaccr08?WITH?HEADER?LINE,
??????extension1?LIKE?STANDARD?TABLE?OF?????bapiextc???WITH?HEADER?LINE,
??????return?????LIKE?STANDARD?TABLE?OF?????bapiret2???WITH?HEADER?LINE.
DATA:?loc_cnt?TYPE?posnr_acc,
??????loc_amt?TYPE?bapiwrbtr.
DATA:?obj_key??LIKE?bapiache02-obj_key,
??????obj_type?LIKE?bapiache02-obj_type,
??????obj_sys??LIKE?bapiache02-obj_sys.
START-OF-SELECTION.
??header-username???=?sy-uname.
??header-comp_code??=?'1200'.
??header-fisc_year??=?sy-datum+0(4).
??header-doc_date???=?sy-datum.
??header-pstng_date?=?sy-datum.
??header-fis_period?=?sy-datum+4(2).
??header-doc_type???=?'SA'.
??accountgl-itemno_acc?=?'1'.
??accountgl-gl_account?=?'6602070000?'?.
??accountgl-costcenter?=?'1200AA01'.
??accountgl-item_text??=?'Test?Bapi?SGTXT'.
??accountgl-alloc_nmbr?=?'Test?Bapi?ZUONR'.
??APPEND?accountgl.
??CLEAR?accountgl.
??extension1-field1?=?'1'."Item?No
??extension1-field2?=?'40'."記帳碼
??APPEND?extension1.
??loc_cnt?=?1.
??loc_cnt??=?loc_cnt?+?1.
??accountgl-itemno_acc?=?loc_cnt.
??accountgl-gl_account?=?'1001010000'?.
*??accountgl-comp_code??=?'1200'.
*??accountgl-pstng_date?=?sy-datum.
*??accountgl-doc_type???=?'SA'.
*??accountgl-fisc_year??=?sy-datum+0(4).
*??accountgl-fis_period?=?sy-datum+4(2).
*??accountgl-costcenter?=?‘13100’.
??accountgl-item_text??=?'Test?Bapi?SGTXT'.
??accountgl-alloc_nmbr?=?'Test?Bapi?ZUONR'.
??APPEND?accountgl.
??CLEAR?accountgl.
??extension1-field1?=?'2'.??"Item?No
??extension1-field2?=?'50'.?"記帳碼
??extension1-field3?=?'999'."原因代碼
??APPEND?extension1.
??loc_amt?=?1111.
??currencyamount-itemno_acc?=?'1'.
??currencyamount-currency??=?'CNY'.
??currencyamount-amt_doccur?=?loc_amt.?"(?For??Debit?/?‘S’)
??APPEND?currencyamount.
??CLEAR?currencyamount.
??currencyamount-itemno_acc?=?'2'.
??currencyamount-currency??=?'CNY'.
??currencyamount-amt_doccur?=??(?-1?)?*?(?loc_amt?).?"?(?For?credit?/‘H’)
??APPEND?currencyamount.
??CLEAR?currencyamount.
??extension1-field1?=??'BAPI-PARK'.
??APPEND?extension1.
??CALL?FUNCTION?'BAPI_ACC_GL_POSTING_POST'
????EXPORTING
??????documentheader?=?header
????IMPORTING
??????obj_type???????=?obj_type
??????obj_key????????=?obj_key
??????obj_sys????????=?obj_sys
????TABLES
??????accountgl??????=?accountgl
??????currencyamount?=?currencyamount
??????return?????????=?return
??????extension1?????=?extension1.
??CALL?FUNCTION?'BAPI_TRANSACTION_COMMIT'
????EXPORTING
??????wait?=?'X'.
總結
以上是生活随笔為你收集整理的BAPI_ACC_GL_POSTING_POST生成财务预制凭证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Idoc学习笔记----获取查询Idoc
- 下一篇: BAPI FOR MD61,MD62,M