FUNCTION zfm_mmods_po_get_tax.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_EBELN) LIKE EKPO-EBELN
*" REFERENCE(I_EBELP) LIKE EKPO-EBELP
*" EXPORTING
*" REFERENCE(E_TAXCOM) TYPE TAXCOM
*" TABLES
*" T_KOMV STRUCTURE KOMV
*"----------------------------------------------------------------------
DATA : lw_ekko LIKE ekko,
lw_ekpo LIKE ekpo,
lw_lfa1 LIKE lfa1.
SELECT SINGLE * INTO lw_ekko
FROM ekko
WHERE ebeln = i_ebeln.
IF lw_ekko IS NOT INITIAL.
SELECT SINGLE * INTO lw_ekpo
FROM ekpo
WHERE ebeln = i_ebeln AND
ebelp = i_ebelp.
SELECT SINGLE * INTO lw_lfa1
FROM lfa1
WHERE lifnr = lw_ekko-lifnr.
ELSE.
EXIT.
ENDIF.
CHECK lw_ekpo IS NOT INITIAL.
DATA: li_tax TYPE j_1b_taxcom ,
li_taxcom TYPE taxcom ,
l_wa_t001 TYPE t001,
* e_taxcom TYPE taxcom ,
l_wa_komv TYPE komv ,
l_gv_amount TYPE netwr ,
l_unitprice TYPE netwr,
l_ipiamount TYPE netwr,
l_total_ipi TYPE netwr,
l_total TYPE netwr ,
l_taxamount TYPE netwr.
SELECT SINGLE * FROM t001
INTO l_wa_t001
WHERE bukrs EQ lw_ekko-bukrs.
* Fill tax fields relevant for PO
li_tax-txreg_sf = lw_lfa1-txjcd.
li_tax-txreg_st = lw_ekpo-txjcd.
li_tax-taxbs = lw_lfa1-taxbs.
li_tax-ipisp = lw_lfa1-ipisp.
li_tax-brsch = lw_lfa1-brsch.
li_tax-mtuse = lw_ekpo-j_1bmatuse.
li_tax-mtorg = lw_ekpo-j_1bmatorg.
li_tax-ownpr = lw_ekpo-j_1bownpro.
li_tax-steuc = lw_ekpo-j_1bnbm.
li_tax-matkl = lw_ekpo-matkl.
li_tax-vrkme = lw_ekpo-meins.
li_tax-mgame = lw_ekpo-menge.
* ISS Calculation with 2-level tax jurisdiction code
* To get the ISS Tax Condtions, need to pass the Following Parameters
li_tax-loc_se = lw_lfa1-txjcd.
li_tax-loc_sr = lw_lfa1-txjcd.
* if you don't pass the above parameters and if your PO has ISS Tax conditions,
* you don't see them in the Result
* Location of service provider = Tax Jur. Code of
* vendor:
li_tax-loc_pr = lw_lfa1-txjcd.
* Location of service = Tax Jur. Code of delivery address
*Populate fields based on country
CALL FUNCTION 'J_1B_SAVE_TAX_FIELDS'
EXPORTING
i_taxcom = li_tax.
CLEAR li_taxcom.
li_taxcom-bukrs = lw_ekpo-bukrs.
li_taxcom-budat = lw_ekko-bedat.
li_taxcom-waers = lw_ekko-waers.
li_taxcom-kposn = lw_ekpo-ebelp.
li_taxcom-mwskz = lw_ekpo-mwskz.
li_taxcom-txjcd = lw_ekpo-txjcd.
li_taxcom-shkzg = 'H'.
li_taxcom-xmwst = 'X'.
IF lw_ekko-bstyp EQ 'F'.
li_taxcom-wrbtr = lw_ekpo-netwr.
ELSE.
li_taxcom-wrbtr = lw_ekpo-zwert.
ENDIF.
li_taxcom-lifnr = lw_ekko-lifnr.
li_taxcom-land1 = lw_ekko-lands. "WIA
li_taxcom-ekorg = lw_ekko-ekorg.
li_taxcom-hwaer = l_wa_t001-waers.
li_taxcom-llief = lw_ekko-llief.
li_taxcom-bldat = lw_ekko-bedat.
li_taxcom-matnr = lw_ekpo-matnr. "HTN-Abwicklung
li_taxcom-werks = lw_ekpo-werks.
li_taxcom-bwtar = lw_ekpo-bwtar.
li_taxcom-matkl = lw_ekpo-matkl.
li_taxcom-meins = lw_ekpo-meins.
IF lw_ekko-bstyp EQ 'F'.
li_taxcom-mglme = lw_ekpo-menge.
ELSE.
IF lw_ekko-bstyp EQ 'K' AND lw_ekpo-abmng GT 0.
li_taxcom-mglme = lw_ekpo-abmng.
ELSE.
li_taxcom-mglme = lw_ekpo-ktmng.
ENDIF.
ENDIF.
IF li_taxcom-mglme EQ 0.
li_taxcom-mglme = 1000.
ENDIF.
li_taxcom-mtart = lw_ekpo-mtart.
*Calculation of TAX
CALL FUNCTION 'CALCULATE_TAX_ITEM'
EXPORTING
dialog = ' '
display_only = ' '
i_taxcom = li_taxcom
IMPORTING
e_taxcom = e_taxcom
TABLES
t_xkomv = t_komv.
ENDFUNCTION.
Comments
Post a Comment