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

PURCHASE ORDER

p291102
Active Contributor
0 Likes
680

************************************************************************

*

  • TITLE : ZMLPOR(PURCHASE ORDER)

  • AUTHOR : Srinivas. G, OAK BROOK TECHNOLOGIES

  • DATE : 15 JUN 2003

  • MODIFIED BY : P.PATHY OBT

  • DATE OF LAST MODIFICATION : 09.04.03

  • TYPE : ON-LINE

  • VERSION : 1.0

  • FREQUENCY : As and when required

  • Running Time : Short

  • Spec :

  • Copied From : N/A

  • Called From : N/A

  • Transaction : N/A

  • Function Keys : N/A

  • Logical DB : N/A

  • Special Processing : N/A

  • PURPOSE : TO PRINT PURCHASE ORDER

  • History : : MODIFIED AS PER CLIENT REQUIREMENT

***********************************************************************

  • Modified By : Rajasekhar

  • Date of last Modification : 14.08.2003

  • Procedure Followed

  • Condition Type Meaning Procedure

  • a) PBXX Gross Price

  • b) ZD21 Discount Deduct this amount from Gross

  • Price

  • c) ZPF1 P&F Add this amount to b

  • d) JM01 Excise Add this amount to c

  • e) NAVS Sales Tax Add this amount to d

  • f) ZF20 Freight Add this amount to e

  • g) ZI20 Insurance Calculate this by deducting

  • Excise from e

************************************************************************

REPORT zmlpor MESSAGE-ID z115.

TABLES : ekko,ekpo,lfa1,t005t,konv,t052u,komk,t005,komp,eket,tinct,

eban,mdsb,makt,mara,tcurt,t006,t005u,adrc,KOMV.

DATA : w_rate LIKE konv-kbetr.

DATA : w_discnt LIKE konv-kbetr.

DATA : w_tdiscnt LIKE konv-kbetr.

DATA : w_ed LIKE konv-kbetr.

DATA : w_ted LIKE konv-kbetr.

DATA : w_tax LIKE konv-kbetr.

DATA : w_ttax LIKE konv-kbetr.

DATA : w_subtot LIKE konv-kbetr.

DATA : w_pf LIKE konv-kbetr.

DATA : w_tpf LIKE konv-kbetr.

DATA : w_others LIKE konv-kbetr.

DATA : w_tothers LIKE konv-kbetr.

DATA : w_total LIKE konv-kbetr.

DATA : w_total1 TYPE p DECIMALS 0.

DATA : w_state LIKE t005u-bezei,

w_cty LIKE t005t-landx.

DATA : w_sno TYPE i.

*****Variables to calculate percentages ******

DATA : w_disrt TYPE p DECIMALS 2.

DATA : w_pfrt TYPE p DECIMALS 2.

DATA : w_edrt TYPE p DECIMALS 2.

DATA : w_taxrt1 TYPE p DECIMALS 0.

DATA : w_taxrt TYPE p DECIMALS 0.

DATA : w_scrt TYPE p DECIMALS 0.

DATA : w_othersrt TYPE p DECIMALS 2.

DATA : w_rtflag(1).

DATA : w_imppotot TYPE p DECIMALS 2.

DATA : w_impltot TYPE p DECIMALS 2.

DATA : w_curr LIKE ekko-waers.

DATA : w_cur(15).

DATA : w_den LIKE konv-kbetr.

DATA : w_conval LIKE konv-kbetr.

DATA : w_scvar TYPE p DECIMALS 2.

*****End of variables*********

*****ADDED ON 11.02.03**********

DATA : i_komv TYPE STANDARD TABLE OF komv WITH HEADER LINE.

DATA : i_mepo1320 TYPE STANDARD TABLE OF meposchedule WITH HEADER LINE.

DATA: w_matpotext(40).

DATA : BEGIN OF i_stab OCCURS 0,

menge LIKE mepo1320-menge,

uzeit LIKE mepo1320-uzeit,

END OF i_stab.

DATA : w_etax LIKE konv-kbetr.

DATA : w_eces LIKE konv-kwert.

DATA : w_freight LIKE konv-kbetr.

DATA : w_ins LIKE konv-kbetr.

DATA : w_instal LIKE konv-kbetr.

DATA : w_eindt LIKE eket-eindt.

*****END 11.02.03**************

DATA : w_words(200).

DATA : w_wort(200).

DATA : w_text LIKE ekpo-txz01.

***READ TEXT FOR INSTRUCTIONS

DATA: tname1 LIKE thead-tdname.

DATA: mattext1 LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: i_text(255).

DATA: mattext2 LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: i_text1(255).

***

DATA: refname LIKE thead-tdname.

DATA: reftext LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: w_reftext(50).

DATA: w_word1(30).

DATA: w_word2(30).

DATA: w_word3(30).

DATA: w_var1(5).

DATA: w_var2(5).

              • Added on 06.06.03. to Add Item Text ****

DATA: BEGIN OF i_itab OCCURS 0,

W_EINDT LIKE EKET-EINDT,

w_text(132),

END OF i_itab.

DATA: w_cnt TYPE i.

DATA: mattext3 LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: tname3 LIKE thead-tdname.

*******End of Add ********

********Added on 26.05.2003*****

DATA: bezei LIKE tinct-bezei.

DATA: cnt TYPE i VALUE 1.

*******Added on 19.08.2003**********

DATA: w_cf.

***********

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE tit.

PARAMETERS : p_docno LIKE ekko-ebeln.

SELECTION-SCREEN END OF BLOCK blk.

INITIALIZATION.

tit = 'Selection Block'.

AT SELECTION-SCREEN.

SELECT SINGLE * FROM ekko WHERE ebeln = p_docno

AND bstyp = 'F'.

IF sy-subrc NE 0.

MESSAGE e000 WITH p_docno.

ENDIF.

START-OF-SELECTION.

PERFORM getdata.

PERFORM openform.

PERFORM writeform.

PERFORM closeform.

----


  • FORM GETDATA *

----


  • ........ *

----


FORM getdata.

MOVE p_docno TO refname.

PERFORM reftext.

SELECT SINGLE * FROM ekko WHERE ebeln = p_docno

AND bstyp = 'F'.

SELECT SINGLE * FROM tcurt WHERE spras = 'E'

AND waers = ekko-waers.

w_curr = ekko-waers.

w_cur = tcurt-ktext.

SELECT SINGLE * FROM lfa1 WHERE lifnr = ekko-lifnr.

SELECT SINGLE * FROM adrc WHERE addrnumber = lfa1-adrnr.

SELECT SINGLE * FROM t005t WHERE land1 = lfa1-land1

AND spras = 'E'.

SELECT SINGLE * FROM t052u WHERE spras = 'E' AND zterm = ekko-zterm.

SELECT SINGLE * FROM t005

WHERE land1 = ekko-lands.

SELECT SINGLE * FROM t005u

WHERE spras = 'E'

AND land1 = lfa1-land1

AND bland = lfa1-regio.

w_state = t005u-bezei.

w_cty = t005t-landx.

TRANSLATE w_state TO UPPER CASE.

TRANSLATE w_cty TO UPPER CASE.

komk-kalsm = t005-kalsm.

komk-prsdt = ekko-bedat.

komk-ekorg = ekko-ekorg.

komk-mandt = ekko-mandt.

komk-aland = ekko-lands.

komk-bukrs = ekko-bukrs.

komk-hwaer = ekko-waers.

komk-waerk = ekko-waers.

komk-lifnr = ekko-lifnr.

komk-kappl = 'TX'.

ENDFORM.

----


  • FORM OPENFORM *

----


  • ........ *

----


FORM openform.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

form = 'YMS_MLPOR'

language = sy-langu.

ENDFORM.

----


  • FORM WRITEFORM *

----


  • ........ *

----


FORM writeform.

PERFORM pono.

PERFORM address.

PERFORM ref.

PERFORM items.

  • PERFORM PF.

PERFORM total.

PERFORM words.

PERFORM basis.

PERFORM terms.

PERFORM schedule.

PERFORM instructions.

SELECT SINGLE * FROM eket WHERE ebeln = p_docno AND etenr EQ '2'.

  • IF EKET-ETENR EQ '2'.

  • W_DELFLAG = 'Y'.

  • ENDIF.

  • ENDSELECT.

*

  • IF W_DELFLAG EQ 'Y'.

IF sy-subrc EQ 0.

PERFORM new_form.

PERFORM del_schedule.

ENDIF.

ENDFORM.

----


  • FORM CLOSEFORM *

----


  • ........ *

----


FORM closeform.

CALL FUNCTION 'CLOSE_FORM'

EXCEPTIONS

unopened = 1

bad_pageformat_for_print = 2

send_error = 3

spool_error = 4

OTHERS = 5.

ENDFORM.

----


  • FORM PONO *

----


  • ........ *

----


FORM pono.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PONO'

window = 'PONO'.

ENDFORM.

----


  • FORM ADDRESS *

----


  • ........ *

----


FORM address.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ADDRESS'

window = 'ADDRESS'.

ENDFORM.

----


  • FORM REF *

----


  • ........ *

----


FORM ref.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'REF'

window = 'REF'.

ENDFORM.

----


  • FORM ITEMS *

----


  • ........ *

----


FORM items.

SELECT * FROM ekpo WHERE ebeln = ekko-ebeln AND

loekz EQ ''.

*SELECT SINGLE * FROM T006 WHERE MSEHI = EKPO-MEINS.

*READ TABLE I_MEPO1320 WITH KEY EBELN = EKPO-EBELN

  • EBELP = EKPO-EBELP.

  • I_STAB-MENGE = I_MEPO1320-MENGE.

  • I_STAB-UZEIT = I_MEPO1320-UZEIT.

*APPEND I_STAB.

*CLEAR I_STAB .

komk-txjcd = ekpo-txjcd.

komk-mwskz = ekpo-mwskz.

komp-kposn = ekpo-ebelp.

komp-werks = ekpo-werks.

komp-matnr = ekpo-matnr.

komp-matkl = ekpo-matkl.

komp-meins = ekpo-meins.

komp-mglme = ekpo-menge.

komp-wrbtr = ekpo-netwr.

komp-mwskz = ekpo-mwskz.

komp-mtart = ekpo-mtart.

CALL FUNCTION 'PRICING'

EXPORTING

calculation_type = 'B'

comm_head_i = komk

comm_item_i = komp

IMPORTING

comm_head_e = komk

comm_item_e = komp

TABLES

tkomv = i_komv.

CLEAR : w_disrt,w_pfrt,w_edrt,w_taxrt,w_othersrt,w_rtflag,

w_taxrt1,w_den,w_tax.

******************SHANKAR ECESS**********************************

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'JEC1'.

  • IF sy-subrc EQ 0.

    • W_TAXRT = KONV-KBETR / 10.

  • w_eces = w_eces + konv-kwert.

  • ENDIF.

*******************************************************************

PERFORM cond_vals.

IF w_disrt EQ 0 AND w_pfrt EQ 0 AND w_edrt EQ 0 AND

w_taxrt EQ 0 .

  • W_TAXRT EQ 0 AND W_OTHERSRT EQ 0.

CLEAR w_rtflag.

ELSE.

w_rtflag = 'Y'.

ENDIF.

  • W_TEXT = EKPO-TXZ01.

  • CONDENSE W_TEXT no-gaps.

PERFORM itemtext.

IF ekko-waers EQ 'INR'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'MAIN'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

cnt = cnt + 1.

ELSE.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'MAIN2'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

cnt = cnt + 1.

ENDIF.

LOOP AT i_itab.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEXT'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

ENDLOOP.

IF ekko-bsart EQ 'SC' AND ekpo-pstyp EQ '3'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SUB_CONTRACT_TEXT'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

SELECT * FROM mdsb WHERE ebeln = ekpo-ebeln

AND ebelp = ekpo-ebelp.

SELECT SINGLE * FROM makt WHERE matnr = mdsb-matnr.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SUB_CONTRACT_ITEMS'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

ENDSELECT.

ENDIF.

ENDSELECT.

  • CLEAR W_EINDT.

CLEAR cnt.

ENDFORM.

----


  • FORM PF *

----


  • ........ *

----


FORM pf.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PF'

window = 'PF'.

ENDFORM.

----


  • FORM TOTAL *

----


  • ........ *

----


FORM total.

IF w_curr NE 'INR'.

w_total = w_imppotot.

ENDIF.

w_total1 = w_total.

  • w_total = w_total1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TOTAL'

window = 'TOTAL'.

ENDFORM.

----


  • FORM WORDS *

----


  • ........ *

----


FORM words.

PERFORM spellamount.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'WORDS'

window = 'WORDS'.

ENDFORM.

----


  • FORM BASIS *

----


  • ........ *

----


FORM basis.

SELECT SINGLE * FROM tinct WHERE spras = 'E' AND inco1 = ekko-inco1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'BASIS'

window = 'BASIS'.

*clear tinct.

ENDFORM.

----


  • FORM TERMS *

----


  • ........ *

----


FORM terms.

tname1 = ekko-ebeln.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = 'F06'

language = 'E'

name = tname1

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = mattext1

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

IF sy-subrc EQ 0.

LOOP AT mattext1.

CONCATENATE i_text mattext1-tdline INTO i_text SEPARATED BY space.

CONDENSE i_text.

ENDLOOP.

ELSE.

i_text = ''.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TERMS'

window = 'TERMS'.

ENDFORM.

----


  • FORM REFTEXT *

----


  • ........ *

----


FORM reftext.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = 'F01'

language = 'E'

name = refname

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = reftext

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT reftext.

CONCATENATE w_reftext reftext-tdline INTO w_reftext

SEPARATED BY space.

CONDENSE w_reftext.

ENDLOOP.

w_word1 = w_reftext+20(30).

SPLIT w_word1 AT ' ' INTO w_word2 w_word3.

w_word1 = w_reftext+0(20).

ENDFORM.

----


  • FORM SCHEDULE *

----


  • ........ *

----


FORM schedule.

*clear : MATTEXT1,I_TEXT.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = 'F05'

language = 'E'

name = tname1

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = mattext2

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT mattext2.

CONCATENATE i_text1 mattext2-tdline INTO i_text1 SEPARATED BY space.

CONDENSE i_text1.

ENDLOOP.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SCHEDULE'

window = 'SCHEDULE'.

ENDFORM.

----


  • FORM INSTRUCTIONS *

----


  • ........ *

----


FORM instructions.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'INSTRUCT'

window = 'INSTRUCT'.

ENDFORM.

----


  • FORM ITEMTEXT *

----


  • ........ *

----


FORM itemtext.

REFRESH : mattext3,i_itab.

CLEAR : w_matpotext.

CONCATENATE ekpo-ebeln ekpo-ebelp INTO tname3.

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

id = 'F03'

language = 'E'

name = tname3

object = 'EKPO'

  • ARCHIVE_HANDLE = 0

  • IMPORTING

  • HEADER =

TABLES

lines = mattext3

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8.

LOOP AT mattext3.

w_cnt = w_cnt + 1.

READ TABLE mattext3 INDEX w_cnt.

i_itab-w_text = mattext3-tdline.

***SANKAR FOR DELVIERY DATE**************

SELECT SINGLE EINDT INTO I_ITAB-W_EINDT FROM EKET WHERE

EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP.

APPEND i_itab.

CLEAR i_itab.

  • CONCATENATE W_MATPOTEXT MATTEXT3-TDLINE INTO W_MATPOTEXT

  • SEPARATED BY SPACE.

  • CONDENSE W_MATPOTEXT.

ENDLOOP.

IF I_ITAB[] IS INITIAL.

SELECT EINDT INTO I_ITAB-W_EINDT FROM EKET WHERE

EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP.

*COUNT = COUNT + 1

APPEND I_ITAB.

ENDSELECT.

*ELSE.

*SELECT EINDT INTO I_ITAB-W_EINDT FROM EKET WHERE

  • EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP.

*COUNT = COUNT + 1.

*MODIFY I_ITAB-W_EINDT INDEX COUNT.

*ENDSELECT.

ENDIF.

***SANKAR FOR DELVIERY DATE**************

ENDFORM.

----


  • FORM COND_VALS *

----


  • ........ *

----


FORM cond_vals.

CLEAR : w_rate,w_ed,w_discnt,w_tax,w_subtot,w_pf,w_others,w_pf,w_ins,

w_impltot.

CLEAR : w_freight,w_etax, w_cf, w_impltot,w_eces.

********BASIC PRICE CALCULATION*************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl IN ('PBXX','PB00','ZP20','ZP21').

IF sy-subrc EQ 0.

w_rate = konv-kbetr.

w_impltot = konv-kwert.

IF konv-waers EQ 'JPY'.

w_rate = w_rate * 100.

w_impltot = w_impltot * 100.

ELSEIF konv-waers EQ 'EUR'.

w_rate = w_rate / 10.

w_impltot = w_impltot / 10.

ENDIF.

w_imppotot = w_imppotot + w_impltot.

ENDIF.

********END OF BASIC PRICE CALCULATION*************

*******P&F CALCULATION***********************

SELECT * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

  • AND ( ( kschl = 'ZPF1' AND kschl = 'ZPF2' )

AND ( kschl = 'ZPF1' OR kschl = 'ZPF2' ).

IF sy-subrc EQ 0.

IF w_pfrt EQ 0.

w_pfrt = konv-kbetr / 10.

ENDIF.

w_pf = w_pf + konv-kwert.

ENDIF.

ENDSELECT.

*******END OF P&F CALCULATION***********************

*******OTHERS CALCULATION***********************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZO23'.

IF sy-subrc EQ 0.

  • w_othersrt = konv-kbetr / 10.

w_others = konv-kwert.

ENDIF.

*******END OF OTHERS CALCULATION***********************

*******INSTALLATION CALCULATION***********************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZO21'.

IF sy-subrc EQ 0.

  • W_INSTAL = KONV-KBETR.

w_instal = konv-kwert.

w_others = w_others + w_instal.

ENDIF.

*******END OF OTHERS CALCULATION***********************

*******ENTRY TAX CALCULATION*********************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZS00'.

IF sy-subrc EQ 0.

  • W_TAXRT = KONV-KBETR / 10.

w_etax = konv-kwert.

ENDIF.

*******END OF ENTRY TAX CALCULATION*********************

******fREIGHT CALCULATION****************************

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'ZF20'

  • AND kbetr NE 0.

*

  • IF sy-subrc EQ 0.

  • IF konv-kbetr EQ 0. "Percentage

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'ZF21'.

  • ENDIF.

  • ELSE.

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'ZF21'.

  • ENDIF.

  • w_freight = konv-kwert.

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZF20'.

if sy-subrc eq 0.

w_freight = w_freight + konv-kwert.

endif.

********Added By Rajasekhar

  • w_othersrt = w_othersrt + ( konv-kbetr / 10 ). "MRS

w_others = w_others + w_freight. "MRS

******END OF fREIGHT CALCULATION****************************

*****INSURANCE CALCULATION**********************************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZI20'.

IF sy-subrc EQ 0.

  • W_INS = KONV-KBETR.

w_ins = konv-kwert.

  • w_othersrt = w_othersrt + ( konv-kwert / 10 ). "MRS

w_others = w_others + w_ins. "MRS

ENDIF.

*****END OF INSURANCE CALCULATION****************************

*****EXCISE DUTY CALCULATION**********************************

READ TABLE i_komv WITH KEY kposn = ekPo-ebelp kschl = 'JMO1'.

IF sy-subrc EQ 0.

w_ed = i_komv-kwert.

w_edrt = i_komv-kbetr / 10.

ENDIF.

*******CESS VALUE CALCULATION BY SANKAR*******************

READ TABLE i_komv WITH KEY kposn = ekPo-ebelp KSCHL = 'JMO1'.

IF sy-subrc EQ 0.

w_eCES = i_komv-kwert + w_ed.

  • w_edrt = i_komv-kbetr / 10.

ENDIF.

w_ted = w_ted + w_eces .

  • ENDIF.

  • ENDIF.

  • ENDLOOP.

******END OF EXCISE DUTY CALCULATION**********************************

*****SALES TAX CALCULATION*******************************************

READ TABLE i_komv WITH KEY kposn = ekpo-ebelp

kschl = 'JIP4'.

IF sy-subrc EQ 0.

w_scrt = i_komv-kbetr / 10.

ENDIF.

w_tax = ekpo-navnw.

w_den = ekpo-netwr + w_ed.

IF w_den NE 0.

w_scvar = w_tax * 100 / w_den.

w_taxrt1 = w_scvar .

w_scrt = ( w_scvar - w_taxrt1 ) * 100 / w_taxrt1.

  • w_scrt = w_scvar.

ENDIF.

w_taxrt = w_taxrt1.

MOVE w_taxrt TO w_var1.

CONCATENATE w_var1 '%' INTO w_var1.

MOVE w_scrt TO w_var2.

CONCATENATE w_var2 '%' INTO w_var2.

**To get (3% + 5% = 3.15%)**

  • w_scrt = w_scrt * w_taxrt / 100 .

  • w_taxrt = w_taxrt + w_scrt.

**End of code*********

********************

w_ttax = w_ttax + w_tax.

*****END SALES TAX CALCULATION***************************************

******DISCOUNT CALCULATION******************************************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZD21'.

IF sy-subrc EQ 0.

w_disrt = konv-kbetr / 10.

IF w_disrt LT 0.

w_disrt = w_disrt * -1.

ENDIF.

w_discnt = konv-kwert.

IF w_discnt LT 0.

w_discnt = w_discnt * -1.

ENDIF.

ENDIF.

w_tdiscnt = w_tdiscnt + w_discnt.

***********END OF DISCOUNT CALCULATION****************************

************DELIVERY SCHEDULE CALCULATION************************+

IF w_eindt NE ''.

SELECT SINGLE * FROM eket WHERE ebeln = p_docno AND ebelp = ekpo-ebelp.

IF sy-subrc EQ 0.

w_eindt = eket-eindt.

ENDIF.

ENDIF.

***********END OF DELIVERY SCHEDULE**************************

                                • C & F Calculation ***********Rajasekhar******

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZC23'.

IF sy-subrc EQ 0.

w_cf = 'Y'.

w_others = w_others + ( konv-kbetr / 10 ).

ENDIF.

IF ekpo-bpumz NE 0 AND ekpo-bpumn NE 0.

w_subtot = ekpo-menge * w_rate * ekpo-bpumz - w_discnt +

w_ed + w_tax + w_pf + w_others + w_eces .

ELSE.

w_subtot = ekpo-menge * w_rate - w_discnt + w_ed + w_tax + w_pf +

w_others + w_eces .

ENDIF.

w_total = w_total + w_subtot.

IF w_cf = 'Y'.

w_impltot = w_subtot.

w_imppotot = w_total.

ENDIF.

ENDFORM.

----


  • FORM NEW_FORM *

----


  • ........ *

----


FORM new_form.

CALL FUNCTION 'END_FORM'

  • IMPORTING

  • RESULT =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SPOOL_ERROR = 3

  • OTHERS = 4

.

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 'START_FORM'

EXPORTING

  • ARCHIVE_INDEX =

form = 'YMS_MLPOR'

  • LANGUAGE = ' '

  • STARTPAGE = ' '

  • PROGRAM = ' '

  • MAIL_APPL_OBJECT =

  • IMPORTING

  • LANGUAGE =

  • EXCEPTIONS

  • FORM = 1

  • FORMAT = 2

  • UNENDED = 3

  • UNOPENED = 4

  • UNUSED = 5

  • SPOOL_ERROR = 6

  • OTHERS = 7

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.

----


  • FORM DEL_SCHEDULE *

----


  • ........ *

----


FORM del_schedule.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ADDRESS'

window = 'ADDRESS'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PONO'

window = 'PONO'.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • element = 'DEL_TEXT'

  • window = 'MAIN'.

SELECT * FROM eket WHERE ebeln = p_docno.

SELECT SINGLE * FROM ekpo WHERE ebeln = eket-ebeln

AND ebelp = eket-ebelp.

w_sno = w_sno + 1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'DEL_SCHEDULE'

window = 'MAIN'.

ENDSELECT.

ENDFORM.

----


  • FORM SPELLAMOUNT *

----


  • ........ *

----


FORM spellamount.

*if w_curr ne 'INR'.

  • w_total = w_imppotot.

*endif.

  • w_total1 = w_total.

  • w_total = w_total1.

CALL FUNCTION 'ZSPELLAMOUNT'

EXPORTING

amount = w_total

IMPORTING

words = w_words

wort = w_wort

EXCEPTIONS

exceed = 1

OTHERS = 2.

ENDFORM.

************************************************************************

*

  • TITLE : ZMLPOR(PURCHASE ORDER)

  • AUTHOR : Srinivas. G, OAK BROOK TECHNOLOGIES

  • DATE : 15 JUN 2003

  • MODIFIED BY : P.PATHY OBT

  • DATE OF LAST MODIFICATION : 09.04.03

  • TYPE : ON-LINE

  • VERSION : 1.0

  • FREQUENCY : As and when required

  • Running Time : Short

  • Spec :

  • Copied From : N/A

  • Called From : N/A

  • Transaction : N/A

  • Function Keys : N/A

  • Logical DB : N/A

  • Special Processing : N/A

  • PURPOSE : TO PRINT PURCHASE ORDER

  • History : : MODIFIED AS PER CLIENT REQUIREMENT

***********************************************************************

  • Modified By : Rajasekhar

  • Date of last Modification : 14.08.2003

  • Procedure Followed

  • Condition Type Meaning Procedure

  • a) PBXX Gross Price

  • b) ZD21 Discount Deduct this amount from Gross

  • Price

  • c) ZPF1 P&F Add this amount to b

  • d) JM01 Excise Add this amount to c

  • e) NAVS Sales Tax Add this amount to d

  • f) ZF20 Freight Add this amount to e

  • g) ZI20 Insurance Calculate this by deducting

  • Excise from e

************************************************************************

REPORT zmlpor MESSAGE-ID z115.

TABLES : ekko,ekpo,lfa1,t005t,konv,t052u,komk,t005,komp,eket,tinct,

eban,mdsb,makt,mara,tcurt,t006,t005u,adrc,KOMV.

DATA : w_rate LIKE konv-kbetr.

DATA : w_discnt LIKE konv-kbetr.

DATA : w_tdiscnt LIKE konv-kbetr.

DATA : w_ed LIKE konv-kbetr.

DATA : w_ted LIKE konv-kbetr.

DATA : w_tax LIKE konv-kbetr.

DATA : w_ttax LIKE konv-kbetr.

DATA : w_subtot LIKE konv-kbetr.

DATA : w_pf LIKE konv-kbetr.

DATA : w_tpf LIKE konv-kbetr.

DATA : w_others LIKE konv-kbetr.

DATA : w_tothers LIKE konv-kbetr.

DATA : w_total LIKE konv-kbetr.

DATA : w_total1 TYPE p DECIMALS 0.

DATA : w_state LIKE t005u-bezei,

w_cty LIKE t005t-landx.

DATA : w_sno TYPE i.

*****Variables to calculate percentages ******

DATA : w_disrt TYPE p DECIMALS 2.

DATA : w_pfrt TYPE p DECIMALS 2.

DATA : w_edrt TYPE p DECIMALS 2.

DATA : w_taxrt1 TYPE p DECIMALS 0.

DATA : w_taxrt TYPE p DECIMALS 0.

DATA : w_scrt TYPE p DECIMALS 0.

DATA : w_othersrt TYPE p DECIMALS 2.

DATA : w_rtflag(1).

DATA : w_imppotot TYPE p DECIMALS 2.

DATA : w_impltot TYPE p DECIMALS 2.

DATA : w_curr LIKE ekko-waers.

DATA : w_cur(15).

DATA : w_den LIKE konv-kbetr.

DATA : w_conval LIKE konv-kbetr.

DATA : w_scvar TYPE p DECIMALS 2.

*****End of variables*********

*****ADDED ON 11.02.03**********

DATA : i_komv TYPE STANDARD TABLE OF komv WITH HEADER LINE.

DATA : i_mepo1320 TYPE STANDARD TABLE OF meposchedule WITH HEADER LINE.

DATA: w_matpotext(40).

DATA : BEGIN OF i_stab OCCURS 0,

menge LIKE mepo1320-menge,

uzeit LIKE mepo1320-uzeit,

END OF i_stab.

DATA : w_etax LIKE konv-kbetr.

DATA : w_eces LIKE konv-kwert.

DATA : w_freight LIKE konv-kbetr.

DATA : w_ins LIKE konv-kbetr.

DATA : w_instal LIKE konv-kbetr.

DATA : w_eindt LIKE eket-eindt.

*****END 11.02.03**************

DATA : w_words(200).

DATA : w_wort(200).

DATA : w_text LIKE ekpo-txz01.

***READ TEXT FOR INSTRUCTIONS

DATA: tname1 LIKE thead-tdname.

DATA: mattext1 LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: i_text(255).

DATA: mattext2 LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: i_text1(255).

***

DATA: refname LIKE thead-tdname.

DATA: reftext LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: w_reftext(50).

DATA: w_word1(30).

DATA: w_word2(30).

DATA: w_word3(30).

DATA: w_var1(5).

DATA: w_var2(5).

              • Added on 06.06.03. to Add Item Text ****

DATA: BEGIN OF i_itab OCCURS 0,

W_EINDT LIKE EKET-EINDT,

w_text(132),

END OF i_itab.

DATA: w_cnt TYPE i.

DATA: mattext3 LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: tname3 LIKE thead-tdname.

*******End of Add ********

********Added on 26.05.2003*****

DATA: bezei LIKE tinct-bezei.

DATA: cnt TYPE i VALUE 1.

*******Added on 19.08.2003**********

DATA: w_cf.

***********

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE tit.

PARAMETERS : p_docno LIKE ekko-ebeln.

SELECTION-SCREEN END OF BLOCK blk.

INITIALIZATION.

tit = 'Selection Block'.

AT SELECTION-SCREEN.

SELECT SINGLE * FROM ekko WHERE ebeln = p_docno

AND bstyp = 'F'.

IF sy-subrc NE 0.

MESSAGE e000 WITH p_docno.

ENDIF.

START-OF-SELECTION.

PERFORM getdata.

PERFORM openform.

PERFORM writeform.

PERFORM closeform.

----


  • FORM GETDATA *

----


  • ........ *

----


FORM getdata.

MOVE p_docno TO refname.

PERFORM reftext.

SELECT SINGLE * FROM ekko WHERE ebeln = p_docno

AND bstyp = 'F'.

SELECT SINGLE * FROM tcurt WHERE spras = 'E'

AND waers = ekko-waers.

w_curr = ekko-waers.

w_cur = tcurt-ktext.

SELECT SINGLE * FROM lfa1 WHERE lifnr = ekko-lifnr.

SELECT SINGLE * FROM adrc WHERE addrnumber = lfa1-adrnr.

SELECT SINGLE * FROM t005t WHERE land1 = lfa1-land1

AND spras = 'E'.

SELECT SINGLE * FROM t052u WHERE spras = 'E' AND zterm = ekko-zterm.

SELECT SINGLE * FROM t005

WHERE land1 = ekko-lands.

SELECT SINGLE * FROM t005u

WHERE spras = 'E'

AND land1 = lfa1-land1

AND bland = lfa1-regio.

w_state = t005u-bezei.

w_cty = t005t-landx.

TRANSLATE w_state TO UPPER CASE.

TRANSLATE w_cty TO UPPER CASE.

komk-kalsm = t005-kalsm.

komk-prsdt = ekko-bedat.

komk-ekorg = ekko-ekorg.

komk-mandt = ekko-mandt.

komk-aland = ekko-lands.

komk-bukrs = ekko-bukrs.

komk-hwaer = ekko-waers.

komk-waerk = ekko-waers.

komk-lifnr = ekko-lifnr.

komk-kappl = 'TX'.

ENDFORM.

----


  • FORM OPENFORM *

----


  • ........ *

----


FORM openform.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

form = 'YMS_MLPOR'

language = sy-langu.

ENDFORM.

----


  • FORM WRITEFORM *

----


  • ........ *

----


FORM writeform.

PERFORM pono.

PERFORM address.

PERFORM ref.

PERFORM items.

  • PERFORM PF.

PERFORM total.

PERFORM words.

PERFORM basis.

PERFORM terms.

PERFORM schedule.

PERFORM instructions.

SELECT SINGLE * FROM eket WHERE ebeln = p_docno AND etenr EQ '2'.

  • IF EKET-ETENR EQ '2'.

  • W_DELFLAG = 'Y'.

  • ENDIF.

  • ENDSELECT.

*

  • IF W_DELFLAG EQ 'Y'.

IF sy-subrc EQ 0.

PERFORM new_form.

PERFORM del_schedule.

ENDIF.

ENDFORM.

----


  • FORM CLOSEFORM *

----


  • ........ *

----


FORM closeform.

CALL FUNCTION 'CLOSE_FORM'

EXCEPTIONS

unopened = 1

bad_pageformat_for_print = 2

send_error = 3

spool_error = 4

OTHERS = 5.

ENDFORM.

----


  • FORM PONO *

----


  • ........ *

----


FORM pono.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PONO'

window = 'PONO'.

ENDFORM.

----


  • FORM ADDRESS *

----


  • ........ *

----


FORM address.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ADDRESS'

window = 'ADDRESS'.

ENDFORM.

----


  • FORM REF *

----


  • ........ *

----


FORM ref.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'REF'

window = 'REF'.

ENDFORM.

----


  • FORM ITEMS *

----


  • ........ *

----


FORM items.

SELECT * FROM ekpo WHERE ebeln = ekko-ebeln AND

loekz EQ ''.

*SELECT SINGLE * FROM T006 WHERE MSEHI = EKPO-MEINS.

*READ TABLE I_MEPO1320 WITH KEY EBELN = EKPO-EBELN

  • EBELP = EKPO-EBELP.

  • I_STAB-MENGE = I_MEPO1320-MENGE.

  • I_STAB-UZEIT = I_MEPO1320-UZEIT.

*APPEND I_STAB.

*CLEAR I_STAB .

komk-txjcd = ekpo-txjcd.

komk-mwskz = ekpo-mwskz.

komp-kposn = ekpo-ebelp.

komp-werks = ekpo-werks.

komp-matnr = ekpo-matnr.

komp-matkl = ekpo-matkl.

komp-meins = ekpo-meins.

komp-mglme = ekpo-menge.

komp-wrbtr = ekpo-netwr.

komp-mwskz = ekpo-mwskz.

komp-mtart = ekpo-mtart.

CALL FUNCTION 'PRICING'

EXPORTING

calculation_type = 'B'

comm_head_i = komk

comm_item_i = komp

IMPORTING

comm_head_e = komk

comm_item_e = komp

TABLES

tkomv = i_komv.

CLEAR : w_disrt,w_pfrt,w_edrt,w_taxrt,w_othersrt,w_rtflag,

w_taxrt1,w_den,w_tax.

******************SHANKAR ECESS**********************************

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'JEC1'.

  • IF sy-subrc EQ 0.

    • W_TAXRT = KONV-KBETR / 10.

  • w_eces = w_eces + konv-kwert.

  • ENDIF.

*******************************************************************

PERFORM cond_vals.

IF w_disrt EQ 0 AND w_pfrt EQ 0 AND w_edrt EQ 0 AND

w_taxrt EQ 0 .

  • W_TAXRT EQ 0 AND W_OTHERSRT EQ 0.

CLEAR w_rtflag.

ELSE.

w_rtflag = 'Y'.

ENDIF.

  • W_TEXT = EKPO-TXZ01.

  • CONDENSE W_TEXT no-gaps.

PERFORM itemtext.

IF ekko-waers EQ 'INR'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'MAIN'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

cnt = cnt + 1.

ELSE.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'MAIN2'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

cnt = cnt + 1.

ENDIF.

LOOP AT i_itab.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEXT'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

ENDLOOP.

IF ekko-bsart EQ 'SC' AND ekpo-pstyp EQ '3'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SUB_CONTRACT_TEXT'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

SELECT * FROM mdsb WHERE ebeln = ekpo-ebeln

AND ebelp = ekpo-ebelp.

SELECT SINGLE * FROM makt WHERE matnr = mdsb-matnr.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SUB_CONTRACT_ITEMS'

window = 'MAIN'

EXCEPTIONS

element = 1

function = 2

type = 3

unopened = 4

unstarted = 5

window = 6

bad_pageformat_for_print = 7

spool_error = 8

OTHERS = 9.

ENDSELECT.

ENDIF.

ENDSELECT.

  • CLEAR W_EINDT.

CLEAR cnt.

ENDFORM.

----


  • FORM PF *

----


  • ........ *

----


FORM pf.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PF'

window = 'PF'.

ENDFORM.

----


  • FORM TOTAL *

----


  • ........ *

----


FORM total.

IF w_curr NE 'INR'.

w_total = w_imppotot.

ENDIF.

w_total1 = w_total.

  • w_total = w_total1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TOTAL'

window = 'TOTAL'.

ENDFORM.

----


  • FORM WORDS *

----


  • ........ *

----


FORM words.

PERFORM spellamount.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'WORDS'

window = 'WORDS'.

ENDFORM.

----


  • FORM BASIS *

----


  • ........ *

----


FORM basis.

SELECT SINGLE * FROM tinct WHERE spras = 'E' AND inco1 = ekko-inco1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'BASIS'

window = 'BASIS'.

*clear tinct.

ENDFORM.

----


  • FORM TERMS *

----


  • ........ *

----


FORM terms.

tname1 = ekko-ebeln.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = 'F06'

language = 'E'

name = tname1

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = mattext1

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

IF sy-subrc EQ 0.

LOOP AT mattext1.

CONCATENATE i_text mattext1-tdline INTO i_text SEPARATED BY space.

CONDENSE i_text.

ENDLOOP.

ELSE.

i_text = ''.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TERMS'

window = 'TERMS'.

ENDFORM.

----


  • FORM REFTEXT *

----


  • ........ *

----


FORM reftext.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = 'F01'

language = 'E'

name = refname

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = reftext

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT reftext.

CONCATENATE w_reftext reftext-tdline INTO w_reftext

SEPARATED BY space.

CONDENSE w_reftext.

ENDLOOP.

w_word1 = w_reftext+20(30).

SPLIT w_word1 AT ' ' INTO w_word2 w_word3.

w_word1 = w_reftext+0(20).

ENDFORM.

----


  • FORM SCHEDULE *

----


  • ........ *

----


FORM schedule.

*clear : MATTEXT1,I_TEXT.

CALL FUNCTION 'READ_TEXT'

EXPORTING

client = sy-mandt

id = 'F05'

language = 'E'

name = tname1

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = mattext2

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT mattext2.

CONCATENATE i_text1 mattext2-tdline INTO i_text1 SEPARATED BY space.

CONDENSE i_text1.

ENDLOOP.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SCHEDULE'

window = 'SCHEDULE'.

ENDFORM.

----


  • FORM INSTRUCTIONS *

----


  • ........ *

----


FORM instructions.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'INSTRUCT'

window = 'INSTRUCT'.

ENDFORM.

----


  • FORM ITEMTEXT *

----


  • ........ *

----


FORM itemtext.

REFRESH : mattext3,i_itab.

CLEAR : w_matpotext.

CONCATENATE ekpo-ebeln ekpo-ebelp INTO tname3.

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

id = 'F03'

language = 'E'

name = tname3

object = 'EKPO'

  • ARCHIVE_HANDLE = 0

  • IMPORTING

  • HEADER =

TABLES

lines = mattext3

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8.

LOOP AT mattext3.

w_cnt = w_cnt + 1.

READ TABLE mattext3 INDEX w_cnt.

i_itab-w_text = mattext3-tdline.

***SANKAR FOR DELVIERY DATE**************

SELECT SINGLE EINDT INTO I_ITAB-W_EINDT FROM EKET WHERE

EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP.

APPEND i_itab.

CLEAR i_itab.

  • CONCATENATE W_MATPOTEXT MATTEXT3-TDLINE INTO W_MATPOTEXT

  • SEPARATED BY SPACE.

  • CONDENSE W_MATPOTEXT.

ENDLOOP.

IF I_ITAB[] IS INITIAL.

SELECT EINDT INTO I_ITAB-W_EINDT FROM EKET WHERE

EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP.

*COUNT = COUNT + 1

APPEND I_ITAB.

ENDSELECT.

*ELSE.

*SELECT EINDT INTO I_ITAB-W_EINDT FROM EKET WHERE

  • EBELN = EKPO-EBELN AND EBELP = EKPO-EBELP.

*COUNT = COUNT + 1.

*MODIFY I_ITAB-W_EINDT INDEX COUNT.

*ENDSELECT.

ENDIF.

***SANKAR FOR DELVIERY DATE**************

ENDFORM.

----


  • FORM COND_VALS *

----


  • ........ *

----


FORM cond_vals.

CLEAR : w_rate,w_ed,w_discnt,w_tax,w_subtot,w_pf,w_others,w_pf,w_ins,

w_impltot.

CLEAR : w_freight,w_etax, w_cf, w_impltot,w_eces.

********BASIC PRICE CALCULATION*************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl IN ('PBXX','PB00','ZP20','ZP21').

IF sy-subrc EQ 0.

w_rate = konv-kbetr.

w_impltot = konv-kwert.

IF konv-waers EQ 'JPY'.

w_rate = w_rate * 100.

w_impltot = w_impltot * 100.

ELSEIF konv-waers EQ 'EUR'.

w_rate = w_rate / 10.

w_impltot = w_impltot / 10.

ENDIF.

w_imppotot = w_imppotot + w_impltot.

ENDIF.

********END OF BASIC PRICE CALCULATION*************

*******P&F CALCULATION***********************

SELECT * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

  • AND ( ( kschl = 'ZPF1' AND kschl = 'ZPF2' )

AND ( kschl = 'ZPF1' OR kschl = 'ZPF2' ).

IF sy-subrc EQ 0.

IF w_pfrt EQ 0.

w_pfrt = konv-kbetr / 10.

ENDIF.

w_pf = w_pf + konv-kwert.

ENDIF.

ENDSELECT.

*******END OF P&F CALCULATION***********************

*******OTHERS CALCULATION***********************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZO23'.

IF sy-subrc EQ 0.

  • w_othersrt = konv-kbetr / 10.

w_others = konv-kwert.

ENDIF.

*******END OF OTHERS CALCULATION***********************

*******INSTALLATION CALCULATION***********************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZO21'.

IF sy-subrc EQ 0.

  • W_INSTAL = KONV-KBETR.

w_instal = konv-kwert.

w_others = w_others + w_instal.

ENDIF.

*******END OF OTHERS CALCULATION***********************

*******ENTRY TAX CALCULATION*********************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZS00'.

IF sy-subrc EQ 0.

  • W_TAXRT = KONV-KBETR / 10.

w_etax = konv-kwert.

ENDIF.

*******END OF ENTRY TAX CALCULATION*********************

******fREIGHT CALCULATION****************************

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'ZF20'

  • AND kbetr NE 0.

*

  • IF sy-subrc EQ 0.

  • IF konv-kbetr EQ 0. "Percentage

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'ZF21'.

  • ENDIF.

  • ELSE.

  • SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

  • AND kposn = ekpo-ebelp

  • AND kschl = 'ZF21'.

  • ENDIF.

  • w_freight = konv-kwert.

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZF20'.

if sy-subrc eq 0.

w_freight = w_freight + konv-kwert.

endif.

********Added By Rajasekhar

  • w_othersrt = w_othersrt + ( konv-kbetr / 10 ). "MRS

w_others = w_others + w_freight. "MRS

******END OF fREIGHT CALCULATION****************************

*****INSURANCE CALCULATION**********************************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZI20'.

IF sy-subrc EQ 0.

  • W_INS = KONV-KBETR.

w_ins = konv-kwert.

  • w_othersrt = w_othersrt + ( konv-kwert / 10 ). "MRS

w_others = w_others + w_ins. "MRS

ENDIF.

*****END OF INSURANCE CALCULATION****************************

*****EXCISE DUTY CALCULATION**********************************

READ TABLE i_komv WITH KEY kposn = ekPo-ebelp kschl = 'JMO1'.

IF sy-subrc EQ 0.

w_ed = i_komv-kwert.

w_edrt = i_komv-kbetr / 10.

ENDIF.

*******CESS VALUE CALCULATION BY SANKAR*******************

READ TABLE i_komv WITH KEY kposn = ekPo-ebelp KSCHL = 'JMO1'.

IF sy-subrc EQ 0.

w_eCES = i_komv-kwert + w_ed.

  • w_edrt = i_komv-kbetr / 10.

ENDIF.

w_ted = w_ted + w_eces .

  • ENDIF.

  • ENDIF.

  • ENDLOOP.

******END OF EXCISE DUTY CALCULATION**********************************

*****SALES TAX CALCULATION*******************************************

READ TABLE i_komv WITH KEY kposn = ekpo-ebelp

kschl = 'JIP4'.

IF sy-subrc EQ 0.

w_scrt = i_komv-kbetr / 10.

ENDIF.

w_tax = ekpo-navnw.

w_den = ekpo-netwr + w_ed.

IF w_den NE 0.

w_scvar = w_tax * 100 / w_den.

w_taxrt1 = w_scvar .

w_scrt = ( w_scvar - w_taxrt1 ) * 100 / w_taxrt1.

  • w_scrt = w_scvar.

ENDIF.

w_taxrt = w_taxrt1.

MOVE w_taxrt TO w_var1.

CONCATENATE w_var1 '%' INTO w_var1.

MOVE w_scrt TO w_var2.

CONCATENATE w_var2 '%' INTO w_var2.

**To get (3% + 5% = 3.15%)**

  • w_scrt = w_scrt * w_taxrt / 100 .

  • w_taxrt = w_taxrt + w_scrt.

**End of code*********

********************

w_ttax = w_ttax + w_tax.

*****END SALES TAX CALCULATION***************************************

******DISCOUNT CALCULATION******************************************

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZD21'.

IF sy-subrc EQ 0.

w_disrt = konv-kbetr / 10.

IF w_disrt LT 0.

w_disrt = w_disrt * -1.

ENDIF.

w_discnt = konv-kwert.

IF w_discnt LT 0.

w_discnt = w_discnt * -1.

ENDIF.

ENDIF.

w_tdiscnt = w_tdiscnt + w_discnt.

***********END OF DISCOUNT CALCULATION****************************

************DELIVERY SCHEDULE CALCULATION************************+

IF w_eindt NE ''.

SELECT SINGLE * FROM eket WHERE ebeln = p_docno AND ebelp = ekpo-ebelp.

IF sy-subrc EQ 0.

w_eindt = eket-eindt.

ENDIF.

ENDIF.

***********END OF DELIVERY SCHEDULE**************************

                                • C & F Calculation ***********Rajasekhar******

SELECT SINGLE * FROM konv WHERE knumv = ekko-knumv

AND kposn = ekpo-ebelp

AND kschl = 'ZC23'.

IF sy-subrc EQ 0.

w_cf = 'Y'.

w_others = w_others + ( konv-kbetr / 10 ).

ENDIF.

IF ekpo-bpumz NE 0 AND ekpo-bpumn NE 0.

w_subtot = ekpo-menge * w_rate * ekpo-bpumz - w_discnt +

w_ed + w_tax + w_pf + w_others + w_eces .

ELSE.

w_subtot = ekpo-menge * w_rate - w_discnt + w_ed + w_tax + w_pf +

w_others + w_eces .

ENDIF.

w_total = w_total + w_subtot.

IF w_cf = 'Y'.

w_impltot = w_subtot.

w_imppotot = w_total.

ENDIF.

ENDFORM.

----


  • FORM NEW_FORM *

----


  • ........ *

----


FORM new_form.

CALL FUNCTION 'END_FORM'

  • IMPORTING

  • RESULT =

  • EXCEPTIONS

  • UNOPENED = 1

  • BAD_PAGEFORMAT_FOR_PRINT = 2

  • SPOOL_ERROR = 3

  • OTHERS = 4

.

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 'START_FORM'

EXPORTING

  • ARCHIVE_INDEX =

form = 'YMS_MLPOR'

  • LANGUAGE = ' '

  • STARTPAGE = ' '

  • PROGRAM = ' '

  • MAIL_APPL_OBJECT =

  • IMPORTING

  • LANGUAGE =

  • EXCEPTIONS

  • FORM = 1

  • FORMAT = 2

  • UNENDED = 3

  • UNOPENED = 4

  • UNUSED = 5

  • SPOOL_ERROR = 6

  • OTHERS = 7

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.

----


  • FORM DEL_SCHEDULE *

----


  • ........ *

----


FORM del_schedule.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ADDRESS'

window = 'ADDRESS'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PONO'

window = 'PONO'.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • element = 'DEL_TEXT'

  • window = 'MAIN'.

SELECT * FROM eket WHERE ebeln = p_docno.

SELECT SINGLE * FROM ekpo WHERE ebeln = eket-ebeln

AND ebelp = eket-ebelp.

w_sno = w_sno + 1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'DEL_SCHEDULE'

window = 'MAIN'.

ENDSELECT.

ENDFORM.

----


  • FORM SPELLAMOUNT *

----


  • ........ *

----


FORM spellamount.

*if w_curr ne 'INR'.

  • w_total = w_imppotot.

*endif.

  • w_total1 = w_total.

  • w_total = w_total1.

CALL FUNCTION 'ZSPELLAMOUNT'

EXPORTING

amount = w_total

IMPORTING

words = w_words

wort = w_wort

EXCEPTIONS

exceed = 1

OTHERS = 2.

ENDFORM.

1 REPLY 1
Read only

SantoshKallem
Active Contributor
0 Likes
553

what do u want?