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

dynamic header in ALV

Former Member
0 Likes
1,151

Hi gurus,

header must be populate on change of every new PO Number.

how do i do it in ALV.

Hi gurus,

header must be populate on change of every new PO Number.

how do i do it in ALV.

1 REPLY 1
Read only

Former Member
0 Likes
441

Hi

Look at the sample code.

TYPE-POOLS: abap,

col.

&----


*& Dynamic Table

&----


FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,

<dyn_wa>,

<fs>.

DATA: gt_dyn TYPE REF TO data,

gw_dyn TYPE REF TO data,

r_table TYPE REF TO cl_salv_table,

r_header TYPE REF TO cl_salv_form_element,

r_footer TYPE REF TO cl_salv_form_element,

r_columns_table TYPE REF TO cl_salv_columns_table,

r_column_table TYPE REF TO cl_salv_column_table,

r_datadescr TYPE REF TO cl_abap_datadescr,

r_structdescr TYPE REF TO cl_abap_structdescr,

gw_component TYPE abap_componentdescr,

gt_component TYPE abap_component_tab.

START-OF-SELECTION.

PERFORM build_dynamic_table.

PERFORM get_data.

END-OF-SELECTION.

PERFORM display_report.

&----


*& Form build_dynamic_table

&----


FORM build_dynamic_table .

DATA: l_idx TYPE c,

l_desc TYPE char50,

l_hslxx TYPE p LENGTH 5 DECIMALS 2,

lt_color TYPE lvc_t_scol.

  • Column 1

r_datadescr ?= cl_abap_datadescr=>describe_by_data( l_desc ).

gw_component-name = 'COLUMN'.

gw_component-type = r_datadescr.

APPEND gw_component TO gt_component.

  • Column 2 - Types of color for each line

  • Do not display this column

r_datadescr ?= cl_abap_datadescr=>describe_by_data( lt_color ).

gw_component-name = 'COLOR'.

gw_component-type = r_datadescr.

APPEND gw_component TO gt_component.

DO 5 TIMES.

l_idx = sy-index.

r_datadescr ?= cl_abap_datadescr=>describe_by_data( l_hslxx ).

CONCATENATE 'COL' l_idx INTO gw_component-name.

gw_component-type = r_datadescr.

APPEND gw_component TO gt_component.

ENDDO.

TRY.

r_structdescr = cl_abap_structdescr=>create( p_components = gt_component ).

CATCH cx_sy_struct_creation .

WRITE: / 'CX_SY_STRUCT_CREATION ERROR'.

ENDTRY.

  • Fill the table with data from GT_DATA

CREATE DATA gw_dyn TYPE HANDLE r_structdescr.

ASSIGN gw_dyn->* TO <dyn_wa>.

CREATE DATA gt_dyn LIKE STANDARD TABLE OF <dyn_wa>.

ASSIGN gt_dyn->* TO <dyn_table>.

ENDFORM. " build_dynamic_table

&----


*& Form get_data

&----


FORM get_data .

  • select statement

ENDFORM. " get_data

&----


*& Form display_report

&----


FORM display_report .

PERFORM display_header. " Display ALV Header

PERFORM display_footer. " DIsplay ALV Footer

PERFORM fill_data. " Fill data

PERFORM set_color. " Set color

PERFORM display_list. " Display the ALV

ENDFORM. " display_report

&----


*& Form display_header

&----


FORM display_header .

DATA: lr_grid TYPE REF TO cl_salv_form_layout_grid.

CREATE OBJECT lr_grid.

lr_grid->create_text(

row = 1

column = 1

text = 'Header Line 1' ).

lr_grid->create_text(

row = 2

column = 1

text = 'Header Line 2' ).

r_header = lr_grid.

ENDFORM. " display_header

&----


*& Form display_footer

&----


FORM display_footer .

DATA: lr_grid TYPE REF TO cl_salv_form_layout_grid.

CREATE OBJECT lr_grid.

lr_grid->create_text(

row = 1

column = 1

text = text-266 ).

lr_grid->create_text(

row = 2

column = 1

text = text-267 ).

r_footer = lr_grid.

ENDFORM. " display_footer

&----


*& Form set_color

&----


FORM set_color.

DATA: lt_color TYPE lvc_t_scol,

ls_color LIKE LINE OF lt_color,

l_idx TYPE sy-tabix.

FIELD-SYMBOLS: <fs_color>.

LOOP AT <dyn_table> INTO <dyn_wa>.

l_idx = sy-tabix.

ASSIGN COMPONENT 'COLOR' OF STRUCTURE <dyn_wa> TO <fs_color>.

ls_color-color-col = col_total.

  • ls_color-color-col = col_normal.

  • ls_color-color-col = col_group.

APPEND ls_color TO lt_color.

<fs_color> = lt_color.

MODIFY <dyn_table> FROM <dyn_wa> INDEX l_idx.

UNASSIGN: <fs_color>.

ENDLOOP.

ENDFORM. " set_color

&----


*& Form display_list

&----


FORM display_list.

DATA: r_display TYPE REF TO cl_salv_display_settings.

  • Prepare the internal table for display

cl_salv_table=>factory(

EXPORTING

list_display = 'X'

IMPORTING

r_salv_table = r_table

CHANGING

t_table = <dyn_table> ).

  • Set report page title

r_table->set_top_of_list( r_header ).

  • Set report footer

r_table->set_end_of_list( r_footer ).

r_display = r_table->get_display_settings( ).

  • r_display->set_vertical_lines( ' ' ).

  • Assign all the column names

PERFORM set_column_attr.

  • Display the report

r_table->display( ).

ENDFORM. " display_list

&----


*& Form set_column_attr

&----


FORM set_column_attr.

DATA: l_idx TYPE c,

l_text(4) TYPE c,

colname TYPE lvc_fname,

outps TYPE scrtext_s,

outpm TYPE scrtext_m,

outpl TYPE scrtext_l.

r_columns_table = r_table->get_columns( ).

  • r_columns_table->set_headers_visible( abap_false ).

  • column 2

  • set color column

r_columns_table->set_color_column( 'COLOR' ).

DO 5 TIMES.

l_idx = sy-index.

CONCATENATE 'COL' l_idx INTO colname.

outps = colname.

outpm = colname.

outpl = colname.

r_column_table ?= r_columns_table->get_column( colname ).

r_column_table->set_optimized( value = abap_true ).

r_column_table->set_alignment( value = 1 ).

r_column_table->set_zero( value = space ).

r_column_table->set_short_text( outps ).

r_column_table->set_medium_text( outpm ).

r_column_table->set_long_text( outpl ).

ENDDO.

ENDFORM. "set_column_attr

&----


*& Form fill_data

&----


FORM fill_data .

DATA: l_idx TYPE c,

l_col TYPE string.

DO 5 TIMES.

l_idx = sy-index.

CONCATENATE 'COL' l_idx INTO l_col.

ASSIGN COMPONENT l_col OF STRUCTURE <dyn_wa> TO <fs>.

<fs> = 0.

UNASSIGN <fs>.

ENDDO.

DO 5 TIMES.

l_idx = sy-index.

ASSIGN COMPONENT 'COLUMN' OF STRUCTURE <dyn_wa> TO <fs>.

CONCATENATE 'Row' l_idx INTO <fs> SEPARATED BY space.

UNASSIGN <fs>.

APPEND <dyn_wa> TO <dyn_table>.

ENDDO.

ENDFORM. " fill_data

Hope it helps.