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

ALV1

Former Member
0 Likes
697

hi guru's,

i want to provide different colors for different columns in my ALV report, and also i want to call editor for different colums . how would we do it.

help me.

thanks in advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
629

Sample code...........

    • tables used -

tables: mkpf,

mseg,

lfa1,

makt.

    • global hashed tables used

*

data: begin of wa_mkpf, "header

mblnr like mkpf-mblnr,

mjahr like mkpf-mjahr,

budat like mkpf-budat,

xblnr like mkpf-xblnr,

end of wa_mkpf.

data: ht_mkpf like hashed table of wa_mkpf

with unique key mblnr mjahr

with header line.

data: st_mkpf like standard table of wa_mkpf

with header line.

*

data: begin of wa_mseg, " line items

mblnr like mseg-mblnr,

mjahr like mseg-mjahr,

zeile like mseg-zeile,

bwart like mseg-bwart,

charg like mseg-charg,

matnr like mseg-matnr,

lifnr like mseg-lifnr,

erfmg like mseg-erfmg,

erfme like mseg-erfme,

end of wa_mseg.

data ht_mseg like hashed table of wa_mseg

with unique key mblnr mjahr zeile

with header line.

data st_mseg like standard table of wa_mseg

with header line.

    • cache structure for lfa1 records

data: begin of wa_lfa1,

lifnr like lfa1-lifnr,

name1 like lfa1-name1,

end of wa_lfa1.

data ht_lfa1 like hashed table of wa_lfa1

with unique key lifnr

with header line.

    • cache structure for material related data

data: begin of wa_material,

matnr like makt-matnr,

maktx like makt-maktx,

end of wa_material.

data: ht_material like hashed table of wa_material

with unique key matnr

with header line.

    • result table

data: begin of wa_lst, "

budat like mkpf-budat,

mblnr like mseg-mblnr,

lifnr like mseg-lifnr,

name1 like lfa1-name1,

xblnr like mkpf-xblnr,

zeile like mseg-zeile,

charg like mseg-charg,

matnr like mseg-matnr,

maktx like makt-maktx,

erfmg like mseg-erfmg,

erfme like mseg-erfme,

mjahr like mseg-mjahr,

end of wa_lst.

data: ht_lst like hashed table of wa_lst

with unique key mblnr mjahr zeile

with header line.

data: begin of wa_lst1, " sumary by material

matnr like mseg-matnr,

maktx like makt-maktx,

erfmg like mseg-erfmg,

erfme like mseg-erfme,

color_line(4) TYPE c, " Line color

color_cell TYPE lvc_t_scol, " Cell color

celltab type LVC_T_STYL,

end of wa_lst1.

data: ht_lst1 like hashed table of wa_lst1

with unique key matnr

with header line.

    • structures for alv grid display.

    • itabs

type-pools: slis.

data: it_lst like standard table of wa_lst with header line,

it_fieldcat_lst type slis_t_fieldcat_alv with header line,

it_sort_lst type slis_t_sortinfo_alv,

it_lst1 like standard table of wa_lst1 with header line,

it_fieldcat_lst1 type slis_t_fieldcat_alv with header line,

it_sort_lst1 type slis_t_sortinfo_alv.

    • structures

data: wa_sort type slis_sortinfo_alv,

ls_layout type slis_layout_alv.

    • color management.

DATA : wa_color TYPE lvc_s_scol.

  • Internal table for color management.

DATA : it_color TYPE TABLE OF lvc_s_scol.

  • itab for input enabling.

DATA: lt_celltab TYPE lvc_t_styl. "

    • global varialbes

data: g_lines type i.

data: g_repid like sy-repid,

ok_code like sy-ucomm.

    • selection-screen

"text: Dates:

select-options: so_budat for mkpf-budat default sy-datum.

"text: Material numbers.

select-options: so_matnr for mseg-matnr.

selection-screen uline.

selection-screen skip 1.

"Text: show summary by material.

parameters: gp_bymat as checkbox default ''.

parameters: gp_hier as checkbox default 'X'.

start-of-selection.

perform get_data.

perform show_data.

end-of-selection.

----


  • FORM get_data *

----


  • ........ *

----


form get_data.

select mblnr mjahr budat xblnr

into table ht_mkpf

from mkpf

where budat in so_budat. " make use of std index.

    • have we retrieved data from mkpf?

describe table ht_mkpf lines g_lines.

if g_lines > 0.

    • if true then retrieve all related records from mseg.

    • Doing this way we make sure that the access is by primary key

    • of mseg.

    • The reason is that is faster to filter them in memory

    • than to allow the db server to do it.

select mblnr mjahr zeile bwart charg

matnr lifnr erfmg erfme

into table ht_mseg

from mseg

for all entries in ht_mkpf

where mblnr = ht_mkpf-mblnr

and mjahr = ht_mkpf-mjahr.

endif.

    • fill t_lst or t_lst1 according to user's choice.

if gp_bymat = ' '.

perform fill_ht_lst.

else.

perform fill_ht_lst1.

endif.

endform.

form fill_ht_lst.

refresh ht_lst.

    • Example: how to discard unwanted data in an efficient way.

loop at ht_mseg.

  • filter unwanted data

check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

check ht_mseg-matnr in so_matnr.

  • read header line.

read table ht_mkpf with table key mblnr = ht_mseg-mblnr

mjahr = ht_mseg-mjahr.

clear ht_lst.

  • * note : this may be faster if you specify field by field.

move-corresponding ht_mkpf to ht_lst.

move-corresponding ht_mseg to ht_lst.

perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.

perform read_material using ht_mseg-matnr changing ht_lst-maktx.

insert table ht_lst.

endloop.

endform.

form fill_ht_lst1.

data: colorear.

refresh ht_lst1.

    • Example: how to discard unwanted data in an efficient way.

    • hot to simulate a collect in a faster way

loop at ht_mseg.

  • filter unwanted data

check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

check ht_mseg-matnr in so_matnr.

  • * note : this may be faster if you specify field by field.

read table ht_lst1 with table key matnr = ht_mseg-matnr

transporting erfmg.

if sy-subrc <> 0. " if matnr doesn't exist in sumary table

" insert a new record

clear ht_lst1.

ht_lst1-matnr = ht_mseg-matnr.

perform read_material using ht_mseg-matnr changing ht_lst1-maktx.

ht_lst1-erfmg = ht_mseg-erfmg.

ht_lst1-erfme = ht_mseg-erfme.

if colorear = ''.

colorear = 'X'.

refresh it_color.

ht_lst1-color_cell[] = it_color[].

MOVE 'C410' TO ht_lst1-color_line.

else.

colorear = ' '.

refresh it_color. clear it_color.

MOVE 'MATNR' TO wa_color-fname.

MOVE '6' TO wa_color-color-col.

MOVE '1' TO wa_color-color-int.

MOVE '1' TO wa_color-color-inv.

APPEND wa_color TO it_color.

MOVE 'MAKTX' TO wa_color-fname.

MOVE '3' TO wa_color-color-col.

MOVE '1' TO wa_color-color-int.

MOVE '1' TO wa_color-color-inv.

APPEND wa_color TO it_color.

MOVE 'ERFMG' TO wa_color-fname.

MOVE '5' TO wa_color-color-col.

MOVE '1' TO wa_color-color-int.

MOVE '1' TO wa_color-color-inv.

APPEND wa_color TO it_color.

ht_lst1-color_cell[] = it_color[].

clear ht_lst1-color_line.

endif.

insert table ht_lst1.

else." a record was found.

" collect erfmg. To do so, fill in the unique key and add

" the numeric fields.

ht_lst1-matnr = ht_mseg-matnr.

add ht_mseg-erfmg to ht_lst1-erfmg.

modify table ht_lst1 transporting erfmg.

endif.

endloop.

endform.

    • implementation of cache for lfa1.

form read_lfa1 using p_lifnr changing p_name1.

read table ht_lfa1 with table key lifnr = p_lifnr

transporting name1.

if sy-subrc <> 0.

clear ht_lfa1.

ht_lfa1-lifnr = p_lifnr.

select single name1

into ht_lfa1-name1

from lfa1

where lifnr = p_lifnr.

if sy-subrc <> 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.

insert table ht_lfa1.

endif.

p_name1 = ht_lfa1-name1.

endform.

    • implementation of cache for material data

form read_material using p_matnr changing p_maktx.

read table ht_material with table key matnr = p_matnr

transporting maktx.

if sy-subrc <> 0.

ht_material-matnr = p_matnr.

select single maktx into ht_material-maktx

from makt

where spras = sy-langu

and matnr = p_matnr.

if sy-subrc <> 0. ht_material-maktx = 'n/a in makt'. endif.

insert table ht_material.

endif.

p_maktx = ht_material-maktx.

endform.

form show_data.

if gp_hier = 'X'. "no anda.

  • perform show_hierarchicalALV.

else.

if gp_bymat = ' '.

perform show_ht_lst.

else.

perform show_ht_lst1.

endif.

endif.

endform.

form show_hierarchicalALV.

st_mkpf[] = ht_mkpf[].

st_mseg[] = ht_mseg[].

call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

  • exporting

  • I_INTERFACE_CHECK = ' '

  • I_CALLBACK_PROGRAM =

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

  • IT_FIELDCAT =

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • i_tabname_header =

  • i_tabname_item =

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

  • is_keyinfo =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

tables

t_outtab_header = st_mkpf

t_outtab_item = st_mseg

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

if sy-subrc <> 0.

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

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

endif.

endform.

form show_ht_lst.

"needed because the FM can't use a hashed table.

it_lst[] = ht_lst[].

perform fill_layout using 'full display'

changing ls_layout.

perform fill_columns_lst.

  • perform sort_lst.

g_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = ls_layout

it_fieldcat = it_fieldcat_lst[]

  • it_sort = it_sort_lst

tables

t_outtab = it_lst

exceptions

program_error = 1

others = 2.

endform.

form show_ht_lst1.

"needed because the FM can't use a hashed table.

it_lst1[] = ht_lst1[].

perform fill_layout using 'Sumary by matnr'

changing ls_layout.

perform fill_columns_lst1.

  • perform sort_lst.

g_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = ls_layout

it_fieldcat = it_fieldcat_lst1[]

  • it_sort = it_sort_lst

tables

t_outtab = it_lst1

exceptions

program_error = 1

others = 2.

endform.

form fill_layout using p_window_titlebar

changing cs_layo type slis_layout_alv.

clear cs_layo.

cs_layo-window_titlebar = p_window_titlebar.

cs_layo-edit = 'X'.

cs_layo-edit_mode = space.

MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.

  • Field that identify cell color in inetrnal table

MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.

  • move 'CELLTAB' TO cs_layo-stylefname.

endform. " armar_layout_stock

form set_pf_status using rt_extab type slis_t_extab.

    • create a new status

    • and then select extras -> adjust template -> listviewer

set pf-status 'VISTA'.

endform. "set_pf_status

define add_lst.

clear it_fieldcat_lst.

it_fieldcat_lst-fieldname = &1.

it_fieldcat_lst-outputlen = &2.

it_fieldcat_lst-ddictxt = 'L'.

it_fieldcat_lst-seltext_l = &1.

it_fieldcat_lst-seltext_m = &1.

it_fieldcat_lst-seltext_m = &1.

if &1 = 'MATNR'.

it_fieldcat_lst-emphasize = 'C111'.

endif.

append it_fieldcat_lst.

end-of-definition.

define add_lst1.

clear it_fieldcat_lst.

it_fieldcat_lst1-fieldname = &1.

it_fieldcat_lst1-outputlen = &2.

it_fieldcat_lst1-ddictxt = 'L'.

it_fieldcat_lst1-seltext_l = &1.

it_fieldcat_lst1-seltext_m = &1.

it_fieldcat_lst1-seltext_m = &1.

append it_fieldcat_lst1.

end-of-definition.

form fill_columns_lst.

  • set columns for output.

refresh it_fieldcat_lst.

*

add_lst 'BUDAT' 10.

add_lst 'MBLNR' 10.

add_lst 'LIFNR' 10.

add_lst 'NAME1' 35.

add_lst 'XBLNR' 15.

add_lst 'ZEILE' 5.

add_lst 'CHARG' 10.

add_lst 'MATNR' 18.

add_lst 'MAKTX' 30.

add_lst 'ERFMG' 17.

add_lst 'ERFME' 5.

add_lst 'MJAHR' 4.

endform.

form fill_columns_lst1.

  • set columns for output.

refresh it_fieldcat_lst1.

add_lst1 'MATNR' 18.

add_lst1 'MAKTX' 30.

add_lst1 'ERFMG' 17.

add_lst1 'ERFME' 5..

endform.

Regards,

Pavan

3 REPLIES 3
Read only

Former Member
0 Likes
630

Sample code...........

    • tables used -

tables: mkpf,

mseg,

lfa1,

makt.

    • global hashed tables used

*

data: begin of wa_mkpf, "header

mblnr like mkpf-mblnr,

mjahr like mkpf-mjahr,

budat like mkpf-budat,

xblnr like mkpf-xblnr,

end of wa_mkpf.

data: ht_mkpf like hashed table of wa_mkpf

with unique key mblnr mjahr

with header line.

data: st_mkpf like standard table of wa_mkpf

with header line.

*

data: begin of wa_mseg, " line items

mblnr like mseg-mblnr,

mjahr like mseg-mjahr,

zeile like mseg-zeile,

bwart like mseg-bwart,

charg like mseg-charg,

matnr like mseg-matnr,

lifnr like mseg-lifnr,

erfmg like mseg-erfmg,

erfme like mseg-erfme,

end of wa_mseg.

data ht_mseg like hashed table of wa_mseg

with unique key mblnr mjahr zeile

with header line.

data st_mseg like standard table of wa_mseg

with header line.

    • cache structure for lfa1 records

data: begin of wa_lfa1,

lifnr like lfa1-lifnr,

name1 like lfa1-name1,

end of wa_lfa1.

data ht_lfa1 like hashed table of wa_lfa1

with unique key lifnr

with header line.

    • cache structure for material related data

data: begin of wa_material,

matnr like makt-matnr,

maktx like makt-maktx,

end of wa_material.

data: ht_material like hashed table of wa_material

with unique key matnr

with header line.

    • result table

data: begin of wa_lst, "

budat like mkpf-budat,

mblnr like mseg-mblnr,

lifnr like mseg-lifnr,

name1 like lfa1-name1,

xblnr like mkpf-xblnr,

zeile like mseg-zeile,

charg like mseg-charg,

matnr like mseg-matnr,

maktx like makt-maktx,

erfmg like mseg-erfmg,

erfme like mseg-erfme,

mjahr like mseg-mjahr,

end of wa_lst.

data: ht_lst like hashed table of wa_lst

with unique key mblnr mjahr zeile

with header line.

data: begin of wa_lst1, " sumary by material

matnr like mseg-matnr,

maktx like makt-maktx,

erfmg like mseg-erfmg,

erfme like mseg-erfme,

color_line(4) TYPE c, " Line color

color_cell TYPE lvc_t_scol, " Cell color

celltab type LVC_T_STYL,

end of wa_lst1.

data: ht_lst1 like hashed table of wa_lst1

with unique key matnr

with header line.

    • structures for alv grid display.

    • itabs

type-pools: slis.

data: it_lst like standard table of wa_lst with header line,

it_fieldcat_lst type slis_t_fieldcat_alv with header line,

it_sort_lst type slis_t_sortinfo_alv,

it_lst1 like standard table of wa_lst1 with header line,

it_fieldcat_lst1 type slis_t_fieldcat_alv with header line,

it_sort_lst1 type slis_t_sortinfo_alv.

    • structures

data: wa_sort type slis_sortinfo_alv,

ls_layout type slis_layout_alv.

    • color management.

DATA : wa_color TYPE lvc_s_scol.

  • Internal table for color management.

DATA : it_color TYPE TABLE OF lvc_s_scol.

  • itab for input enabling.

DATA: lt_celltab TYPE lvc_t_styl. "

    • global varialbes

data: g_lines type i.

data: g_repid like sy-repid,

ok_code like sy-ucomm.

    • selection-screen

"text: Dates:

select-options: so_budat for mkpf-budat default sy-datum.

"text: Material numbers.

select-options: so_matnr for mseg-matnr.

selection-screen uline.

selection-screen skip 1.

"Text: show summary by material.

parameters: gp_bymat as checkbox default ''.

parameters: gp_hier as checkbox default 'X'.

start-of-selection.

perform get_data.

perform show_data.

end-of-selection.

----


  • FORM get_data *

----


  • ........ *

----


form get_data.

select mblnr mjahr budat xblnr

into table ht_mkpf

from mkpf

where budat in so_budat. " make use of std index.

    • have we retrieved data from mkpf?

describe table ht_mkpf lines g_lines.

if g_lines > 0.

    • if true then retrieve all related records from mseg.

    • Doing this way we make sure that the access is by primary key

    • of mseg.

    • The reason is that is faster to filter them in memory

    • than to allow the db server to do it.

select mblnr mjahr zeile bwart charg

matnr lifnr erfmg erfme

into table ht_mseg

from mseg

for all entries in ht_mkpf

where mblnr = ht_mkpf-mblnr

and mjahr = ht_mkpf-mjahr.

endif.

    • fill t_lst or t_lst1 according to user's choice.

if gp_bymat = ' '.

perform fill_ht_lst.

else.

perform fill_ht_lst1.

endif.

endform.

form fill_ht_lst.

refresh ht_lst.

    • Example: how to discard unwanted data in an efficient way.

loop at ht_mseg.

  • filter unwanted data

check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

check ht_mseg-matnr in so_matnr.

  • read header line.

read table ht_mkpf with table key mblnr = ht_mseg-mblnr

mjahr = ht_mseg-mjahr.

clear ht_lst.

  • * note : this may be faster if you specify field by field.

move-corresponding ht_mkpf to ht_lst.

move-corresponding ht_mseg to ht_lst.

perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.

perform read_material using ht_mseg-matnr changing ht_lst-maktx.

insert table ht_lst.

endloop.

endform.

form fill_ht_lst1.

data: colorear.

refresh ht_lst1.

    • Example: how to discard unwanted data in an efficient way.

    • hot to simulate a collect in a faster way

loop at ht_mseg.

  • filter unwanted data

check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.

check ht_mseg-matnr in so_matnr.

  • * note : this may be faster if you specify field by field.

read table ht_lst1 with table key matnr = ht_mseg-matnr

transporting erfmg.

if sy-subrc <> 0. " if matnr doesn't exist in sumary table

" insert a new record

clear ht_lst1.

ht_lst1-matnr = ht_mseg-matnr.

perform read_material using ht_mseg-matnr changing ht_lst1-maktx.

ht_lst1-erfmg = ht_mseg-erfmg.

ht_lst1-erfme = ht_mseg-erfme.

if colorear = ''.

colorear = 'X'.

refresh it_color.

ht_lst1-color_cell[] = it_color[].

MOVE 'C410' TO ht_lst1-color_line.

else.

colorear = ' '.

refresh it_color. clear it_color.

MOVE 'MATNR' TO wa_color-fname.

MOVE '6' TO wa_color-color-col.

MOVE '1' TO wa_color-color-int.

MOVE '1' TO wa_color-color-inv.

APPEND wa_color TO it_color.

MOVE 'MAKTX' TO wa_color-fname.

MOVE '3' TO wa_color-color-col.

MOVE '1' TO wa_color-color-int.

MOVE '1' TO wa_color-color-inv.

APPEND wa_color TO it_color.

MOVE 'ERFMG' TO wa_color-fname.

MOVE '5' TO wa_color-color-col.

MOVE '1' TO wa_color-color-int.

MOVE '1' TO wa_color-color-inv.

APPEND wa_color TO it_color.

ht_lst1-color_cell[] = it_color[].

clear ht_lst1-color_line.

endif.

insert table ht_lst1.

else." a record was found.

" collect erfmg. To do so, fill in the unique key and add

" the numeric fields.

ht_lst1-matnr = ht_mseg-matnr.

add ht_mseg-erfmg to ht_lst1-erfmg.

modify table ht_lst1 transporting erfmg.

endif.

endloop.

endform.

    • implementation of cache for lfa1.

form read_lfa1 using p_lifnr changing p_name1.

read table ht_lfa1 with table key lifnr = p_lifnr

transporting name1.

if sy-subrc <> 0.

clear ht_lfa1.

ht_lfa1-lifnr = p_lifnr.

select single name1

into ht_lfa1-name1

from lfa1

where lifnr = p_lifnr.

if sy-subrc <> 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.

insert table ht_lfa1.

endif.

p_name1 = ht_lfa1-name1.

endform.

    • implementation of cache for material data

form read_material using p_matnr changing p_maktx.

read table ht_material with table key matnr = p_matnr

transporting maktx.

if sy-subrc <> 0.

ht_material-matnr = p_matnr.

select single maktx into ht_material-maktx

from makt

where spras = sy-langu

and matnr = p_matnr.

if sy-subrc <> 0. ht_material-maktx = 'n/a in makt'. endif.

insert table ht_material.

endif.

p_maktx = ht_material-maktx.

endform.

form show_data.

if gp_hier = 'X'. "no anda.

  • perform show_hierarchicalALV.

else.

if gp_bymat = ' '.

perform show_ht_lst.

else.

perform show_ht_lst1.

endif.

endif.

endform.

form show_hierarchicalALV.

st_mkpf[] = ht_mkpf[].

st_mseg[] = ht_mseg[].

call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

  • exporting

  • I_INTERFACE_CHECK = ' '

  • I_CALLBACK_PROGRAM =

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

  • IT_FIELDCAT =

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • i_tabname_header =

  • i_tabname_item =

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

  • is_keyinfo =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

tables

t_outtab_header = st_mkpf

t_outtab_item = st_mseg

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

if sy-subrc <> 0.

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

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

endif.

endform.

form show_ht_lst.

"needed because the FM can't use a hashed table.

it_lst[] = ht_lst[].

perform fill_layout using 'full display'

changing ls_layout.

perform fill_columns_lst.

  • perform sort_lst.

g_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = ls_layout

it_fieldcat = it_fieldcat_lst[]

  • it_sort = it_sort_lst

tables

t_outtab = it_lst

exceptions

program_error = 1

others = 2.

endform.

form show_ht_lst1.

"needed because the FM can't use a hashed table.

it_lst1[] = ht_lst1[].

perform fill_layout using 'Sumary by matnr'

changing ls_layout.

perform fill_columns_lst1.

  • perform sort_lst.

g_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = ls_layout

it_fieldcat = it_fieldcat_lst1[]

  • it_sort = it_sort_lst

tables

t_outtab = it_lst1

exceptions

program_error = 1

others = 2.

endform.

form fill_layout using p_window_titlebar

changing cs_layo type slis_layout_alv.

clear cs_layo.

cs_layo-window_titlebar = p_window_titlebar.

cs_layo-edit = 'X'.

cs_layo-edit_mode = space.

MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.

  • Field that identify cell color in inetrnal table

MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.

  • move 'CELLTAB' TO cs_layo-stylefname.

endform. " armar_layout_stock

form set_pf_status using rt_extab type slis_t_extab.

    • create a new status

    • and then select extras -> adjust template -> listviewer

set pf-status 'VISTA'.

endform. "set_pf_status

define add_lst.

clear it_fieldcat_lst.

it_fieldcat_lst-fieldname = &1.

it_fieldcat_lst-outputlen = &2.

it_fieldcat_lst-ddictxt = 'L'.

it_fieldcat_lst-seltext_l = &1.

it_fieldcat_lst-seltext_m = &1.

it_fieldcat_lst-seltext_m = &1.

if &1 = 'MATNR'.

it_fieldcat_lst-emphasize = 'C111'.

endif.

append it_fieldcat_lst.

end-of-definition.

define add_lst1.

clear it_fieldcat_lst.

it_fieldcat_lst1-fieldname = &1.

it_fieldcat_lst1-outputlen = &2.

it_fieldcat_lst1-ddictxt = 'L'.

it_fieldcat_lst1-seltext_l = &1.

it_fieldcat_lst1-seltext_m = &1.

it_fieldcat_lst1-seltext_m = &1.

append it_fieldcat_lst1.

end-of-definition.

form fill_columns_lst.

  • set columns for output.

refresh it_fieldcat_lst.

*

add_lst 'BUDAT' 10.

add_lst 'MBLNR' 10.

add_lst 'LIFNR' 10.

add_lst 'NAME1' 35.

add_lst 'XBLNR' 15.

add_lst 'ZEILE' 5.

add_lst 'CHARG' 10.

add_lst 'MATNR' 18.

add_lst 'MAKTX' 30.

add_lst 'ERFMG' 17.

add_lst 'ERFME' 5.

add_lst 'MJAHR' 4.

endform.

form fill_columns_lst1.

  • set columns for output.

refresh it_fieldcat_lst1.

add_lst1 'MATNR' 18.

add_lst1 'MAKTX' 30.

add_lst1 'ERFMG' 17.

add_lst1 'ERFME' 5..

endform.

Regards,

Pavan

Read only

Former Member
0 Likes
629

Example 2.

&----


*& Report ZDEMO_ALVGRID *

*& *

&----


*& *

*& Example of a simple ALV Grid Report *

*& ................................... *

*& *

*& The basic ALV grid, Enhanced to display each row in a different *

*& colour *

&----


REPORT zdemo_alvgrid .

TABLES: ekko.

type-pools: slis. "ALV Declarations

*Data Declaration

*----


TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

line_color(4) type c, "Used to store row color attributes

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid.

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

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform display_alv_report.

&----


*& Form BUILD_FIELDCATALOG

&----


  • Build Fieldcatalog for ALV Report

----


form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

&----


*& Form BUILD_LAYOUT

&----


  • Build layout for ALV grid report

----


form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • Set layout field for row attributes(i.e. color)

gd_layout-info_fieldname = 'LINE_COLOR'.

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'helllllo'.

endform. " BUILD_LAYOUT

&----


*& Form DISPLAY_ALV_REPORT

&----


  • Display report using ALV grid

----


form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

  • i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

  • i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

  • IT_EVENTS = GT_XEVENTS

i_save = 'X'

  • is_variant = z_template

tables

t_outtab = it_ekko

exceptions

program_error = 1

others = 2.

if sy-subrc <> 0.

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

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

endif.

endform. " DISPLAY_ALV_REPORT

&----


*& Form DATA_RETRIEVAL

&----


  • Retrieve data form EKPO table and populate itab it_ekko

----


form data_retrieval.

data: ld_color(1) type c.

select ebeln ebelp statu aedat matnr menge meins netpr peinh

up to 10 rows

from ekpo

into table it_ekko.

*Populate field with color attributes

loop at it_ekko into wa_ekko.

  • Populate color variable with colour properties

  • Char 1 = C (This is a color property)

  • Char 2 = 3 (Color codes: 1 - 7)

  • Char 3 = Intensified on/off ( 1 or 0 )

  • Char 4 = Inverse display on/off ( 1 or 0 )

  • i.e. wa_ekko-line_color = 'C410'

ld_color = ld_color + 1.

  • Only 7 colours so need to reset color value

if ld_color = 8.

ld_color = 1.

endif.

concatenate 'C' ld_color '10' into wa_ekko-line_color.

  • wa_ekko-line_color = 'C410'.

modify it_ekko from wa_ekko.

endloop.

endform. " DATA_RETRIEVAL

Regards,

Pavan

Read only

Former Member
0 Likes
629

Hi friend ...

" here is   program for the differnt  colours for  each column  .....  please go  
" through the last   10 lines of this program

*&---------------------------------------------------------------------*
*& Report  ZTEST_ALVGRID                                               *
*& Example of a simple ALV Grid Report                                 *
*& The basic ALV grid, Enhanced to display each row in a different     *
*& colour                                                              *
*&---------------------------------------------------------------------*

REPORT  ztest_alvgrid                 .

TABLES:     ekko.

type-pools: slis.                                 "ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_ekko,
  ebeln TYPE ekpo-ebeln,
  ebelp TYPE ekpo-ebelp,
  statu TYPE ekpo-statu,
  aedat TYPE ekpo-aedat,
  matnr TYPE ekpo-matnr,
  menge TYPE ekpo-menge,
  meins TYPE ekpo-meins,
  netpr TYPE ekpo-netpr,
  peinh TYPE ekpo-peinh,
  line_color(4) type c,     "Used to store row color attributes
 END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
      wa_ekko TYPE t_ekko.

*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
      gd_tab_group type slis_t_sp_group_alv,
      gd_layout    type slis_layout_alv,
      gd_repid     like sy-repid.


************************************************************************
*Start-of-selection.
START-OF-SELECTION.

perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.


*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
form build_fieldcatalog.

* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you  more control of the final product.

* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
*               I.e. Field type may be required in-order for
*                    the 'TOTAL' function to work.

  fieldcatalog-fieldname   = 'EBELN'.
  fieldcatalog-seltext_m   = 'Purchase Order'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  fieldcatalog-emphasize   = 'X'.
  fieldcatalog-key         = 'X'.
*  fieldcatalog-do_sum      = 'X'.
*  fieldcatalog-no_zero     = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'EBELP'.
  fieldcatalog-seltext_m   = 'PO Item'.
  fieldcatalog-col_pos     = 1.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'STATU'.
  fieldcatalog-seltext_m   = 'Status'.
  fieldcatalog-col_pos     = 2.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'AEDAT'.
  fieldcatalog-seltext_m   = 'Item change date'.
  fieldcatalog-col_pos     = 3.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MATNR'.
  fieldcatalog-seltext_m   = 'Material Number'.
  fieldcatalog-col_pos     = 4.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MENGE'.
  fieldcatalog-seltext_m   = 'PO quantity'.
  fieldcatalog-col_pos     = 5.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MEINS'.
  fieldcatalog-seltext_m   = 'Order Unit'.
  fieldcatalog-col_pos     = 6.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'NETPR'.
  fieldcatalog-seltext_m   = 'Net Price'.
  fieldcatalog-col_pos     = 7.
  fieldcatalog-outputlen   = 15.
  fieldcatalog-datatype     = 'CURR'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'PEINH'.
  fieldcatalog-seltext_m   = 'Price Unit'.
  fieldcatalog-col_pos     = 8.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.
endform.                    " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
form build_layout.
  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-totals_text       = 'Totals'(201).
* Set layout field for row attributes(i.e. color) 
  gd_layout-info_fieldname =      'LINE_COLOR'.
*  gd_layout-totals_only        = 'X'.
*  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
*                                         "click(press f2)
*  gd_layout-zebra             = 'X'.
*  gd_layout-group_change_edit = 'X'.
*  gd_layout-header_text       = 'helllllo'.
endform.                    " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
form display_alv_report.
  gd_repid = sy-repid.
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program      = gd_repid
*            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
*            i_callback_user_command = 'USER_COMMAND'
*            i_grid_title           = outtext
            is_layout               = gd_layout
            it_fieldcat             = fieldcatalog[]
*            it_special_groups       = gd_tabgroup
*            IT_EVENTS                = GT_XEVENTS
            i_save                  = 'X'
*            is_variant              = z_template

       tables
            t_outtab                = it_ekko
       exceptions
            program_error           = 1
            others                  = 2.
  if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
endform.                    " DISPLAY_ALV_REPORT


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
form data_retrieval.
data: ld_color(1) type c.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
 up to 10 rows
  from ekpo
  into table it_ekko.

*Populate field with color attributes
loop at it_ekko into wa_ekko.
* Populate color variable with colour properties
* Char 1 = C (This is a color property)
* Char 2 = 3 (Color codes: 1 - 7)
* Char 3 = Intensified on/off ( 1 or 0 )
* Char 4 = Inverse display on/off ( 1 or 0 )
*           i.e. wa_ekko-line_color = 'C410'
  ld_color = ld_color + 1.

* Only 7 colours so need to reset color value
  if ld_color = 8.
    ld_color = 1.
  endif.
  concatenate 'C' ld_color '10' into wa_ekko-line_color.
*  wa_ekko-line_color = 'C410'.
  modify it_ekko from wa_ekko.
endloop.
endform.                    " DATA_RETRIEVAL

reward points if it is usefulll ,, enjoy the weekend

Girish