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

block alv....

Former Member
0 Likes
5,623

"can any one give me a code sample of block alv?"

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
5,538

HI,

try this

REPORT zanid_test MESSAGE-ID zz.

*

----


  • Declarations for BLOCK ALV DISPLAY

----


*--type pools

TYPE-POOLS:slis.

DATA:x_layout TYPE slis_layout_alv,

t_field TYPE slis_t_fieldcat_alv,

*--field catalog

x_fldcat LIKE LINE OF t_field,

*--to hold all the events

t_events TYPE slis_t_event,

x_events TYPE slis_alv_event,

t_sort TYPE slis_t_sortinfo_alv,

x_sort LIKE LINE OF t_sort ,

*--Print Layout

x_print_layout TYPE slis_print_alv.

*----Macro to add field catalog.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

DEFINE add_catalog.

clear x_fldcat.

x_fldcat-fieldname = &1.

x_fldcat-seltext_m = &2.

x_fldcat-outputlen = &3.

x_fldcat-tech = &4.

x_fldcat-col_pos = &5.

x_fldcat-no_zero = 'X'.

x_fldcat-ddictxt = 'M'.

x_fldcat-datatype = &6.

x_fldcat-ddic_outputlen = &7.

if &6 = 'N'.

x_fldcat-lzero = 'X'.

endif.

*--build field catalog

append x_fldcat to t_field.

END-OF-DEFINITION.

*----- data declerations.

data: v_repid like sy-repid.

data: begin of itab occurs 0,

matnr like mara-matnr,

ernam like mara-ernam,

meins like mara-meins,

end of itab.

data: begin of jtab occurs 0,

matnr like makt-matnr,

maktx like makt-maktx,

end of jtab.

select matnr ernam meins

up to 20 rows

from mara

into table itab.

select matnr maktx

up to 20 rows

from makt

into table jtab.

v_repid = sy-repid.

*DISPLAY alv

  • Initialize Block

call function 'REUSE_ALV_BLOCK_LIST_INIT'

exporting

i_callback_program = v_repid.

*Block 1:

*INITIALIZE

refresh t_field. clear t_field.

refresh t_events.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

add_catalog:

'MATNR' 'Material' '18' '' '1' 'C' '18',

'ERNAM' 'Created By' '12' '' '2' 'C' '12',

'MEINS' 'Unit' '5' '' '3' 'C' '3'.

*--build table for events.

x_events-form = 'TOP_OF_LIST1'.

x_events-name = slis_ev_top_of_list.

append x_events to t_events.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = x_layout

it_fieldcat = t_field

i_tabname = 'ITAB'

it_events = t_events

it_sort = t_sort

tables

t_outtab = itab

exceptions

program_error = 1

maximum_of_appends_reached = 2

others = 3.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

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

endif.

*--BLOCK 2(SUMMARY REPORT)

*INITIALIZE

refresh t_field. clear t_field.

refresh t_events.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

add_catalog:

'MATNR' 'Material' '20' '' '1' 'C' '18',

'MAKTX' 'Description' '40' '' '2' 'C' '40'.

*--build table for events.

x_events-form = 'TOP_OF_LIST2'.

x_events-name = slis_ev_top_of_list.

append x_events to t_events.

  • Append table block.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = x_layout

it_fieldcat = t_field

i_tabname = 'JTAB'

it_events = t_events

tables

t_outtab = jtab

exceptions

program_error = 1

maximum_of_appends_reached = 2

others = 3.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

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

endif.

*--CALL FM TO DISPLAY THE BLOCK REPORT.

call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • exporting

  • is_print = x_print_layout

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.

form top_of_list1.

skip 1.

write: 10 'List 1',

/5 '----


'.

skip 1.

format reset.

endform.

form top_of_list2.

skip 1.

write: 10 'List 2',

/5 '----


'.

skip 1.

format reset.

endform.

you must have a look at this function.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

this is the one which is actually doing the Block listing

3 REPLIES 3
Read only

Former Member
0 Likes
5,539

HI,

try this

REPORT zanid_test MESSAGE-ID zz.

*

----


  • Declarations for BLOCK ALV DISPLAY

----


*--type pools

TYPE-POOLS:slis.

DATA:x_layout TYPE slis_layout_alv,

t_field TYPE slis_t_fieldcat_alv,

*--field catalog

x_fldcat LIKE LINE OF t_field,

*--to hold all the events

t_events TYPE slis_t_event,

x_events TYPE slis_alv_event,

t_sort TYPE slis_t_sortinfo_alv,

x_sort LIKE LINE OF t_sort ,

*--Print Layout

x_print_layout TYPE slis_print_alv.

*----Macro to add field catalog.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

DEFINE add_catalog.

clear x_fldcat.

x_fldcat-fieldname = &1.

x_fldcat-seltext_m = &2.

x_fldcat-outputlen = &3.

x_fldcat-tech = &4.

x_fldcat-col_pos = &5.

x_fldcat-no_zero = 'X'.

x_fldcat-ddictxt = 'M'.

x_fldcat-datatype = &6.

x_fldcat-ddic_outputlen = &7.

if &6 = 'N'.

x_fldcat-lzero = 'X'.

endif.

*--build field catalog

append x_fldcat to t_field.

END-OF-DEFINITION.

*----- data declerations.

data: v_repid like sy-repid.

data: begin of itab occurs 0,

matnr like mara-matnr,

ernam like mara-ernam,

meins like mara-meins,

end of itab.

data: begin of jtab occurs 0,

matnr like makt-matnr,

maktx like makt-maktx,

end of jtab.

select matnr ernam meins

up to 20 rows

from mara

into table itab.

select matnr maktx

up to 20 rows

from makt

into table jtab.

v_repid = sy-repid.

*DISPLAY alv

  • Initialize Block

call function 'REUSE_ALV_BLOCK_LIST_INIT'

exporting

i_callback_program = v_repid.

*Block 1:

*INITIALIZE

refresh t_field. clear t_field.

refresh t_events.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

add_catalog:

'MATNR' 'Material' '18' '' '1' 'C' '18',

'ERNAM' 'Created By' '12' '' '2' 'C' '12',

'MEINS' 'Unit' '5' '' '3' 'C' '3'.

*--build table for events.

x_events-form = 'TOP_OF_LIST1'.

x_events-name = slis_ev_top_of_list.

append x_events to t_events.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = x_layout

it_fieldcat = t_field

i_tabname = 'ITAB'

it_events = t_events

it_sort = t_sort

tables

t_outtab = itab

exceptions

program_error = 1

maximum_of_appends_reached = 2

others = 3.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

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

endif.

*--BLOCK 2(SUMMARY REPORT)

*INITIALIZE

refresh t_field. clear t_field.

refresh t_events.

*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN

add_catalog:

'MATNR' 'Material' '20' '' '1' 'C' '18',

'MAKTX' 'Description' '40' '' '2' 'C' '40'.

*--build table for events.

x_events-form = 'TOP_OF_LIST2'.

x_events-name = slis_ev_top_of_list.

append x_events to t_events.

  • Append table block.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

exporting

is_layout = x_layout

it_fieldcat = t_field

i_tabname = 'JTAB'

it_events = t_events

tables

t_outtab = jtab

exceptions

program_error = 1

maximum_of_appends_reached = 2

others = 3.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

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

endif.

*--CALL FM TO DISPLAY THE BLOCK REPORT.

call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • exporting

  • is_print = x_print_layout

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.

form top_of_list1.

skip 1.

write: 10 'List 1',

/5 '----


'.

skip 1.

format reset.

endform.

form top_of_list2.

skip 1.

write: 10 'List 2',

/5 '----


'.

skip 1.

format reset.

endform.

Read only

Former Member
0 Likes
5,538

you must have a look at this function.

call function 'REUSE_ALV_BLOCK_LIST_APPEND'

this is the one which is actually doing the Block listing

Read only

Former Member
0 Likes
5,538

you can have a look at this also

REPORT zcdf_alv.

DATA:

r_dyn_table TYPE REF TO data,

r_wa_dyn_table TYPE REF TO data,

r_dock_ctnr TYPE REF TO cl_gui_docking_container,

r_alv_grid TYPE REF TO cl_gui_alv_grid,

t_fieldcat1 TYPE lvc_t_fcat, "with cell color

t_fieldcat2 TYPE lvc_t_fcat, "without cell color

wa_fieldcat LIKE LINE OF t_fieldcat1,

wa_cellcolors TYPE LINE OF lvc_t_scol,

wa_is_layout TYPE lvc_s_layo.

FIELD-SYMBOLS:

<t_dyn_table> TYPE STANDARD TABLE,

<wa_dyn_table> TYPE ANY,

<t_cellcolors> TYPE lvc_t_scol,

<w_field> TYPE ANY.

START-OF-SELECTION.

  • Build field catalog based on your criteria.

wa_fieldcat-fieldname = 'FIELD1'.

wa_fieldcat-inttype = 'C'.

wa_fieldcat-outputlen = '10'.

wa_fieldcat-coltext = 'My Field 1'.

wa_fieldcat-seltext = wa_fieldcat-coltext.

APPEND wa_fieldcat TO t_fieldcat1.

wa_fieldcat-fieldname = 'FIELD2'.

wa_fieldcat-inttype = 'C'.

wa_fieldcat-outputlen = '10'.

wa_fieldcat-coltext = 'My Field 2'.

wa_fieldcat-seltext = wa_fieldcat-coltext.

APPEND wa_fieldcat TO t_fieldcat1.

t_fieldcat2[] = t_fieldcat1[].

wa_fieldcat-fieldname = 'T_CELLCOLORS'.

wa_fieldcat-ref_field = 'COLTAB'.

wa_fieldcat-ref_table = 'CALENDAR_TYPE'.

APPEND wa_fieldcat TO t_fieldcat1.

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = t_fieldcat1

IMPORTING

ep_table = r_dyn_table

EXCEPTIONS

generate_subpool_dir_full = 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.

ASSIGN r_dyn_table->* TO <t_dyn_table>.

CREATE DATA r_wa_dyn_table LIKE LINE OF <t_dyn_table>.

ASSIGN r_wa_dyn_table->* TO <wa_dyn_table>.

fields. A

ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'ABC'.

ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'XYZ'.

APPEND <wa_dyn_table> TO <t_dyn_table>.

ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'TUV'.

ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.

<w_field> = 'DEF'.

APPEND <wa_dyn_table> TO <t_dyn_table>.

LOOP AT <t_dyn_table> INTO <wa_dyn_table>.

ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.

  • Get access to internal table used to color cells.

ASSIGN COMPONENT 'T_CELLCOLORS'

OF STRUCTURE <wa_dyn_table> TO <t_cellcolors>.

CLEAR wa_cellcolors.

wa_cellcolors-fname = 'FIELD2'.

IF <w_field> = 'DEF'.

wa_cellcolors-color-col = '7'.

ELSE.

wa_cellcolors-color-col = '5'.

ENDIF.

APPEND wa_cellcolors TO <t_cellcolors>.

MODIFY <t_dyn_table> FROM <wa_dyn_table>.

ENDLOOP.

  • Display screen. Define screen 100 as empty, with next screen

  • set to 0 and flow logic of:

*

  • PROCESS BEFORE OUTPUT.

  • MODULE initialization.

*

  • PROCESS AFTER INPUT.

CALL SCREEN 100.

----


  • MODULE initialization OUTPUT

----


MODULE initialization OUTPUT.

  • Set up for ALV display.

IF r_dock_ctnr IS INITIAL.

CREATE OBJECT r_dock_ctnr

EXPORTING

side = cl_gui_docking_container=>dock_at_left

ratio = '90'.

CREATE OBJECT r_alv_grid

EXPORTING i_parent = r_dock_ctnr.

  • Set ALV controls for cell coloring table.

wa_is_layout-ctab_fname = 'T_CELLCOLORS'.

  • Display.

CALL METHOD r_alv_grid->set_table_for_first_display

EXPORTING

is_layout = wa_is_layout

CHANGING

it_outtab = <t_dyn_table>

it_fieldcatalog = t_fieldcat2.

ELSE. "grid already prepared

  • Refresh display.

CALL METHOD r_alv_grid->refresh_table_display

EXPORTING

i_soft_refresh = ' '

EXCEPTIONS

finished = 1

OTHERS = 2.

ENDIF.

ENDMODULE. " initialization OUTPUT