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

Code snippet in a ALV report

Former Member
0 Likes
2,045

hello experts

I would like to calclute the invoice value and display in the output (invoice value = VBEP-NETWR/VBEP-FKIMG) , where should i add the code? In the select stament? code help is higly appreciated.

Thanks

mohan

follows the program

  • Global structure of list

type-pools: slis.

tables: likp,

lips,

vbfa,

kssk,

klah,

ausp,

cabn,

vbak,

mara,

vbrk,

ser01,

vbpa,

nast,

zseri,

ltap,

pa0001,

kna1,

objk,

viqmel,

viqmma.

types: begin of i_delivery,

vbeln like likp-vbeln,

posnr like lips-posnr,

kunnr like likp-kunnr,

kunag like likp-kunag,

vkorg like vbak-vkorg,

matnr like lips-matnr,

lfart like likp-lfart,

arktx like vbap-arktx,

vgbel like lips-vgbel,

vgpos like lips-vgpos,

pstyv like lips-pstyv,

wadat type likp-wadat,

lfdat type likp-lfdat,

prodh type lips-prodh,

lfimg type lips-lfimg,

vkbur type lips-vkbur,

werks type lips-werks,

vkgrp type lips-vkgrp,

mvgr1 type lips-mvgr1,

sernr like equi-sernr,

sernp like equi-sernr,

equnr like equi-equnr,

kttxt like qpct-kurztext,

bstnk like vbak-bstnk,

vbelv like lips-vgbel,

posnv like lips-posnv,

uecha like lips-uecha,

ernam like vbak-ernam,

erdat like vbak-erdat,

serail like lips-serail,

anzsn like lips-anzsn,

auart like vbak-auart ,

netwr like vbap-netwr,

fstno like vbpa-pernr,

fstnm like pa0001-ename,

ename like pa0001-ename,

qname like ltap-qname,

name1 like kna1-name1,

name3 like kna1-name2,

pernr like vbpa-pernr,

aufnr like viqmel-aufnr,

qmnum like viqmel-qmnum,

mngrp like viqmma-mngrp,

qmcod like viqmel-qmcod,

qmcol like viqmma-mncod,

cotxt(20),

end of i_delivery.

  • Global structure of list

*/ Selection and Input Parameters

selection-screen begin of block block2 with frame title text-003.

select-options: s_vkorg for likp-vkorg no intervals.

select-options: s_vbeln for likp-vbeln,

s_lfart for likp-lfart,

s_kunnr for likp-kunnr,

s_erdat for likp-erdat,

s_wadat for likp-wadat,

s_werks for lips-werks,

s_matnr for lips-matnr,

s_prodh for lips-prodh,

s_qmnum for viqmel-qmnum.

selection-screen end of block block2.

selection-screen begin of block block4 with frame title text-002.

select-options: s_vbelv for vbak-vbeln,

s_auart for vbak-auart.

selection-screen end of block block4.

parameters: p_vari like disvariant-variant.

ranges: r_vbeln for likp-vbeln.

data: gt_fieldcat type slis_t_fieldcat_alv.

data: gt_outtab type i_delivery occurs 0 with header line,

rt_outtab1 type i_delivery occurs 0 with header line,

i_nast type nast occurs 0 with header line,

gt_list_top_of_page type slis_t_listheader,

gt_events type slis_t_event,

gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.

data: g_repid like sy-repid,

g_count like sy-tabix.

data: begin of i_serial occurs 0,

obknr type ser01-obknr,

lief_nr type ser01-lief_nr,

posnr type ser01-posnr,

anzsn type ser01-anzsn,

end of i_serial.

data: begin of i_object_numbers occurs 0,

obknr type objk-obknr,

obzae type objk-obzae,

sernr type objk-sernr,

equnr type objk-equnr,

matnr type objk-matnr,

taser type objk-taser,

end of i_object_numbers.

data: g_save(1) type c,

  • g_default(1) TYPE c,

g_exit(1) type c,

gx_variant like disvariant,

g_variant like disvariant.

data: g_mnkat like viqmma-mnkat,

g_mngrp like viqmma-mngrp,

g_atinn like ausp-atinn.

  • Initialization fieldcatalog

initialization.

g_repid = sy-repid.

perform fieldcat_init using gt_fieldcat[].

move: 'I' to s_vkorg-sign,

'EQ' to s_vkorg-option,

'5090' to s_vkorg-low.

append s_vkorg.

move: 'I' to s_lfart-sign,

'EQ' to s_lfart-option,

'LF' to s_lfart-low.

append s_lfart.

g_save = 'A'.

perform variant_init.

  • Get default variant

gx_variant = g_variant.

call function 'REUSE_ALV_VARIANT_DEFAULT_GET'

exporting

i_save = g_save

changing

cs_variant = gx_variant

exceptions

not_found = 2.

if sy-subrc = 0.

p_vari = gx_variant-variant.

endif.

at selection-screen on value-request for p_vari.

perform f4_for_variant.

at selection-screen.

perform pai_of_selection_screen.

  • Start of Selection

start-of-selection.

perform e03_eventtab_build using gt_events[].

perform select_data tables gt_outtab.

  • Display list

end-of-selection.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_background_id = 'ALV_BACKGROUND'

i_callback_user_command = 'USER_COMMAND'

is_variant = g_variant

i_save = g_save

i_callback_program = g_repid

it_fieldcat = gt_fieldcat[]

tables

t_outtab = gt_outtab.

*----


  • Forms

*----


  • Initialization fieldcatalog

form fieldcat_init

using rt_fieldcat type slis_t_fieldcat_alv.

data: ls_fieldcat type slis_fieldcat_alv.

data: pos type i value 1.

clear ls_fieldcat.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELN'.

ls_fieldcat-seltext_s = 'Delivery'.

ls_fieldcat-seltext_m = 'Delivery'.

ls_fieldcat-key = 'X'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'POSNR'.

ls_fieldcat-key = 'X'.

ls_fieldcat-seltext_s = 'Item'.

ls_fieldcat-seltext_m = 'Item'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LFART'.

ls_fieldcat-seltext_s = 'Del Type'.

ls_fieldcat-seltext_m = 'Delivery Type'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VGBEL'.

ls_fieldcat-seltext_s = 'Source Doc'.

ls_fieldcat-seltext_m = 'Source Doc'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'AUART'.

ls_fieldcat-seltext_s = 'Type'.

ls_fieldcat-seltext_m = 'Type'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KUNNR'.

ls_fieldcat-seltext_s = 'Customer'.

ls_fieldcat-seltext_m = 'Customer'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'NAME1'.

ls_fieldcat-seltext_s = 'Name'.

ls_fieldcat-seltext_m = 'Name1'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-seltext_s = 'Plant'.

ls_fieldcat-seltext_m = 'Plant'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-seltext_s = 'Material'.

ls_fieldcat-seltext_m = 'Material'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MVGR1'.

ls_fieldcat-seltext_s = 'Speciality'.

ls_fieldcat-seltext_m = 'Speciality'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'PRODH'.

ls_fieldcat-seltext_s = 'Hierarchy'.

ls_fieldcat-seltext_m = 'Prod Hierarchy'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ARKTX'.

ls_fieldcat-seltext_s = 'Description'.

ls_fieldcat-seltext_m = 'Description'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERNAM'.

ls_fieldcat-seltext_s = 'Created By'.

ls_fieldcat-seltext_m = 'Created By'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERDAT'.

ls_fieldcat-seltext_s = 'Created On'.

ls_fieldcat-seltext_m = 'Created On'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WADAT'.

ls_fieldcat-seltext_s = 'GoodsMvt.Date'.

ls_fieldcat-seltext_m = 'Goods Mvt Date'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SERNR'.

ls_fieldcat-seltext_s = 'Serial Shipped'.

ls_fieldcat-seltext_m = 'Serial Shipped'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SERNP'.

ls_fieldcat-seltext_s = 'Old Serial'.

ls_fieldcat-seltext_m = 'Old Serial'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELV'.

ls_fieldcat-seltext_s = 'Invoice'.

ls_fieldcat-seltext_m = 'Invoice'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'NETWR'.

ls_fieldcat-seltext_s = 'Invoice Amt'.

ls_fieldcat-seltext_m = 'Invoice Value'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'QMNUM'.

ls_fieldcat-seltext_s = 'Notification'.

ls_fieldcat-seltext_m = 'Notification'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'QMCOD'.

ls_fieldcat-seltext_s = 'Rep LevKST'.

ls_fieldcat-seltext_m = 'Repair Level KST'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'COTXT'.

ls_fieldcat-seltext_s = 'CdTXT KST'.

ls_fieldcat-seltext_m = 'Repair Level Text KST'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'QMCOL'.

ls_fieldcat-seltext_s = 'Rep LevKSE'.

ls_fieldcat-seltext_m = 'Repair Level KSE'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KTTXT'.

ls_fieldcat-seltext_s = 'CdTXT KSE'.

ls_fieldcat-seltext_m = 'Repair Level Text KSE'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

endform. "fieldcat_init

  • Data selection

form select_data tables rt_outtab like gt_outtab[].

clear: r_vbeln[].

  • Read all Invoices for the Selection

select distinct h~vbeln h~kunnr h~kunag

d~posnr d~matnr d~anzsn

d~serail d~vgbel d~vgpos

d~posnv d~lfimg d~arktx

d~uecha h~lfart h~erdat

h~ernam h~lfdat d~prodh

h~vkorg d~vkbur d~vkgrp

d~mvgr1 h~wadat_ist d~pstyv

d~werks

into (rt_outtab-vbeln, rt_outtab-kunnr,

rt_outtab-kunag, rt_outtab-posnr,

rt_outtab-matnr, rt_outtab-anzsn,

rt_outtab-serail, rt_outtab-vgbel,

rt_outtab-vgpos, rt_outtab-posnv,

rt_outtab-lfimg, rt_outtab-arktx,

rt_outtab-uecha, rt_outtab-lfart,

rt_outtab-erdat, rt_outtab-ernam,

rt_outtab-lfdat, rt_outtab-prodh,

rt_outtab-vkorg, rt_outtab-vkbur,

rt_outtab-vkgrp, rt_outtab-mvgr1,

rt_outtab-wadat, rt_outtab-pstyv,

rt_outtab-werks)

from likp as h inner join lips as d

on h~vbeln = d~vbeln

where h~vbeln in s_vbeln

and h~vkorg in s_vkorg

and h~lfart in s_lfart

and h~kunnr in s_kunnr

and h~erdat in s_erdat

and d~matnr in s_matnr

and d~werks in s_werks

and d~prodh in s_prodh

and d~vgbel in s_vbelv

and d~matnr like 'S%'.

select single * from vbak where vbeln = rt_outtab-vgbel.

if: sy-subrc eq 0.

move vbak-vbeln to rt_outtab-vgbel.

move vbak-auart to rt_outtab-auart.

endif.

select single * from mara where matnr = rt_outtab-matnr

and mtart eq 'FERT'.

check sy-subrc eq 0.

if not rt_outtab-posnv is initial.

rt_outtab-vgpos = rt_outtab-posnv.

endif.

clear: vbfa.

select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)

from vbfa where vbelv eq rt_outtab-vbeln

and posnv eq rt_outtab-posnr

and vbtyp_n eq 'M'.

append rt_outtab.

if not r_vbeln-low is initial.

if r_vbeln-low gt rt_outtab-vbeln.

r_vbeln-low = rt_outtab-vbeln.

endif.

if r_vbeln-high lt rt_outtab-vbeln.

r_vbeln-high = rt_outtab-vbeln.

endif.

else.

r_vbeln-low = rt_outtab-vbeln.

r_vbeln-high = rt_outtab-vbeln.

endif.

clear: rt_outtab.

endselect.

if not r_vbeln is initial.

move: 'I' to r_vbeln-sign,

'BT' to r_vbeln-option.

append r_vbeln.

select * into corresponding fields of table i_serial

from ser01 where lief_nr in r_vbeln.

endif.

sort i_serial.

if not i_serial[] is initial.

select * into corresponding fields of table i_object_numbers

from objk

for all entries in i_serial

where obknr eq i_serial-obknr

and taser eq 'SER01'.

endif.

sort i_object_numbers by obknr obzae.

loop at rt_outtab.

  • Read the Sold To Name

select single name1 into rt_outtab-name1

from kna1 where kunnr eq rt_outtab-kunnr.

  • Read Ship-to Customer

clear: objk.

if not rt_outtab-serail is initial.

read table i_serial with key lief_nr = rt_outtab-vbeln

posnr = rt_outtab-posnr.

if sy-subrc eq 0.

do i_serial-anzsn times.

read table i_object_numbers with key obknr = i_serial-obknr

matnr = rt_outtab-matnr

binary search.

if sy-subrc eq 0.

rt_outtab-sernr = i_object_numbers-sernr.

delete i_object_numbers index sy-tabix.

move '1' to rt_outtab-lfimg.

clear: rt_outtab-aufnr, rt_outtab-qmnum,

rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.

select single aufnr qmnum equnr qmcod qmgrp qmkat

into (rt_outtab-aufnr, rt_outtab-qmnum,

rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)

from viqmel where matnr = rt_outtab-matnr

and serialnr = rt_outtab-sernr

and qmart eq 'S4'

and qmnum in s_qmnum.

clear: rt_outtab-cotxt.

select single kurztext into rt_outtab-cotxt

from qpct where katalogart eq g_mnkat

and codegruppe eq g_mngrp

and code eq rt_outtab-qmcod

and sprache eq sy-langu.

  • Read Serial Number from Name Plate Data.

clear: klah, kssk, ausp, cabn, g_atinn.

select single atinn into (g_atinn) from cabn

where atnam = 'SBANK_SERIAL_NUMBER'.

select single atwrt

into (rt_outtab-sernp)

from ( klah as a inner join kssk as k

on aclint = kclint )

join ausp as p

on kobjek = pobjek

and p~atinn = g_atinn

and pklart = aklart

where a~klart = '002'

and a~class = 'KSE_SN_ENDOSCOPES'

and k~objek = rt_outtab-equnr.

*KSE Repair level (activity code text from KSE-SM07 code group)

clear: rt_outtab-qmcol, g_mngrp, g_mnkat.

clear: rt_outtab-qmcol.

clear: g_mnkat, g_mngrp.

select single mnkat mngrp mncod into

(g_mnkat, g_mngrp, rt_outtab-qmcol)

from viqmma where qmnum = rt_outtab-qmnum

and mngrp eq 'KSE-SM07'

and kzloesch eq space.

clear: rt_outtab-kttxt.

select single kurztext into rt_outtab-kttxt

from qpct where katalogart eq g_mnkat

and codegruppe eq g_mngrp

and code eq rt_outtab-qmcol

and sprache eq sy-langu.

rt_outtab1 = rt_outtab.

append rt_outtab1.

endif.

enddo.

endif.

endif.

endloop.

clear: rt_outtab[].

rt_outtab[] = rt_outtab1[].

sort rt_outtab by vbeln posnr.

endform.

----


  • FORM get_repname *

----


  • ........ *

----


  • --> P_VBELN *

  • --> P_POSNR *

  • --> P_PERNR *

  • --> P_ENAME *

----


form get_repname using p_vbeln

p_posnr

changing p_pernr

p_ename. "

data: i_vbpa like vbpa occurs 0 with header line.

clear: i_vbpa[].

call function 'Z_DETERMINE_ACTIVE_SALES_REP'

exporting

g_salesdocument = p_vbeln

g_sales_item = p_posnr

tables

st_vbpa = i_vbpa.

read table i_vbpa index 1.

if sy-subrc = 0.

p_pernr = i_vbpa-pernr.

select single ename into p_ename

from pa0001

where pernr = i_vbpa-pernr.

endif.

endform. " get_repname

----


  • FORM E03_EVENTTAB_BUILD *

----


  • ........ *

----


  • --> E03_LT_EVENTS *

----


form e03_eventtab_build using e03_lt_events type slis_t_event.

data: ls_event type slis_alv_event.

*

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = e03_lt_events.

read table e03_lt_events with key name = slis_ev_top_of_page

into ls_event.

if sy-subrc = 0.

move gc_formname_top_of_page to ls_event-form.

append ls_event to e03_lt_events.

endif.

endform.

----


  • FORM TOP_OF_PAGE *

----


  • ........ *

----


form top_of_page.

*

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = gt_list_top_of_page.

endform.

*&----


*& Form USER_COMMAND

*&----


form user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case r_ucomm.

when '&IC1'.

perform display_delivery using r_ucomm

rs_selfield.

endcase.

endform.

&----


*& Form display_delivery

&----


form display_delivery

using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case rs_selfield-sel_tab_field.

when '1-VBELN'.

set parameter id 'VL' field rs_selfield-value.

call transaction 'VL03N' and skip first screen.

when '1-VBELV'.

set parameter id 'VF' field rs_selfield-value.

call transaction 'VF03N' and skip first screen.

endcase.

endform.

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form variant_init.

*

clear g_variant.

g_variant-report = g_repid.

endform. " VARIANT_INIT

&----


*& Form F4_FOR_VARIANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form f4_for_variant.

*

call function 'REUSE_ALV_VARIANT_F4'

exporting

is_variant = g_variant

i_save = g_save

  • it_default_fieldcat =

importing

e_exit = g_exit

es_variant = gx_variant

exceptions

not_found = 2.

if sy-subrc = 2.

message id sy-msgid type 'S' number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

else.

if g_exit = space.

p_vari = gx_variant-variant.

endif.

endif.

endform.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


form pai_of_selection_screen.

*

if not p_vari is initial.

move g_variant to gx_variant.

move p_vari to gx_variant-variant.

call function 'REUSE_ALV_VARIANT_EXISTENCE'

exporting

i_save = g_save

changing

cs_variant = gx_variant.

g_variant = gx_variant.

else.

perform variant_init.

endif.

endform.

1 ACCEPTED SOLUTION
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
1,955

First NETWR and FKIMG are not in VBEP. Where do you want to get these values? NETWR can come from LIPS.

Regards,

Rich Heilman

hello experts

I would like to calclute the invoice value and display in the output (invoice value = VBEP-NETWR/VBEP-FKIMG) , where should i add the code? In the select stament? code help is higly appreciated.

Thanks

mohan

follows the program

  • Global structure of list

type-pools: slis.

tables: likp,

lips,

vbfa,

kssk,

klah,

ausp,

cabn,

vbak,

mara,

vbrk,

ser01,

vbpa,

nast,

zseri,

ltap,

pa0001,

kna1,

objk,

viqmel,

viqmma.

types: begin of i_delivery,

vbeln like likp-vbeln,

posnr like lips-posnr,

kunnr like likp-kunnr,

kunag like likp-kunag,

vkorg like vbak-vkorg,

matnr like lips-matnr,

lfart like likp-lfart,

arktx like vbap-arktx,

vgbel like lips-vgbel,

vgpos like lips-vgpos,

pstyv like lips-pstyv,

wadat type likp-wadat,

lfdat type likp-lfdat,

prodh type lips-prodh,

lfimg type lips-lfimg,

vkbur type lips-vkbur,

werks type lips-werks,

vkgrp type lips-vkgrp,

mvgr1 type lips-mvgr1,

sernr like equi-sernr,

sernp like equi-sernr,

equnr like equi-equnr,

kttxt like qpct-kurztext,

bstnk like vbak-bstnk,

vbelv like lips-vgbel,

posnv like lips-posnv,

uecha like lips-uecha,

ernam like vbak-ernam,

erdat like vbak-erdat,

serail like lips-serail,

anzsn like lips-anzsn,

auart like vbak-auart ,

netwr like vbap-netwr,

fstno like vbpa-pernr,

fstnm like pa0001-ename,

ename like pa0001-ename,

qname like ltap-qname,

name1 like kna1-name1,

name3 like kna1-name2,

pernr like vbpa-pernr,

aufnr like viqmel-aufnr,

qmnum like viqmel-qmnum,

mngrp like viqmma-mngrp,

qmcod like viqmel-qmcod,

qmcol like viqmma-mncod,

cotxt(20),

end of i_delivery.

  • Global structure of list

*/ Selection and Input Parameters

selection-screen begin of block block2 with frame title text-003.

select-options: s_vkorg for likp-vkorg no intervals.

select-options: s_vbeln for likp-vbeln,

s_lfart for likp-lfart,

s_kunnr for likp-kunnr,

s_erdat for likp-erdat,

s_wadat for likp-wadat,

s_werks for lips-werks,

s_matnr for lips-matnr,

s_prodh for lips-prodh,

s_qmnum for viqmel-qmnum.

selection-screen end of block block2.

selection-screen begin of block block4 with frame title text-002.

select-options: s_vbelv for vbak-vbeln,

s_auart for vbak-auart.

selection-screen end of block block4.

parameters: p_vari like disvariant-variant.

ranges: r_vbeln for likp-vbeln.

data: gt_fieldcat type slis_t_fieldcat_alv.

data: gt_outtab type i_delivery occurs 0 with header line,

rt_outtab1 type i_delivery occurs 0 with header line,

i_nast type nast occurs 0 with header line,

gt_list_top_of_page type slis_t_listheader,

gt_events type slis_t_event,

gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.

data: g_repid like sy-repid,

g_count like sy-tabix.

data: begin of i_serial occurs 0,

obknr type ser01-obknr,

lief_nr type ser01-lief_nr,

posnr type ser01-posnr,

anzsn type ser01-anzsn,

end of i_serial.

data: begin of i_object_numbers occurs 0,

obknr type objk-obknr,

obzae type objk-obzae,

sernr type objk-sernr,

equnr type objk-equnr,

matnr type objk-matnr,

taser type objk-taser,

end of i_object_numbers.

data: g_save(1) type c,

  • g_default(1) TYPE c,

g_exit(1) type c,

gx_variant like disvariant,

g_variant like disvariant.

data: g_mnkat like viqmma-mnkat,

g_mngrp like viqmma-mngrp,

g_atinn like ausp-atinn.

  • Initialization fieldcatalog

initialization.

g_repid = sy-repid.

perform fieldcat_init using gt_fieldcat[].

move: 'I' to s_vkorg-sign,

'EQ' to s_vkorg-option,

'5090' to s_vkorg-low.

append s_vkorg.

move: 'I' to s_lfart-sign,

'EQ' to s_lfart-option,

'LF' to s_lfart-low.

append s_lfart.

g_save = 'A'.

perform variant_init.

  • Get default variant

gx_variant = g_variant.

call function 'REUSE_ALV_VARIANT_DEFAULT_GET'

exporting

i_save = g_save

changing

cs_variant = gx_variant

exceptions

not_found = 2.

if sy-subrc = 0.

p_vari = gx_variant-variant.

endif.

at selection-screen on value-request for p_vari.

perform f4_for_variant.

at selection-screen.

perform pai_of_selection_screen.

  • Start of Selection

start-of-selection.

perform e03_eventtab_build using gt_events[].

perform select_data tables gt_outtab.

  • Display list

end-of-selection.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_background_id = 'ALV_BACKGROUND'

i_callback_user_command = 'USER_COMMAND'

is_variant = g_variant

i_save = g_save

i_callback_program = g_repid

it_fieldcat = gt_fieldcat[]

tables

t_outtab = gt_outtab.

*----


  • Forms

*----


  • Initialization fieldcatalog

form fieldcat_init

using rt_fieldcat type slis_t_fieldcat_alv.

data: ls_fieldcat type slis_fieldcat_alv.

data: pos type i value 1.

clear ls_fieldcat.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELN'.

ls_fieldcat-seltext_s = 'Delivery'.

ls_fieldcat-seltext_m = 'Delivery'.

ls_fieldcat-key = 'X'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'POSNR'.

ls_fieldcat-key = 'X'.

ls_fieldcat-seltext_s = 'Item'.

ls_fieldcat-seltext_m = 'Item'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'LFART'.

ls_fieldcat-seltext_s = 'Del Type'.

ls_fieldcat-seltext_m = 'Delivery Type'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VGBEL'.

ls_fieldcat-seltext_s = 'Source Doc'.

ls_fieldcat-seltext_m = 'Source Doc'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'AUART'.

ls_fieldcat-seltext_s = 'Type'.

ls_fieldcat-seltext_m = 'Type'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KUNNR'.

ls_fieldcat-seltext_s = 'Customer'.

ls_fieldcat-seltext_m = 'Customer'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'NAME1'.

ls_fieldcat-seltext_s = 'Name'.

ls_fieldcat-seltext_m = 'Name1'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-seltext_s = 'Plant'.

ls_fieldcat-seltext_m = 'Plant'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-seltext_s = 'Material'.

ls_fieldcat-seltext_m = 'Material'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'MVGR1'.

ls_fieldcat-seltext_s = 'Speciality'.

ls_fieldcat-seltext_m = 'Speciality'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'PRODH'.

ls_fieldcat-seltext_s = 'Hierarchy'.

ls_fieldcat-seltext_m = 'Prod Hierarchy'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ARKTX'.

ls_fieldcat-seltext_s = 'Description'.

ls_fieldcat-seltext_m = 'Description'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERNAM'.

ls_fieldcat-seltext_s = 'Created By'.

ls_fieldcat-seltext_m = 'Created By'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'ERDAT'.

ls_fieldcat-seltext_s = 'Created On'.

ls_fieldcat-seltext_m = 'Created On'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'WADAT'.

ls_fieldcat-seltext_s = 'GoodsMvt.Date'.

ls_fieldcat-seltext_m = 'Goods Mvt Date'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SERNR'.

ls_fieldcat-seltext_s = 'Serial Shipped'.

ls_fieldcat-seltext_m = 'Serial Shipped'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'SERNP'.

ls_fieldcat-seltext_s = 'Old Serial'.

ls_fieldcat-seltext_m = 'Old Serial'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'VBELV'.

ls_fieldcat-seltext_s = 'Invoice'.

ls_fieldcat-seltext_m = 'Invoice'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'NETWR'.

ls_fieldcat-seltext_s = 'Invoice Amt'.

ls_fieldcat-seltext_m = 'Invoice Value'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'QMNUM'.

ls_fieldcat-seltext_s = 'Notification'.

ls_fieldcat-seltext_m = 'Notification'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'QMCOD'.

ls_fieldcat-seltext_s = 'Rep LevKST'.

ls_fieldcat-seltext_m = 'Repair Level KST'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'COTXT'.

ls_fieldcat-seltext_s = 'CdTXT KST'.

ls_fieldcat-seltext_m = 'Repair Level Text KST'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'QMCOL'.

ls_fieldcat-seltext_s = 'Rep LevKSE'.

ls_fieldcat-seltext_m = 'Repair Level KSE'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'KTTXT'.

ls_fieldcat-seltext_s = 'CdTXT KSE'.

ls_fieldcat-seltext_m = 'Repair Level Text KSE'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

endform. "fieldcat_init

  • Data selection

form select_data tables rt_outtab like gt_outtab[].

clear: r_vbeln[].

  • Read all Invoices for the Selection

select distinct h~vbeln h~kunnr h~kunag

d~posnr d~matnr d~anzsn

d~serail d~vgbel d~vgpos

d~posnv d~lfimg d~arktx

d~uecha h~lfart h~erdat

h~ernam h~lfdat d~prodh

h~vkorg d~vkbur d~vkgrp

d~mvgr1 h~wadat_ist d~pstyv

d~werks

into (rt_outtab-vbeln, rt_outtab-kunnr,

rt_outtab-kunag, rt_outtab-posnr,

rt_outtab-matnr, rt_outtab-anzsn,

rt_outtab-serail, rt_outtab-vgbel,

rt_outtab-vgpos, rt_outtab-posnv,

rt_outtab-lfimg, rt_outtab-arktx,

rt_outtab-uecha, rt_outtab-lfart,

rt_outtab-erdat, rt_outtab-ernam,

rt_outtab-lfdat, rt_outtab-prodh,

rt_outtab-vkorg, rt_outtab-vkbur,

rt_outtab-vkgrp, rt_outtab-mvgr1,

rt_outtab-wadat, rt_outtab-pstyv,

rt_outtab-werks)

from likp as h inner join lips as d

on h~vbeln = d~vbeln

where h~vbeln in s_vbeln

and h~vkorg in s_vkorg

and h~lfart in s_lfart

and h~kunnr in s_kunnr

and h~erdat in s_erdat

and d~matnr in s_matnr

and d~werks in s_werks

and d~prodh in s_prodh

and d~vgbel in s_vbelv

and d~matnr like 'S%'.

select single * from vbak where vbeln = rt_outtab-vgbel.

if: sy-subrc eq 0.

move vbak-vbeln to rt_outtab-vgbel.

move vbak-auart to rt_outtab-auart.

endif.

select single * from mara where matnr = rt_outtab-matnr

and mtart eq 'FERT'.

check sy-subrc eq 0.

if not rt_outtab-posnv is initial.

rt_outtab-vgpos = rt_outtab-posnv.

endif.

clear: vbfa.

select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)

from vbfa where vbelv eq rt_outtab-vbeln

and posnv eq rt_outtab-posnr

and vbtyp_n eq 'M'.

append rt_outtab.

if not r_vbeln-low is initial.

if r_vbeln-low gt rt_outtab-vbeln.

r_vbeln-low = rt_outtab-vbeln.

endif.

if r_vbeln-high lt rt_outtab-vbeln.

r_vbeln-high = rt_outtab-vbeln.

endif.

else.

r_vbeln-low = rt_outtab-vbeln.

r_vbeln-high = rt_outtab-vbeln.

endif.

clear: rt_outtab.

endselect.

if not r_vbeln is initial.

move: 'I' to r_vbeln-sign,

'BT' to r_vbeln-option.

append r_vbeln.

select * into corresponding fields of table i_serial

from ser01 where lief_nr in r_vbeln.

endif.

sort i_serial.

if not i_serial[] is initial.

select * into corresponding fields of table i_object_numbers

from objk

for all entries in i_serial

where obknr eq i_serial-obknr

and taser eq 'SER01'.

endif.

sort i_object_numbers by obknr obzae.

loop at rt_outtab.

  • Read the Sold To Name

select single name1 into rt_outtab-name1

from kna1 where kunnr eq rt_outtab-kunnr.

  • Read Ship-to Customer

clear: objk.

if not rt_outtab-serail is initial.

read table i_serial with key lief_nr = rt_outtab-vbeln

posnr = rt_outtab-posnr.

if sy-subrc eq 0.

do i_serial-anzsn times.

read table i_object_numbers with key obknr = i_serial-obknr

matnr = rt_outtab-matnr

binary search.

if sy-subrc eq 0.

rt_outtab-sernr = i_object_numbers-sernr.

delete i_object_numbers index sy-tabix.

move '1' to rt_outtab-lfimg.

clear: rt_outtab-aufnr, rt_outtab-qmnum,

rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.

select single aufnr qmnum equnr qmcod qmgrp qmkat

into (rt_outtab-aufnr, rt_outtab-qmnum,

rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)

from viqmel where matnr = rt_outtab-matnr

and serialnr = rt_outtab-sernr

and qmart eq 'S4'

and qmnum in s_qmnum.

clear: rt_outtab-cotxt.

select single kurztext into rt_outtab-cotxt

from qpct where katalogart eq g_mnkat

and codegruppe eq g_mngrp

and code eq rt_outtab-qmcod

and sprache eq sy-langu.

  • Read Serial Number from Name Plate Data.

clear: klah, kssk, ausp, cabn, g_atinn.

select single atinn into (g_atinn) from cabn

where atnam = 'SBANK_SERIAL_NUMBER'.

select single atwrt

into (rt_outtab-sernp)

from ( klah as a inner join kssk as k

on aclint = kclint )

join ausp as p

on kobjek = pobjek

and p~atinn = g_atinn

and pklart = aklart

where a~klart = '002'

and a~class = 'KSE_SN_ENDOSCOPES'

and k~objek = rt_outtab-equnr.

*KSE Repair level (activity code text from KSE-SM07 code group)

clear: rt_outtab-qmcol, g_mngrp, g_mnkat.

clear: rt_outtab-qmcol.

clear: g_mnkat, g_mngrp.

select single mnkat mngrp mncod into

(g_mnkat, g_mngrp, rt_outtab-qmcol)

from viqmma where qmnum = rt_outtab-qmnum

and mngrp eq 'KSE-SM07'

and kzloesch eq space.

clear: rt_outtab-kttxt.

select single kurztext into rt_outtab-kttxt

from qpct where katalogart eq g_mnkat

and codegruppe eq g_mngrp

and code eq rt_outtab-qmcol

and sprache eq sy-langu.

rt_outtab1 = rt_outtab.

append rt_outtab1.

endif.

enddo.

endif.

endif.

endloop.

clear: rt_outtab[].

rt_outtab[] = rt_outtab1[].

sort rt_outtab by vbeln posnr.

endform.

----


  • FORM get_repname *

----


  • ........ *

----


  • --> P_VBELN *

  • --> P_POSNR *

  • --> P_PERNR *

  • --> P_ENAME *

----


form get_repname using p_vbeln

p_posnr

changing p_pernr

p_ename. "

data: i_vbpa like vbpa occurs 0 with header line.

clear: i_vbpa[].

call function 'Z_DETERMINE_ACTIVE_SALES_REP'

exporting

g_salesdocument = p_vbeln

g_sales_item = p_posnr

tables

st_vbpa = i_vbpa.

read table i_vbpa index 1.

if sy-subrc = 0.

p_pernr = i_vbpa-pernr.

select single ename into p_ename

from pa0001

where pernr = i_vbpa-pernr.

endif.

endform. " get_repname

----


  • FORM E03_EVENTTAB_BUILD *

----


  • ........ *

----


  • --> E03_LT_EVENTS *

----


form e03_eventtab_build using e03_lt_events type slis_t_event.

data: ls_event type slis_alv_event.

*

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = e03_lt_events.

read table e03_lt_events with key name = slis_ev_top_of_page

into ls_event.

if sy-subrc = 0.

move gc_formname_top_of_page to ls_event-form.

append ls_event to e03_lt_events.

endif.

endform.

----


  • FORM TOP_OF_PAGE *

----


  • ........ *

----


form top_of_page.

*

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = gt_list_top_of_page.

endform.

*&----


*& Form USER_COMMAND

*&----


form user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case r_ucomm.

when '&IC1'.

perform display_delivery using r_ucomm

rs_selfield.

endcase.

endform.

&----


*& Form display_delivery

&----


form display_delivery

using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case rs_selfield-sel_tab_field.

when '1-VBELN'.

set parameter id 'VL' field rs_selfield-value.

call transaction 'VL03N' and skip first screen.

when '1-VBELV'.

set parameter id 'VF' field rs_selfield-value.

call transaction 'VF03N' and skip first screen.

endcase.

endform.

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form variant_init.

*

clear g_variant.

g_variant-report = g_repid.

endform. " VARIANT_INIT

&----


*& Form F4_FOR_VARIANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form f4_for_variant.

*

call function 'REUSE_ALV_VARIANT_F4'

exporting

is_variant = g_variant

i_save = g_save

  • it_default_fieldcat =

importing

e_exit = g_exit

es_variant = gx_variant

exceptions

not_found = 2.

if sy-subrc = 2.

message id sy-msgid type 'S' number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

else.

if g_exit = space.

p_vari = gx_variant-variant.

endif.

endif.

endform.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


form pai_of_selection_screen.

*

if not p_vari is initial.

move g_variant to gx_variant.

move p_vari to gx_variant-variant.

call function 'REUSE_ALV_VARIANT_EXISTENCE'

exporting

i_save = g_save

changing

cs_variant = gx_variant.

g_variant = gx_variant.

else.

perform variant_init.

endif.

endform.

14 REPLIES 14
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
1,955

You should add it when adding the data to your final internal table which is being passed to the ALV grid.

Regards,

Rich Heilman

Read only

0 Likes
1,955

Thanks Rich,

Could you please add the code and highlight it.

Thanks

mohna

Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
1,956

First NETWR and FKIMG are not in VBEP. Where do you want to get these values? NETWR can come from LIPS.

Regards,

Rich Heilman

Read only

0 Likes
1,955

Rich,

both should be from VBRP

Thanks

Mohan

Read only

0 Likes
1,955

Well, I've made some assumptions here, but I think this will work. Of course you need to create a new field in your internal table to hold the calculated value. Here I call it INVVALUE. The issue here is that I'm a little concerned with the SELECT to VBFA, not sure that this is correct if you are trying to get the billing document.




form select_data tables rt_outtab like gt_outtab[].
  clear: r_vbeln[].
* Read all Invoices for the Selection
  select distinct h~vbeln h~kunnr h~kunag
  d~posnr d~matnr d~anzsn
  d~serail d~vgbel d~vgpos
  d~posnv d~lfimg d~arktx
  d~uecha h~lfart h~erdat
  h~ernam h~lfdat d~prodh
  h~vkorg d~vkbur d~vkgrp
  d~mvgr1 h~wadat_ist d~pstyv
  d~werks
  into (rt_outtab-vbeln, rt_outtab-kunnr,
  rt_outtab-kunag, rt_outtab-posnr,
  rt_outtab-matnr, rt_outtab-anzsn,
  rt_outtab-serail, rt_outtab-vgbel,
  rt_outtab-vgpos, rt_outtab-posnv,
  rt_outtab-lfimg, rt_outtab-arktx,
  rt_outtab-uecha, rt_outtab-lfart,
  rt_outtab-erdat, rt_outtab-ernam,
  rt_outtab-lfdat, rt_outtab-prodh,
  rt_outtab-vkorg, rt_outtab-vkbur,
  rt_outtab-vkgrp, rt_outtab-mvgr1,
  rt_outtab-wadat, rt_outtab-pstyv,
  rt_outtab-werks)
  from likp as h inner join lips as d
  on h~vbeln = d~vbeln
  where h~vbeln in s_vbeln
  and h~vkorg in s_vkorg
  and h~lfart in s_lfart
  and h~kunnr in s_kunnr
  and h~erdat in s_erdat
  and d~matnr in s_matnr
  and d~werks in s_werks
  and d~prodh in s_prodh
  and d~vgbel in s_vbelv
  and d~matnr like 'S%'.

    select single * from vbak where vbeln = rt_outtab-vgbel.

    if: sy-subrc eq 0.
      move vbak-vbeln to rt_outtab-vgbel.
      move vbak-auart to rt_outtab-auart.
    endif.

    select single * from mara where matnr = rt_outtab-matnr
    and mtart eq 'FERT'.
    check sy-subrc eq 0.
    if not rt_outtab-posnv is initial.
      rt_outtab-vgpos = rt_outtab-posnv.
    endif.
    clear: vbfa.

<b>    select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
    from vbfa where vbelv eq rt_outtab-vbeln
    and posnv eq rt_outtab-posnr
    and vbtyp_n eq 'M'.</b>


<b>    data: xvbrp type vbrp.
    select Single * from vbrp into xvbrp
                    where vbeln = rt_outtab-vbeln   " Need to be billing document
                      and posnr = rt_outtab-posnr.
     rt_outtab-INVVALUE = xvbrp-netwr / xvbrp-fkimg. </b>                

    append rt_outtab.

    if not r_vbeln-low is initial.
      if r_vbeln-low gt rt_outtab-vbeln.
        r_vbeln-low = rt_outtab-vbeln.
      endif.
      if r_vbeln-high lt rt_outtab-vbeln.
        r_vbeln-high = rt_outtab-vbeln.
      endif.
    else.
      r_vbeln-low = rt_outtab-vbeln.
      r_vbeln-high = rt_outtab-vbeln.
    endif.
    clear: rt_outtab.
  endselect.

  .. ...

Regards,

Rich Heilman

Read only

0 Likes
1,955

Rich,

It saying the data object RT_OUTTAB doent have a component called "INVVALUE". Where should i declare these?

Thanks

Mohan

Read only

0 Likes
1,955

You must define it in the internal table which is pass to the ALV function module.

It appears that the internal table uses the type I_DELIVERY, so add it there.

types: begin of i_delivery,
vbeln like likp-vbeln,
posnr like lips-posnr,
kunnr like likp-kunnr,
kunag like likp-kunag,
vkorg like vbak-vkorg,
matnr like lips-matnr,
lfart like likp-lfart,
arktx like vbap-arktx,
vgbel like lips-vgbel,
vgpos like lips-vgpos,
pstyv like lips-pstyv,
wadat type likp-wadat,
lfdat type likp-lfdat,
prodh type lips-prodh,
lfimg type lips-lfimg,
vkbur type lips-vkbur,
werks type lips-werks,
vkgrp type lips-vkgrp,
mvgr1 type lips-mvgr1,
sernr like equi-sernr,
sernp like equi-sernr,
equnr like equi-equnr,
kttxt like qpct-kurztext,


bstnk like vbak-bstnk,
vbelv like lips-vgbel,
posnv like lips-posnv,

uecha like lips-uecha,
ernam like vbak-ernam,
erdat like vbak-erdat,
serail like lips-serail,
anzsn like lips-anzsn,
auart like vbak-auart ,
netwr like vbap-netwr,
fstno like vbpa-pernr,
fstnm like pa0001-ename,
ename like pa0001-ename,
qname like ltap-qname,
name1 like kna1-name1,
name3 like kna1-name2,
pernr like vbpa-pernr,
aufnr like viqmel-aufnr,


qmnum like viqmel-qmnum,
mngrp like viqmma-mngrp,
qmcod like viqmel-qmcod,
qmcol like viqmma-mncod,
cotxt(20),
<b>INVVALUE type p decimals 2,</b>
end of i_delivery.

Regards,

Rich Heilman

Message was edited by: Rich Heilman

Read only

0 Likes
1,955

Yes Rich, i didnt write the program

Iam a BW guy, with little knowledge in the ABAP, trying to read ABAP code and do little modifications,

I appreciate your help

Mohan

Read only

0 Likes
1,955

I see We will struggle thru it. I'm still a little concerned about the selection on VBFA and VBRP, the field names for LIPS, VBFA are a little confusing.

Regards,

Rich Heilman

Read only

0 Likes
1,955

Rich, Thanks:-)

I asked the Business Analyst he said the fieds should be from VBRP only,

Thanks

mohan

Read only

0 Likes
1,955

YEs, they should be, but I'm not convinced that the select against VBFA is exactly correct, it that is not correct then neither will the select against VBRP. I have to look into it. Are you sure that the select against VBFA is correct and that you are getting a billing document?

Regards,

Rich Heilman

Read only

0 Likes
1,955

Rich I didnt pasted it properly,:-)

seems everything looks fine, let me go ahead and test it

Thanks

Mohan

Read only

Former Member
0 Likes
1,955

Hi Mohan,

You have some wrong statements in ur program like the one

clear: rt_outtab[].

rt_outtab[] = rt_outtab1[]

Dont know what you want to do but seems u have written wrong statement.

It should be clear: rt_outtab.

rt_outtab1[] = rt_outtab[].

Also u have used lot of select statements in ur program under loop endloop. you should take the data using FOR all entries and read inside a loop.

Also if you want to have sum of field Invoice amount in ALV, mark field DO_SUM in field cat as 'X'.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'NETWR'.

ls_fieldcat-seltext_s = 'Invoice Amt'.

ls_fieldcat-seltext_m = 'Invoice Value'.

ls_fieldcat-DO_SUM = 'X'.

append ls_fieldcat to rt_fieldcat.

clear ls_fieldcat.

Read only

0 Likes
1,955

<i>You have some wrong statements in ur program like the one

clear: rt_outtab[].

rt_outtab[] = rt_outtab1[]

Dont know what you want to do but seems u have written wrong statement.

It should be clear: rt_outtab.

rt_outtab1[] = rt_outtab[].</i>

Amit, If you clear the RT_OUTTAB, what is the point of moving to RT_OUTTAB1?

clear: rt_outtab.
rt_outtab1[] = rt_outtab[].

Regards,

Rich Heilman