Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bcd_overflow

0 Likes
1,061

*----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

6 REPLIES 6
Read only

Former Member
0 Likes
796

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

Read only

Former Member
0 Likes
796

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

Read only

Former Member
0 Likes
796

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

Read only

0 Likes
796

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

Read only

Former Member
0 Likes
796

Hi,

declare es_exitem-bedrate

as data es_exitem-bedrate like BAPI3007_3-T_CURR_BAL

Regards

amole

Read only

Former Member
0 Likes
796

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.