您的位置:首页 > 其它

總帳憑証:BAPI_ACC_DOCUMENT_POST參數

2010-10-27 10:25 363 查看
FORM FILL_IN_TABLES USING PF_AUTOMESS.
data: WA_ZEXTEN LIKE ZEXTEN014.

PF_AUTOMESS = ''.
* ---初始化參數
CLEAR: gd_documentheader, it_accountgl, it_currencyamount,
it_accvendap, it_acccustar, it_ext2, it_return.
CLEAR: it_accountgl[], it_currencyamount[], it_accvendap[],
it_acccustar[], it_ext2[], it_return[].
SELECT SINGLE * FROM T001 WHERE BUKRS = IT_UPDATA-CCDE. "求取公司
的本位幣
* ----gd_documentheader
gd_documentheader-USERNAME = SY-UNAME.
gd_documentheader-DOC_DATE = IT_UPDATA-INV_DATE.
gd_documentheader-DOC_TYPE = IT_UPDATA-DOC_TYPE.
gd_documentheader-COMP_CODE = IT_UPDATA-CCDE.
gd_documentheader-PSTNG_DATE = IT_UPDATA-PST_DATE.
gd_documentheader-REF_DOC_NO = IT_UPDATA-REF_NO.
gd_documentheader-HEADER_TXT = IT_UPDATA-HD_TXT.
gd_documentheader-bus_act = 'RFBU'.
* --根據IT_UPDATA-PK1&IT_UPDATA-PK2按借貸分別求參數
* >>>>IT_UPDATA-
PK1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BEGIN
SELECT SINGLE * FROM TBSL WHERE BSCHL = IT_UPDATA-PK1. "求取post
key的借or貸
IF TBSL-SHKZG = 'S'.
IT_UPDATA-FCAMT1 = ABS( IT_UPDATA-FCAMT1 ).
"IT_UPDATA-LCAMT1 = ABS( IT_UPDATA-LCAMT1 ).
ELSEIF TBSL-SHKZG = 'H'.
IT_UPDATA-FCAMT1 = ABS( IT_UPDATA-FCAMT1 ) * -1.
"IT_UPDATA-LCAMT1 = ABS( IT_UPDATA-LCAMT1 ) * -1.
ENDIF.
* >>----it_currencyamount(10)
it_currencyamount-ITEMNO_ACC = 10.
it_currencyamount-CURRENCY = IT_UPDATA-CUR.
it_currencyamount-AMT_DOCCUR = IT_UPDATA-FCAMT1.
IF T001-WAERS <> IT_UPDATA-CUR. "--不是本位幣時,求匯率(因參數問
題,改為傳匯率)
IF IT_UPDATA-LCAMT1 IS NOT INITIAL.
it_currencyamount-EXCH_RATE = IT_UPDATA-LCAMT1.
ELSE. "如果用戶沒有錄入本位值,則取系統最近的匯率
PERFORM CONVERT_CURRENCY USING IT_UPDATA-FCAMT1 IT_UPDATA-
CUR T001-WAERS it_currencyamount-EXCH_RATE.
ENDIF.
* IF IT_UPDATA-FCAMT1 <> 0 AND IT_UPDATA-LCAMT1 IS NOT INITIAL.
* it_currencyamount-EXCH_RATE = IT_UPDATA-LCAMT1 /
IT_UPDATA-FCAMT1.
* ELSE. "如果用戶沒有錄入本位值,則取系統最近的匯率
* PERFORM CONVERT_CURRENCY USING IT_UPDATA-FCAMT1
IT_UPDATA-CUR T001-WAERS it_currencyamount-EXCH_RATE.
* ENDIF.
ENDIF.
APPEND it_currencyamount.
CLEAR it_currencyamount.
* >>----it_ext2(10)
CLEAR: WA_ZEXTEN.
WA_ZEXTEN-POSNR = 10. "??行?目
WA_ZEXTEN-BSCHL = IT_UPDATA-PK1. "post key1
IF TBSL-XSONU = 'X'.
WA_ZEXTEN-UMSKZ = IT_UPDATA-SPGL. "Special G/L Indicator
ENDIF.
it_ext2-STRUCTURE = 'ZEXTEN014'.
it_ext2-VALUEPART1 = WA_ZEXTEN.
APPEND it_ext2.
CLEAR it_ext2.
*CASE1
CASE TBSL-KOART.
WHEN 'K'. "VENDOR
* >>----it_accvendap(10)
it_accvendap-ITEMNO_ACC = 10.
it_accvendap-COMP_CODE = IT_UPDATA-CCDE.
it_accvendap-VENDOR_NO = IT_UPDATA-ACCT1.
PERFORM ADD_PRE_ZERO USING it_accvendap-VENDOR_NO. "前導加0
"-it_accvendap-GL_ACCOUNT = IT_UPDATA-ACCT1. "-'1310111010'
it_accvendap-SP_GL_IND = IT_UPDATA-SPGL.
it_accvendap-TAX_CODE = IT_UPDATA-TAXCODE.
IF TBSL-SHKZG = 'S'.
it_accvendap-BLINE_DATE = IT_UPDATA-DUEON.
ENDIF.
it_accvendap-ALLOC_NMBR = IT_UPDATA-ASSGN1.
it_accvendap-ITEM_TEXT = IT_UPDATA-ITEM_TXT1.
it_accvendap-BUS_AREA = IT_UPDATA-BUSAR1.
* ---LFB1
select single * from LFB1 where lifnr = it_accvendap-VENDOR_NO
and
bukrs = IT_UPDATA-CCDE.
IF IT_UPDATA-ZTERM IS NOT INITIAL.
it_accvendap-PMNTTRMS = IT_UPDATA-ZTERM. "Payment Key
ELSE.
it_accvendap-PMNTTRMS = LFB1-ZTERM.
ENDIF.
select single * from T052 where zterm = LFB1-ZTERM.
IF IT_UPDATA-ZBD1T IS NOT INITIAL.
it_accvendap-DSCT_DAYS1 = IT_UPDATA-ZBD1T. "Cash discount
days 1
ELSE.
it_accvendap-DSCT_DAYS1 = T052-ZTAG1.
ENDIF.
IF IT_UPDATA-ZFBDT IS NOT INITIAL.
it_accvendap-BLINE_DATE = IT_UPDATA-ZFBDT. "Baseline Date
for Due Date Calculation
ELSE.
it_accvendap-BLINE_DATE = IT_UPDATA-INV_DATE. "--SY-DATUM.
ENDIF.
* --- end
APPEND it_accvendap.
CLEAR it_accvendap.
WHEN 'D'. "CUSTOMER
* >>----it_acccustar(10)
it_acccustar-ITEMNO_ACC = 10.
it_acccustar-COMP_CODE = IT_UPDATA-CCDE.
it_acccustar-CUSTOMER = IT_UPDATA-ACCT1.
PERFORM ADD_PRE_ZERO USING it_acccustar-CUSTOMER. "前導加0
"-it_acccustar-GL_ACCOUNT = IT_UPDATA-ACCT1.
it_acccustar-SP_GL_IND = IT_UPDATA-SPGL.
it_acccustar-TAX_CODE = IT_UPDATA-TAXCODE.
IF TBSL-SHKZG = 'S'.
it_acccustar-BLINE_DATE = IT_UPDATA-DUEON.
ENDIF.
it_acccustar-ALLOC_NMBR = IT_UPDATA-ASSGN1.
it_acccustar-ITEM_TEXT = IT_UPDATA-ITEM_TXT1.
it_acccustar-BUS_AREA = IT_UPDATA-BUSAR1.
* --KNB1
select single * from KNB1 where kunnr = it_acccustar-CUSTOMER
and
bukrs = IT_UPDATA-CCDE.
IF IT_UPDATA-ZTERM IS NOT INITIAL.
it_acccustar-PMNTTRMS = IT_UPDATA-ZTERM. "Payment Key
ELSE.
it_acccustar-PMNTTRMS = KNB1-ZTERM.
ENDIF.
select single * from T052 where zterm = KNB1-ZTERM.
IF IT_UPDATA-ZBD1T IS NOT INITIAL.
it_acccustar-DSCT_DAYS1 = IT_UPDATA-ZBD1T. "Cash discount
days 1
ELSE.
it_acccustar-DSCT_DAYS1 = T052-ZTAG1.
ENDIF.
IF IT_UPDATA-ZFBDT IS NOT INITIAL.
it_acccustar-BLINE_DATE = IT_UPDATA-ZFBDT. "Baseline Date
for Due Date Calculation
ELSE.
it_acccustar-BLINE_DATE = IT_UPDATA-INV_DATE. "--SY-DATUM.
ENDIF.
* -- end
APPEND it_acccustar.
CLEAR it_acccustar.
WHEN OTHERS. "STANDARD(40/50)
SELECT SINGLE * FROM SKB1 WHERE BUKRS = IT_UPDATA-CCDE AND
SAKNR = IT_UPDATA-ACCT1.
* >>----it_accountgl(10)
it_accountgl-ITEMNO_ACC = 10.
it_accountgl-GL_ACCOUNT = IT_UPDATA-ACCT1.
it_accountgl-ALLOC_NMBR = IT_UPDATA-ASSGN1.
it_accountgl-ITEM_TEXT = IT_UPDATA-ITEM_TXT1.
it_accountgl-COSTCENTER = IT_UPDATA-CCTR1.
it_accountgl-PROFIT_CTR = IT_UPDATA-PCTR1.
it_accountgl-BUS_AREA = IT_UPDATA-BUSAR1.
IF SKB1-MWSKZ IS NOT INITIAL. "會計科目需不需要Tax code
it_accountgl-TAX_CODE = IT_UPDATA-TAXCODE.
ENDIF.
IF SKB1-XINTB = 'X'.
CONCATENATE '[' IT_UPDATA-ACCT1 ']' TEXT-E02 INTO
PF_AUTOMESS.
ENDIF.
APPEND it_accountgl.
CLEAR it_accountgl.
ENDCASE.
*ENDCASE1
* >>>>IT_UPDATA-
PK1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>END
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=
* >>>>IT_UPDATA-
PK2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BEGIN
SELECT SINGLE * FROM TBSL WHERE BSCHL = IT_UPDATA-PK2. "求取post
key的借or貸
IF TBSL-SHKZG = 'S'.
IT_UPDATA-FCAMT2 = ABS( IT_UPDATA-FCAMT2 ).
"IT_UPDATA-LCAMT2 = ABS( IT_UPDATA-LCAMT2 ).
ELSEIF TBSL-SHKZG = 'H'.
IT_UPDATA-FCAMT2 = ABS( IT_UPDATA-FCAMT2 ) * -1.
"IT_UPDATA-LCAMT2 = ABS( IT_UPDATA-LCAMT2 ) * -1.
ENDIF.
* ----it_currencyamount(20)
it_currencyamount-ITEMNO_ACC = 20.
it_currencyamount-CURRENCY = IT_UPDATA-CUR.
it_currencyamount-AMT_DOCCUR = IT_UPDATA-FCAMT2.
*----
IF T001-WAERS <> IT_UPDATA-CUR. "--不是本位幣時,求匯率(因參數問
題,改為傳匯率)
IF IT_UPDATA-LCAMT2 IS NOT INITIAL.
it_currencyamount-EXCH_RATE = IT_UPDATA-LCAMT2.
ELSE. "如果用戶沒有錄入本位值,則取系統最近的匯率
PERFORM CONVERT_CURRENCY USING IT_UPDATA-FCAMT2 IT_UPDATA-
CUR T001-WAERS it_currencyamount-EXCH_RATE.
ENDIF.
* IF IT_UPDATA-FCAMT2 <> 0 AND IT_UPDATA-LCAMT2 IS NOT INITIAL.
* it_currencyamount-EXCH_RATE = IT_UPDATA-LCAMT2 /
IT_UPDATA-FCAMT2.
* ELSE. "如果用戶沒有錄入本位值,則取系統最近的匯率
* PERFORM CONVERT_CURRENCY USING IT_UPDATA-FCAMT2
IT_UPDATA-CUR T001-WAERS it_currencyamount-EXCH_RATE.
* ENDIF.
ENDIF.
*----
APPEND it_currencyamount.
CLEAR it_currencyamount.
* >>----it_ext2(20)
CLEAR: WA_ZEXTEN.
WA_ZEXTEN-POSNR = 20. "??行?目
WA_ZEXTEN-BSCHL = IT_UPDATA-PK2. "post key2
IF TBSL-XSONU = 'X'.
WA_ZEXTEN-UMSKZ = IT_UPDATA-SPGL. "Special G/L Indicator
ENDIF.
"--WA_ZEXTEN-DMBTR = IT_UPDATA-LCAMT2. "---07/05
it_ext2-STRUCTURE = 'ZEXTEN014'.
it_ext2-VALUEPART1 = WA_ZEXTEN.
APPEND it_ext2.
CLEAR it_ext2.
*CASE2
CASE TBSL-KOART.
WHEN 'K'. "VENDOR
* >>----it_accvendap(20)
it_accvendap-ITEMNO_ACC = 20.
it_accvendap-COMP_CODE = IT_UPDATA-CCDE.
it_accvendap-VENDOR_NO = IT_UPDATA-ACCT2.
PERFORM ADD_PRE_ZERO USING it_accvendap-VENDOR_NO. "前導加0
"-it_accvendap-GL_ACCOUNT = IT_UPDATA-ACCT2.
it_accvendap-SP_GL_IND = IT_UPDATA-SPGL.
it_accvendap-TAX_CODE = IT_UPDATA-TAXCODE.
IF TBSL-SHKZG = 'S'.
it_accvendap-BLINE_DATE = IT_UPDATA-DUEON.
ENDIF.
it_accvendap-ALLOC_NMBR = IT_UPDATA-ASSGN2.
it_accvendap-ITEM_TEXT = IT_UPDATA-ITEM_TXT2.
it_accvendap-BUS_AREA = IT_UPDATA-BUSAR2.
* ---LFB1
select single * from LFB1 where lifnr = it_accvendap-VENDOR_NO
and
bukrs = IT_UPDATA-CCDE.
IF IT_UPDATA-ZTERM IS NOT INITIAL.
it_accvendap-PMNTTRMS = IT_UPDATA-ZTERM. "Payment Key
ELSE.
it_accvendap-PMNTTRMS = LFB1-ZTERM.
ENDIF.
select single * from T052 where zterm = LFB1-ZTERM.
IF IT_UPDATA-ZBD1T IS NOT INITIAL.
it_accvendap-DSCT_DAYS1 = IT_UPDATA-ZBD1T. "Cash discount
days 1
ELSE.
it_accvendap-DSCT_DAYS1 = T052-ZTAG1.
ENDIF.
IF IT_UPDATA-ZFBDT IS NOT INITIAL.
it_accvendap-BLINE_DATE = IT_UPDATA-ZFBDT. "Baseline Date
for Due Date Calculation
ELSE.
it_accvendap-BLINE_DATE = IT_UPDATA-INV_DATE. "--SY-DATUM.
ENDIF.
* --- end
APPEND it_accvendap.
CLEAR it_accvendap.
WHEN 'D'. "CUSTOMER
* >>----it_acccustar(20)
it_acccustar-ITEMNO_ACC = 20.
it_acccustar-COMP_CODE = IT_UPDATA-CCDE.
it_acccustar-CUSTOMER = IT_UPDATA-ACCT2.
PERFORM ADD_PRE_ZERO USING it_acccustar-CUSTOMER. "前導加0
"-it_acccustar-GL_ACCOUNT = IT_UPDATA-ACCT2.
it_acccustar-SP_GL_IND = IT_UPDATA-SPGL.
it_acccustar-TAX_CODE = IT_UPDATA-TAXCODE.
IF TBSL-SHKZG = 'S'.
it_acccustar-BLINE_DATE = IT_UPDATA-DUEON.
ENDIF.
it_acccustar-ALLOC_NMBR = IT_UPDATA-ASSGN2.
it_acccustar-ITEM_TEXT = IT_UPDATA-ITEM_TXT2.
it_acccustar-BUS_AREA = IT_UPDATA-BUSAR2.
* --KNB1
select single * from KNB1 where kunnr = it_acccustar-CUSTOMER
and
bukrs = IT_UPDATA-CCDE.
IF IT_UPDATA-ZTERM IS NOT INITIAL.
it_acccustar-PMNTTRMS = IT_UPDATA-ZTERM. "Payment Key
ELSE.
it_acccustar-PMNTTRMS = KNB1-ZTERM.
ENDIF.
select single * from T052 where zterm = KNB1-ZTERM.
IF IT_UPDATA-ZBD1T IS NOT INITIAL.
it_acccustar-DSCT_DAYS1 = IT_UPDATA-ZBD1T. "Cash discount
days 1
ELSE.
it_acccustar-DSCT_DAYS1 = T052-ZTAG1.
ENDIF.
IF IT_UPDATA-ZFBDT IS NOT INITIAL.
it_acccustar-BLINE_DATE = IT_UPDATA-ZFBDT. "Baseline Date
for Due Date Calculation
ELSE.
it_acccustar-BLINE_DATE = IT_UPDATA-INV_DATE. "--SY-DATUM.
ENDIF.
* -- end
APPEND it_acccustar.
CLEAR it_acccustar.
WHEN OTHERS. "STANDARD(40/50)
SELECT SINGLE * FROM SKB1 WHERE BUKRS = IT_UPDATA-CCDE AND
SAKNR = IT_UPDATA-ACCT2.
* >>----it_accountgl(20)
it_accountgl-ITEMNO_ACC = 20.
it_accountgl-GL_ACCOUNT = IT_UPDATA-ACCT2.
it_accountgl-ALLOC_NMBR = IT_UPDATA-ASSGN2.
it_accountgl-ITEM_TEXT = IT_UPDATA-ITEM_TXT2.
it_accountgl-COSTCENTER = IT_UPDATA-CCTR2.
it_accountgl-PROFIT_CTR = IT_UPDATA-PCTR2.
it_accountgl-BUS_AREA = IT_UPDATA-BUSAR2.
IF SKB1-MWSKZ IS NOT INITIAL. "會計科目需不需要Tax code
it_accountgl-TAX_CODE = IT_UPDATA-TAXCODE.
ENDIF.
IF SKB1-XINTB = 'X'.
CONCATENATE PF_AUTOMESS '[' IT_UPDATA-ACCT2 ']' TEXT-E02
INTO PF_AUTOMESS.
ENDIF.
APPEND it_accountgl.
CLEAR it_accountgl.
ENDCASE.
*ENDCASE2
* >>>>IT_UPDATA-
PK2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>END
ENDFORM.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: