緣起:
由於一般費用請款需要上傳tax,而user又要求tax要註明憑證資訊;偏偏 BAPI_ACC_DOCUMENT_POST根本就沒有tax 的item text欄位可以填...不得以之下,只好動用BAPI_ACC_DOCUMENT_POST的EXTENSION1這個table來輔助上傳tax item_text。
步驟:
1. 首先客製Z_ACC_DOCUMENT_POST,呼叫
BAPI_ACC_DOCUMENT_POST
FUNCTION Z_ACC_DOCUMENT_POST.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_DOCUMENTHEADER) TYPE BAPIACHE09
*" VALUE(I_CUSTOMERCPD) TYPE BAPIACPA09 OPTIONAL
*" VALUE(I_CONTRACTHEADER) TYPE BAPIACCAHD OPTIONAL
*" EXPORTING
*" VALUE(E_OBJ_TYPE) TYPE BAPIACHE09-OBJ_TYPE
*" VALUE(E_OBJ_KEY) TYPE BAPIACHE09-OBJ_KEY
*" VALUE(E_OBJ_SYS) TYPE BAPIACHE09-OBJ_SYS
*" TABLES
*" T_ACCOUNTGL STRUCTURE BAPIACGL09 OPTIONAL
*" T_ACCOUNTRECEIVABLE STRUCTURE BAPIACAR09 OPTIONAL
*" T_ACCOUNTPAYABLE STRUCTURE BAPIACAP09 OPTIONAL
*" T_ACCOUNTTAX STRUCTURE BAPIACTX09 OPTIONAL
*" T_CURRENCYAMOUNT STRUCTURE BAPIACCR09
*" T_CRITERIA STRUCTURE BAPIACKEC9 OPTIONAL
*" T_VALUEFIELD STRUCTURE BAPIACKEV9 OPTIONAL
*" T_EXTENSION1 STRUCTURE BAPIACEXTC OPTIONAL
*" T_RETURN STRUCTURE BAPIRET2
*" T_PAYMENTCARD STRUCTURE BAPIACPC09 OPTIONAL
*" T_CONTRACTITEM STRUCTURE BAPIACCAIT OPTIONAL
*" T_EXTENSION2 STRUCTURE BAPIPAREX OPTIONAL
*" T_REALESTATE STRUCTURE BAPIACRE09 OPTIONAL
*" T_ACCOUNTWT STRUCTURE BAPIACWT09 OPTIONAL
*"----------------------------------------------------------------------
data l_ok type char0001.
call function 'BAPI_ACC_DOCUMENT_POST'
exporting
DOCUMENTHEADER = I_DOCUMENTHEADER
CUSTOMERCPD = I_CUSTOMERCPD
CONTRACTHEADER = I_CONTRACTHEADER
importing
OBJ_TYPE = E_OBJ_TYPE
OBJ_KEY = E_OBJ_KEY
OBJ_SYS = E_OBJ_SYS
tables
ACCOUNTGL = T_ACCOUNTGL
ACCOUNTRECEIVABLE = T_ACCOUNTRECEIVABLE
ACCOUNTPAYABLE = T_ACCOUNTPAYABLE
ACCOUNTTAX = T_ACCOUNTTAX
CURRENCYAMOUNT = T_CURRENCYAMOUNT
CRITERIA = T_CRITERIA
VALUEFIELD = T_VALUEFIELD
EXTENSION1 = T_EXTENSION1
RETURN = T_RETURN
PAYMENTCARD = T_PAYMENTCARD
CONTRACTITEM = T_CONTRACTITEM
EXTENSION2 = T_EXTENSION2
REALESTATE = T_REALESTATE
ACCOUNTWT = T_ACCOUNTWT.
l_ok = '1'.
loop at t_return.
if t_return-type = 'E'.
l_ok = '0'.
endif.
endloop.
if l_ok = '1'.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
endif.
ENDFUNCTION.
2.上傳example
T_ACCOUNTGL
ITEMNO_ACC 0000000010
GL_ACCOUNT 67390010
ITEM_TEXT TEST -消耗品
DOC_TYPE SA
COMP_CODE 1000
BUS_AREA 1000
PSTNG_DATE 2013/10/09
VALUE_DATE 2013/10/09
T_ACCOUNTPAYABLE
ITEMNO_ACC 0000000020
VENDOR_NO 100696
COMP_CODE 1000
BUS_AREA 1000
PMNTTRMS M030
BLINE_DATE 2013/10/09
ITEM_TEXT TEST -消耗品
T_ACCOUNTTAX
ITEMNO_ACC 0000000030
GL_ACCOUNT 12640010
TAX_CODE 21
ITEMNO_TAX 000010
T_CURRENCYAMOUNT
ITEMNO_ACC 0000000010
CURRENCY_ISO TWD
AMT_DOCCUR 1,000.0000
ITEMNO_ACC 0000000020
CURRENCY_ISO TWD
AMT_DOCCUR 1,050.0000-
DISC_BASE 210.0000-
ITEMNO_ACC 0000000030
CURRENCY_ISO TWD
AMT_DOCCUR 50.0000
AMT_BASE 1,000.0000
T_EXTENSION1
FIELD1 30
FIELD2 SGTXT
FIELD3 ZE10000000 1021001 86378995
FIELD4
3.copy SAMPLE_INTERFACE_RWBAPI01 to ZSAMPLE_INTERFACE_RWBAPI01,並implement code:
data: wa like IT_ACCIT,
i type i value 0,
wa_e like EXTENSION,
ind type sy-tabix.
loop at EXTENSION into wa_e.
read table IT_ACCIT with key POSNR = wa_e-field1 into wa.
ind = sy-tabix.
if wa_e-field2 eq 'SGTXT'.
wa-SGTXT = wa_e-field3.
modify IT_ACCIT from wa index ind.
i = i + 1.
endif.
endloop.
4.客製IMG(在各client都要做,無法transport)
5. 結果
沒有留言:
張貼留言