25
ABAP List Viewer(ALV)

abap list viewer (alv)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: abap list viewer (alv)

ABAP List Viewer(ALV)

Page 2: abap list viewer (alv)

ALV

•ABAP List Viewer (ALV) is a simple, user friendly and better looking reporting tool as compared to the usage of write statements in a conventional / interactive report.

Page 3: abap list viewer (alv)

Advantages of ALV

•Better Looking•User friendly– Filtering / Sorting– Layout Change / Save– Summation, Download to excel, E-Mail– Data can be open for input / change etc.

•Better Event handling•Width of more than 256 characters possible•Programming overhead of mentioning exact positions in write statements not needed.

Page 4: abap list viewer (alv)

ALV Features

Sorting, Filtering

Row(s) Selection Email, Excel

Change / Save Layout

Additional Buttons

Heading

Page 5: abap list viewer (alv)

ALV Features

Fields Open For Input

Bar Charts

Page 6: abap list viewer (alv)

ALV Programming

•Two Approaches– Conventional (Using Standard Function Modules)– Object Oriented (Using Standard Classes and

Methods)

We will concentrate on the conventional approach

Page 7: abap list viewer (alv)

ALV Function ModulesREUSE_ALV_LIST_DISPLAY REUSE_ALV_GRID_DISPLAY

Program: BALVSD02 Program: BALVSD02_GRID

Page 8: abap list viewer (alv)

ALV Function Modules•Both REUSE_ALV_LIST_DISPLAY and REUSE_ALV_GRID_DISPLAY have similar parameters•Both Display the contents of an internal table passed by the parameter T_OUTTAB

Page 9: abap list viewer (alv)

ALV Function Modules: Parameters•Important Parameters

– I_CALLBACK_PROGRAM

• The program that contains the subroutine for user command handling• The program that will be the reference for user specific layout variants• SY-CPROG in most cases

– I_CALLBACK_PF_STATUS_SET• The subroutine name that will set the PF-STATUS (which in turn may contain user defined buttons)

– I_CALLBACK_USER_COMMAND• The subroutine name in the calling program that will be triggered on any user command

Page 10: abap list viewer (alv)

ALV Function Modules: Parameters•Important Parameters

– I_STRUCTURE_NAME• The type of the internal table to be displayed

– I_GRID_TITLE• The Heading / Title of the GRID

– IS_LAYOUT• Defines the layout in which the internal table will be displayed• Layout specific Features like Optimize Column Width, Window Title Bar, No Summing Up,

colors etc. are defined here– IT_FIELDCAT

• Defines the properties of individual fields (columns) of the internal table to be displayed• Field specific features like Editable / Non Editable, Heading, Column Position, Left / Right

Justification etc. are defined here

Page 11: abap list viewer (alv)

ALV Function Modules: Parameters•Important Parameters

– IT_EXCLUDING• The Buttons / Function codes that need to be disabled

– I_SAVE• Whether Users should be able to save layout variants of their choice

– IT_EVENTS• The various which need to be trapped and dealt with

Page 12: abap list viewer (alv)

Simple Programs Walkthrough•Populate the internal table with the contents to be displayed and call the function module.

Data: i_sflight type standard table of sflight initial size 0 with header line.Select * from sflight into table i_sflight.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = sy-cprog I_STRUCTURE_NAME = 'SFLIGHT' TABLES T_OUTTAB = i_sflight.

Page 13: abap list viewer (alv)

Result

Page 14: abap list viewer (alv)

Simple Programs Walkthrough•Saving Layout Variants (Order of Columns, Hiding Specific Columns etc.)I_SAVE = ‘A’

Change / Save / Select Layout

Give Layout Name, User Specific / Default

Layout

Page 15: abap list viewer (alv)

Simple Programs Walkthrough•Grid Title RequiredI_GRID_TITLE = ‘Flight Information’

Heading

Page 16: abap list viewer (alv)

Simple Programs Walkthrough•Suppose the first 4 fields of the internal table are required in the order CARRID, FLDATE, CONNID, PRICE. Also the fields CURRENCY and PLANETYPE are not to be displayed.Populate the Field Catalog table appropriately

data: i_fcat type slis_t_fieldcat_alv, wa_fcat type slis_fieldcat_alv.

wa_fcat-tabname = 'I_SFLIGHT'.wa_fcat-col_pos = '1'.

wa_fcat-fieldname = 'CARRID'.append wa_fcat to i_fcat.

wa_fcat-col_pos = '2'.wa_fcat-fieldname = 'FLDATE'.

append wa_fcat to i_fcat.wa_fcat-col_pos = '3'.

wa_fcat-fieldname = 'CONNID'.append wa_fcat to i_fcat.

wa_fcat-col_pos = '4'.wa_fcat-fieldname = 'PRICE'.

append wa_fcat to i_fcat.

wa_fcat-fieldname = 'CURRENCY'.wa_fcat-no_out = 'X'.

append wa_fcat to i_fcat.wa_fcat-fieldname =

'PLANETYPE'.wa_fcat-no_out = 'X'.

append wa_fcat to i_fcat.

In the function module,

IT_FIELDCAT = i_fcat

Page 17: abap list viewer (alv)

Result

CARRID

PRICE

CONNID

FLDATENo CURRENCY And PLANETYPE

Page 18: abap list viewer (alv)

Simple Programs Walkthrough•Obtaining the field catalog internal table using the internal table name •Use Function Module REUSE_ALV_FIELDCATALOG_MERGE

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING

I_INTERNAL_TABNAME = 'I_SFLIGHT'I_STRUCTURE_NAME = 'SFLIGHT'

CHANGING CT_FIELDCAT = I_FCAT

Page 19: abap list viewer (alv)

Simple Programs Walkthrough•Suppose it is required to add a button ‘SAVE’ to the application toolbar. Also, the ABC Analysis, Mail and Download to Excel need to be removed.•Create a Subroutine SET_PF_STATUS using rt_extab type slis_t_extab•Within this subroutine, write

SET PF-STATUS ‘YFLIGHTS’.•Double Click on ‘YFLIGHTS’ and create a PF-STATUS•Go to Extras -> Adjust Template and Choose the List Viewer Radio Button. Standard ALV PF-STATUS will be selected.•Remove the function keys and Buttons for ABC Analysis and Mail and Download to Excel from the PF-STATUS•Add a function code and button for SAVE.•Save and Activate the PF-STATUS•While calling the function module ‘REUSE_ALV_GRID_DISPLAY’ use

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

•Alternatively, Removal of Buttons can be done by populating the internal table IT_EXCLUDING with the relevant function codes

Page 20: abap list viewer (alv)

Result

No Excel, Email or ABC Analysis Buttons

SAVE Button

Page 21: abap list viewer (alv)

Simple Programs Walkthrough•Suppose we need to make the price editable and saved to the database table SFLIGHT•Use Function Module REUSE_ALV_FIELDCATALOG_MERGE to get the Field Catalog internal table•Change the Field Catalog table for fieldname entry ‘PRICE’

read table i_fcat into wa_fcat with key fieldname = 'PRICE'.if sy-subrc = 0. wa_fcat-edit = 'X'.

modify i_fcat index sy-tabix from wa_fcat transporting edit.endif.

•Create a PF-Status as described previously and use a function code &DATA_SAVE

Page 22: abap list viewer (alv)

Simple Programs Walkthrough•Create a Subroutine USER_COMMAND using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.•Within this subroutine, handle user command

if r_ucomm = '&DATA_SAVE'. modify sflight from table i_sflight. message i000 with 'Data saved'.

rs_selfield-refresh = 'X'.rs_selfield-col_stable = 'X'.rs_selfield-row_stable = 'X'.

endif.

•While calling the function module ‘REUSE_ALV_GRID_DISPLAY’ useI_CALLBACK_USER_COMMAND = ‘USER_COMMAND'

Page 23: abap list viewer (alv)

Result

PRICE (Editable)

Other Fields (Non Editable)

Function Code and Button for

&DATA_SAVE

Page 24: abap list viewer (alv)

Important Information

•Use Programs Starting with BALV and BCALV•Use Function Module Helps

Page 25: abap list viewer (alv)