0% found this document useful (0 votes)
119 views5 pages

ALV

This document defines a class (lcl_salv_demo) that displays data from tables EUIINSTLN and EUITRANS in an SAP List Viewer (ALV) grid. The class contains methods to fetch the data, display it in the ALV, and customize the ALV properties like layout, columns, headers/footers. On selection screen input, an instance of the class is created to fetch and display the data.

Uploaded by

Umesh G J
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views5 pages

ALV

This document defines a class (lcl_salv_demo) that displays data from tables EUIINSTLN and EUITRANS in an SAP List Viewer (ALV) grid. The class contains methods to fetch the data, display it in the ALV, and customize the ALV properties like layout, columns, headers/footers. On selection screen input, an instance of the class is created to fetch and display the data.

Uploaded by

Umesh G J
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

*&---------------------------------------------------------------------*

*& Report Y_SALV_DEMO


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT y_salv_demo.

DATA : gv_mprn TYPE ext_ui,


gv_instln TYPE anlage.

SELECTION-SCREEN : BEGIN OF BLOCK main WITH FRAME TITLE text-scr.


SELECT-OPTIONS : s_mprn FOR gv_mprn,
s_instln FOR gv_instln.
SELECTION-SCREEN : END OF BLOCK main.

CLASS lcl_salv_demo DEFINITION.


PUBLIC SECTION.
TYPES : BEGIN OF t_instln,
anlage TYPE anlage,
int_ui TYPE int_ui,
ext_ui TYPE ext_ui,
END OF t_instln,

BEGIN OF t_instln_final,
anlage TYPE anlage,
int_ui TYPE int_ui,
ext_ui TYPE ext_ui,
t_color TYPE lvc_t_scol,
END OF t_instln_final,

t_instln_tt TYPE STANDARD TABLE OF t_instln,


t_instln_final_tt TYPE STANDARD TABLE OF t_instln_final,
t_mprn_range TYPE RANGE OF ext_ui,
t_instln_range TYPE RANGE OF anlage.

DATA : lt_instln TYPE STANDARD TABLE OF t_instln,


lt_instln_final TYPE STANDARD TABLE OF t_instln_final,
lo_salv TYPE REF TO cl_salv_table.

METHODS : fetch_data IMPORTING i_mprn TYPE t_mprn_range


i_instln TYPE t_instln_range.
PRIVATE SECTION.
METHODS : disp_data
CHANGING
c_instln TYPE t_instln_final_tt,
display_options,
set_pf_status,
set_layout,
set_header_footer,
set_columns.

ENDCLASS.

CLASS lcl_salv_demo IMPLEMENTATION.

**-- Fetch data


METHOD fetch_data.
"Fetch Data
SELECT a~anlage
b~int_ui
b~ext_ui
FROM euiinstln AS a
JOIN euitrans AS b ON a~int_ui EQ b~int_ui
INTO TABLE lt_instln
WHERE a~anlage IN i_instln
AND b~ext_ui IN i_mprn.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING lt_instln TO lt_instln_final.
SORT lt_instln_final BY anlage.
ENDIF.

"Display ALV
CALL METHOD me->disp_data
CHANGING
c_instln = lt_instln_final.

ENDMETHOD.

**-- Dispay ALV


METHOD disp_data.
DATA: lo_msg TYPE REF TO cx_salv_msg.
"Create ALV Display
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_salv
CHANGING
t_table = c_instln ).
CATCH cx_salv_msg INTO lo_msg.
ENDTRY.
"Display Options
CALL METHOD display_options.
"Display as ALV
lo_salv->display( ).
ENDMETHOD.

**-- Display Options


METHOD display_options.
"Set PF Status and Layout
CALL METHOD set_pf_status.
* "Set Header and Footer
CALL METHOD set_header_footer.
"Set Column Values
CALL METHOD set_columns.
ENDMETHOD.

**-- Set PF Status


METHOD set_pf_status.
DATA : lo_functions TYPE REF TO cl_salv_functions_list.
lo_functions = lo_salv->get_functions( ).
lo_functions->set_default( abap_true ).
* lo_salv->set_screen_status(
* pfstatus = 'SALV_STANDARD'
* report = 'SALV_DEMO_TABLE_SELECTIONS'
* set_functions = lo_salv->c_functions_all ).
"Set Layout
CALL METHOD me->set_layout.
ENDMETHOD.
**-- Set Layout
METHOD set_layout.
DATA: lo_layout TYPE REF TO cl_salv_layout,
lf_variant TYPE slis_vari,
ls_key TYPE salv_s_layout_key.
"Get Layout
lo_layout = lo_salv->get_layout( ).
"Set Layout Key .. Unique key identifies the Differenet ALVs
ls_key-report = sy-repid.
lo_layout->set_key( ls_key ).
"Remove Save layout the restriction.
lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
"Set initial Layout
lf_variant = 'DEFAULT'.
lo_layout->set_initial_layout( lf_variant ).
ENDMETHOD.

**-- Set Header and Footer


METHOD set_header_footer.
DATA : lo_header TYPE REF TO cl_salv_form_layout_grid,
lo_h_label TYPE REF TO cl_salv_form_label,
lo_h_flow TYPE REF TO cl_salv_form_layout_flow.
CREATE OBJECT lo_header.
"Information in Bold
lo_h_label = lo_header->create_label( row = 1 column = 1 ).
lo_h_label->set_text( 'HEADER IN BOLD' ).
"Information in Tabular Format
lo_h_flow = lo_header->create_flow( row = 2 column = 1 ).
lo_h_flow->create_text( text = 'HEADER IN NORMAL MODE' ).

lo_h_flow = lo_header->create_flow( row = 3 column = 1 ).


lo_h_flow->create_text( text = 'Number of Records in the output' ).

lo_h_flow = lo_header->create_flow( row = 3 column = 2 ).


lo_h_flow->create_text( text = 20 ).

"Set the top of list using the header for Online.


lo_salv->set_top_of_list( lo_header ).
"Set the top of list using the header for Print.
lo_salv->set_top_of_list_print( lo_header ).

DATA: lo_footer TYPE REF TO cl_salv_form_layout_grid,


lo_f_label TYPE REF TO cl_salv_form_label,
lo_f_flow TYPE REF TO cl_salv_form_layout_flow.

CREATE OBJECT lo_footer.

"Information in bold
lo_f_label = lo_footer->create_label( row = 1 column = 1 ).
lo_f_label->set_text( 'FOOTER IN BOLD' ).
"Tabular information
lo_f_flow = lo_footer->create_flow( row = 2 column = 1 ).
lo_f_flow->create_text( text = 'FOOTER IN NORMAL MODE' ).

lo_f_flow = lo_footer->create_flow( row = 3 column = 1 ).


lo_f_flow->create_text( text = 'Footer number' ).

lo_f_flow = lo_footer->create_flow( row = 3 column = 2 ).


lo_f_flow->create_text( text = 1 ).
"Online footer
lo_salv->set_end_of_list( lo_footer ).
"Footer in print
lo_salv->set_end_of_list_print( lo_footer ).

ENDMETHOD.

**-- Set Columns


METHOD set_columns.
DATA : lo_columns TYPE REF TO cl_salv_columns_table,
lo_column TYPE REF TO cl_salv_column_table,
* lo_events TYPE REF TO cl_salv_events_table,
lo_display TYPE REF TO cl_salv_display_settings.

DATA : lt_colnames TYPE salv_t_column_ref,


lt_scol TYPE lvc_t_scol,
lw_ccol TYPE lvc_s_colo,
lw_scol TYPE lvc_s_scol,
lv_count TYPE i.

"Get Display Object


lo_display = lo_salv->get_display_settings( ).
"ZEBRA pattern
lo_display->set_striped_pattern( 'X' ).
"Title to ALV
lo_display->set_list_header( 'ALV Display' ).
"Get Columns
lo_columns = lo_salv->get_columns( ).
"Get columns properties
lo_columns->set_optimize( abap_true ).
lo_columns->set_key_fixation( abap_true ).
lt_colnames = lo_columns->get( ).
* lo_events = lo_salv->get_event( ).

"Set Color
INCLUDE <color>.
TRY.
lo_column ?= lo_columns->get_column( 'ANLAGE' ).
lw_ccol-col = col_heading.
lo_column->set_color( lw_ccol ).
CATCH cx_salv_not_found.
ENDTRY.

* LOOP AT lt_instln_final ASSIGNING FIELD-SYMBOL(<fs_instln>).


* lv_count = lv_count + 1.
* CASE lv_count.
* WHEN 2.
* lw_scol-color-col = col_background.
* lw_scol-color-int = 0.
* lw_scol-color-inv = 0.
* APPEND lw_scol TO lt_scol.
* CLEAR lw_scol.
* WHEN 3.
* lw_scol-color-col = col_normal.
* lw_scol-color-int = 0.
* lw_scol-color-inv = 0.
* APPEND lw_scol TO lt_scol.
* CLEAR lw_scol.
* ENDCASE.
* <fs_instln>-t_color = lt_scol.
* CLEAR : lt_scol[].
* ENDLOOP.
LOOP AT lt_colnames ASSIGNING FIELD-SYMBOL(<fs_colnames>).
TRY.
lo_column ?= lo_columns->get_column( <fs_colnames>-columnname ).
CATCH cx_salv_not_found.
ENDTRY.
"If no exceptions are raised then set column names
IF <fs_colnames>-columnname EQ 'ANLAGE'.
lo_column->set_long_text( 'Installation' ).
lo_column->set_medium_text( 'Installation' ).
lo_column->set_short_text( 'Instln' ).
ENDIF.
IF <fs_colnames>-columnname EQ 'INT_UI'.
lo_column->set_long_text( 'POD ID' ).
lo_column->set_medium_text( 'POD ID' ).
lo_column->set_short_text( 'POD ID' ).
ENDIF.
IF <fs_colnames>-columnname EQ 'EXT_UI'.
lo_column->set_long_text( 'Meter Point Reference' ).
lo_column->set_medium_text( 'MPRN' ).
lo_column->set_short_text( 'MPRN' ).
ENDIF.
* TRY.
* CALL METHOD lo_columns->set_cell_type_column
* EXPORTING
* value = lo_columns->get_count_column( ).
* CATCH cx_salv_data_error.
* ENDTRY.
ENDLOOP.

ENDMETHOD.

ENDCLASS.

DATA : lo_demo TYPE REF TO lcl_salv_demo.

START-OF-SELECTION.
CREATE OBJECT lo_demo.
CALL METHOD lo_demo->fetch_data
EXPORTING
i_mprn = s_mprn[]
i_instln = s_instln[].

You might also like