on 03-22-2007 4:16 AM
hi experts,
plz help me out out with the usage of FM calculate_tax_item with some coding ? and the how can i get this into form ?
I have used this FM to retrieve the tax amount shown in PO Item level, below is test program for you..
REPORT zreport10 .
TABLES : ekko , ekpo , t001 , komk , komp .
DATA mwsbp TYPE komp-mwsbp .
PARAMETERS : p_ebeln TYPE ekpo-ebeln ,
p_ebelp TYPE ekpo-ebelp .
START-OF-SELECTION .
PERFORM calculate_tax USING p_ebeln p_ebelp CHANGING mwsbp .
WRITE mwsbp .
----
FORM calculate_tax *
----
FORM calculate_tax USING p_ebeln TYPE ekpo-ebeln
p_ebelp TYPE ekpo-ebelp
CHANGING p_mwsbp TYPE komp-mwsbp .
CONSTANTS: bstyp-info VALUE 'I',
bstyp-ordr VALUE 'W',
bstyp-banf VALUE 'B',
bstyp-best VALUE 'F',
bstyp-anfr VALUE 'A',
bstyp-kont VALUE 'K',
bstyp-lfpl VALUE 'L',
bstyp-lerf VALUE 'Q'.
DATA : taxcom TYPE taxcom ,
t_konv TYPE TABLE OF komv WITH HEADER LINE .
DATA: BEGIN OF tkomv OCCURS 50.
INCLUDE STRUCTURE komv.
DATA: END OF tkomv.
DATA: BEGIN OF tkomvd OCCURS 50. "Belegkonditionen
INCLUDE STRUCTURE komvd.
DATA: END OF tkomvd.
DATA : BEGIN OF tkomvh OCCURS 50.
INCLUDE STRUCTURE komv.
DATA : vtext LIKE t685t-vtext.
DATA : END OF tkomvh.
SELECT SINGLE *
INTO ekko
FROM ekko
WHERE ebeln = p_ebeln .
SELECT SINGLE *
INTO ekpo
FROM ekpo
WHERE ebeln = p_ebeln
AND ebelp = p_ebelp .
SELECT SINGLE *
INTO t001
FROM t001
WHERE bukrs = ekko-bukrs .
taxcom-bukrs = ekpo-bukrs.
taxcom-budat = ekko-bedat.
taxcom-waers = ekko-waers.
taxcom-kposn = ekpo-ebelp.
taxcom-mwskz = ekpo-mwskz.
taxcom-txjcd = ekpo-txjcd.
taxcom-shkzg = 'H'.
taxcom-xmwst = 'X'.
IF ekko-bstyp EQ bstyp-best.
taxcom-wrbtr = ekpo-netwr.
ELSE.
taxcom-wrbtr = ekpo-zwert.
ENDIF.
taxcom-lifnr = ekko-lifnr.
taxcom-land1 = ekko-lands.
taxcom-ekorg = ekko-ekorg.
taxcom-hwaer = t001-waers.
taxcom-llief = ekko-llief.
taxcom-bldat = ekko-bedat.
taxcom-matnr = ekpo-ematn.
taxcom-werks = ekpo-werks.
taxcom-bwtar = ekpo-bwtar.
taxcom-matkl = ekpo-matkl.
taxcom-meins = ekpo-meins.
IF ekko-bstyp EQ bstyp-best.
taxcom-mglme = ekpo-menge.
ELSE.
IF ekko-bstyp EQ bstyp-kont AND ekpo-abmng GT 0.
taxcom-mglme = ekpo-abmng.
ELSE.
taxcom-mglme = ekpo-ktmng.
ENDIF.
ENDIF.
IF taxcom-mglme EQ 0.
taxcom-mglme = 1000.
ENDIF.
taxcom-mtart = ekpo-mtart.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'J_1BSA_COMPONENT_ACTIVE'
EXPORTING
bukrs = ekko-bukrs
component = 'BR'
EXCEPTIONS
component_not_active = 1
OTHERS = 2.
IF sy-subrc IS INITIAL.
komk-mandt = ekko-mandt.
komk-kalsm = ekko-kalsm.
IF ekko-kalsm = ''.
komk-kalsm = 'RM0000'.
ENDIF.
komk-kappl = 'M'.
komk-waerk = ekko-waers.
komk-knumv = ekko-knumv.
komk-lifnr = ekko-lifnr.
komp-kposn = ekpo-ebelp.
komp-matnr = ekpo-matnr.
komp-werks = ekpo-werks.
komp-matkl = ekpo-matkl.
komp-infnr = ekpo-infnr.
komp-evrtn = ekpo-konnr.
komp-evrtp = ekpo-ktpnr.
CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
EXPORTING
comm_head_i = komk
comm_item_i = komp
language = 'E'
TABLES
tkomv = tkomv
tkomvd = tkomvd.
CALL FUNCTION 'J_1B_NF_PO_DISCOUNTS'
EXPORTING
i_kalsm = ekko-kalsm
i_ekpo = ekpo
IMPORTING
e_ekpo = ekpo
TABLES
i_konv = t_konv.
IF NOT ekko-llief IS INITIAL.
taxcom-lifnr = ekko-llief.
ENDIF.
ENDIF.
CALL FUNCTION 'FIND_TAX_SPREADSHEET'
EXPORTING
buchungskreis = t001-bukrs
EXCEPTIONS
not_found = 1
OTHERS = 2.
CALL FUNCTION 'CALCULATE_TAX_ITEM'
EXPORTING
i_taxcom = taxcom
IMPORTING
e_taxcom = taxcom
EXCEPTIONS
mwskz_not_defined = 1
mwskz_not_found = 2
mwskz_not_valid = 3
steuerbetrag_falsch = 4
country_not_found = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
p_mwsbp = taxcom-wmwst .
ENDFORM. " calculate_tax
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.