Application Development 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: 

Can any one help me to get Material no in the report

Former Member
0 Kudos

Hi Gurus

Can anyone help me to alter and get material number and description from VBAP , This is basically document price change report for users.

The code is below

report ZCHGDOC_BY_SALES no standard page heading

line-size 132.

type-pools:

slis. " ALV types

  • Tables

tables:

cdhdr, " Change documents: Header

cdpos, " Change documents: Items

vbak, " Sales order: Header

mara, " Material No

user_addr, " User Address

vbap. " Contract order: Items

  • Types

types:

  • ------------------------------------------------------------------*

begin of ty_cdhdr,

objectclas like cdhdr-objectclas, " Object class

objectid like cdhdr-objectid, " Object value

changenr like cdhdr-changenr, " Document change number

username like cdhdr-username, " Changed by

udate like cdhdr-udate, " Changed on

utime like cdhdr-utime, " Changed at

tcode like cdhdr-tcode, " Transaction code

end of ty_cdhdr,

ty_it_cdhdr type ty_cdhdr occurs 0,

  • ------------------------------------------------------------------*

begin of ty_cdpos,

objectclas like cdpos-objectclas, " Object class

objectid like cdpos-objectid, " Object value

changenr like cdpos-changenr, " Document change number

tabname like cdpos-tabname, " Table name

tabkey like cdpos-tabkey, " Table key

fname like cdpos-fname, " Field name

chngind like cdpos-chngind, " Change indicator

value_new like cdpos-value_new, " New value of field

value_old like cdpos-value_old, " Old value of field

end of ty_cdpos,

ty_it_cdpos type ty_cdpos occurs 0,

  • ------------------------------------------------------------------*

begin of ty_dd03l,

tabname like dd03l-tabname,

fieldname like dd03l-fieldname,

as4local like dd03l-as4local,

as4vers like dd03l-as4vers,

rollname like dd03l-rollname,

end of ty_dd03l,

ty_it_dd03l type ty_dd03l occurs 0,

  • ------------------------------------------------------------------*

begin of ty_dd04t,

rollname like dd04t-rollname,

ddlanguage like dd04t-ddlanguage,

as4local like dd04t-as4local,

as4vers like dd04t-as4vers,

scrtext_l like dd04t-scrtext_l,

end of ty_dd04t,

ty_it_dd04t type ty_dd04t occurs 0,

  • ------------------------------------------------------------------*

begin of ty_kna1,

kunnr like kna1-kunnr, " Customer number

name1 like kna1-name1, " Customer name

end of ty_kna1,

ty_it_kna1 type ty_kna1 occurs 0,

  • ------------------------------------------------------------------*

begin of ty_user_addr,

bname like user_addr-bname, " user no

name_textc like user_addr-name_textc , " Username

end of ty_user_addr,

ty_it_user_addr type ty_user_addr occurs 0,

  • ------------------------------------------------------------------*

begin of ty_vbap,

matnr like vbap-matnr, " Material No

arktx like vbap-arktx, " Production Description

end of ty_vbap,

ty_it_vbap type ty_vbap occurs 0,

  • ------------------------------------------------------------------*

ty_text(500) type c,

ty_lines type tline,

ty_it_lines type ty_lines occurs 0,

begin of ty_merged,

vbeln like vbak-vbeln, " Sales order number

erdat like vbak-erdat, " Created on

auart like vbak-auart, " Order type

faksk like vbak-faksk, " Billing block in SD document

netwr like vbak-netwr, " Net value

waerk like vbak-waerk, " Currency

vkorg like vbak-vkorg, " Sales organisation

vtweg like vbak-vtweg, " Distribution channel

vkbur like vbak-vkbur, " Sales office

fkara like vbak-fkara, " Proposed billing type

kunnr like vbak-kunnr, " Sold-to party

bname like vbak-bname , " User No

xblnr like vbak-xblnr, " Reference

fbuda like vbkd-fbuda, " Date services rendered

username like cdhdr-username, " Changed by

udate like cdhdr-udate, " Changed on

utime like cdhdr-utime, " Changed at

tcode like cdhdr-tcode, " Transaction code

tabname like cdpos-tabname, " Table name

tabkey like cdpos-tabkey, " Table key

fname like cdpos-fname, " Field name

chngind like cdpos-chngind, " Change indicator

value_new like cdpos-value_new, " New value of field

value_old like cdpos-value_old, " Old value of field

scrtext_l like dd04t-scrtext_l, " Description of field

intnote type ty_text, " Internal note

hdrnote type ty_text, " Header note

name1 like adrc-name1, " Sold-to party name

matnr like vbap-matnr, " Material No

arktx like vbap-arktx, " Product Description

end of ty_merged,

ty_it_merged type ty_merged occurs 0,

begin of ty_vbak,

vbeln like vbak-vbeln, " Sales order number

erdat like vbak-erdat, " Created on

auart like vbak-auart, " Order type

faksk like vbak-faksk, " Billing block in SD document

netwr like vbak-netwr, " Net value

waerk like vbak-waerk, " Currency

vkorg like vbak-vkorg, " Sales organisation

vtweg like vbak-vtweg, " Distribution channel

vkbur like vbak-vkbur, " Sales office

fkara like vbak-fkara, " Proposed billing type

kunnr like vbak-kunnr, " Sold-to party

xblnr like vbak-xblnr, " Reference

objectid like cdhdr-objectid, " Change document object

end of ty_vbak,

ty_it_vbak type ty_vbak occurs 0,

begin of ty_vbkd,

vbeln like vbkd-vbeln, " Sales order number

posnr like vbkd-posnr, " Sales order item

fbuda like vbkd-fbuda, " Date services rendered

end of ty_vbkd,

ty_it_vbkd type ty_vbkd occurs 0.

  • Internal tables

data:

it_cdhdr type ty_it_cdhdr,

it_cdpos type ty_it_cdpos,

it_fieldcat type slis_t_fieldcat_alv,

it_kna1 type ty_it_kna1,

it_user_addr type ty_it_user_addr,

it_merged type ty_it_merged,

it_vbak type ty_it_vbak,

  • Material No

it_vbap type ty_it_vbap,

it_vbkd type ty_it_vbkd.

data:

wa_vbak type ty_vbak.

data:

st_tvariant like disvariant,

st_variant like disvariant.

constants:

co_as4local_a like dd03l-as4local " Active version

value 'A',

co_objectclas_verkbeleg like cdhdr-objectclas

value 'VERKBELEG',

co_posnr_initial like vbkd-posnr " Initial item number

value is initial,

co_posnr_initial_2 like vbap-posnr " Initial item number

value is initial,

co_save_u type c " User display variant

value 'U', " saving allowed.

co_trvog_0 like vbak-trvog " Sales order

value '0'.

data:

va_exit type c, " ALV display

va_tabix like sy-tabix.

selection-screen: begin of block b1 with frame title text-001.

select-options:

s_vkorg for vbak-vkorg OBLIGATORY, " Sales organisation

s_vkbur for vbak-vkbur, " Sales office

s_vtweg for vbak-vtweg, " Distribution channel

s_vbeln for vbak-vbeln, " Sales order number

s_usrnme for cdhdr-username, " Changed by

s_udate for cdhdr-udate. " Changed on

selection-screen: end of block b1,

begin of block b2 with frame title text-002.

parameters:

p_varint like disvariant-variant. " Display variant.

selection-screen: end of block b2.

  • Initialization

initialization.

  • Load display variant.

if not p_varint is initial.

move st_variant to st_tvariant.

move p_varint to st_tvariant-variant.

call function 'REUSE_ALV_VARIANT_EXISTENCE'

exporting

i_save = co_save_u

changing

cs_variant = st_tvariant.

st_variant = st_tvariant.

else.

clear st_variant.

st_variant-report = sy-repid.

endif.

at selection-screen on value-request for p_varint.

  • Provide display variant list for this program.

call function 'REUSE_ALV_VARIANT_F4'

exporting

is_variant = st_variant

i_save = co_save_u

importing

e_exit = va_exit

es_variant = st_tvariant

exceptions

not_found = 2.

if sy-subrc eq 2.

message id sy-msgid type 'S'

number sy-msgno

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

else.

if va_exit eq space.

st_variant = st_tvariant.

p_varint = st_tvariant-variant.

endif.

endif.

  • At selection screen

at selection-screen.

  • Load display variant.

if not p_varint is initial.

move st_variant to st_tvariant.

move p_varint to st_tvariant-variant.

call function 'REUSE_ALV_VARIANT_EXISTENCE'

exporting

i_save = co_save_u

changing

cs_variant = st_tvariant.

st_variant = st_tvariant.

else.

clear st_variant.

st_variant-report = sy-repid.

endif.

  • Start of selection

----


  • Extract order details from VBAK

select vbeln erdat auart faksk netwr waerk vkorg vtweg vkbur fkara

kunnr xblnr

from vbak

into table it_vbak

where vkorg in s_vkorg

and vkbur in s_vkbur

and vbeln in s_vbeln.

if sy-subrc ne 0.

  • No data found for selection

message s001(zgen).

exit.

endif.

loop at it_vbak into wa_vbak.

va_tabix = sy-tabix.

wa_vbak-objectid = wa_vbak-vbeln.

modify it_vbak from wa_vbak

index va_tabix

transporting objectid.

endloop.

----


  • -------------------------------------------------*

  • if sy-subrc ne 0.

    • No data found for selection

  • message s001(zgen).

  • exit.

  • endif.

*

  • loop at it_vbak into wa_vbak.

  • va_tabix = sy-tabix.

*

  • wa_vbak-objectid = wa_vbak-vbeln.

*

  • modify it_vbak from wa_vbak

  • index va_tabix

  • transporting objectid.

  • endloop.

----


  • Extract Change data

select objectclas objectid changenr username udate utime tcode

from cdhdr

into table it_cdhdr

for all entries in it_vbak

where objectclas eq co_objectclas_verkbeleg

and objectid eq it_vbak-objectid

and username in s_usrnme

and udate in s_udate.

if sy-subrc eq 0.

select objectclas objectid changenr tabname tabkey fname chngind

value_new value_old

from cdpos

into table it_cdpos

for all entries in it_cdhdr

where fname NE 'CMPRE_FLT'

and objectclas eq it_cdhdr-objectclas

and objectid eq it_cdhdr-objectid

and changenr eq it_cdhdr-changenr.

endif.

  • Extract customer details from KNA1

select kunnr name1

from kna1

into table it_kna1

for all entries in it_vbak

where kunnr eq it_vbak-kunnr.

----


Changes are made here -

select matnr arktx

from vbap

into table it_vbap

for all entries in it_vbak

where

vbeln eq it_vbak-vbeln.

    • -----------------End of Change ----------------------*

  • Extract Contract No from vbkd.

select vbeln posnr fbuda

from vbkd

into table it_vbkd

for all entries in it_vbak

where vbeln eq it_vbak-vbeln

and posnr eq co_posnr_initial.

perform merge_data tables it_cdhdr

it_cdpos

it_kna1

it_user_addr

it_merged

it_vbak

it_vbap

it_vbkd.

if it_merged[] is initial.

message s001(zgen).

exit.

endif.

  • Release memory no longer required.

free: it_cdhdr,

it_cdpos,

it_kna1,

it_user_addr,

it_vbak,

it_vbap,

it_vbkd.

  • Build field catalog for call to report function

perform build_field_catalog tables it_fieldcat.

  • Output report.

perform output_report tables it_fieldcat

it_merged.

&----


*& Form merge_data

&----


  • text

----


form merge_data tables pa_it_cdhdr type ty_it_cdhdr

pa_it_cdpos type ty_it_cdpos

pa_it_kna1 type ty_it_kna1

pa_it_user_addr type ty_it_user_addr

pa_it_merged type ty_it_merged

pa_it_vbak type ty_it_vbak

pa_it_vbap type ty_it_vbap

pa_it_vbkd type ty_it_vbkd.

  • Local internal tables

data:

lit_dd03l type ty_it_dd03l,

lit_dd04t type ty_it_dd04t.

  • Local work areas

data:

lwa_cdhdr type ty_cdhdr,

lwa_cdpos type ty_cdpos,

lwa_dd03l type ty_dd03l,

lwa_dd04t type ty_dd04t,

lwa_kna1 type ty_kna1,

lwa_user_addr type ty_user_addr,

lwa_merged type ty_merged,

lwa_vbak type ty_vbak,

lwa_vbap type ty_vbap,

lwa_vbkd type ty_vbkd.

  • Local variables

data:

lva_dd03l_tabix like sy-tabix,

lva_dd04t_tabix like sy-tabix.

  • Sort Data

sort pa_it_cdhdr by objectid changenr.

sort pa_it_cdpos by objectid changenr tabname tabkey fname.

sort pa_it_kna1 by kunnr.

sort pa_it_user_addr by bname.

sort pa_it_vbak by vbeln.

sort pa_it_vbkd by vbeln.

loop at pa_it_vbak into lwa_vbak.

clear lwa_merged.

  • Assign sales order fields to reporting work area

lwa_merged-vbeln = lwa_vbak-vbeln.

lwa_merged-erdat = lwa_vbak-erdat.

lwa_merged-auart = lwa_vbak-auart.

lwa_merged-faksk = lwa_vbak-faksk.

lwa_merged-netwr = lwa_vbak-netwr.

lwa_merged-waerk = lwa_vbak-waerk.

lwa_merged-vkorg = lwa_vbak-vkorg.

lwa_merged-vtweg = lwa_vbak-vtweg.

lwa_merged-vkbur = lwa_vbak-vkbur.

lwa_merged-fkara = lwa_vbak-fkara.

lwa_merged-kunnr = lwa_vbak-kunnr.

  • lwa_merged-bname = 1wa_user_addr-bname.

lwa_merged-xblnr = lwa_vbak-xblnr.

  • Assgin Material to reporting work area

  • lwa_merged-matnr = lwa_vbap-vbeln.

  • Get name of sold-to party from PA_IT_KNA1

clear lwa_kna1.

read table pa_it_kna1 into lwa_kna1

with key kunnr = lwa_vbak-kunnr

binary search.

lwa_merged-name1 = lwa_kna1-name1.

  • Get name of name from vbap

clear lwa_vbap.

read table pa_it_vbap into lwa_vbap

with key matnr = lwa_vbap-matnr

binary search.

lwa_merged-arktx = lwa_vbap-arktx.

  • Get name from PA_it_user_addr

  • clear lwa_user_addr.

  • read table pa_it_user_addr into lwa_user_addr

  • with key = lwa_user_addr-bname

  • binary search.

*

  • lwa_merged-username = lwa_user_addr-name_textc.

  • Get business data from PA_IT_VBKD.

clear lwa_vbkd.

read table pa_it_vbkd into lwa_vbkd

with key vbeln = lwa_vbak-vbeln

binary search.

lwa_merged-fbuda = lwa_vbkd-fbuda.

  • Get internal note text for sales order

perform read_text using '0002'

'1'

lwa_merged-vbeln

'VBBK'

lwa_merged-intnote.

  • Get header note 1 text for sales order

perform read_text using 'Z002'

'1'

lwa_merged-vbeln

'VBBK'

lwa_merged-hdrnote.

  • Determine if change documents exist for sales order.

clear lwa_cdhdr.

read table pa_it_cdhdr into lwa_cdhdr

with key objectid = lwa_vbak-objectid.

if sy-subrc ne 0.

continue.

endif.

loop at pa_it_cdhdr into lwa_cdhdr

from sy-tabix.

lwa_merged-username = lwa_cdhdr-username.

lwa_merged-udate = lwa_cdhdr-udate.

lwa_merged-utime = lwa_cdhdr-utime.

lwa_merged-tcode = lwa_cdhdr-tcode.

clear lwa_cdpos.

read table pa_it_cdpos into lwa_cdpos

with key objectid = lwa_cdhdr-objectid

changenr = lwa_cdhdr-changenr

binary search.

loop at pa_it_cdpos into lwa_cdpos

from sy-tabix.

lwa_merged-tabname = lwa_cdpos-tabname.

lwa_merged-tabkey = lwa_cdpos-tabkey.

lwa_merged-fname = lwa_cdpos-fname.

lwa_merged-chngind = lwa_cdpos-chngind.

lwa_merged-value_new = lwa_cdpos-value_new.

lwa_merged-value_old = lwa_cdpos-value_old.

  • Get description for field - determine date element

clear lwa_dd03l.

read table lit_dd03l into lwa_dd03l

with key tabname = lwa_cdpos-tabname

fieldname = lwa_cdpos-fname

binary search.

lva_dd03l_tabix = sy-tabix.

if sy-subrc ne 0.

select single tabname fieldname as4local as4vers rollname

from dd03l

into lwa_dd03l

where tabname eq lwa_cdpos-tabname

and fieldname eq lwa_cdpos-fname

and as4local eq co_as4local_a.

if sy-subrc eq 0.

insert lwa_dd03l into lit_dd03l

index lva_dd03l_tabix.

endif.

endif.

  • If data element was found, get description

if not lwa_dd03l is initial.

clear lwa_dd04t.

read table lit_dd04t into lwa_dd04t

with key rollname = lwa_dd03l-rollname

ddlanguage = sy-langu

binary search.

lva_dd04t_tabix = sy-tabix.

if sy-subrc ne 0.

select single rollname ddlanguage as4local as4vers scrtext_l

from dd04t

into lwa_dd04t

where rollname eq lwa_dd03l-rollname

and ddlanguage eq sy-langu.

if sy-subrc eq 0.

insert lwa_dd04t into lit_dd04t

index lva_dd04t_tabix.

else.

lwa_dd04t-scrtext_l = 'Description for field not found'.

endif.

endif.

endif.

lwa_merged-scrtext_l = lwa_dd04t-scrtext_l.

append lwa_merged to pa_it_merged.

at end of changenr.

  • Only process field changes for this change document.

exit.

endat.

endloop.

at end of objectid.

  • Initialise work area so we know change document for order has

  • been processed.

clear lwa_merged.

  • Only process change documents for this sales order.

exit.

endat.

endloop.

endloop.

endform. " merge_data

&----


*& Form build_field_catalog

&----


  • text

----


form build_field_catalog tables pa_it_fieldcat type slis_t_fieldcat_alv.

data:

  • Local variable

lva_col_pos type slis_fieldcat_alv-col_pos,

  • Local structure

st_fieldcat type slis_fieldcat_alv.

lva_col_pos = 0.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VBELN'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'VBELN'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VKBUR'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'VKBUR'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VKORG'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'VKORG'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'KUNNR'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'KUNNR'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

st_fieldcat-outputlen = '6'.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'NAME1'.

st_fieldcat-ref_tabname = 'KNA1'.

st_fieldcat-ref_fieldname = 'NAME1'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '15'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'MATNR'.

st_fieldcat-ref_tabname = 'VBAP'.

st_fieldcat-ref_fieldname = 'MATNR'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

st_fieldcat-outputlen = '6'.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'arktx'.

st_fieldcat-ref_tabname = 'VBAP'.

st_fieldcat-ref_fieldname = 'arktx'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

st_fieldcat-outputlen = '6'.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'SCRTEXT_L'.

st_fieldcat-ref_tabname = 'DD04T'.

st_fieldcat-ref_fieldname = 'SCRTEXT_L'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '20'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'UDATE'.

st_fieldcat-ref_tabname = 'CDHDR'.

st_fieldcat-ref_fieldname = 'UDATE'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '10'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'USERNAME'.

st_fieldcat-ref_tabname = 'CDHDR'.

st_fieldcat-ref_fieldname = 'USERNAME'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

*

  • clear st_fieldcat.

  • add 1 to lva_col_pos.

  • st_fieldcat-tabname = 'PA_IT_MERGED'.

  • st_fieldcat-fieldname = 'FNAME'.

  • st_fieldcat-ref_tabname = 'CDPOS'.

  • st_fieldcat-ref_fieldname = 'FNAME'.

  • st_fieldcat-row_pos = '4'.

  • st_fieldcat-outputlen = '8'.

  • st_fieldcat-col_pos = lva_col_pos.

  • append st_fieldcat to pa_it_fieldcat.

*

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'CHNGIND'.

st_fieldcat-ref_tabname = 'CDPOS'.

st_fieldcat-ref_fieldname = 'CHNGIND'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '8'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'WAERK'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'WAERK'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '5'.

st_fieldcat-col_pos = lva_col_pos..

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VALUE_NEW'.

st_fieldcat-ref_tabname = 'CDPOS'.

st_fieldcat-ref_fieldname = 'VALUE_NEW'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VALUE_OLD'.

st_fieldcat-ref_tabname = 'CDPOS'.

st_fieldcat-ref_fieldname = 'VALUE_OLD'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

endform. " build_field_catalog

&----


*& Form output_report

&----


  • text

----


form output_report tables pa_it_fieldcat type slis_t_fieldcat_alv

pa_it_merged type ty_it_merged.

  • Local variables

data:

lva_formname type slis_formname,

lva_repid like sy-repid.

lva_repid = sy-repid.

lva_formname = 'ALV_USER_COMMAND'.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = lva_repid

i_callback_user_command = lva_formname

i_save = 'A'

is_variant = st_variant

it_fieldcat = pa_it_fieldcat[]

tables

t_outtab = pa_it_merged

exceptions

program_error = 1

others = 2.

endform. " output_report

&----


*& Form alv_user_command

&----


  • text

----


form alv_user_command using pa_ucomm like sy-ucomm

pa_selfield type slis_selfield.

  • Local work areas

data:

lwa_merged type ty_merged.

clear lwa_merged.

read table it_merged into lwa_merged

index pa_selfield-tabindex.

case pa_selfield-fieldname.

when 'VBELN'.

  • Contract Number

set parameter id 'AUN' field lwa_merged-vbeln.

call transaction 'VA03' and skip first screen.

  • S_BCE_68001393

when 'USERNAME'.

  • Username

set parameter id 'username' field lwa_merged-username.

call transaction 'S_BCE_68001393' and skip first screen.

when 'KUNNR'.

  • Customer number

set parameter id 'KUN' field lwa_merged-kunnr.

set parameter id 'VKO' field space.

set parameter id 'VTW' field space.

set parameter id 'SPA' field space.

call transaction 'XD03' and skip first screen.

endcase.

endform. " alv_user_command

&----


*& Form read_text

&----


  • text

----


form read_text using pa_id

pa_inline_count

pa_name

pa_object

pa_text.

  • Local internal tables

data:

lit_inlines type ty_it_lines,

lit_lines type ty_it_lines.

  • Local work areas

data:

lwa_lines type ty_lines.

  • Local variables

data:

lva_tdname like thead-tdname.

refresh: lit_inlines,

lit_lines.

lva_tdname = pa_name.

call function 'READ_TEXT_INLINE'

exporting

id = pa_id

inline_count = pa_inline_count

language = sy-langu

name = lva_tdname

object = pa_object

tables

inlines = lit_inlines

lines = lit_lines

exceptions

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

others = 7.

loop at lit_lines into lwa_lines.

concatenate pa_text

lwa_lines-tdline

into pa_text separated by space.

endloop.

endform. " read_text ENDLOOP.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Piroz,

Quite few things to change in your logic.

Declaration of internal table shld hold VBELN as well. This will act as reference at the later point when you need to merge the data into a single internal table.


begin of ty_vbap,
   vbeln like vbap-vbeln, " Sales order Number
   matnr like vbap-matnr, " Material No
   maktx like makt-maktx, " Production Description
end of ty_vbap,

Extract for Product and their descrtiptions to be altered as:


select a~vbeln a~matnr b~maktx
    from vbap as a
    inner join makt as b
    on b~matnr = a~matnr
    into table it_vbap
    for all entries in it_vbak
    where
    a~vbeln eq it_vbak-vbeln and
    b~spras eq sy-langu.

When merging item data with header, start with item table and get other data respectively:


loop at pa_it_vbap into lwa_vbap.
   read table pa_it_vbak into lwa_vbak with key vbeln = lwa_vbap-vbeln.
   check sy-subrc eq 0.
   move-corresponding lwa_vbak to lwa_merged.

"   .... similarly other data

endloop.

Regards

Eswar

7 REPLIES 7

Former Member
0 Kudos

for material description u can use makt table maktx field based on vbap-matnr.

Madhavi

former_member156446
Active Contributor
0 Kudos

begin of ty_vbap,
matnr like vbap-matnr, " Material No
arktx like vbap-arktx, " Production Description
maktx like makt-maktx, " material description
end of ty_vbap,
ty_it_vbap type ty_vbap occurs 0,

-------------- Changes are made here ----------------

select matnr arktx
from vbap
into table it_vbap
for all entries in it_vbak
where
vbeln eq it_vbak-vbeln.

select MAKTX from MAKT
intl table it_vbap  "<<<<<<if you have maktx in the structure
for all entries in it_vbap
where
matnr eq ita_vbap-matnr.
* -----------------End of Change ----------------------

Former Member
0 Kudos

Hi Piroz,

Quite few things to change in your logic.

Declaration of internal table shld hold VBELN as well. This will act as reference at the later point when you need to merge the data into a single internal table.


begin of ty_vbap,
   vbeln like vbap-vbeln, " Sales order Number
   matnr like vbap-matnr, " Material No
   maktx like makt-maktx, " Production Description
end of ty_vbap,

Extract for Product and their descrtiptions to be altered as:


select a~vbeln a~matnr b~maktx
    from vbap as a
    inner join makt as b
    on b~matnr = a~matnr
    into table it_vbap
    for all entries in it_vbak
    where
    a~vbeln eq it_vbak-vbeln and
    b~spras eq sy-langu.

When merging item data with header, start with item table and get other data respectively:


loop at pa_it_vbap into lwa_vbap.
   read table pa_it_vbak into lwa_vbak with key vbeln = lwa_vbap-vbeln.
   check sy-subrc eq 0.
   move-corresponding lwa_vbak to lwa_merged.

"   .... similarly other data

endloop.

Regards

Eswar

0 Kudos

Hi Eswar

I try to add the code but giving error message as

The data object LWA_VBAP does not have a component called " VBELN" what does that mean though i define the work area

regards

  • Get name of name from vbap

loop at pa_it_vbap into lwa_vbap.

clear lwa_vbap.

read table pa_it_vbap into lwa_vbap

with key vbeln = lwa_vbap-vbeln.

binary search.

check sy-subrc eq 0.

move-corresponding lwa_vbak to lwa_merged.

lwa_merged-arktx = lwa_vbap-arktx.

endloop.

0 Kudos

Hi Eswar

According to your instruction I did the modification to add the material no and description but I am unable to get atleast material no seeing below my coding please do some debugging and send to me

report ZCHGDOC_BY_SALES no standard page heading

line-size 132.

type-pools:

slis. " ALV types

  • Tables

tables:

cdhdr, " Change documents: Header

cdpos, " Change documents: Items

vbak, " Sales order: Header

mara, " Material Number

makt, " Material Description

user_addr, " User Address

vbap. " Contract order: Items

  • Types

types:

  • ------------------------------------------------------------------*

begin of ty_cdhdr,

objectclas like cdhdr-objectclas, " Object class

objectid like cdhdr-objectid, " Object value

changenr like cdhdr-changenr, " Document change number

username like cdhdr-username, " Changed by

udate like cdhdr-udate, " Changed on

utime like cdhdr-utime, " Changed at

tcode like cdhdr-tcode, " Transaction code

end of ty_cdhdr,

ty_it_cdhdr type ty_cdhdr occurs 0,

  • ------------------------------------------------------------------*

begin of ty_cdpos,

objectclas like cdpos-objectclas, " Object class

objectid like cdpos-objectid, " Object value

changenr like cdpos-changenr, " Document change number

tabname like cdpos-tabname, " Table name

tabkey like cdpos-tabkey, " Table key

fname like cdpos-fname, " Field name

chngind like cdpos-chngind, " Change indicator

value_new like cdpos-value_new, " New value of field

value_old like cdpos-value_old, " Old value of field

end of ty_cdpos,

ty_it_cdpos type ty_cdpos occurs 0,

  • ------------------------------------------------------------------*

begin of ty_dd03l,

tabname like dd03l-tabname,

fieldname like dd03l-fieldname,

as4local like dd03l-as4local,

as4vers like dd03l-as4vers,

rollname like dd03l-rollname,

end of ty_dd03l,

ty_it_dd03l type ty_dd03l occurs 0,

  • ------------------------------------------------------------------*

begin of ty_dd04t,

rollname like dd04t-rollname,

ddlanguage like dd04t-ddlanguage,

as4local like dd04t-as4local,

as4vers like dd04t-as4vers,

scrtext_l like dd04t-scrtext_l,

end of ty_dd04t,

ty_it_dd04t type ty_dd04t occurs 0,

  • ------------------------------------------------------------------*

begin of ty_kna1,

kunnr like kna1-kunnr, " Customer number

name1 like kna1-name1, " Customer name

end of ty_kna1,

ty_it_kna1 type ty_kna1 occurs 0,

  • ------------------------------------------------------------------*

begin of ty_user_addr,

bname like user_addr-bname, " user no

name_textc like user_addr-name_textc , " Username

end of ty_user_addr,

ty_it_user_addr type ty_user_addr occurs 0,

  • ------------------------------------------------------------------*

begin of ty_vbap,

vbeln like vbap-vbeln, " Contract number

posnr like vbap-posnr, " Contract item

matnr like vbap-matnr, " Material

abgru like vbap-abgru, " Reason for rejection

werks like vbap-werks, " Plant

arktx like vbap-arktx, " Product description

maktx like makt-maktx, " Production Description

end of ty_vbap,

ty_it_vbap type ty_vbap occurs 0,

----


begin of ty_mara,

matnr like mara-matnr, " Material

extwg like mara-extwg, " External material group

mstav like mara-mstav, " Blocking reason

mstdv like mara-mstdv, " Blocking reason valid from

end of ty_mara,

ty_it_mara type ty_mara occurs 0,

----


begin of ty_marc,

matnr like marc-matnr, " Material

werks like marc-werks, " Plant

mmsta like marc-mmsta, " Blocking reason

mmstd like marc-mmstd, " Blocking reason valid from

end of ty_marc,

ty_it_marc type ty_marc occurs 0,

  • ------------------------------------------------------------------*

ty_text(500) type c,

ty_lines type tline,

ty_it_lines type ty_lines occurs 0,

begin of ty_merged,

vbeln like vbak-vbeln, " Sales order number

erdat like vbak-erdat, " Created on

auart like vbak-auart, " Order type

faksk like vbak-faksk, " Billing block in SD document

netwr like vbak-netwr, " Net value

waerk like vbak-waerk, " Currency

vkorg like vbak-vkorg, " Sales organisation

vtweg like vbak-vtweg, " Distribution channel

vkbur like vbak-vkbur, " Sales office

fkara like vbak-fkara, " Proposed billing type

kunnr like vbak-kunnr, " Sold-to party

bname like vbak-bname , " User No

xblnr like vbak-xblnr, " Reference

fbuda like vbkd-fbuda, " Date services rendered

username like cdhdr-username, " Changed by

udate like cdhdr-udate, " Changed on

utime like cdhdr-utime, " Changed at

tcode like cdhdr-tcode, " Transaction code

tabname like cdpos-tabname, " Table name

tabkey like cdpos-tabkey, " Table key

fname like cdpos-fname, " Field name

chngind like cdpos-chngind, " Change indicator

value_new like cdpos-value_new, " New value of field

value_old like cdpos-value_old, " Old value of field

scrtext_l like dd04t-scrtext_l, " Description of field

intnote type ty_text, " Internal note

hdrnote type ty_text, " Header note

name1 like adrc-name1, " Sold-to party name

matnr like vbap-matnr, " Material No

arktx like vbap-arktx,

end of ty_merged,

ty_it_merged type ty_merged occurs 0,

begin of ty_vbak,

vbeln like vbak-vbeln, " Sales order number

erdat like vbak-erdat, " Created on

auart like vbak-auart, " Order type

faksk like vbak-faksk, " Billing block in SD document

netwr like vbak-netwr, " Net value

waerk like vbak-waerk, " Currency

vkorg like vbak-vkorg, " Sales organisation

vtweg like vbak-vtweg, " Distribution channel

vkbur like vbak-vkbur, " Sales office

fkara like vbak-fkara, " Proposed billing type

kunnr like vbak-kunnr, " Sold-to party

xblnr like vbak-xblnr, " Reference

objectid like cdhdr-objectid, " Change document object

matnr like vbap-matnr,

end of ty_vbak,

ty_it_vbak type ty_vbak occurs 0,

begin of ty_vbkd,

vbeln like vbkd-vbeln, " Sales order number

posnr like vbkd-posnr, " Sales order item

fbuda like vbkd-fbuda, " Date services rendered

end of ty_vbkd,

ty_it_vbkd type ty_vbkd occurs 0.

  • Internal tables

data:

it_cdhdr type ty_it_cdhdr,

it_cdpos type ty_it_cdpos,

it_fieldcat type slis_t_fieldcat_alv,

it_kna1 type ty_it_kna1,

it_user_addr type ty_it_user_addr,

it_merged type ty_it_merged,

it_vbak type ty_it_vbak,

  • Material No

it_vbap type ty_it_vbap,

it_mara type ty_it_mara,

it_vbkd type ty_it_vbkd.

data:

wa_vbak type ty_vbak.

data:

st_tvariant like disvariant,

st_variant like disvariant.

constants:

co_as4local_a like dd03l-as4local " Active version

value 'A',

co_objectclas_verkbeleg like cdhdr-objectclas

value 'VERKBELEG',

co_posnr_initial like vbkd-posnr " Initial item number

value is initial,

co_posnr_initial_2 like vbap-posnr " Initial item number

value is initial,

co_save_u type c " User display variant

value 'U', " saving allowed.

co_trvog_0 like vbak-trvog " Sales order

value '0'.

data:

va_exit type c, " ALV display

va_tabix like sy-tabix.

selection-screen: begin of block b1 with frame title text-001.

select-options:

" s_vkorg for vbak-vkorg OBLIGATORY, " Sales organisation

s_vkorg for vbak-vkorg , " Sales organisation

s_vkbur for vbak-vkbur, " Sales office

s_vtweg for vbak-vtweg, " Distribution channel

s_vbeln for vbak-vbeln, " Sales order number

s_kunnr for vbak-kunnr, " sold to party

"s_matnr for vbap-matnr, " Material No

s_usrnme for cdhdr-username, " Changed by

s_udate for cdhdr-udate. " Changed on

selection-screen: end of block b1,

begin of block b2 with frame title text-002.

parameters:

p_varint like disvariant-variant. " Display variant.

selection-screen: end of block b2.

  • Initialization

initialization.

  • Load display variant.

if not p_varint is initial.

move st_variant to st_tvariant.

move p_varint to st_tvariant-variant.

call function 'REUSE_ALV_VARIANT_EXISTENCE'

exporting

i_save = co_save_u

changing

cs_variant = st_tvariant.

st_variant = st_tvariant.

else.

clear st_variant.

st_variant-report = sy-repid.

endif.

at selection-screen on value-request for p_varint.

  • Provide display variant list for this program.

call function 'REUSE_ALV_VARIANT_F4'

exporting

is_variant = st_variant

i_save = co_save_u

importing

e_exit = va_exit

es_variant = st_tvariant

exceptions

not_found = 2.

if sy-subrc eq 2.

message id sy-msgid type 'S'

number sy-msgno

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

else.

if va_exit eq space.

st_variant = st_tvariant.

p_varint = st_tvariant-variant.

endif.

endif.

  • At selection screen

at selection-screen.

  • Load display variant.

if not p_varint is initial.

move st_variant to st_tvariant.

move p_varint to st_tvariant-variant.

call function 'REUSE_ALV_VARIANT_EXISTENCE'

exporting

i_save = co_save_u

changing

cs_variant = st_tvariant.

st_variant = st_tvariant.

else.

clear st_variant.

st_variant-report = sy-repid.

endif.

  • Start of selection

----


  • Extract order details from VBAK

select vbeln erdat auart faksk netwr waerk vkorg vtweg vkbur fkara

kunnr xblnr

from vbak

into table it_vbak

where vkorg in s_vkorg

and vkbur in s_vkbur

and kunnr in s_kunnr

and vbeln in s_vbeln.

if sy-subrc ne 0.

  • No data found for selection

message s001(zgen).

exit.

endif.

loop at it_vbak into wa_vbak.

va_tabix = sy-tabix.

wa_vbak-objectid = wa_vbak-vbeln.

modify it_vbak from wa_vbak

index va_tabix

transporting objectid.

endloop.

----


  • Extract Change data

select objectclas objectid changenr username udate utime tcode

from cdhdr

into table it_cdhdr

for all entries in it_vbak

where objectclas eq co_objectclas_verkbeleg

and objectid eq it_vbak-objectid

and username in s_usrnme

and udate in s_udate.

if sy-subrc eq 0.

select objectclas objectid changenr tabname tabkey fname chngind

value_new value_old

from cdpos

into table it_cdpos

for all entries in it_cdhdr

where fname NE 'CMPRE_FLT'

and objectclas eq it_cdhdr-objectclas

and objectid eq it_cdhdr-objectid

and changenr eq it_cdhdr-changenr.

endif.

  • Extract customer details from KNA1

select kunnr name1

from kna1

into table it_kna1

for all entries in it_vbak

where kunnr eq it_vbak-kunnr.

----


Changes are made here -

  • Extract general material details from MARA

  • select matnr

  • from vbap

  • into table it_vbap

  • for all entries in it_vbap

  • where vbeln eq it_vbap-vbeln

  • and matnr eq it_vbap-matnr.

*

  • select maktx from makt

  • into table it_vbap

  • for all entries in it_vbak

  • where matnr eq it_vbap-matnr.

*

----


*

select MAKTX from MAKT

into table it_vbap "<<<<<<if you have maktx in the structure

for all entries in it_vbap

where

matnr eq it_vbap-matnr.

select a~matnr

from vbap as a

inner join makt as b

on b~matnr = a~matnr

into table it_vbap

for all entries in it_vbak

where

a~vbeln eq it_vbak-vbeln.

"and b~spras eq sy-langu.

  • select a~matnr

  • from vbap as a

  • inner join makt as b

  • on bmatnr = amatnr

  • into table it_vbap

  • for all entries in it_vbak

  • where

  • a~vbeln eq it_vbak-vbeln.

  • "and b~spras eq sy-langu.

*

*

*

    • Extract general material details from MARA

*

select matnr extwg mstav mstdv

from mara

into table it_mara

for all entries in it_vbap

where matnr eq it_vbap-matnr.

  • -----------------------------------------------------------*

    • -----------------End of Change ----------------------*

  • Extract Contract No from vbkd.

select vbeln posnr fbuda

from vbkd

into table it_vbkd

for all entries in it_vbak

where vbeln eq it_vbak-vbeln

and posnr eq co_posnr_initial.

perform merge_data tables it_cdhdr

it_cdpos

it_kna1

it_user_addr

it_merged

it_vbak

it_vbap

it_vbkd.

if it_merged[] is initial.

message s001(zgen).

exit.

endif.

  • Release memory no longer required.

free: it_cdhdr,

it_cdpos,

it_kna1,

it_user_addr,

it_vbak,

it_vbap,

it_vbkd.

  • Build field catalog for call to report function

perform build_field_catalog tables it_fieldcat.

  • Output report.

perform output_report tables it_fieldcat

it_merged.

&----


*& Form merge_data

&----


  • text

----


form merge_data tables pa_it_cdhdr type ty_it_cdhdr

pa_it_cdpos type ty_it_cdpos

pa_it_kna1 type ty_it_kna1

pa_it_user_addr type ty_it_user_addr

pa_it_merged type ty_it_merged

pa_it_vbak type ty_it_vbak

pa_it_vbap type ty_it_vbap

pa_it_vbkd type ty_it_vbkd.

  • Local internal tables

data:

lit_dd03l type ty_it_dd03l,

lit_dd04t type ty_it_dd04t.

  • Local work areas

data:

lwa_cdhdr type ty_cdhdr,

lwa_cdpos type ty_cdpos,

lwa_dd03l type ty_dd03l,

lwa_dd04t type ty_dd04t,

lwa_kna1 type ty_kna1,

lwa_user_addr type ty_user_addr,

lwa_merged type ty_merged,

lwa_vbak type ty_vbak,

lwa_vbap type ty_vbap,

lwa_vbkd type ty_vbkd.

  • Local variables

data:

lva_dd03l_tabix like sy-tabix,

lva_dd04t_tabix like sy-tabix.

  • Sort Data

sort pa_it_cdhdr by objectid changenr.

sort pa_it_cdpos by objectid changenr tabname tabkey fname.

sort pa_it_kna1 by kunnr.

sort pa_it_vbap by matnr.

sort pa_it_user_addr by bname.

sort pa_it_vbak by vbeln.

sort pa_it_vbkd by vbeln.

  • Change here

loop at pa_it_vbap into lwa_vbap.

read table pa_it_vbak into lwa_vbak with key vbeln = lwa_vbap-vbeln.

check sy-subrc eq 0.

move-corresponding lwa_vbak to lwa_merged.

  • End of Changes here

endloop.

loop at pa_it_vbak into lwa_vbak.

clear lwa_merged.

  • Assign sales order fields to reporting work area

lwa_merged-vbeln = lwa_vbak-vbeln.

lwa_merged-erdat = lwa_vbak-erdat.

lwa_merged-auart = lwa_vbak-auart.

lwa_merged-faksk = lwa_vbak-faksk.

lwa_merged-netwr = lwa_vbak-netwr.

lwa_merged-waerk = lwa_vbak-waerk.

lwa_merged-vkorg = lwa_vbak-vkorg.

lwa_merged-vtweg = lwa_vbak-vtweg.

lwa_merged-vkbur = lwa_vbak-vkbur.

lwa_merged-fkara = lwa_vbak-fkara.

lwa_merged-kunnr = lwa_vbak-kunnr.

  • lwa_merged-vbeln = lwa_vbap-vbeln.

  • lwa_merged-bname = 1wa_user_addr-bname.

lwa_merged-xblnr = lwa_vbak-xblnr.

  • Assgin Material to reporting work area

lwa_merged-matnr = lwa_vbap-matnr.

  • Get name of sold-to party from PA_IT_KNA1

clear lwa_kna1.

read table pa_it_kna1 into lwa_kna1

with key kunnr = lwa_vbak-kunnr

binary search.

lwa_merged-name1 = lwa_kna1-name1.

  • Get name of name from vbap

clear lwa_vbap.

read table pa_it_vbap into lwa_vbap

with key vbeln = lwa_vbap-vbeln

binary search.

lwa_merged-arktx = lwa_vbap-arktx.

  • Get business data from PA_IT_VBKD.

clear lwa_vbkd.

read table pa_it_vbkd into lwa_vbkd

with key vbeln = lwa_vbak-vbeln

binary search.

lwa_merged-fbuda = lwa_vbkd-fbuda.

  • Get internal note text for sales order

perform read_text using '0002'

'1'

lwa_merged-vbeln

'VBBK'

lwa_merged-intnote.

  • Get header note 1 text for sales order

perform read_text using 'Z002'

'1'

lwa_merged-vbeln

'VBBK'

lwa_merged-hdrnote.

  • Determine if change documents exist for sales order.

clear lwa_cdhdr.

read table pa_it_cdhdr into lwa_cdhdr

with key objectid = lwa_vbak-objectid.

if sy-subrc ne 0.

continue.

endif.

loop at pa_it_cdhdr into lwa_cdhdr

from sy-tabix.

lwa_merged-username = lwa_cdhdr-username.

lwa_merged-udate = lwa_cdhdr-udate.

lwa_merged-utime = lwa_cdhdr-utime.

lwa_merged-tcode = lwa_cdhdr-tcode.

clear lwa_cdpos.

read table pa_it_cdpos into lwa_cdpos

with key objectid = lwa_cdhdr-objectid

changenr = lwa_cdhdr-changenr

binary search.

loop at pa_it_cdpos into lwa_cdpos

from sy-tabix.

lwa_merged-tabname = lwa_cdpos-tabname.

lwa_merged-tabkey = lwa_cdpos-tabkey.

lwa_merged-fname = lwa_cdpos-fname.

lwa_merged-chngind = lwa_cdpos-chngind.

lwa_merged-value_new = lwa_cdpos-value_new.

lwa_merged-value_old = lwa_cdpos-value_old.

  • Get description for field - determine date element

clear lwa_dd03l.

read table lit_dd03l into lwa_dd03l

with key tabname = lwa_cdpos-tabname

fieldname = lwa_cdpos-fname

binary search.

lva_dd03l_tabix = sy-tabix.

if sy-subrc ne 0.

select single tabname fieldname as4local as4vers rollname

from dd03l

into lwa_dd03l

where tabname eq lwa_cdpos-tabname

and fieldname eq lwa_cdpos-fname

and as4local eq co_as4local_a.

if sy-subrc eq 0.

insert lwa_dd03l into lit_dd03l

index lva_dd03l_tabix.

endif.

endif.

  • If data element was found, get description

if not lwa_dd03l is initial.

clear lwa_dd04t.

read table lit_dd04t into lwa_dd04t

with key rollname = lwa_dd03l-rollname

ddlanguage = sy-langu

binary search.

lva_dd04t_tabix = sy-tabix.

if sy-subrc ne 0.

select single rollname ddlanguage as4local as4vers scrtext_l

from dd04t

into lwa_dd04t

where rollname eq lwa_dd03l-rollname

and ddlanguage eq sy-langu.

if sy-subrc eq 0.

insert lwa_dd04t into lit_dd04t

index lva_dd04t_tabix.

else.

lwa_dd04t-scrtext_l = 'Description for field not found'.

endif.

endif.

endif.

lwa_merged-scrtext_l = lwa_dd04t-scrtext_l.

append lwa_merged to pa_it_merged.

at end of changenr.

  • Only process field changes for this change document.

exit.

endat.

endloop.

at end of objectid.

  • Initialise work area so we know change document for order has

  • been processed.

clear lwa_merged.

  • Only process change documents for this sales order.

exit.

endat.

endloop.

endloop.

  • end of loop

endform. " merge_data

&----


*& Form build_field_catalog

&----


  • text

----


form build_field_catalog tables pa_it_fieldcat type slis_t_fieldcat_alv.

data:

  • Local variable

lva_col_pos type slis_fieldcat_alv-col_pos,

  • Local structure

st_fieldcat type slis_fieldcat_alv.

lva_col_pos = 0.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VBELN'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'VBELN'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VKBUR'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'VKBUR'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VKORG'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'VKORG'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'KUNNR'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'KUNNR'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

st_fieldcat-outputlen = '6'.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'NAME1'.

st_fieldcat-ref_tabname = 'KNA1'.

st_fieldcat-ref_fieldname = 'NAME1'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '15'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'MATNR'.

st_fieldcat-ref_tabname = 'VBAP'.

st_fieldcat-ref_fieldname = 'MATNR'.

st_fieldcat-row_pos = '1'.

st_fieldcat-col_pos = lva_col_pos.

st_fieldcat-outputlen = '6'.

append st_fieldcat to pa_it_fieldcat.

*

*clear st_fieldcat.

  • add 1 to lva_col_pos.

  • st_fieldcat-tabname = 'PA_IT_MERGED'.

  • st_fieldcat-fieldname = 'MATNR'.

  • st_fieldcat-ref_tabname = 'MARA'.

  • st_fieldcat-ref_fieldname = 'MATNR'.

  • st_fieldcat-row_pos = '1'.

  • st_fieldcat-col_pos = lva_col_pos.

  • st_fieldcat-outputlen = '6'.

  • append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'SCRTEXT_L'.

st_fieldcat-ref_tabname = 'DD04T'.

st_fieldcat-ref_fieldname = 'SCRTEXT_L'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '20'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'UDATE'.

st_fieldcat-ref_tabname = 'CDHDR'.

st_fieldcat-ref_fieldname = 'UDATE'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '10'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'USERNAME'.

st_fieldcat-ref_tabname = 'CDHDR'.

st_fieldcat-ref_fieldname = 'USERNAME'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

*

  • clear st_fieldcat.

  • add 1 to lva_col_pos.

  • st_fieldcat-tabname = 'PA_IT_MERGED'.

  • st_fieldcat-fieldname = 'FNAME'.

  • st_fieldcat-ref_tabname = 'CDPOS'.

  • st_fieldcat-ref_fieldname = 'FNAME'.

  • st_fieldcat-row_pos = '4'.

  • st_fieldcat-outputlen = '8'.

  • st_fieldcat-col_pos = lva_col_pos.

  • append st_fieldcat to pa_it_fieldcat.

*

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'CHNGIND'.

st_fieldcat-ref_tabname = 'CDPOS'.

st_fieldcat-ref_fieldname = 'CHNGIND'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '8'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'WAERK'.

st_fieldcat-ref_tabname = 'VBAK'.

st_fieldcat-ref_fieldname = 'WAERK'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '5'.

st_fieldcat-col_pos = lva_col_pos..

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VALUE_NEW'.

st_fieldcat-ref_tabname = 'CDPOS'.

st_fieldcat-ref_fieldname = 'VALUE_NEW'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

clear st_fieldcat.

add 1 to lva_col_pos.

st_fieldcat-tabname = 'PA_IT_MERGED'.

st_fieldcat-fieldname = 'VALUE_OLD'.

st_fieldcat-ref_tabname = 'CDPOS'.

st_fieldcat-ref_fieldname = 'VALUE_OLD'.

st_fieldcat-row_pos = '1'.

st_fieldcat-outputlen = '6'.

st_fieldcat-col_pos = lva_col_pos.

append st_fieldcat to pa_it_fieldcat.

endform. " build_field_catalog

&----


*& Form output_report

&----


  • text

----


form output_report tables pa_it_fieldcat type slis_t_fieldcat_alv

pa_it_merged type ty_it_merged.

  • Local variables

data:

lva_formname type slis_formname,

lva_repid like sy-repid.

lva_repid = sy-repid.

lva_formname = 'ALV_USER_COMMAND'.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = lva_repid

i_callback_user_command = lva_formname

i_save = 'A'

is_variant = st_variant

it_fieldcat = pa_it_fieldcat[]

tables

t_outtab = pa_it_merged

exceptions

program_error = 1

others = 2.

endform. " output_report

&----


*& Form alv_user_command

&----


  • text

----


form alv_user_command using pa_ucomm like sy-ucomm

pa_selfield type slis_selfield.

  • Local work areas

data:

lwa_merged type ty_merged.

clear lwa_merged.

read table it_merged into lwa_merged

index pa_selfield-tabindex.

case pa_selfield-fieldname.

when 'VBELN'.

  • Contract Number

set parameter id 'AUN' field lwa_merged-vbeln.

call transaction 'VA03' and skip first screen.

  • S_BCE_68001393

when 'USERNAME'.

  • Username

set parameter id 'username' field lwa_merged-username.

call transaction 'S_BCE_68001393' and skip first screen.

when 'KUNNR'.

  • Customer number

set parameter id 'KUN' field lwa_merged-kunnr.

set parameter id 'VKO' field space.

set parameter id 'VTW' field space.

set parameter id 'SPA' field space.

call transaction 'XD03' and skip first screen.

endcase.

endform. " alv_user_command

&----


*& Form read_text

&----


  • text

----


form read_text using pa_id

pa_inline_count

pa_name

pa_object

pa_text.

  • Local internal tables

data:

lit_inlines type ty_it_lines,

lit_lines type ty_it_lines.

  • Local work areas

data:

lwa_lines type ty_lines.

  • Local variables

data:

lva_tdname like thead-tdname.

refresh: lit_inlines,

lit_lines.

lva_tdname = pa_name.

call function 'READ_TEXT_INLINE'

exporting

id = pa_id

inline_count = pa_inline_count

language = sy-langu

name = lva_tdname

object = pa_object

tables

inlines = lit_inlines

lines = lit_lines

exceptions

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

others = 7.

loop at lit_lines into lwa_lines.

concatenate pa_text

lwa_lines-tdline

into pa_text separated by space.

endloop.

endform. " read_text ENDLOOP.

Former Member
0 Kudos

Hi Piroz,

You just write the code as below...

Select VBELN POSNR MATNR from VBAP into table it_vbap

for all entries in it_vbak

where vbeln = it_vbak-vbeln.

if sy-subrc eq 0.

sort it_vbap by vbeln posnr.

Select MATNR MAKTX from MAKT into table it_MAKT

for all entries in it_vbap

where matnr = it_vbak-matnr

and SPRAS = sy-langu.

if sy-subrc eq 0.

sort it_makt by matnr.

endif.

endif.

Read the table IT_MAKT where ever you wanted to populate the Material Numbers & Descriptions.

Thanks,

Murali.

0 Kudos

Hi Murli

The select Statement is working ok but how to Extract the material number from read see below my coding

  • Selection screen

Select MATNR from VBAP into table it_vbap

for all entries in it_vbak

where vbeln = it_vbak-vbeln.

if sy-subrc eq 0.

sort it_vbap by vbeln posnr.

Select MAKTX from MAKT into table it_makt

for all entries in it_vbap

where

matnr eq it_vbap-matnr

and SPRAS = sy-langu.

if sy-subrc eq 0.

sort it_makt by matnr.

endif.

endif.

  • Get Material No

clear lwa_vbap.

read table pa_it_vbap into lwa_vbap

with key matnr = lwa_vbap-matnr

binary search.

lwa_merged-matnr = lwa_vbap-matnr.

But no luck ............................?