‎2006 Sep 14 9:06 AM
*----for import PO get the BED rate.
IF is_exhead-cvdind = abap_true
AND es_exitem-exbed > 0.
es_exitem-bedrate = es_exitem-exbas / es_exitem-exbed.
es_exitem-bedrate = ( es_exitem-exbed /
es_exitem-exbas ) * 100.
hi,
here value passed overflow is happening and it is going to dump.
i have debugged and i have seen .pls tell me a solution where i can change it.code is given below.
urs
pradeep.r
FUNCTION j_1iex_default_excise_duty.
*"----
-
""Local interface:
*" IMPORTING
*" REFERENCE(IS_POITEM) LIKE EBEFU STRUCTURE EBEFU OPTIONAL
*" REFERENCE(IS_EXITEM) LIKE J_1IEXITEM STRUCTURE J_1IEXITEM
*" OPTIONAL
*" REFERENCE(IS_MSEG) LIKE MSEG STRUCTURE MSEG OPTIONAL
*" REFERENCE(IS_EXHEAD) LIKE J_1IEXHEAD STRUCTURE J_1IEXHEAD
*" OPTIONAL
*" REFERENCE(I_EXDAT) LIKE J_1IEXCHDR-EXDAT DEFAULT SY-DATUM
*" EXPORTING
*" REFERENCE(ES_EXITEM) LIKE J_1IEXITEM STRUCTURE J_1IEXITEM
*"----
-
DATA: ls_ekko LIKE ekko,
ls_ekpo LIKE ekpo,
ls_taxcom LIKE taxcom,
l_tax_proc LIKE t005-kalsm,
ls_t001 LIKE t001,
ls_wedaten LIKE meprwe,
lt_komv LIKE TABLE OF komv,
ls_komv LIKE komv,
ls_exccom LIKE j_1iexccom,
l_result LIKE sy-subrc,
ls_qexcise LIKE j_1iqexcise,
ls_exctax LIKE j_1iexctax,
ls_assval LIKE j_1iassval,
l_kunnr LIKE t001w-kunnr,
l_mwskv LIKE t001-mwskv,
l_exbas LIKE komv-kawrt,
l_bwkey LIKE t001w-bwkey,
l_bukrs LIKE t001k-bukrs,
ls_excdef LIKE j_1iexcdef,
ls_konv LIKE konv,
ls_ekbz LIKE ekbz,
l_po_quantity LIKE ekpo-menge,
l_cvdexcg LIKE j_1iindcus-j_1icvdexcg,
l_waers LIKE ekbz-waers,
l_buss_partner LIKE lfa1-lifnr,
l_mwskz LIKE j_1iexcdef-j_1itxcode,
l_mwska LIKE t001-mwska,
l_menge LIKE j_1iexitem-menge,
l_meins LIKE mara-meins,
ls_vbrk LIKE vbrk,
ls_exchdr LIKE j_1iexchdr,
ls_t005 LIKE t005,
l_update_cond,
l_afs_indicator,
l_mseg LIKE mseg.
DATA : is_taxcond LIKE j_1itaxcond_def.
DATA:
BEGIN OF lt_mdvt_cond_type OCCURS 0,
kschl LIKE j_1iexcdef-j_1icbedap,
duty_type(1) TYPE c,
base LIKE j_1iexcdtl-exbas,
excamt LIKE j_1iexcdtl-exbas,
excrat LIKE konv-kbetr,
END OF lt_mdvt_cond_type.
DATA:
BEGIN OF ls_mdvt_cond_type,
kschl LIKE j_1iexcdef-j_1icbedap,
duty_type(1) TYPE c,
base LIKE j_1iexcdtl-exbas,
excamt LIKE j_1iexcdtl-exbas,
excrat LIKE konv-kbetr,
END OF ls_mdvt_cond_type.
DATA: l_ebeln TYPE ekpo-ebeln.
DATA: l_ebelp TYPE ekpo-ebelp.
DATA: L_JCDB LIKE EKBZ-REEWR.
DATA: l_exdat LIKE mkpf-budat.
es_exitem = is_exitem.
IF NOT is_poitem IS INITIAL.
l_ebeln = is_poitem-ebeln.
l_ebelp = is_poitem-ebelp.
ENDIF.
IF NOT is_mseg IS INITIAL.
l_ebeln = is_mseg-ebeln.
l_ebelp = is_mseg-ebelp.
ENDIF.
IF NOT l_ebeln IS INITIAL
AND NOT l_ebelp IS INITIAL.
SELECT SINGLE * FROM ekko INTO ls_ekko
WHERE ebeln EQ l_ebeln.
SELECT SINGLE * FROM ekpo INTO ls_ekpo
WHERE ebeln EQ l_ebeln
AND ebelp EQ l_ebelp.
if sto mark the field sto
IF ls_ekpo-pstyp EQ '7'.
es_exitem-gr_sto = abap_true.
ENDIF.
IF ls_ekpo-pstyp EQ '3'.
es_exitem-subcon_ind = abap_true.
ENDIF.
*---for manual condition.
IF ls_ekpo-kzwi5 <> 0.
es_exitem-manual = abap_true.
ENDIF.
IF ls_ekpo-pstyp NE '7'.
IF ls_ekpo-mwskz NE space.
SELECT SINGLE * FROM t001 INTO ls_t001
WHERE bukrs EQ ls_ekpo-bukrs.
CHECK sy-subrc EQ 0.
Initialising The ls_taxcom Structure
ls_taxcom-bukrs = ls_ekpo-bukrs.
ls_taxcom-budat = i_exdat.
ls_taxcom-waers = ls_ekko-waers.
ls_taxcom-kposn = ls_ekpo-ebelp.
ls_taxcom-mwskz = ls_ekpo-mwskz.
ls_taxcom-txjcd = ls_ekpo-txjcd.
ls_taxcom-shkzg = 'H'.
ls_taxcom-xmwst = 'X'.
IF ls_ekpo-meprf <> 5.
ls_taxcom-wrbtr = ls_ekpo-netwr.
ls_taxcom-nebtr = ls_ekpo-brtwr. " 2nd base value (net)
ENDIF.
IF ls_ekpo-meins NE is_exitem-meins.
Convert PO Quantity into Excise Invoice Item UOM
CALL FUNCTION 'J_1I6_UNIT_CONVERSION'
EXPORTING
matnr_imp = ls_ekpo-matnr
unit_new_imp = is_exitem-meins
unit_old_imp = ls_ekpo-meins
value_old_imp = ls_ekpo-menge
IMPORTING
value_new_exp = ls_ekpo-menge
EXCEPTIONS
overflow = 1
OTHERS = 2.
ENDIF.
**---CALCULATE the excise base for CVD
IF is_exhead-cvdind = abap_true.
**-----get the rate type in CIN customizing
SELECT SINGLE j_1icvdexcg
INTO l_cvdexcg
FROM j_1iindcus
WHERE j_1ibukrs = is_exhead-bukrs.
IF l_cvdexcg IS INITIAL.
l_cvdexcg = 'M'.
ENDIF.
*
SELECT SINGLE waers INTO l_waers
FROM t001
WHERE bukrs = is_exhead-bukrs.
*
*
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = sy-datlo
foreign_amount = ls_taxcom-wrbtr
foreign_currency = ls_ekko-waers
local_currency = l_waers
type_of_rate = l_cvdexcg
IMPORTING
local_amount = ls_taxcom-wrbtr.
*
ENDIF.
**---CALCULATE the excise base for CVD
**- Beginn neue Felder zu 3.0C für internationale Steuermodule
ls_taxcom-lifnr = ls_ekko-lifnr.
ls_taxcom-land1 = ls_t001-land1.
ls_taxcom-hwaer = ls_t001-waers.
ls_taxcom-ekorg = ls_ekko-ekorg.
ls_taxcom-llief = ls_ekko-llief.
ls_taxcom-bldat = i_exdat.
ls_taxcom-matnr = ls_ekpo-ematn.
ls_taxcom-werks = ls_ekpo-werks.
ls_taxcom-bwtar = ls_ekpo-bwtar.
ls_taxcom-matkl = ls_ekpo-matkl.
ls_taxcom-meins = is_exitem-meins.
ls_taxcom-mglme = is_exitem-menge.
ls_taxcom-mtart = ls_ekpo-mtart.
*START*******BADI for AFS
SELECT SINGLE *
INTO ls_t005
FROM t005
WHERE land1 = ls_t001-land1.
CALL FUNCTION 'SAP_TO_ISO_COUNTRY_CODE'
EXPORTING
sap_code = ls_t001-land1
IMPORTING
iso_code = ls_t005-intca
EXCEPTIONS
not_found = 1
no_iso_code = 2
OTHERS = 3.
IF sy-subrc = 0.
CALL METHOD cl_exithandler=>get_instance
CHANGING
instance = cl_afs_excise.
l_mseg = is_mseg.
CALL METHOD cl_afs_excise->taxbase_change_afs
EXPORTING
flt_val = ls_t005-intca
y_ekpo = ls_ekpo
y_mseg = l_mseg
IMPORTING
afs_indicator = l_afs_indicator
CHANGING
y_taxcom = ls_taxcom.
ENDIF.
IF l_afs_indicator = 'X'.
es_exitem-menge = ls_taxcom-mglme.
ENDIF.
*END*********BADI for AFS
PO Quantity
l_po_quantity = ls_taxcom-mglme.
For Scheduling Agreement
IF ls_ekpo-meprf = 5.
CALL FUNCTION 'J_1I7_USEREXIT_GET_GR_DATE'
EXPORTING
gr_item = is_mseg
IMPORTING
gr_date = l_exdat.
IF NOT l_exdat IS INITIAL.
ls_wedaten-prsdt = l_exdat.
ELSE.
ls_wedaten-prsdt = i_exdat.
ENDIF.
CALL FUNCTION 'ME_PRICING_POSITION'
EXPORTING
kopf = ls_ekko
lieferant_a = lfa1
position = ls_ekpo
preisfindungsart = 'C'
wedaten = ls_wedaten
IMPORTING
netwr = ls_taxcom-wrbtr
TABLES
i_tkomv = lt_komv
EXCEPTIONS
OTHERS = 1.
IF ls_taxcom-wrbtr = 0.
MESSAGE e629(8i).
ENDIF.
ENDIF.
CALCULATE the excise base for CVD
IF is_exhead-cvdind = abap_true.
get the rate type in CIN customizing
SELECT SINGLE j_1icvdexcg
INTO l_cvdexcg
FROM j_1iindcus
WHERE j_1ibukrs = is_exhead-bukrs.
IF l_cvdexcg IS INITIAL.
l_cvdexcg = 'M'.
ENDIF.
SELECT SINGLE waers INTO l_waers
FROM t001
WHERE bukrs = is_exhead-bukrs.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = sy-datlo
foreign_amount = ls_taxcom-wrbtr
foreign_currency = ls_ekko-waers
local_currency = l_waers
type_of_rate = l_cvdexcg
IMPORTING
local_amount = ls_taxcom-wrbtr.
ENDIF.
CALCULATE the excise base for CVD
IF ls_ekpo-bstyp ='L'.
IF ls_ekpo-meins NE is_exitem-meins.
Convert PO Quantity into Excise Invoice Item UOM
CALL FUNCTION 'J_1I6_UNIT_CONVERSION'
EXPORTING
matnr_imp = ls_ekpo-matnr
unit_new_imp = is_exitem-meins
unit_old_imp = ls_ekpo-meins
value_old_imp = ls_ekpo-ktmng
IMPORTING
value_new_exp = ls_ekpo-ktmng
EXCEPTIONS
overflow = 1
OTHERS = 2.
ENDIF.
if ls_ekpo-meprf = 5.
ls_taxcom-wrbtr = ls_taxcom-wrbtr
is_exitem-menge / ls_ekpo-ktmng.
else.
ls_taxcom-wrbtr = ls_taxcom-wrbtr
is_exitem-menge / ls_ekpo-menge.
endif.
ls_ekpo-kzwi6 = ls_ekpo-kzwi6 * is_exitem-menge / ls_ekpo-ktmng.
ls_ekpo-kzwi5 = ls_ekpo-kzwi5 * is_exitem-menge / ls_ekpo-ktmng.
ls_ekpo-kzwi4 = ls_ekpo-kzwi4 * is_exitem-menge / ls_ekpo-ktmng.
ELSE.
IF is_exhead-cvdind = abap_false.
ls_taxcom-wrbtr = ls_taxcom-wrbtr
is_exitem-menge / ls_ekpo-menge.
ls_ekpo-kzwi6 = ls_ekpo-kzwi6 * is_exitem-menge / ls_ekpo-menge.
ls_ekpo-kzwi5 = ls_ekpo-kzwi5 * is_exitem-menge / ls_ekpo-menge.
ls_ekpo-kzwi4 = ls_ekpo-kzwi4 * is_exitem-menge / ls_ekpo-menge.
ENDIF.
ENDIF.
CALL FUNCTION 'REFRESH_TAX_TABLES'
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
CALL FUNCTION 'FIND_TAX_SPREADSHEET'
EXPORTING
buchungskreis = ls_t001-bukrs
IMPORTING
schema = l_tax_proc
EXCEPTIONS
not_found = 1
OTHERS = 2.
CHECK sy-subrc EQ 0.
CLEAR ls_exccom.
cvd
IF is_exhead-cvdind = abap_true.
IF ls_exccom-exbed IS INITIAL.
SELECT SINGLE * INTO ls_excdef
FROM j_1iexcdef
WHERE j_1itaxcal = l_tax_proc.
if sy-subrc eq 0 and j_1iexcdef-j_1icvdtyp is initial.
message w000(8i) with 'CVD condition not defined'.
else.
SELECT SINGLE * INTO ls_konv
FROM konv
WHERE knumv = ls_ekko-knumv
AND kposn = ls_ekpo-ebelp
AND kschl = ls_excdef-j_1icvdtyp.
IF sy-subrc EQ 0.
ls_exccom-exbed = ls_konv-kwert.
ELSE.
ls_exccom-exbed = 0.
ENDIF.
IF NOT is_exhead-belnr IS INITIAL.
SELECT SINGLE * INTO ls_ekbz
FROM ekbz
WHERE ebeln = ls_ekpo-ebeln
AND ebelp = ls_ekpo-ebelp
AND gjahr = is_exhead-gjahr
AND belnr = is_exhead-belnr
AND kschl = ls_excdef-j_1icvdtyp.
IF sy-subrc EQ 0.
ls_exccom-exbed = ls_ekbz-reewr.
es_exitem-menge = ls_ekbz-menge.
es_exitem-mengr = ls_ekbz-menge.
ls_taxcom-wrbtr = ls_taxcom-wrbtr * ls_ekbz-menge
/ ls_ekpo-menge.
ls_ekpo-kzwi6 = ls_ekpo-kzwi6 * ls_ekbz-menge / ls_ekpo-menge.
ls_ekpo-kzwi5 = ls_ekpo-kzwi5 * ls_ekbz-menge / ls_ekpo-menge.
ls_ekpo-kzwi4 = ls_ekpo-kzwi4 * ls_ekbz-menge / ls_ekpo-menge.
es_exitem-cvd_take_it = abap_true.
ELSE.
es_exitem-cvd_take_it = abap_false.
ENDIF.
ELSE. "NOT is_exhead-belnr IS INITIAL
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = sy-datlo
foreign_amount = ls_exccom-exbed
foreign_currency = ls_ekko-waers
local_currency = l_waers
type_of_rate = l_cvdexcg
IMPORTING
local_amount = ls_exccom-exbed.
es_exitem-cvd_take_it = abap_true.
ENDIF. "NOT is_exhead-belnr IS INITIAL
ENDIF. "ls_exccom-exbed IS INITIAL
Education Cess Union Budget 2004-05
IF ls_exccom-ecs IS INITIAL.
SELECT SINGLE * INTO ls_excdef
FROM j_1iexcdef
WHERE j_1itaxcal = l_tax_proc.
if sy-subrc eq 0 and j_1iexcdef-j_1icvdtyp is initial.
message w000(8i) with 'CVD condition not defined'.
else.
SELECT SINGLE * INTO ls_konv
FROM konv
WHERE knumv = ls_ekko-knumv
AND kposn = ls_ekpo-ebelp
AND kschl = ls_excdef-j_1iecvdtp.
IF sy-subrc EQ 0.
ls_exccom-ecs = ls_konv-kwert.
ELSE.
ls_exccom-ecs = 0.
ENDIF.
IF NOT is_exhead-belnr IS INITIAL.
SELECT SINGLE * INTO ls_ekbz
FROM ekbz
WHERE ebeln = ls_ekpo-ebeln
AND ebelp = ls_ekpo-ebelp
AND gjahr = is_exhead-gjahr
AND belnr = is_exhead-belnr
AND kschl = ls_excdef-j_1iecvdtp.
IF sy-subrc EQ 0.
ls_exccom-ecs = ls_ekbz-reewr.
es_exitem-menge = ls_ekbz-menge.
es_exitem-mengr = ls_ekbz-menge.
ls_taxcom-wrbtr = ls_taxcom-wrbtr * ls_ekbz-menge
/ ls_ekpo-menge.
es_exitem-cvd_take_it = abap_true.
ELSE.
es_exitem-cvd_take_it = abap_false.
ENDIF.
ELSE. "NOT is_exhead-belnr IS INITIAL
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = sy-datlo
foreign_amount = ls_exccom-ecs
foreign_currency = ls_ekko-waers
local_currency = l_waers
type_of_rate = l_cvdexcg
IMPORTING
local_amount = ls_exccom-ecs.
es_exitem-cvd_take_it = abap_true.
ENDIF. "NOT is_exhead-belnr IS INITIAL
ENDIF. "ls_exccom-exbed IS INITIAL
Education Cess Union Budget 2004-05
Begin of Additional duty of custom Budget 2005
IF ls_exccom-exaed IS INITIAL.
SELECT SINGLE * INTO ls_excdef
FROM j_1iexcdef
WHERE j_1itaxcal = l_tax_proc.
SELECT SINGLE * INTO ls_konv
FROM konv
WHERE knumv = ls_ekko-knumv
AND kposn = ls_ekpo-ebelp
AND kschl = ls_excdef-J_1ICADCAP.
IF sy-subrc EQ 0.
ls_exccom-exaed = ls_konv-kwert.
ELSE.
ls_exccom-exaed = 0.
ENDIF.
IF NOT is_exhead-belnr IS INITIAL.
SELECT SINGLE * INTO ls_ekbz
FROM ekbz
WHERE ebeln = ls_ekpo-ebeln
AND ebelp = ls_ekpo-ebelp
AND gjahr = is_exhead-gjahr
AND belnr = is_exhead-belnr
AND kschl = ls_excdef-J_1ICADCAP.
IF sy-subrc EQ 0.
ls_exccom-exaed = ls_ekbz-reewr.
es_exitem-menge = ls_ekbz-menge.
es_exitem-mengr = ls_ekbz-menge.
ls_taxcom-wrbtr = ls_taxcom-wrbtr * ls_ekbz-menge
/ ls_ekpo-menge.
es_exitem-cvd_take_it = abap_true.
ELSE.
es_exitem-cvd_take_it = abap_false.
ENDIF.
ELSE. "NOT is_exhead-belnr IS INITIAL
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = sy-datlo
foreign_amount = ls_exccom-exaed
foreign_currency = ls_ekko-waers
local_currency = l_waers
type_of_rate = l_cvdexcg
IMPORTING
local_amount = ls_exccom-exaed.
es_exitem-cvd_take_it = abap_true.
ENDIF. "NOT is_exhead-belnr IS INITIAL
ENDIF. "ls_exccom-exaed IS INITIAL
End of Additional duty of custome Budget 2005
SELECT SINGLE * INTO ls_ekbz
FROM ekbz
WHERE ebeln = ls_ekpo-ebeln
AND ebelp = ls_ekpo-ebelp
AND gjahr = is_exhead-gjahr
AND belnr = is_exhead-belnr
AND kschl = 'JCDB'.
IF SY-SUBRC EQ 0.
L_JCDB = ls_ekbz-reewr.
ls_taxcom-wrbtr = ls_taxcom-wrbtr + L_JCDB.
ENDIF.
es_exitem-excur = l_waers.
ENDIF. "is_exhead-cvdind = abap_true
**********
CALL FUNCTION 'J_1I4_COPY_PO_DATA'
EXPORTING
y_ekpo = ls_ekpo
exccom = ls_exccom
EXCEPTIONS
OTHERS = 1.
CLEAR lt_komv.REFRESH lt_komv.
CALL FUNCTION 'CALCULATE_TAX_ITEM'
EXPORTING
i_taxcom = ls_taxcom
IMPORTING
e_navfw = es_exitem-indtax " NAVS Value
TABLES
t_xkomv = lt_komv
EXCEPTIONS
mwskz_not_defined = 1
mwskz_not_found = 2
mwskz_not_valid = 3
steuerbetrag_falsch = 4
OTHERS = 5.
CHECK sy-subrc EQ 0.
CLEAR: es_exitem-bedinv,
es_exitem-aedinv,
****nccd begins
es_exitem-nccdinv,
****nccd ends
es_exitem-sedinv,
ECS begins
es_exitem-ecsinv.
ECS ends
PERFORM get_mdvt_cond_type
TABLES
lt_mdvt_cond_type
USING
l_tax_proc
ls_ekko-bukrs
ls_ekpo-mwskz
CHANGING
l_result
is_taxcond.
CHECK l_result EQ 0.
READ TABLE lt_komv INTO ls_komv WITH KEY kschl = 'BASB'.
IF sy-subrc EQ 0.
es_exitem-exbas = ls_komv-kawrt.
ENDIF.
All deductable taxes
LOOP AT lt_mdvt_cond_type INTO ls_mdvt_cond_type.
LOOP AT lt_komv INTO ls_komv
WHERE kschl = ls_mdvt_cond_type-kschl.
Condition Types For BED, AED & SED.
IF es_exitem-exbas IS INITIAL.
es_exitem-exbas = ls_komv-kawrt.
ENDIF.
ls_mdvt_cond_type-base = es_exitem-exbas.
ls_mdvt_cond_type-excamt = ls_komv-kwert.
ls_mdvt_cond_type-excrat = ls_komv-kbetr.
EXIT.
ENDLOOP.
CASE ls_mdvt_cond_type-duty_type.
WHEN 'B'.
READ TABLE lt_komv INTO ls_komv
WITH KEY kschl = is_taxcond-bedsp.
IF sy-subrc EQ 0.
ls_mdvt_cond_type-excrat = ls_komv-kbetr.
ENDIF.
WHEN 'A'.
READ TABLE lt_komv INTO ls_komv
WITH KEY kschl = is_taxcond-aedsp.
IF sy-subrc EQ 0.
ls_mdvt_cond_type-excrat = ls_komv-kbetr.
ENDIF.
****nccd begins
WHEN 'N'. " NCCD
READ TABLE lt_komv INTO ls_komv
WITH KEY kschl = is_taxcond-nccdsp.
IF sy-subrc EQ 0.
ls_mdvt_cond_type-excrat = ls_komv-kbetr.
ENDIF.
****nccd ends
WHEN 'S'.
READ TABLE lt_komv INTO ls_komv
WITH KEY kschl = is_taxcond-sedsp.
IF sy-subrc EQ 0.
ls_mdvt_cond_type-excrat = ls_komv-kbetr.
ENDIF.
****ecs begins
WHEN 'E'. " ECS
READ TABLE lt_komv INTO ls_komv
WITH KEY kschl = is_taxcond-ecssp.
IF sy-subrc EQ 0.
ls_mdvt_cond_type-excrat = ls_komv-kbetr.
ENDIF.
****ecs ends
ENDCASE.
READ TABLE lt_komv INTO ls_komv WITH KEY kschl = 'BASB'.
MODIFY lt_mdvt_cond_type FROM ls_mdvt_cond_type.
ENDLOOP.
LOOP AT lt_mdvt_cond_type INTO ls_mdvt_cond_type.
CASE ls_mdvt_cond_type-duty_type.
WHEN 'B'. " BED
IF is_exitem-capind NE 'N'.
es_exitem-exbed = ls_mdvt_cond_type-excamt.
ELSE.
es_exitem-bedinv_cq = ls_mdvt_cond_type-excamt.
es_exitem-indtax = es_exitem-indtax + es_exitem-bedinv_cq.
ENDIF.
IF NOT ls_mdvt_cond_type-excamt IS INITIAL.
es_exitem-bedrate = ls_mdvt_cond_type-excrat / 10.
ENDIF.
WHEN 'A'. " AED
IF is_exitem-capind NE 'N'.
es_exitem-exaed = ls_mdvt_cond_type-excamt.
ELSE.
es_exitem-aedinv_cq = ls_mdvt_cond_type-excamt.
es_exitem-indtax = es_exitem-indtax + es_exitem-aedinv_cq.
ENDIF.
IF NOT ls_mdvt_cond_type-excamt IS INITIAL.
es_exitem-aedrate = ls_mdvt_cond_type-excrat / 10.
ENDIF.
****nccd begins
WHEN 'N'. " NCCD
IF is_exitem-capind NE 'N'.
es_exitem-nccd = ls_mdvt_cond_type-excamt.
ELSE.
es_exitem-nccdinv_cq = ls_mdvt_cond_type-excamt.
es_exitem-indtax = es_exitem-indtax + es_exitem-nccdinv_cq.
ENDIF.
IF NOT ls_mdvt_cond_type-excamt IS INITIAL.
es_exitem-nccdrate = ls_mdvt_cond_type-excrat / 10.
ENDIF.
****nccd ends
WHEN 'S'. " SED
IF is_exitem-capind NE 'N'.
es_exitem-exsed = ls_mdvt_cond_type-excamt.
ELSE.
es_exitem-sedinv_cq = ls_mdvt_cond_type-excamt.
es_exitem-indtax = es_exitem-indtax + es_exitem-sedinv_cq.
ENDIF.
IF NOT ls_mdvt_cond_type-excamt IS INITIAL.
es_exitem-sedrate = ls_mdvt_cond_type-excrat / 10.
ENDIF.
****ecs begins
WHEN 'E'. " ECESS
IF is_exitem-capind NE 'N'.
es_exitem-ecs = ls_mdvt_cond_type-excamt.
ELSE.
es_exitem-ecsinv_cq = ls_mdvt_cond_type-excamt.
es_exitem-indtax = es_exitem-indtax + es_exitem-ecsinv_cq.
ENDIF.
IF NOT ls_mdvt_cond_type-excamt IS INITIAL.
es_exitem-ecsrate = ls_mdvt_cond_type-excrat / 10.
ENDIF.
****ecs ends
ENDCASE.
IF ls_mdvt_cond_type-excamt IS INITIAL
AND is_exhead-cvdind = 'X'.
IF ls_mdvt_cond_type-kschl = ls_excdef-j_1icbedap."'JMO1'.
ls_mdvt_cond_type-excamt = ls_exccom-exbed.
es_exitem-exbed = ls_mdvt_cond_type-excamt.
p_po_modvat_tax = p_po_modvat_tax + t_exccom-exbed.
Education Cess Union Budget 2004-05
elseif ls_mdvt_cond_type-kschl = ls_excdef-j_1icecsap."
ls_mdvt_cond_type-excamt = ls_exccom-ecs.
es_exitem-ecs = ls_mdvt_cond_type-excamt.
Education Cess Union Budget 2004-05
ADC Union Budget 2005
elseif ls_mdvt_cond_type-kschl = ls_excdef-J_1ICAEDAP."'JAO1'.
ls_mdvt_cond_type-excamt = ls_exccom-exaed.
es_exitem-exaed = ls_mdvt_cond_type-excamt.
ADC Union Budget 2005
ENDIF.
ENDIF.
MODIFY lt_mdvt_cond_type FROM ls_mdvt_cond_type INDEX sy-tabix.
ENDLOOP.
Based on Tax condition type; add the inventorizable duty
LOOP AT lt_komv INTO ls_komv.
Condition Types For BED, AED & SED.
IF es_exitem-exbas IS INITIAL.
es_exitem-exbas = ls_komv-kawrt.
ENDIF.
CASE ls_komv-kschl.
WHEN 'JMO2'.
WHEN is_taxcond-bedit.
es_exitem-bedinv_iq = es_exitem-bedinv_iq +
ls_komv-kwert.
IF es_exitem-bedrate IS INITIAL AND
( is_taxcond-bedit EQ is_taxcond-bedip ).
es_exitem-bedrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-bedip.
IF es_exitem-bedrate IS INITIAL.
es_exitem-bedrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-aedit.
es_exitem-aedinv_iq = es_exitem-aedinv_iq +
ls_komv-kwert.
IF es_exitem-aedrate IS INITIAL AND
( is_taxcond-aedit EQ is_taxcond-aedip ).
es_exitem-aedrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-aedip.
IF es_exitem-aedrate IS INITIAL.
es_exitem-aedrate = ls_komv-kbetr / 10.
ENDIF.
NCCD Change Starts
WHEN is_taxcond-nccdit.
es_exitem-nccdinv_iq = es_exitem-nccdinv_iq +
ls_komv-kwert.
IF es_exitem-nccdrate IS INITIAL AND
( is_taxcond-nccdit EQ is_taxcond-nccdip ).
es_exitem-nccdrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-nccdip.
IF es_exitem-nccdrate IS INITIAL.
es_exitem-nccdrate = ls_komv-kbetr / 10.
ENDIF.
NCCD Change Ends
ecs begins
WHEN is_taxcond-ecsit.
es_exitem-ecsinv_iq = es_exitem-ecsinv_iq +
ls_komv-kwert.
IF es_exitem-ecsrate IS INITIAL AND
( is_taxcond-ecsit EQ is_taxcond-ecsip ).
es_exitem-ecsrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-ecsip.
IF es_exitem-ecsrate IS INITIAL.
es_exitem-ecsrate = ls_komv-kbetr / 10.
ENDIF.
ecs ends
WHEN is_taxcond-sedit.
es_exitem-sedinv_iq = es_exitem-sedinv_iq +
ls_komv-kwert.
IF es_exitem-sedrate IS INITIAL AND
( is_taxcond-sedit EQ is_taxcond-sedip ).
es_exitem-sedrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-sedip.
IF es_exitem-sedrate IS INITIAL.
es_exitem-sedrate = ls_komv-kbetr / 10.
ENDIF.
WHEN is_taxcond-bediq OR is_taxcond-bedsq.
es_exitem-bed_kmein = ls_komv-kmein.
es_exitem-bed_kpein = ls_komv-kpein.
es_exitem-sp_bed = ls_komv-kbetr.
WHEN is_taxcond-aediq OR is_taxcond-aedsq.
es_exitem-aed_kmein = ls_komv-kmein.
es_exitem-aed_kpein = ls_komv-kpein.
es_exitem-sp_aed = ls_komv-kbetr.
NCCD Change Starts
WHEN is_taxcond-nccdiq OR is_taxcond-nccdsq.
es_exitem-nccd_kmein = ls_komv-kmein.
es_exitem-nccd_kpein = ls_komv-kpein.
es_exitem-sp_nccd = ls_komv-kbetr.
NCCD Chane Ends
WHEN is_taxcond-sediq OR is_taxcond-sedsq.
es_exitem-sed_kmein = ls_komv-kmein.
es_exitem-sed_kpein = ls_komv-kpein.
es_exitem-sp_sed = ls_komv-kbetr.
ecs Change Starts
WHEN is_taxcond-ecsiq OR is_taxcond-ecssq.
es_exitem-ecs_kmein = ls_komv-kmein.
es_exitem-ecs_kpein = ls_komv-kpein.
es_exitem-sp_ecs = ls_komv-kbetr.
ecs Change Ends
ENDCASE.
ENDLOOP.
*----quantity based
*******BED
SELECT SINGLE *
INTO ls_exctax
FROM j_1iexctax
WHERE j_1ichid = es_exitem-chapid.
IF sy-subrc EQ 0.
es_exitem-bed_kmein = ls_exctax-kmein.
es_exitem-bed_kpein = ls_exctax-kpein.
es_exitem-sp_bed = ls_exctax-amount.
ENDIF.
******AED....SED and nccd is also added
SELECT SINGLE *
INTO ls_qexcise
FROM j_1iqexcise
WHERE werks = es_exitem-werks
AND chapid = es_exitem-chapid
AND matnr = es_exitem-matnr.
IF sy-subrc EQ 0.
es_exitem-aed_kmein = ls_qexcise-aed_kmein.
es_exitem-aed_kpein = ls_qexcise-aed_kpein.
es_exitem-sp_aed = ls_qexcise-aed_amount.
****nccd begins
es_exitem-nccd_kmein = ls_qexcise-nccd_kmein.
es_exitem-nccd_kpein = ls_qexcise-nccd_kpein.
es_exitem-sp_nccd = ls_qexcise-nccd_amount.
****nccd ends
es_exitem-sed_kmein = ls_qexcise-sed_kmein.
es_exitem-sed_kpein = ls_qexcise-sed_kpein.
es_exitem-sp_sed = ls_qexcise-sed_amount.
ENDIF.
*---calculate the total inventorized duties
es_exitem-bedinv = es_exitem-bedinv_iq + es_exitem-bedinv_cq.
es_exitem-aedinv = es_exitem-aedinv_iq + es_exitem-aedinv_cq.
****nccd begins
es_exitem-nccdinv = es_exitem-nccdinv_iq + es_exitem-nccdinv_cq.
****nccd ends
es_exitem-sedinv = es_exitem-sedinv_iq + es_exitem-sedinv_cq.
ECS begins
es_exitem-ecsinv = es_exitem-ecsinv_iq + es_exitem-ecsinv_cq.
ECS ends
*---SALES TAX
es_exitem-sales_tax = es_exitem-indtax - ( es_exitem-bedinv
****nccd begins
+ es_exitem-nccdinv
****nccd ends
+ es_exitem-aedinv
+ es_exitem-sedinv
ECS begins
+ es_exitem-ecsinv ).
ECS ends
es_exitem-sales_tax_rate = es_exitem-sales_tax /
( es_exitem-exbas +
es_exitem-exbed +
es_exitem-exaed +
es_exitem-exsed +
****nccd begins
es_exitem-nccd +
es_exitem-nccdinv +
****nccd ends
es_exitem-bedinv +
es_exitem-aedinv +
es_exitem-sedinv +
ECS begins
es_exitem-ecs +
es_exitem-ecsinv ).
ECS ends
*---calculate the split for the duty
IF es_exitem-exbed = 0.
es_exitem-split_bed = es_exitem-orig_split_bed = 1.
ELSE.
es_exitem-split_bed = es_exitem-exbed
/ ( es_exitem-exbed + es_exitem-bedinv ).
es_exitem-orig_split_bed = es_exitem-split_bed.
ENDIF.
IF es_exitem-exaed = 0.
es_exitem-split_aed = es_exitem-orig_split_aed = 1.
ELSE.
es_exitem-split_aed = es_exitem-exaed
/ ( es_exitem-exaed + es_exitem-aedinv ).
es_exitem-orig_split_aed = es_exitem-split_aed.
ENDIF.
****nccd begins
IF es_exitem-nccd = 0.
es_exitem-split_nccd = es_exitem-orig_split_nccd = 1.
ELSE.
es_exitem-split_nccd = es_exitem-nccd
/ ( es_exitem-nccd + es_exitem-nccdinv ).
es_exitem-orig_split_nccd = es_exitem-split_nccd.
ENDIF.
****nccd ends
IF es_exitem-exsed = 0.
es_exitem-split_sed = es_exitem-orig_split_sed = 1.
ELSE.
es_exitem-split_sed = es_exitem-exsed
/ ( es_exitem-exsed + es_exitem-sedinv ).
es_exitem-orig_split_sed = es_exitem-split_sed.
ENDIF.
****ECS begins
IF es_exitem-ecs = 0.
es_exitem-split_ecs = es_exitem-orig_split_ecs = 1.
ELSE.
es_exitem-split_ecs = es_exitem-ecs
/ ( es_exitem-ecs + es_exitem-ecsinv ).
es_exitem-orig_split_ecs = es_exitem-split_ecs.
ENDIF.
****ECS ends
*----for import PO get the BED rate.
IF is_exhead-cvdind = abap_true
AND es_exitem-exbed > 0.
es_exitem-bedrate = es_exitem-exbas / es_exitem-exbed.
es_exitem-bedrate = ( es_exitem-exbed /
es_exitem-exbas ) * 100.
****ECS begins
if es_exitem-ecs > 0.
es_exitem-ecsrate = ( es_exitem-ecs / es_exitem-exbed ) * 100.
endif.
****ECS ends
ENDIF.
ADC begins
IF is_exhead-cvdind = abap_true
AND es_exitem-exaed > 0.
es_exitem-aedrate = ( es_exitem-exaed /
es_exitem-exbas ) * 100.
ENDIF.
ADC ends
*---for manual condition.
IF es_exitem-manual = abap_true.
IF es_exitem-exbed = 0.
IF is_exitem-capind NE 'N'.
es_exitem-exbed = ls_ekpo-kzwi5.
ELSE.
es_exitem-bedinv_iq = ls_ekpo-kzwi5.
es_exitem-bedinv = es_exitem-bedinv_iq.
ENDIF.
ENDIF.
IF ls_ekpo-bstyp = 'L' AND ls_ekpo-meprf = 5.
*
es_exitem-exbed = es_exitem-exbed *
es_exitem-menge / ls_ekpo-ktmng.
ELSE.
*
es_exitem-exbed = es_exitem-exbed *
es_exitem-menge / ls_ekpo-menge.
ENDIF.
es_exitem-bedrate = es_exitem-exbed * 100 / es_exitem-exbas .
ENDIF.
ELSE.
es_exitem-excise_ind = abap_false. " No tax code
ENDIF.
ELSE. "ls_ekpo-pstyp NE '7
IF ls_ekpo-pstyp EQ '7'.
For STO
EWPO (if material Document is entered and PO is not there in material
Document . If the PO is there but the tax code is not there also.
SELECT SINGLE mwskv mwska INTO (l_mwskv, l_mwska)
FROM t001 WHERE bukrs = ls_ekko-bukrs.
Material Document is entered as reference in MIGO in J1IEX
IF NOT is_mseg IS INITIAL.
For receipt, look out for the vendor attached to the issuing plant
IF is_mseg-shkzg = 'S'.
es_exitem-rcwrk = ls_ekko-reswk.
SELECT SINGLE kunnr FROM t001w INTO l_kunnr
WHERE werks EQ ls_ekko-reswk.
SELECT SINGLE lifnr FROM lfa1 INTO es_exitem-lifnr
WHERE kunnr = l_kunnr.
CHECK NOT es_exitem-lifnr IS INITIAL.
l_buss_partner = es_exitem-lifnr.
l_mwskz = l_mwskv.
ELSEIF is_mseg-shkzg = 'H'.
For issue, look out for the customer attached to the receiving plant
customer is stored in the lifnr field temporary reason.
IF NOT is_mseg-umwrk IS INITIAL.
es_exitem-rcwrk = is_mseg-umwrk.
SELECT SINGLE kunnr FROM t001w INTO es_exitem-lifnr
WHERE werks EQ is_mseg-umwrk.
CHECK NOT es_exitem-lifnr IS INITIAL.
l_buss_partner = es_exitem-lifnr.
l_mwskz = l_mwska.
ELSE.
Case of a STO returns
es_exitem-rcwrk = ls_ekko-reswk.
SELECT SINGLE kunnr FROM t001w INTO l_kunnr
WHERE werks EQ ls_ekko-reswk.
SELECT SINGLE lifnr FROM lfa1 INTO es_exitem-lifnr
WHERE kunnr = l_kunnr.
CHECK NOT es_exitem-lifnr IS INITIAL.
l_buss_partner = es_exitem-lifnr.
l_mwskz = l_mwskv.
ENDIF.
ENDIF.
ENDIF.
If the Purchase order is entered as a reference.
IF NOT is_poitem IS INITIAL.
Move the issuing plant
es_exitem-rcwrk = ls_ekko-reswk.
SELECT SINGLE kunnr FROM t001w INTO l_kunnr
WHERE werks EQ ls_ekko-reswk.
SELECT SINGLE lifnr FROM lfa1 INTO es_exitem-lifnr
WHERE kunnr = l_kunnr.
CHECK NOT es_exitem-lifnr IS INITIAL.
l_buss_partner = es_exitem-lifnr.
l_mwskz = l_mwskv.
ENDIF.
Check for assessable value
SELECT SINGLE * FROM j_1iassval INTO ls_assval
WHERE j_1iwerks = es_exitem-werks
AND j_1imatnr = es_exitem-matnr.
CHECK sy-subrc EQ 0.
SELECT SINGLE meins FROM mara INTO l_meins
WHERE matnr = es_exitem-matnr.
CHECK sy-subrc EQ 0.
CALL FUNCTION 'J_1I6_UNIT_CONVERSION'
EXPORTING
matnr_imp = es_exitem-matnr
unit_new_imp = l_meins
unit_old_imp = es_exitem-meins
value_old_imp = es_exitem-menge
IMPORTING
value_new_exp = l_menge
EXCEPTIONS
overflow = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT ls_assval-j_1ivalndp IS INITIAL.
es_exitem-exbas = ls_assval-j_1ivalndp * l_menge.
ELSE.
es_exitem-exbas = ls_assval-j_1ivalass * l_menge.
ENDIF.
CHECK NOT l_mwskz IS INITIAL.
l_exbas = es_exitem-exbas.
CALL FUNCTION 'J_1I6_DETERMINE_EXCISE_RATE'
EXPORTING
bukrs = ls_ekko-bukrs
werks = es_exitem-werks
matnr = es_exitem-matnr
vendor = l_buss_partner
mwskz = l_mwskz
tax_date = sy-datlo
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
EXCEPTIONS
chapter_id_missing = 1
company_data_not_setup = 2
tax_proc_invalid = 3
excind_missing = 4
vendor_missing = 5
taxcode_invalid = 6
excise_rate_missing = 7
OTHERS = 8.
l_exbas = es_exitem-exbas.
SELECT SINGLE *
INTO ls_t005
FROM t005
WHERE land1 = 'IN'.
CALL FUNCTION 'J_1I_DETERMINE_CONDITION_DEF'
EXPORTING
ar_ap = 'AP'
kalsm = ls_t005-kalsm
mwskz = l_mwskz
bukrs = ls_ekko-bukrs
IMPORTING
cond_flag = l_update_cond
t_excdef = ls_excdef.
IF l_update_cond IS INITIAL.
CALL FUNCTION 'J_1I6_DETERMINE_EXCISE_RATE'
EXPORTING
bukrs = ls_ekko-bukrs
werks = es_exitem-werks
matnr = es_exitem-matnr
vendor = l_buss_partner
mwskz = l_mwskz
tax_date = sy-datlo
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
NCCD Change Starts
nccd_amount = es_exitem-nccd
nccd_perc = es_exitem-nccdrate
NCCD Change Ends
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
EXCEPTIONS
chapter_id_missing = 1
company_data_not_setup = 2
tax_proc_invalid = 3
excind_missing = 4
vendor_missing = 5
taxcode_invalid = 6
excise_rate_missing = 7
OTHERS = 8.
CHECK sy-subrc = 0.
ecs changes
CALL FUNCTION 'J_1I4_GET_ECESS'
EXPORTING
E_BED_AMOUNT = es_exitem-exbed
E_AED_AMOUNT = es_exitem-exaed
E_SED_AMOUNT = es_exitem-exsed
E_NCCD_AMOUNT = es_exitem-nccd
IMPORTING
X_ECS = es_exitem-ecs
X_ECS_INVENTORY = es_exitem-ecsinv
X_ECS_RATE = es_exitem-ecsrate.
es_exitem-ecsrate = 2 / 100.
ecs ends
ENDIF.
IF l_update_cond = 'Y'.
CALL FUNCTION 'J_1I4A_DETERMINE_NEW_RATE'
EXPORTING
usage = 'A'
application = 'TX'
calc_date = sy-datlo
procedure = ls_t005-kalsm
bukrs = ls_ekko-bukrs
werks = es_exitem-werks
matnr = es_exitem-matnr
vendor = l_buss_partner
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
NCCD Change Starts
nccd_amount = es_exitem-nccd
nccd_perc = es_exitem-nccdrate
NCCD Change Ends
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
cess_amount = es_exitem-cess
cess_perc = es_exitem-cessrate.
check sy-subrc = 0.
ecs begins
CALL FUNCTION 'J_1I4_GET_ECESS'
EXPORTING
E_BED_AMOUNT = es_exitem-exbed
E_AED_AMOUNT = es_exitem-exaed
E_SED_AMOUNT = es_exitem-exsed
E_NCCD_AMOUNT = es_exitem-nccd
IMPORTING
X_ECS = es_exitem-ecs
X_ECS_INVENTORY = es_exitem-ecsinv
X_ECS_RATE = es_exitem-ecsrate.
ecs ends
ENDIF.
ENDIF.
ENDIF. "ls_ekpo-pstyp NE '7
ELSEIF is_exhead-trntyp <> 'ARE3'.
" FOR EWPO material document with no PO number
CHECK NOT es_exitem-lifnr IS INITIAL.
SELECT SINGLE bwkey INTO l_bwkey
FROM t001w WHERE werks = es_exitem-werks.
SELECT SINGLE bukrs INTO l_bukrs
FROM t001k WHERE bwkey = l_bwkey.
SELECT SINGLE * FROM j_1iassval INTO ls_assval
WHERE j_1iwerks = es_exitem-werks
AND j_1imatnr = es_exitem-matnr.
CHECK sy-subrc EQ 0.
SELECT SINGLE meins FROM mara INTO l_meins
WHERE matnr = es_exitem-matnr.
CHECK sy-subrc EQ 0.
CALL FUNCTION 'J_1I6_UNIT_CONVERSION'
EXPORTING
matnr_imp = es_exitem-matnr
unit_new_imp = l_meins
unit_old_imp = es_exitem-meins
value_old_imp = es_exitem-menge
IMPORTING
value_new_exp = l_menge
EXCEPTIONS
overflow = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT ls_assval-j_1ivalndp IS INITIAL.
es_exitem-exbas = ls_assval-j_1ivalndp * l_menge.
ELSE.
es_exitem-exbas = ls_assval-j_1ivalass * l_menge.
ENDIF.
CHECK NOT es_exitem-exbas IS INITIAL.
SELECT SINGLE mwskv INTO l_mwskv
FROM t001 WHERE bukrs = l_bukrs.
CHECK NOT l_mwskv IS INITIAL.
l_exbas = es_exitem-exbas.
CALL FUNCTION 'J_1I6_DETERMINE_EXCISE_RATE'
EXPORTING
bukrs = l_bukrs
werks = es_exitem-werks
matnr = es_exitem-matnr
vendor = es_exitem-lifnr
mwskz = l_mwskv
tax_date = sy-datlo
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
EXCEPTIONS
chapter_id_missing = 1
company_data_not_setup = 2
tax_proc_invalid = 3
excind_missing = 4
vendor_missing = 5
taxcode_invalid = 6
excise_rate_missing = 7
OTHERS = 8.
*
CHECK sy-subrc EQ 0.
l_exbas = es_exitem-exbas.
SELECT SINGLE *
INTO ls_t005
FROM t005
WHERE land1 = 'IN'.
CALL FUNCTION 'J_1I_DETERMINE_CONDITION_DEF'
EXPORTING
ar_ap = 'AP'
kalsm = ls_t005-kalsm
mwskz = l_mwskv
bukrs = l_bukrs
IMPORTING
cond_flag = l_update_cond
t_excdef = ls_excdef.
IF l_update_cond IS INITIAL.
CALL FUNCTION 'J_1I6_DETERMINE_EXCISE_RATE'
EXPORTING
bukrs = l_bukrs
werks = es_exitem-werks
matnr = es_exitem-matnr
vendor = es_exitem-lifnr
mwskz = l_mwskv
tax_date = sy-datlo
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
NCCD Change Starts
nccd_amount = es_exitem-nccd
nccd_perc = es_exitem-nccdrate
NCCD Change Ends
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
EXCEPTIONS
chapter_id_missing = 1
company_data_not_setup = 2
tax_proc_invalid = 3
excind_missing = 4
vendor_missing = 5
taxcode_invalid = 6
excise_rate_missing = 7
OTHERS = 8.
CHECK sy-subrc EQ 0.
ecs begins
CALL FUNCTION 'J_1I4_GET_ECESS'
EXPORTING
E_BED_AMOUNT = es_exitem-exbed
E_AED_AMOUNT = es_exitem-exaed
E_SED_AMOUNT = es_exitem-exsed
E_NCCD_AMOUNT = es_exitem-nccd
IMPORTING
X_ECS = es_exitem-ecs
X_ECS_INVENTORY = es_exitem-ecsinv
X_ECS_RATE = es_exitem-ecsrate.
ecs ends
ENDIF.
IF l_update_cond = 'Y'.
CALL FUNCTION 'J_1I4A_DETERMINE_NEW_RATE'
EXPORTING
usage = 'A'
application = 'TX'
calc_date = sy-datlo
procedure = ls_t005-kalsm
bukrs = l_bukrs
werks = es_exitem-werks
matnr = es_exitem-matnr
vendor = es_exitem-lifnr
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
NCCD Change Starts
nccd_amount = es_exitem-nccd
nccd_perc = es_exitem-nccdrate
NCCD Change Ends
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
cess_amount = es_exitem-cess
cess_perc = es_exitem-cessrate.
CHECK sy-subrc EQ 0.
ecs begins
CALL FUNCTION 'J_1I4_GET_ECESS'
EXPORTING
E_BED_AMOUNT = es_exitem-exbed
E_AED_AMOUNT = es_exitem-exaed
E_SED_AMOUNT = es_exitem-exsed
E_NCCD_AMOUNT = es_exitem-nccd
IMPORTING
X_ECS = es_exitem-ecs
X_ECS_INVENTORY = es_exitem-ecsinv
X_ECS_RATE = es_exitem-ecsrate.
ecs ends
ENDIF.
ELSE. "NOT l_ebeln IS INITIAL
SELECT SINGLE *
FROM j_1iexchdr
INTO ls_exchdr
WHERE exnum = es_exitem-rdoc2.
SELECT SINGLE * FROM vbrk
INTO ls_vbrk
WHERE vbeln = ls_exchdr-rdoc.
SELECT SINGLE *
INTO ls_t005
FROM t005
WHERE land1 = 'IN'.
CALL FUNCTION 'J_1I_DETERMINE_CONDITION_DEF'
EXPORTING
ar_ap = 'AR'
kalsm = ls_vbrk-kalsm
taxproc = ls_t005-kalsm
bukrs = is_exhead-bukrs
IMPORTING
cond_flag = l_update_cond
t_excdef = ls_excdef.
l_exbas = es_exitem-exbas.
IF l_update_cond IS INITIAL.
CALL FUNCTION 'J_1I6_DETERMINE_EXCISE_RATE'
EXPORTING
bukrs = is_exhead-bukrs
werks = is_exhead-werks
matnr = es_exitem-matnr
vendor = is_exhead-kunag
kalsm = ls_excdef-j_1itaxcal
mwskz = ls_excdef-j_1itxcode
tax_date = is_exhead-exdat
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
vkorg = ls_vbrk-vkorg
vtweg = ls_vbrk-vtweg
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
NCCD Change Starts
nccd_amount = es_exitem-nccd
nccd_perc = es_exitem-nccdrate
NCCD Change Ends
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
cess_perc = es_exitem-cessrate
cess_amount = es_exitem-cess
EXCEPTIONS
chapter_id_missing = 1
company_data_not_setup = 2
tax_proc_invalid = 3
excind_missing = 4
vendor_missing = 5
taxcode_invalid = 6
excise_rate_missing = 7
OTHERS = 8.
CHECK sy-subrc EQ 0.
ecs begins
CALL FUNCTION 'J_1I4_GET_ECESS'
EXPORTING
E_BED_AMOUNT = es_exitem-exbed
E_AED_AMOUNT = es_exitem-exaed
E_SED_AMOUNT = es_exitem-exsed
E_NCCD_AMOUNT = es_exitem-nccd
IMPORTING
X_ECS = es_exitem-ecs
X_ECS_INVENTORY = es_exitem-ecsinv
X_ECS_RATE = es_exitem-ecsrate.
ecs ends
ENDIF.
IF l_update_cond = 'Y'.
CALL FUNCTION 'J_1I4A_DETERMINE_NEW_RATE'
EXPORTING
usage = 'A'
application = 'V'
calc_date = is_exhead-exdat
procedure = 'JINFAC'
bukrs = is_exhead-bukrs
werks = is_exhead-werks
matnr = es_exitem-matnr
vendor = is_exhead-kunag
menge = es_exitem-menge
kawrt = l_exbas
unit = es_exitem-meins
vkorg = ls_vbrk-vkorg
vtweg = ls_vbrk-vtweg
IMPORTING
exc_amount = es_exitem-exbed
exc_perc = es_exitem-bedrate
add_amount = es_exitem-exaed
add_perc = es_exitem-aedrate
NCCD Change Starts
nccd_amount = es_exitem-nccd
nccd_perc = es_exitem-nccdrate
NCCD Change Ends
sed_amount = es_exitem-exsed
sed_perc = es_exitem-sedrate
cess_amount = es_exitem-cess
cess_perc = es_exitem-cessrate.
CHECK sy-subrc EQ 0.
ecs begins
CALL FUNCTION 'J_1I4_GET_ECESS'
EXPORTING
E_BED_AMOUNT = es_exitem-exbed
E_AED_AMOUNT = es_exitem-exaed
E_SED_AMOUNT = es_exitem-exsed
E_NCCD_AMOUNT = es_exitem-nccd
IMPORTING
X_ECS = es_exitem-ecs
X_ECS_INVENTORY = es_exitem-ecsinv
X_ECS_RATE = es_exitem-ecsrate.
ecs ends
ENDIF.
ENDIF. "NOT l_ebeln IS INITIAL
ENDFUNCTION.
*&----
*
*& Form get_mdvt_cond_type
*&----
*
text
*----
*
-->P_TAX_PROC text
<--P_RESULT text
*----
*
FORM get_mdvt_cond_type
TABLES p_mdvt_cond_type
USING p_tax_proc
p_bukrs
p_mwskz
CHANGING p_result
es_taxcond.
data : is_taxcond like j_1itaxcond_def.
STATICS: v_taxcal LIKE j_1iexcdef-j_1itaxcal.
DATA: ls_excdef LIKE j_1iexcdef.
DATA:
BEGIN OF lt_mdvt_cond_type OCCURS 0,
kschl LIKE j_1iexcdef-j_1icbedap,
duty_type(1) TYPE c,
base LIKE j_1iexcdtl-exbas,
excamt LIKE j_1iexcdtl-exbas,
excrat LIKE konv-kbetr,
END OF lt_mdvt_cond_type.
CHECK v_taxcal NE p_tax_proc.
lt_mdvt_cond_type = p_mdvt_cond_type.
SELECT SINGLE * FROM j_1iexcdef INTO ls_excdef
WHERE j_1itaxcal EQ p_tax_proc.
CALL FUNCTION 'J_1I_DETERMINE_CONDITION_DEF'
EXPORTING
ar_ap = 'AP'
kalsm = p_tax_proc
mwskz = p_mwskz
taxproc = p_tax_proc
bukrs = p_bukrs
IMPORTING
t_excdef = ls_excdef
t_taxcond = es_taxcond.
p_result = sy-subrc.
v_taxcal = p_tax_proc.
IF ls_excdef IS INITIAL.
p_result = 4.
ELSE.
p_result = 0.
ENDIF.
CHECK p_result EQ 0.
CLEAR lt_mdvt_cond_type.
REFRESH lt_mdvt_cond_type.
lt_mdvt_cond_type-kschl = ls_excdef-j_1icbedap.
lt_mdvt_cond_type-duty_type = 'B'.
APPEND lt_mdvt_cond_type.
lt_mdvt_cond_type-kschl = ls_excdef-j_1icsedap.
lt_mdvt_cond_type-duty_type = 'S'.
APPEND lt_mdvt_cond_type.
lt_mdvt_cond_type-kschl = ls_excdef-j_1icaedap.
lt_mdvt_cond_type-duty_type = 'A'.
APPEND lt_mdvt_cond_type.
NCCD Change Starts
lt_mdvt_cond_type-kschl = ls_excdef-j_1icnccdap.
lt_mdvt_cond_type-duty_type = 'N'.
APPEND lt_mdvt_cond_type.
NCCD Change Ends
****ECS begins
lt_mdvt_cond_type-kschl = ls_excdef-j_1icecsap.
lt_mdvt_cond_type-duty_type = 'E'.
APPEND lt_mdvt_cond_type.
****ECS ends
LOOP AT lt_mdvt_cond_type.
p_mdvt_cond_type = lt_mdvt_cond_type.
APPEND p_mdvt_cond_type.
ENDLOOP.
ENDFORM. " get_mdvt_cond_type
‎2006 Sep 14 9:13 AM
Hi,
To check where u r geting overflow.
In call transaction statement use 'E' for
mode. when u process it will show u the screen name and field name where the overflow occurs.
CALL transaction tran name using bdcdata
mode 'E'.
Regards
Divakar
‎2006 Sep 14 9:23 AM
Hello,
Mostly when u are doing some calculation this happens.
Example:U are adding to varible, then if the varible exceedds the limit this happens.Check all the varible where u are doing calculations and declare them in Packed decimals or floating points.
regards
‎2006 Sep 14 9:34 AM
Try doing the modification as below.
IF is_exhead-cvdind = abap_true
<b>*AND es_exitem-exbed > 0.
AND es_exitem-exbas > 0.</b>* es_exitem-bedrate = es_exitem-exbas / es_exitem-exbed.
es_exitem-bedrate = ( es_exitem-exbed /
es_exitem-exbas ) * 100.
Kind Regards
Eswar
‎2006 Sep 14 2:12 PM
here what ever u have written is correct,but this is a standard program,so i cannot change anything.
only i should change the values by setting a break point.
but i am not able to see the values to be changed.
how acan we see it in debugging.and values should be passed in production only.this is a support project.
urs
pradeep.r
‎2006 Sep 14 2:26 PM
Hi,
declare es_exitem-bedrate
as data es_exitem-bedrate like BAPI3007_3-T_CURR_BAL
Regards
amole
‎2007 May 18 8:10 AM
Hi
Please check once the data length of source and target fields which u used in MOVE statement.If possible set target field datalength greater than source datalength.
Thanks
A Prabhakar Reddy.