Skip to Content
0
Former Member
Feb 07, 2008 at 04:17 AM

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

53 Views

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.