计算税额
IF lv_emwskz = ‘X6’.
i_wrbtr = lwa_bseg-dmbtr * ‘1.03’.
ELSEIF lv_emwskz = ‘X1’.
i_wrbtr = lwa_bseg-dmbtr * ‘1.17’.
ELSEIF lv_emwskz = ‘X7’ .
i_wrbtr = lwa_bseg-dmbtr * ‘1.16’.
ELSE.
i_wrbtr = lwa_bseg-dmbtr * ‘1.13’.
ENDIF.
CLEAR: t_mwdat[].
CALL FUNCTION ‘CALCULATE_TAX_FROM_GROSSAMOUNT’
EXPORTING
i_bukrs = lwa_reslt02-ebukrs
i_mwskz = lv_emwskz
i_waers = cns_waers
i_wrbtr = i_wrbtr
TABLES
t_mwdat = t_mwdat
EXCEPTIONS
bukrs_not_found = 1
country_not_found = 2
mwskz_not_defined = 3
mwskz_not_valid = 4
account_not_found = 5
different_discount_base = 6
different_tax_base = 7
txjcd_not_valid = 8
not_found = 9
ktosl_not_found = 10
kalsm_not_found = 11
parameter_error = 12
knumh_not_found = 13
kschl_not_found = 14
unknown_error = 15
OTHERS = 16.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ls_enhs-posnr = ‘001’.
ls_enhs-xnegp = documentheader-neg_postng.
* ls_enhs-zz010 = lwa_bseg-zz010.
* ls_enhs-zz020 = lwa_bseg-zz020.
* ls_enhs-zz030 = lwa_bseg-zz030.
* ls_enhs-zz040 = lwa_bseg-zz040.
* ls_enhs-zz050 = lwa_bseg-zz050.
extension2-valuepart1 = ls_enhs.
APPEND extension2 TO extension2.
***税额
CLEAR accounttax.
accounttax-itemno_acc = ‘002’.
accounttax-tax_code = lv_imwskz.
accounttax-acct_key = t_mwdat-ktosl.
accounttax-cond_key = t_mwdat-kschl.
accounttax-taxjurcode = t_mwdat-txjcd.
accounttax-taxjurcode_deep = t_mwdat-txjcd_deep.
accounttax-taxjurcode_level = t_mwdat-txjlv.
APPEND accounttax.
CLEAR currencyamount.
currencyamount-itemno_acc = ‘002’.
currencyamount-currency = cns_waers.
currencyamount-amt_doccur = t_mwdat-wmwst.
currencyamount-amt_base = t_mwdat-kawrt.
APPEND currencyamount.