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

reg:fm

Former Member
0 Likes
522

I created below function module, which is having below import parameters and tables:

FUNCTION ztest_func.

*"----


""Local interface:

*" IMPORTING

*" VALUE(S_LFDAT1) LIKE LIKP-LFDAT

*" VALUE(S_LFDAT2) LIKE LIKP-LFDAT OPTIONAL

*" VALUE(RAIL_ROAD) TYPE CHECKBOX

*" TABLES

*" IT_FINAL STRUCTURE ZTLC_SAL

*"----


data: it_cond type n,

loop_index like sy-tabix .

select zdelv~vkorg

zdelv~vbeln

zdelv~lfart

zdelv~lfdat

zdelv~wadat

zdelv~vtweg

zdelv~spart

zdelv~vkbur

zdelv~vkgrp

zdelv~kunnr

zdelv~vsbed

zdelv~ntgew

zdelv~route

zdelv~lgort

zdelv~inco1

zdelv~matnr

zdelv~mvgr1

zdelv~vsart

zdelv~rwerks

zdelv~dwerks

into corresponding fields of table IT_FRGT

From zdelv WHERE zdelv~wadat = s_lfdat1 " and s_lfdat2

AND zdelv~lfart IN ('ZGDP','ZGRR','ZRLF','ZGLF').

if Sy-subrc = 0.

Sort it_frgt

by vbeln dwerks lgort route kunnr regio vkbur vkgrp bran1 cityc.

Delete adjacent duplicates from it_frgt

Comparing vbeln dwerks lgort route kunnr

regio vkbur vkgrp bran1 Cityc.

Loop_index = 1.

Loop at it_frgt." to wa_frgt.

*select kunnr regio from kna1 into kna1 where kunnr = it_frgt-kunnr.

*select bland from t005u into corresponding fields of table it_regio where Bland = kna1-regio.

*endselect.

IF RAIL_ROAD = 'I'.

IF IT_FRGT-VSBED <> '04'.

DELETE IT_FRGT.

clear it_frgt.

CONTINUE.

ENDIF.

ENDIF.

IF RAIL_ROAD = 'R'.

IF IT_FRGT-VSBED = '04'.

DELETE IT_FRGT.

clear it_frgt.

CONTINUE.

endif.

endif.

clear wa_frgt.

select single lifnr from vbpa into vbpa

where vbeln eq it_frgt-vbeln and

parvw eq 'ZD'.

move-corresponding it_frgt to wa_frgt.

move vbpa-lifnr to wa_frgt-lifnr.

If wa_frgt-lfart eq 'ZGND' OR

wa_frgt-lfart eq 'ZGNL' OR

wa_frgt-lfart eq 'ZGNS'.

wa_frgt-LVTEXT = 'STA'.

if wa_frgt-lfart eq 'ZGNS'.

delete it_frgt.

continue.

endif.

select mseg~werks

mseg~lgort

into (wa_frgt-rwerks,wa_frgt-rlgort)

from vbfa join mseg

on mseg~mblnr = vbfa~vbeln

where vbfa~vbelv eq wa_frgt-vbeln and

vbfa~vbtyp_n = 'i'.

Endselect.

wa_frgt-netwr = 0.

if wa_frgt-netwr = 0.

select single regio region plant lgobe cityc from zsta

into corresponding fields of it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg

and kunnr = it_frgt-kunnr.

if sy-subrc <> 0.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

select single cityc from kna1 into wa_frgt-cityc

where kunnr = wa_frgt-kunnr.

it_zfrgt-cityc = wa_frgt-cityc.

endif.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt1

where werks = it_frgt-rwerks

and lgort = it_frgt-rlgort

and vkorg = it_frgt-vkorg

and kunnr = it_frgt-kunnr.

if sy-subrc <> 0.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt1

where werks = it_frgt-rwerks

  • and lgort = it_frgt-rlgort

and vkorg = it_frgt-vkorg.

endif.

else.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

endif.

else.

select single * from zsta into it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

endif.

wa_frgt-regio = it_zfrgt-regio.

wa_frgt-region = it_zfrgt-region.

wa_frgt-plant = it_zfrgt-plant.

wa_frgt-lgobe = it_zfrgt-lgobe.

wa_frgt-cityc = it_zfrgt-cityc.

wa_frgt-soffice = it_zfrgt1-Plant.

  • STA *

  • endif.

if wa_frgt-lfart eq 'ZGDP' OR

wa_frgt-lfart eq 'ZGDR' OR

wa_frgt-lfart eq 'ZGRR' OR

wa_frgt-lfart eq 'ZRLF' OR

wa_frgt-lfart eq 'ZGLF' OR

wa_frgt-lfart eq 'ZGLR' .

if wa_frgt-lfart eq 'ZGLR'.

delete it_frgt.

continue.

endif.

if wa_frgt-lfart eq 'ZGDR'.

delete it_frgt.

continue.

endif.

select single WBSTK from LIKPUK into Likpuk-wbstk

where vbeln = wa_frgt-vbeln.

if sy-subrc = 0.

if likpuk-wbstk <> 'C'.

delete it_frgt.

clear wa_frgt.

continue.

endif.

endif.

wa_frgt-LVTEXT = 'SALES'.

wa_frgt-netwr = 0.

if wa_frgt-netwr = 0.

Select single * from ZFRGT into it_zfrgt2

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg

and kunnr = it_frgt-kunnr.

if sy-subrc <> 0.

clear it_zfrgt2.

Select single * from ZFRGT into it_zfrgt2

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

if sy-subrc <> 0.

select single * from t001w

where werks = it_frgt-dwerks.

if sy-subrc = 0.

wa_frgt-plant = t001w-name1.

select single * from t001l

where werks = it_frgt-Dwerks and

lgort = it_frgt-lgort.

if sy-subrc = 0.

wa_frgt-lgobe = t001l-lgobe.

endif.

it_zfrgt2-lgobe = wa_frgt-lgobe.

it_zfrgt2-plant = wa_frgt-plant.

endif.

Endif.

Select single * from kna1 where kunnr = it_frgt-kunnr.

wa_frgt-cityc = kna1-cityc.

wa_frgt-regio = kna1-regio.

wa_frgt-bran1 = kna1-bran1.

select single vtext from tbrct into tbrct where braco = it_frgt-bran1.

wa_frgt-vtext = tbrct-vtext.

  • endselect.

select single bezei from t005u into t005u where bland = wa_frgt-regio

and land1 = 'IN'.

wa_frgt-region = t005u-bezei.

it_zfrgt2-cityc = wa_frgt-cityc.

it_zfrgt2-regio = wa_frgt-regio.

it_zfrgt2-region = wa_frgt-region.

it_zfrgt2-vtext = wa_frgt-vtext.

it_zfrgt2-bran1 = wa_frgt-bran1.

endif.

endif.

endif.

wa_frgt-regio = it_zfrgt2-regio.

wa_frgt-region = it_zfrgt2-region.

wa_frgt-plant = it_zfrgt2-plant.

wa_frgt-lgobe = it_zfrgt2-lgobe.

wa_frgt-cityc = it_zfrgt2-cityc.

wa_frgt-vtext = it_zfrgt2-vtext.

wa_frgt-bran1 = it_zfrgt2-bran1.

select single * from tvkbt into tvkbt where vkbur = wa_frgt-vkbur.

if sy-subrc = 0.

wa_frgt-soffice = tvkbt-bezei.

endif.

select single * from tvgrt where vkgrp = wa_frgt-vkgrp.

if sy-subrc = 0.

wa_frgt-district = tvgrt-bezei.

endif.

  • endif.

select single * from zdest into zdest where

vkorg = wa_frgt-vkorg and

regio = wa_frgt-regio and

cityc = wa_frgt-cityc and

actvt = 'A'.

if sy-subrc = 0.

wa_frgt-vtext = zdest-vtext1.

wa_frgt-bran1 = zdest-ibraco.

wa_frgt-vkgrp = zdest-ivkgrp.

select single * from tvgrt into tvgrt where vkgrp = wa_frgt-vkgrp.

if sy-subrc = 0.

wa_frgt-district = tvgrt-bezei.

endif.

else.

wa_frgt-vtext = ' '.

wa_frgt-bran1 = ' '.

wa_frgt-district = ' '.

endif.

  • endselect.

*endselect.

*IF kna1-regio IS NOT INITIAL.

  • Read table it_regio with key BLAND = wa_FRGT-REGIO.

  • IF SY-SUBRC <> 0.

  • DELETE IT_FRGT.

  • clear it_frgt.

  • CONTINUE.

  • ENDIF.

  • ENDIF.

if wa_frgt-lfart eq 'ZGDR'.

wa_frgt-NQGEW = wa_frgt-NTGEW.

wa_frgt-NQGEW = wa_frgt-NQGEW * 1.

else.

wa_frgt-NQGEW = wa_frgt-NTGEW.

wa_frgt-NQGEW = wa_frgt-NQGEW * 1.

endif.

if wa_frgt-vsbed <> '04'.

Wa_frgt-t_mode = 'Road'.

else.

Wa_frgt-t_mode = 'Rail'.

endif.

it_cond = 0.

if wa_frgt-netwr eq 0.

if wa_frgt-vsbed <> '04'.

select * from a531 into a531

where werks eq wa_frgt-dwerks and

zzlgort eq wa_frgt-lgort and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a531-datbi >= sy-datum and

a531-datab <= sy-datum ).

wa_frgt-knumh = a531-knumh.

exit.

endif.

endif.

endselect.

if it_cond = 0.

select * from a524 into a524

where werks eq wa_frgt-dwerks and

ZZTRANSP eq wa_frgt-lifnr and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a524-datbi >= sy-datum and

a524-datab <= sy-datum ).

. wa_frgt-knumh = a524-knumh.

exit.

endif.

endif.

endselect.

endif.

if it_cond = 0.

select * from a530 into a530

where werks eq wa_frgt-dwerks and

ZZLGORT eq wa_frgt-lgort and

inco1 eq wa_frgt-inco1 and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a530-datbi >= sy-datum and

a530-datab <= sy-datum ).

wa_frgt-knumh = a530-knumh.

exit.

endif.

endif.

endselect.

endif.

if it_cond = 0.

select * from a527 into a527

where werks eq wa_frgt-dwerks and

ZZLGORT eq wa_frgt-lgort and

ZZTRANSP eq wa_frgt-lifnr and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a527-datbi >= sy-datum and

a527-datab <= sy-datum ).

wa_frgt-knumh = a527-knumh.

exit.

endif.

endif.

endselect.

endif.

  • endif.

else.

select * from a519 into a519

where vsbed eq wa_frgt-vsbed and

rke_route eq wa_frgt-route

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a519-datbi >= sy-datum and

a519-datab <= sy-datum ).

wa_frgt-knumh = a519-knumh.

exit.

endif.

endif.

endselect.

endif.

if wa_frgt-knumh is not initial.

select single * from konp into konp

where knumh = wa_frgt-knumh.

move konp-kbetr to wa_frgt-netwr.

if konp-KMEIN = 'BAG'.

wa_frgt-NQTWR = wa_frgt-NETWR *

( wa_frgt-ntgew * ( 20 / konp-kpein ) ).

else.

wa_frgt-NQTWR = wa_frgt-NETWR * wa_frgt-ntgew.

endif.

else.

delete it_frgt.

clear wa_frgt.

continue.

endif.

else.

wa_frgt-NQTWR = wa_frgt-NETWR.

endif.

CLEAR ZFREIGHT.

if wa_frgt-vsbed = '04'.

select single distn frgt from Zfreight into Zfreight

Where Werks eq wa_FRGT-DWERKS

  • AND LGORT eq wa_FRGT-LGORT

AND route eq wa_FRGT-route.

else.

if ( it_frgt-lfart = 'ZGNL' ) OR ( it_frgt-lfart = 'ZGLF' ).

Select single * from Zfreight into Zfreight

Where Werks eq wa_FRGT-DWERKS

AND cityc eq wa_FRGT-cityc

AND route eq wa_FRGT-route.

else.

Select single * from Zfreight into Zfreight

Where Werks eq wa_FRGT-DWERKS

AND LGORT eq wa_FRGT-LGORT

AND cityc eq wa_FRGT-cityc

AND route eq wa_FRGT-route.

endif.

endif.

if sy-subrc = 0.

wa_FRGT-RRKM = ZFREIGHT-DISTN.

if wa_frgt-rrkm > 0.

wa_frgt-NKTWR = wa_frgt-rrkm * wa_frgt-ntgew.

endif.

IF ZFREIGHT-FRGT = 'P'.

wa_frgt-BEZEI = 'Primary Freight'.

Endif.

IF ZFREIGHT-FRGT = 'S'.

wa_frgt-BEZEI = 'Secondary Freight'.

Endif.

endif.

modify it_frgt from wa_frgt index loop_index .

Loop_index = loop_index + 1.

endloop.

endif.

Sort it_frgt by Regio dwerks lgort Vkbur district bran1 mvgr1 t_mode.

*

Clear:WA_frgt.

Loop at it_frgt.

If wa_frgt is initial.

move-corresponding it_frgt to wa_frgt.

wa_frgt-NQGEW = 0.

wa_frgt-NQTWR = 0.

wa_frgt-NKTWR = 0.

endif.

if it_frgt-lfart eq 'ZGDR' .

it_frgt-NQGEW = it_frgt-NQGEW * -1.

it_frgt-NQTWR = it_frgt-NQTWR * -1.

it_frgt-NKTWR = it_frgt-NKTWR * -1.

endif.

if it_frgt-regio = wa_frgt-regio and

it_frgt-dwerks = wa_frgt-dwerks and

it_frgt-lgort = wa_frgt-lgort and

it_frgt-vkbur = wa_frgt-vkbur and

it_frgt-district = wa_frgt-district and

it_frgt-bran1 = wa_frgt-bran1 and

it_frgt-t_mode = wa_frgt-t_mode.

wa_frgt-NQGEW = wa_frgt-NQGEW + it_frgt-NQGEW.

wa_frgt-NQTWR = wa_frgt-NQTWR + it_frgt-NQTWR.

wa_frgt-NKTWR = wa_frgt-NKTWR + it_frgt-NKTWR.

else.

Append wa_frgt to it_sfrgt.

Clear wa_frgt.

move-corresponding it_frgt to wa_frgt.

wa_frgt-NQGEW = 0.

wa_frgt-NQTWR = 0.

wa_frgt-NKTWR = 0.

wa_frgt-NQGEW = WA_frgt-NQGEW + it_frgt-NQGEW.

wa_frgt-NQTWR = wa_frgt-NQTWR + it_frgt-NQTWR.

wa_frgt-NKTWR = wa_frgt-NKTWR + it_frgt-NKTWR.

endif.

AT LAST .

Append wa_frgt to it_sfrgt.

Clear wa_frgt.

ENDAT.

endloop.

sort it_sfrgt by regio dwerks lgort Vkbur district bran1 t_mode rrkm nqgew nqtwr nktwr avg_frt.

Loop At IT_SFRGT.

IT_SFRGT-RRKM = 0 .

IF IT_SFRGT-NQGEW > 0 AND IT_SFRGT-NQTWR > 0.

IT_SFRGT-AVG_FRT = IT_SFRGT-NQTWR / IT_SFRGT-NQGEW.

ENDIF.

IF IT_SFRGT-NQGEW > 0 AND IT_SFRGT-NKTWR > 0.

IT_SFRGT-RRKM = IT_SFRGT-NKTWR / IT_SFRGT-NQGEW.

ENDIF.

IF IT_SFRGT-RRKM > 0 AND IT_SFRGT-AVG_FRT > 0.

IT_SFRGT-FRT_RT = IT_SFRGT-AVG_FRT / IT_SFRGT-RRKM.

ENDIF.

MODIFY IT_SFRGT .

Endloop.

Sort it_sfrgt by REGION vkorg dwerks lgort t_mode rwerks mvgr1.

loop at it_sfrgt.

move-corresponding it_sfrgt to itab1.

append itab1.

endloop.

loop at itab1.

move-corresponding itab1 to IT_FINAL.

append it_final.

endloop.

ENDFUNCTION.

In this function module only i am collecting the data and put into IT_FINAL INTERNAL TABLE.

Now i want to call this function module in another function module.

how can i call this and what are the parameters i have to use in calling function module

could any body please tell me its urgent

regards,

Chaitanya

I created below function module, which is having below import parameters and tables:

FUNCTION ztest_func.

*"----


""Local interface:

*" IMPORTING

*" VALUE(S_LFDAT1) LIKE LIKP-LFDAT

*" VALUE(S_LFDAT2) LIKE LIKP-LFDAT OPTIONAL

*" VALUE(RAIL_ROAD) TYPE CHECKBOX

*" TABLES

*" IT_FINAL STRUCTURE ZTLC_SAL

*"----


data: it_cond type n,

loop_index like sy-tabix .

select zdelv~vkorg

zdelv~vbeln

zdelv~lfart

zdelv~lfdat

zdelv~wadat

zdelv~vtweg

zdelv~spart

zdelv~vkbur

zdelv~vkgrp

zdelv~kunnr

zdelv~vsbed

zdelv~ntgew

zdelv~route

zdelv~lgort

zdelv~inco1

zdelv~matnr

zdelv~mvgr1

zdelv~vsart

zdelv~rwerks

zdelv~dwerks

into corresponding fields of table IT_FRGT

From zdelv WHERE zdelv~wadat = s_lfdat1 " and s_lfdat2

AND zdelv~lfart IN ('ZGDP','ZGRR','ZRLF','ZGLF').

if Sy-subrc = 0.

Sort it_frgt

by vbeln dwerks lgort route kunnr regio vkbur vkgrp bran1 cityc.

Delete adjacent duplicates from it_frgt

Comparing vbeln dwerks lgort route kunnr

regio vkbur vkgrp bran1 Cityc.

Loop_index = 1.

Loop at it_frgt." to wa_frgt.

*select kunnr regio from kna1 into kna1 where kunnr = it_frgt-kunnr.

*select bland from t005u into corresponding fields of table it_regio where Bland = kna1-regio.

*endselect.

IF RAIL_ROAD = 'I'.

IF IT_FRGT-VSBED <> '04'.

DELETE IT_FRGT.

clear it_frgt.

CONTINUE.

ENDIF.

ENDIF.

IF RAIL_ROAD = 'R'.

IF IT_FRGT-VSBED = '04'.

DELETE IT_FRGT.

clear it_frgt.

CONTINUE.

endif.

endif.

clear wa_frgt.

select single lifnr from vbpa into vbpa

where vbeln eq it_frgt-vbeln and

parvw eq 'ZD'.

move-corresponding it_frgt to wa_frgt.

move vbpa-lifnr to wa_frgt-lifnr.

If wa_frgt-lfart eq 'ZGND' OR

wa_frgt-lfart eq 'ZGNL' OR

wa_frgt-lfart eq 'ZGNS'.

wa_frgt-LVTEXT = 'STA'.

if wa_frgt-lfart eq 'ZGNS'.

delete it_frgt.

continue.

endif.

select mseg~werks

mseg~lgort

into (wa_frgt-rwerks,wa_frgt-rlgort)

from vbfa join mseg

on mseg~mblnr = vbfa~vbeln

where vbfa~vbelv eq wa_frgt-vbeln and

vbfa~vbtyp_n = 'i'.

Endselect.

wa_frgt-netwr = 0.

if wa_frgt-netwr = 0.

select single regio region plant lgobe cityc from zsta

into corresponding fields of it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg

and kunnr = it_frgt-kunnr.

if sy-subrc <> 0.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

select single cityc from kna1 into wa_frgt-cityc

where kunnr = wa_frgt-kunnr.

it_zfrgt-cityc = wa_frgt-cityc.

endif.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt1

where werks = it_frgt-rwerks

and lgort = it_frgt-rlgort

and vkorg = it_frgt-vkorg

and kunnr = it_frgt-kunnr.

if sy-subrc <> 0.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt1

where werks = it_frgt-rwerks

  • and lgort = it_frgt-rlgort

and vkorg = it_frgt-vkorg.

endif.

else.

select single regio region plant lgobe cityc from zsta into corresponding fields of it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

endif.

else.

select single * from zsta into it_zfrgt

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

endif.

wa_frgt-regio = it_zfrgt-regio.

wa_frgt-region = it_zfrgt-region.

wa_frgt-plant = it_zfrgt-plant.

wa_frgt-lgobe = it_zfrgt-lgobe.

wa_frgt-cityc = it_zfrgt-cityc.

wa_frgt-soffice = it_zfrgt1-Plant.

  • STA *

  • endif.

if wa_frgt-lfart eq 'ZGDP' OR

wa_frgt-lfart eq 'ZGDR' OR

wa_frgt-lfart eq 'ZGRR' OR

wa_frgt-lfart eq 'ZRLF' OR

wa_frgt-lfart eq 'ZGLF' OR

wa_frgt-lfart eq 'ZGLR' .

if wa_frgt-lfart eq 'ZGLR'.

delete it_frgt.

continue.

endif.

if wa_frgt-lfart eq 'ZGDR'.

delete it_frgt.

continue.

endif.

select single WBSTK from LIKPUK into Likpuk-wbstk

where vbeln = wa_frgt-vbeln.

if sy-subrc = 0.

if likpuk-wbstk <> 'C'.

delete it_frgt.

clear wa_frgt.

continue.

endif.

endif.

wa_frgt-LVTEXT = 'SALES'.

wa_frgt-netwr = 0.

if wa_frgt-netwr = 0.

Select single * from ZFRGT into it_zfrgt2

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg

and kunnr = it_frgt-kunnr.

if sy-subrc <> 0.

clear it_zfrgt2.

Select single * from ZFRGT into it_zfrgt2

where werks = it_frgt-dwerks

and lgort = it_frgt-lgort

and vkorg = it_frgt-vkorg.

if sy-subrc <> 0.

select single * from t001w

where werks = it_frgt-dwerks.

if sy-subrc = 0.

wa_frgt-plant = t001w-name1.

select single * from t001l

where werks = it_frgt-Dwerks and

lgort = it_frgt-lgort.

if sy-subrc = 0.

wa_frgt-lgobe = t001l-lgobe.

endif.

it_zfrgt2-lgobe = wa_frgt-lgobe.

it_zfrgt2-plant = wa_frgt-plant.

endif.

Endif.

Select single * from kna1 where kunnr = it_frgt-kunnr.

wa_frgt-cityc = kna1-cityc.

wa_frgt-regio = kna1-regio.

wa_frgt-bran1 = kna1-bran1.

select single vtext from tbrct into tbrct where braco = it_frgt-bran1.

wa_frgt-vtext = tbrct-vtext.

  • endselect.

select single bezei from t005u into t005u where bland = wa_frgt-regio

and land1 = 'IN'.

wa_frgt-region = t005u-bezei.

it_zfrgt2-cityc = wa_frgt-cityc.

it_zfrgt2-regio = wa_frgt-regio.

it_zfrgt2-region = wa_frgt-region.

it_zfrgt2-vtext = wa_frgt-vtext.

it_zfrgt2-bran1 = wa_frgt-bran1.

endif.

endif.

endif.

wa_frgt-regio = it_zfrgt2-regio.

wa_frgt-region = it_zfrgt2-region.

wa_frgt-plant = it_zfrgt2-plant.

wa_frgt-lgobe = it_zfrgt2-lgobe.

wa_frgt-cityc = it_zfrgt2-cityc.

wa_frgt-vtext = it_zfrgt2-vtext.

wa_frgt-bran1 = it_zfrgt2-bran1.

select single * from tvkbt into tvkbt where vkbur = wa_frgt-vkbur.

if sy-subrc = 0.

wa_frgt-soffice = tvkbt-bezei.

endif.

select single * from tvgrt where vkgrp = wa_frgt-vkgrp.

if sy-subrc = 0.

wa_frgt-district = tvgrt-bezei.

endif.

  • endif.

select single * from zdest into zdest where

vkorg = wa_frgt-vkorg and

regio = wa_frgt-regio and

cityc = wa_frgt-cityc and

actvt = 'A'.

if sy-subrc = 0.

wa_frgt-vtext = zdest-vtext1.

wa_frgt-bran1 = zdest-ibraco.

wa_frgt-vkgrp = zdest-ivkgrp.

select single * from tvgrt into tvgrt where vkgrp = wa_frgt-vkgrp.

if sy-subrc = 0.

wa_frgt-district = tvgrt-bezei.

endif.

else.

wa_frgt-vtext = ' '.

wa_frgt-bran1 = ' '.

wa_frgt-district = ' '.

endif.

  • endselect.

*endselect.

*IF kna1-regio IS NOT INITIAL.

  • Read table it_regio with key BLAND = wa_FRGT-REGIO.

  • IF SY-SUBRC <> 0.

  • DELETE IT_FRGT.

  • clear it_frgt.

  • CONTINUE.

  • ENDIF.

  • ENDIF.

if wa_frgt-lfart eq 'ZGDR'.

wa_frgt-NQGEW = wa_frgt-NTGEW.

wa_frgt-NQGEW = wa_frgt-NQGEW * 1.

else.

wa_frgt-NQGEW = wa_frgt-NTGEW.

wa_frgt-NQGEW = wa_frgt-NQGEW * 1.

endif.

if wa_frgt-vsbed <> '04'.

Wa_frgt-t_mode = 'Road'.

else.

Wa_frgt-t_mode = 'Rail'.

endif.

it_cond = 0.

if wa_frgt-netwr eq 0.

if wa_frgt-vsbed <> '04'.

select * from a531 into a531

where werks eq wa_frgt-dwerks and

zzlgort eq wa_frgt-lgort and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a531-datbi >= sy-datum and

a531-datab <= sy-datum ).

wa_frgt-knumh = a531-knumh.

exit.

endif.

endif.

endselect.

if it_cond = 0.

select * from a524 into a524

where werks eq wa_frgt-dwerks and

ZZTRANSP eq wa_frgt-lifnr and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a524-datbi >= sy-datum and

a524-datab <= sy-datum ).

. wa_frgt-knumh = a524-knumh.

exit.

endif.

endif.

endselect.

endif.

if it_cond = 0.

select * from a530 into a530

where werks eq wa_frgt-dwerks and

ZZLGORT eq wa_frgt-lgort and

inco1 eq wa_frgt-inco1 and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a530-datbi >= sy-datum and

a530-datab <= sy-datum ).

wa_frgt-knumh = a530-knumh.

exit.

endif.

endif.

endselect.

endif.

if it_cond = 0.

select * from a527 into a527

where werks eq wa_frgt-dwerks and

ZZLGORT eq wa_frgt-lgort and

ZZTRANSP eq wa_frgt-lifnr and

cityc eq wa_frgt-cityc

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a527-datbi >= sy-datum and

a527-datab <= sy-datum ).

wa_frgt-knumh = a527-knumh.

exit.

endif.

endif.

endselect.

endif.

  • endif.

else.

select * from a519 into a519

where vsbed eq wa_frgt-vsbed and

rke_route eq wa_frgt-route

order by datbi DESCENDING.

if sy-subrc = 0.

it_cond = 1.

if ( a519-datbi >= sy-datum and

a519-datab <= sy-datum ).

wa_frgt-knumh = a519-knumh.

exit.

endif.

endif.

endselect.

endif.

if wa_frgt-knumh is not initial.

select single * from konp into konp

where knumh = wa_frgt-knumh.

move konp-kbetr to wa_frgt-netwr.

if konp-KMEIN = 'BAG'.

wa_frgt-NQTWR = wa_frgt-NETWR *

( wa_frgt-ntgew * ( 20 / konp-kpein ) ).

else.

wa_frgt-NQTWR = wa_frgt-NETWR * wa_frgt-ntgew.

endif.

else.

delete it_frgt.

clear wa_frgt.

continue.

endif.

else.

wa_frgt-NQTWR = wa_frgt-NETWR.

endif.

CLEAR ZFREIGHT.

if wa_frgt-vsbed = '04'.

select single distn frgt from Zfreight into Zfreight

Where Werks eq wa_FRGT-DWERKS

  • AND LGORT eq wa_FRGT-LGORT

AND route eq wa_FRGT-route.

else.

if ( it_frgt-lfart = 'ZGNL' ) OR ( it_frgt-lfart = 'ZGLF' ).

Select single * from Zfreight into Zfreight

Where Werks eq wa_FRGT-DWERKS

AND cityc eq wa_FRGT-cityc

AND route eq wa_FRGT-route.

else.

Select single * from Zfreight into Zfreight

Where Werks eq wa_FRGT-DWERKS

AND LGORT eq wa_FRGT-LGORT

AND cityc eq wa_FRGT-cityc

AND route eq wa_FRGT-route.

endif.

endif.

if sy-subrc = 0.

wa_FRGT-RRKM = ZFREIGHT-DISTN.

if wa_frgt-rrkm > 0.

wa_frgt-NKTWR = wa_frgt-rrkm * wa_frgt-ntgew.

endif.

IF ZFREIGHT-FRGT = 'P'.

wa_frgt-BEZEI = 'Primary Freight'.

Endif.

IF ZFREIGHT-FRGT = 'S'.

wa_frgt-BEZEI = 'Secondary Freight'.

Endif.

endif.

modify it_frgt from wa_frgt index loop_index .

Loop_index = loop_index + 1.

endloop.

endif.

Sort it_frgt by Regio dwerks lgort Vkbur district bran1 mvgr1 t_mode.

*

Clear:WA_frgt.

Loop at it_frgt.

If wa_frgt is initial.

move-corresponding it_frgt to wa_frgt.

wa_frgt-NQGEW = 0.

wa_frgt-NQTWR = 0.

wa_frgt-NKTWR = 0.

endif.

if it_frgt-lfart eq 'ZGDR' .

it_frgt-NQGEW = it_frgt-NQGEW * -1.

it_frgt-NQTWR = it_frgt-NQTWR * -1.

it_frgt-NKTWR = it_frgt-NKTWR * -1.

endif.

if it_frgt-regio = wa_frgt-regio and

it_frgt-dwerks = wa_frgt-dwerks and

it_frgt-lgort = wa_frgt-lgort and

it_frgt-vkbur = wa_frgt-vkbur and

it_frgt-district = wa_frgt-district and

it_frgt-bran1 = wa_frgt-bran1 and

it_frgt-t_mode = wa_frgt-t_mode.

wa_frgt-NQGEW = wa_frgt-NQGEW + it_frgt-NQGEW.

wa_frgt-NQTWR = wa_frgt-NQTWR + it_frgt-NQTWR.

wa_frgt-NKTWR = wa_frgt-NKTWR + it_frgt-NKTWR.

else.

Append wa_frgt to it_sfrgt.

Clear wa_frgt.

move-corresponding it_frgt to wa_frgt.

wa_frgt-NQGEW = 0.

wa_frgt-NQTWR = 0.

wa_frgt-NKTWR = 0.

wa_frgt-NQGEW = WA_frgt-NQGEW + it_frgt-NQGEW.

wa_frgt-NQTWR = wa_frgt-NQTWR + it_frgt-NQTWR.

wa_frgt-NKTWR = wa_frgt-NKTWR + it_frgt-NKTWR.

endif.

AT LAST .

Append wa_frgt to it_sfrgt.

Clear wa_frgt.

ENDAT.

endloop.

sort it_sfrgt by regio dwerks lgort Vkbur district bran1 t_mode rrkm nqgew nqtwr nktwr avg_frt.

Loop At IT_SFRGT.

IT_SFRGT-RRKM = 0 .

IF IT_SFRGT-NQGEW > 0 AND IT_SFRGT-NQTWR > 0.

IT_SFRGT-AVG_FRT = IT_SFRGT-NQTWR / IT_SFRGT-NQGEW.

ENDIF.

IF IT_SFRGT-NQGEW > 0 AND IT_SFRGT-NKTWR > 0.

IT_SFRGT-RRKM = IT_SFRGT-NKTWR / IT_SFRGT-NQGEW.

ENDIF.

IF IT_SFRGT-RRKM > 0 AND IT_SFRGT-AVG_FRT > 0.

IT_SFRGT-FRT_RT = IT_SFRGT-AVG_FRT / IT_SFRGT-RRKM.

ENDIF.

MODIFY IT_SFRGT .

Endloop.

Sort it_sfrgt by REGION vkorg dwerks lgort t_mode rwerks mvgr1.

loop at it_sfrgt.

move-corresponding it_sfrgt to itab1.

append itab1.

endloop.

loop at itab1.

move-corresponding itab1 to IT_FINAL.

append it_final.

endloop.

ENDFUNCTION.

In this function module only i am collecting the data and put into IT_FINAL INTERNAL TABLE.

Now i want to call this function module in another function module.

how can i call this and what are the parameters i have to use in calling function module

could any body please tell me its urgent

regards,

Chaitanya

2 REPLIES 2
Read only

Former Member
0 Likes
479

Hi,

Just go to another FM and click on the Pattern button, then there give the name of this FM..and you will get all the details about this FM.

Regards,

Atish

Read only

Former Member
0 Likes
479

Hi,

Goto the second Function module and press CNTL+F6 then a popup will come then give the first function module name and press enter

Regards

Sudheer