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

ALV Interactive Report using oops

Former Member
0 Likes
1,520

Hi All ,

Pls anybody send me the code for ALV interactive report using OOPS , that reports covers the following things like Header , Logo , Total& subtotals .....etc ,

with this i can complete my object .

thanks in Adv

Rgds

Rafi .

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
807

Hi

See the sample code

Example:

REPORT sapmz_hf_alv_grid .

  • Type pool for icons - used in the toolbar

TYPE-POOLS: icon.

TABLES: zsflight.

  • To allow the declaration of o_event_receiver before the

  • lcl_event_receiver class is defined, decale it as deferred in the

  • start of the program

CLASS lcl_event_receiver DEFINITION DEFERRED.

*----


  • G L O B A L I N T E R N A L T A B L E S

*----


*DATA: gi_sflight TYPE STANDARD TABLE OF sflight.

  • To include a traffic light and/or color a line the structure of the

  • table must include fields for the traffic light and/or the color

TYPES: BEGIN OF st_sflight.

INCLUDE STRUCTURE zsflight.

  • Field for traffic light

TYPES: traffic_light TYPE c.

  • Field for line color

types: line_color(4) type c.

TYPES: END OF st_sflight.

TYPES: tt_sflight TYPE STANDARD TABLE OF st_sflight.

DATA: gi_sflight TYPE tt_sflight.

*----


  • G L O B A L D A T A

*----


DATA: ok_code LIKE sy-ucomm,

  • Work area for internal table

g_wa_sflight TYPE st_sflight,

  • ALV control: Layout structure

gs_layout TYPE lvc_s_layo.

  • Declare reference variables to the ALV grid and the container

DATA:

go_grid TYPE REF TO cl_gui_alv_grid,

go_custom_container TYPE REF TO cl_gui_custom_container,

o_event_receiver TYPE REF TO lcl_event_receiver.

DATA:

  • Work area for screen 200

g_screen200 LIKE zsflight.

  • Data for storing information about selected rows in the grid

DATA:

  • Internal table

gi_index_rows TYPE lvc_t_row,

  • Information about 1 row

g_selected_row LIKE lvc_s_row.

*----


  • C L A S S E S

*----


CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid

IMPORTING

e_object e_interactive,

handle_user_command FOR EVENT user_command OF cl_gui_alv_grid

IMPORTING e_ucomm.

ENDCLASS.

----


  • CLASS lcl_event_receiver IMPLEMENTATION

----


CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_toolbar.

  • Event handler method for event toolbar.

CONSTANTS:

  • Constants for button type

c_button_normal TYPE i VALUE 0,

c_menu_and_default_button TYPE i VALUE 1,

c_menu TYPE i VALUE 2,

c_separator TYPE i VALUE 3,

c_radio_button TYPE i VALUE 4,

c_checkbox TYPE i VALUE 5,

c_menu_entry TYPE i VALUE 6.

DATA:

ls_toolbar TYPE stb_button.

  • Append seperator to the normal toolbar

CLEAR ls_toolbar.

MOVE c_separator TO ls_toolbar-butn_type..

APPEND ls_toolbar TO e_object->mt_toolbar.

  • Append a new button that to the toolbar. Use E_OBJECT of

  • event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.

  • This class has one attribute MT_TOOLBAR which is of table type

  • TTB_BUTTON. The structure is STB_BUTTON

CLEAR ls_toolbar.

MOVE 'CHANGE' TO ls_toolbar-function.

MOVE icon_change TO ls_toolbar-icon.

MOVE 'Change flight' TO ls_toolbar-quickinfo.

MOVE 'Change' TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

ENDMETHOD.

METHOD handle_user_command.

  • Handle own functions defined in the toolbar

CASE e_ucomm.

WHEN 'CHANGE'.

PERFORM change_flight.

  • LEAVE TO SCREEN 0.

ENDCASE.

ENDMETHOD.

ENDCLASS.

*----


  • S T A R T - O F - S E L E C T I O N.

*----


START-OF-SELECTION.

SET SCREEN '100'.

&----


*& Module USER_COMMAND_0100 INPUT

&----


MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0100 OUTPUT

&----


MODULE status_0100 OUTPUT.

DATA:

  • For parameter IS_VARIANT that is sued to set up options for storing

  • the grid layout as a variant in method set_table_for_first_display

l_layout TYPE disvariant,

  • Utillity field

l_lines TYPE i.

  • After returning from screen 200 the line that was selected before

  • going to screen 200, should be selected again. The table gi_index_rows

  • was the output table from the GET_SELECTED_ROWS method in form

  • CHANGE_FLIGHT

DESCRIBE TABLE gi_index_rows LINES l_lines.

IF l_lines > 0.

CALL METHOD go_grid->set_selected_rows

EXPORTING

it_index_rows = gi_index_rows.

CALL METHOD cl_gui_cfw=>flush.

REFRESH gi_index_rows.

ENDIF.

  • Read data and create objects

IF go_custom_container IS INITIAL.

  • Read data from datbase table

PERFORM get_data.

  • Create objects for container and ALV grid

CREATE OBJECT go_custom_container

EXPORTING container_name = 'ALV_CONTAINER'.

CREATE OBJECT go_grid

EXPORTING

i_parent = go_custom_container.

  • Create object for event_receiver class

  • and set handlers

CREATE OBJECT o_event_receiver.

SET HANDLER o_event_receiver->handle_user_command FOR go_grid.

SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.

  • Layout (Variant) for ALV grid

l_layout-report = sy-repid. "Layout fo report

*----


  • Setup the grid layout using a variable of structure lvc_s_layo

*----


  • Set grid title

gs_layout-grid_title = 'Flights'.

  • Selection mode - Single row without buttons

  • (This is the default mode

gs_layout-sel_mode = 'B'.

  • Name of the exception field (Traffic light field) and the color

  • field + set the exception and color field of the table

gs_layout-excp_fname = 'TRAFFIC_LIGHT'.

gs_layout-info_fname = 'LINE_COLOR'.

LOOP AT gi_sflight INTO g_wa_sflight.

IF g_wa_sflight-paymentsum < 100000.

  • Value of traffic light field

g_wa_sflight-traffic_light = '1'.

  • Value of color field:

  • C = Color, 6=Color 1=Intesified on, 0: Inverse display off

g_wa_sflight-line_color = 'C610'.

ELSEIF g_wa_sflight-paymentsum => 100000 AND

g_wa_sflight-paymentsum < 1000000.

g_wa_sflight-traffic_light = '2'.

ELSE.

g_wa_sflight-traffic_light = '3'.

ENDIF.

MODIFY gi_sflight FROM g_wa_sflight.

ENDLOOP.

  • Grid setup for first display

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

is_variant = l_layout

i_save = 'A'

is_layout = gs_layout

CHANGING it_outtab = gi_sflight.

*-- End of grid setup -


  • Raise event toolbar to show the modified toolbar

CALL METHOD go_grid->set_toolbar_interactive.

  • Set focus to the grid. This is not necessary in this

  • example as there is only one control on the screen

CALL METHOD cl_gui_control=>set_focus EXPORTING control = go_grid.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0200 INPUT

&----


MODULE user_command_0200 INPUT.

CASE ok_code.

WHEN 'EXIT200'.

LEAVE TO SCREEN 100.

WHEN'SAVE'.

PERFORM save_changes.

ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

&----


*& Form get_data

&----


FORM get_data.

  • Read data from table SFLIGHT

SELECT *

FROM zsflight

INTO TABLE gi_sflight.

ENDFORM. " load_data_into_grid

&----


*& Form change_flight

&----


  • Reads the contents of the selected row in the grid, ans transfers

  • the data to screen 200, where it can be changed and saved.

----


FORM change_flight.

DATA:l_lines TYPE i.

REFRESH gi_index_rows.

CLEAR g_selected_row.

  • Read index of selected rows

CALL METHOD go_grid->get_selected_rows

IMPORTING

et_index_rows = gi_index_rows.

  • Check if any row are selected at all. If not

  • table gi_index_rows will be empty

DESCRIBE TABLE gi_index_rows LINES l_lines.

IF l_lines = 0.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

EXPORTING

textline1 = 'You must choose a line'.

EXIT.

ENDIF.

  • Read indexes of selected rows. In this example only one

  • row can be selected as we are using gs_layout-sel_mode = 'B',

  • so it is only ncessary to read the first entry in

  • table gi_index_rows

LOOP AT gi_index_rows INTO g_selected_row.

IF sy-tabix = 1.

READ TABLE gi_sflight INDEX g_selected_row-index INTO g_wa_sflight.

ENDIF.

ENDLOOP.

  • Transfer data from the selected row to screenm 200 and show

  • screen 200

CLEAR g_screen200.

MOVE-CORRESPONDING g_wa_sflight TO g_screen200.

LEAVE TO SCREEN '200'.

ENDFORM. " change_flight

&----


*& Form save_changes

&----


  • Changes made in screen 200 are written to the datbase table

  • zsflight, and to the grid table gi_sflight, and the grid is

  • updated with method refresh_table_display to display the changes

----


FORM save_changes.

DATA: l_traffic_light TYPE c.

  • Update traffic light field

  • Update database table

MODIFY zsflight FROM g_screen200.

  • Update grid table , traffic light field and color field.

  • Note that it is necessary to use structure g_wa_sflight

  • for the update, as the screen structure does not have a

  • traffic light field

MOVE-CORRESPONDING g_screen200 TO g_wa_sflight.

IF g_wa_sflight-paymentsum < 100000.

g_wa_sflight-traffic_light = '1'.

  • C = Color, 6=Color 1=Intesified on, 0: Inverse display off

g_wa_sflight-line_color = 'C610'.

ELSEIF g_wa_sflight-paymentsum => 100000 AND

g_wa_sflight-paymentsum < 1000000.

g_wa_sflight-traffic_light = '2'.

clear g_wa_sflight-line_color.

ELSE.

g_wa_sflight-traffic_light = '3'.

clear g_wa_sflight-line_color.

ENDIF.

MODIFY gi_sflight INDEX g_selected_row-index FROM g_wa_sflight.

  • Refresh grid

CALL METHOD go_grid->refresh_table_display.

CALL METHOD cl_gui_cfw=>flush.

LEAVE TO SCREEN '100'.

ENDFORM. " save_changes

chk this blog

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid

Reward points if useful

Regards

Anji

5 REPLIES 5
Read only

Former Member
0 Likes
807

Chk the program BCALV_GRID_03 for interactive OO

Read only

Former Member
0 Likes
808

Hi

See the sample code

Example:

REPORT sapmz_hf_alv_grid .

  • Type pool for icons - used in the toolbar

TYPE-POOLS: icon.

TABLES: zsflight.

  • To allow the declaration of o_event_receiver before the

  • lcl_event_receiver class is defined, decale it as deferred in the

  • start of the program

CLASS lcl_event_receiver DEFINITION DEFERRED.

*----


  • G L O B A L I N T E R N A L T A B L E S

*----


*DATA: gi_sflight TYPE STANDARD TABLE OF sflight.

  • To include a traffic light and/or color a line the structure of the

  • table must include fields for the traffic light and/or the color

TYPES: BEGIN OF st_sflight.

INCLUDE STRUCTURE zsflight.

  • Field for traffic light

TYPES: traffic_light TYPE c.

  • Field for line color

types: line_color(4) type c.

TYPES: END OF st_sflight.

TYPES: tt_sflight TYPE STANDARD TABLE OF st_sflight.

DATA: gi_sflight TYPE tt_sflight.

*----


  • G L O B A L D A T A

*----


DATA: ok_code LIKE sy-ucomm,

  • Work area for internal table

g_wa_sflight TYPE st_sflight,

  • ALV control: Layout structure

gs_layout TYPE lvc_s_layo.

  • Declare reference variables to the ALV grid and the container

DATA:

go_grid TYPE REF TO cl_gui_alv_grid,

go_custom_container TYPE REF TO cl_gui_custom_container,

o_event_receiver TYPE REF TO lcl_event_receiver.

DATA:

  • Work area for screen 200

g_screen200 LIKE zsflight.

  • Data for storing information about selected rows in the grid

DATA:

  • Internal table

gi_index_rows TYPE lvc_t_row,

  • Information about 1 row

g_selected_row LIKE lvc_s_row.

*----


  • C L A S S E S

*----


CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid

IMPORTING

e_object e_interactive,

handle_user_command FOR EVENT user_command OF cl_gui_alv_grid

IMPORTING e_ucomm.

ENDCLASS.

----


  • CLASS lcl_event_receiver IMPLEMENTATION

----


CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_toolbar.

  • Event handler method for event toolbar.

CONSTANTS:

  • Constants for button type

c_button_normal TYPE i VALUE 0,

c_menu_and_default_button TYPE i VALUE 1,

c_menu TYPE i VALUE 2,

c_separator TYPE i VALUE 3,

c_radio_button TYPE i VALUE 4,

c_checkbox TYPE i VALUE 5,

c_menu_entry TYPE i VALUE 6.

DATA:

ls_toolbar TYPE stb_button.

  • Append seperator to the normal toolbar

CLEAR ls_toolbar.

MOVE c_separator TO ls_toolbar-butn_type..

APPEND ls_toolbar TO e_object->mt_toolbar.

  • Append a new button that to the toolbar. Use E_OBJECT of

  • event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.

  • This class has one attribute MT_TOOLBAR which is of table type

  • TTB_BUTTON. The structure is STB_BUTTON

CLEAR ls_toolbar.

MOVE 'CHANGE' TO ls_toolbar-function.

MOVE icon_change TO ls_toolbar-icon.

MOVE 'Change flight' TO ls_toolbar-quickinfo.

MOVE 'Change' TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

ENDMETHOD.

METHOD handle_user_command.

  • Handle own functions defined in the toolbar

CASE e_ucomm.

WHEN 'CHANGE'.

PERFORM change_flight.

  • LEAVE TO SCREEN 0.

ENDCASE.

ENDMETHOD.

ENDCLASS.

*----


  • S T A R T - O F - S E L E C T I O N.

*----


START-OF-SELECTION.

SET SCREEN '100'.

&----


*& Module USER_COMMAND_0100 INPUT

&----


MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module STATUS_0100 OUTPUT

&----


MODULE status_0100 OUTPUT.

DATA:

  • For parameter IS_VARIANT that is sued to set up options for storing

  • the grid layout as a variant in method set_table_for_first_display

l_layout TYPE disvariant,

  • Utillity field

l_lines TYPE i.

  • After returning from screen 200 the line that was selected before

  • going to screen 200, should be selected again. The table gi_index_rows

  • was the output table from the GET_SELECTED_ROWS method in form

  • CHANGE_FLIGHT

DESCRIBE TABLE gi_index_rows LINES l_lines.

IF l_lines > 0.

CALL METHOD go_grid->set_selected_rows

EXPORTING

it_index_rows = gi_index_rows.

CALL METHOD cl_gui_cfw=>flush.

REFRESH gi_index_rows.

ENDIF.

  • Read data and create objects

IF go_custom_container IS INITIAL.

  • Read data from datbase table

PERFORM get_data.

  • Create objects for container and ALV grid

CREATE OBJECT go_custom_container

EXPORTING container_name = 'ALV_CONTAINER'.

CREATE OBJECT go_grid

EXPORTING

i_parent = go_custom_container.

  • Create object for event_receiver class

  • and set handlers

CREATE OBJECT o_event_receiver.

SET HANDLER o_event_receiver->handle_user_command FOR go_grid.

SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.

  • Layout (Variant) for ALV grid

l_layout-report = sy-repid. "Layout fo report

*----


  • Setup the grid layout using a variable of structure lvc_s_layo

*----


  • Set grid title

gs_layout-grid_title = 'Flights'.

  • Selection mode - Single row without buttons

  • (This is the default mode

gs_layout-sel_mode = 'B'.

  • Name of the exception field (Traffic light field) and the color

  • field + set the exception and color field of the table

gs_layout-excp_fname = 'TRAFFIC_LIGHT'.

gs_layout-info_fname = 'LINE_COLOR'.

LOOP AT gi_sflight INTO g_wa_sflight.

IF g_wa_sflight-paymentsum < 100000.

  • Value of traffic light field

g_wa_sflight-traffic_light = '1'.

  • Value of color field:

  • C = Color, 6=Color 1=Intesified on, 0: Inverse display off

g_wa_sflight-line_color = 'C610'.

ELSEIF g_wa_sflight-paymentsum => 100000 AND

g_wa_sflight-paymentsum < 1000000.

g_wa_sflight-traffic_light = '2'.

ELSE.

g_wa_sflight-traffic_light = '3'.

ENDIF.

MODIFY gi_sflight FROM g_wa_sflight.

ENDLOOP.

  • Grid setup for first display

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

is_variant = l_layout

i_save = 'A'

is_layout = gs_layout

CHANGING it_outtab = gi_sflight.

*-- End of grid setup -


  • Raise event toolbar to show the modified toolbar

CALL METHOD go_grid->set_toolbar_interactive.

  • Set focus to the grid. This is not necessary in this

  • example as there is only one control on the screen

CALL METHOD cl_gui_control=>set_focus EXPORTING control = go_grid.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0200 INPUT

&----


MODULE user_command_0200 INPUT.

CASE ok_code.

WHEN 'EXIT200'.

LEAVE TO SCREEN 100.

WHEN'SAVE'.

PERFORM save_changes.

ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

&----


*& Form get_data

&----


FORM get_data.

  • Read data from table SFLIGHT

SELECT *

FROM zsflight

INTO TABLE gi_sflight.

ENDFORM. " load_data_into_grid

&----


*& Form change_flight

&----


  • Reads the contents of the selected row in the grid, ans transfers

  • the data to screen 200, where it can be changed and saved.

----


FORM change_flight.

DATA:l_lines TYPE i.

REFRESH gi_index_rows.

CLEAR g_selected_row.

  • Read index of selected rows

CALL METHOD go_grid->get_selected_rows

IMPORTING

et_index_rows = gi_index_rows.

  • Check if any row are selected at all. If not

  • table gi_index_rows will be empty

DESCRIBE TABLE gi_index_rows LINES l_lines.

IF l_lines = 0.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

EXPORTING

textline1 = 'You must choose a line'.

EXIT.

ENDIF.

  • Read indexes of selected rows. In this example only one

  • row can be selected as we are using gs_layout-sel_mode = 'B',

  • so it is only ncessary to read the first entry in

  • table gi_index_rows

LOOP AT gi_index_rows INTO g_selected_row.

IF sy-tabix = 1.

READ TABLE gi_sflight INDEX g_selected_row-index INTO g_wa_sflight.

ENDIF.

ENDLOOP.

  • Transfer data from the selected row to screenm 200 and show

  • screen 200

CLEAR g_screen200.

MOVE-CORRESPONDING g_wa_sflight TO g_screen200.

LEAVE TO SCREEN '200'.

ENDFORM. " change_flight

&----


*& Form save_changes

&----


  • Changes made in screen 200 are written to the datbase table

  • zsflight, and to the grid table gi_sflight, and the grid is

  • updated with method refresh_table_display to display the changes

----


FORM save_changes.

DATA: l_traffic_light TYPE c.

  • Update traffic light field

  • Update database table

MODIFY zsflight FROM g_screen200.

  • Update grid table , traffic light field and color field.

  • Note that it is necessary to use structure g_wa_sflight

  • for the update, as the screen structure does not have a

  • traffic light field

MOVE-CORRESPONDING g_screen200 TO g_wa_sflight.

IF g_wa_sflight-paymentsum < 100000.

g_wa_sflight-traffic_light = '1'.

  • C = Color, 6=Color 1=Intesified on, 0: Inverse display off

g_wa_sflight-line_color = 'C610'.

ELSEIF g_wa_sflight-paymentsum => 100000 AND

g_wa_sflight-paymentsum < 1000000.

g_wa_sflight-traffic_light = '2'.

clear g_wa_sflight-line_color.

ELSE.

g_wa_sflight-traffic_light = '3'.

clear g_wa_sflight-line_color.

ENDIF.

MODIFY gi_sflight INDEX g_selected_row-index FROM g_wa_sflight.

  • Refresh grid

CALL METHOD go_grid->refresh_table_display.

CALL METHOD cl_gui_cfw=>flush.

LEAVE TO SCREEN '100'.

ENDFORM. " save_changes

chk this blog

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid

Reward points if useful

Regards

Anji

Read only

Former Member
0 Likes
807

Check out this sample program

BCALV_GRID_03

Regards,

Santosh

Read only

sreeramkumar_madisetty
Active Contributor
0 Likes
807

Hi

this code is helpful for u.check it.

REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650

MESSAGE-ID ZZ_9838 .

TYPE-POOLS: SLIS.

*type declaration for values from ekko

TYPES: BEGIN OF I_EKKO,

EBELN LIKE EKKO-EBELN,

AEDAT LIKE EKKO-AEDAT,

BUKRS LIKE EKKO-BUKRS,

BSART LIKE EKKO-BSART,

LIFNR LIKE EKKO-LIFNR,

END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,

WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo

TYPES: BEGIN OF I_EKPO,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,

WA_EKPO TYPE I_EKPO .

*variable for Report ID

DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog

DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

  • declaration for events table where user comand or set PF status will

  • be defined

DATA: V_EVENTS TYPE SLIS_T_EVENT,

WA_EVENT TYPE SLIS_ALV_EVENT.

  • declartion for layout

DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

  • declaration for variant(type of display we want)

DATA: I_VARIANT TYPE DISVARIANT,

I_VARIANT1 TYPE DISVARIANT,

I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed

DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.

DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.

V_REPID = SY-REPID.

PERFORM BUILD_FIELDCATLOG.

PERFORM EVENT_CALL.

PERFORM POPULATE_EVENT.

START-OF-SELECTION.

PERFORM DATA_RETRIEVAL.

PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_REPORT.

&----


*& Form BUILD_FIELDCATLOG

&----


  • Fieldcatalog has all the field details from ekko

----


FORM BUILD_FIELDCATLOG.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'AEDAT'.

WA_FIELDCAT-SELTEXT_M = 'DATE.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'LIFNR'.

WA_FIELDCAT-NO_OUT = 'X'.

WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG

&----


*& Form EVENT_CALL

&----


  • we get all events - TOP OF PAGE or USER COMMAND in table v_events

----


FORM EVENT_CALL.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = V_EVENTS

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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. "EVENT_CALL

&----


*& Form POPULATE_EVENT

&----


  • Events populated for TOP OF PAGE & USER COMAND

----


FORM POPULATE_EVENT.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

ENDIF.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'USER_COMMAND'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-NAME.

ENDIF.

ENDFORM. "POPULATE_EVENT

&----


*& Form data_retrieval

&----


  • retreiving values from the database table ekko

----


FORM DATA_RETRIEVAL.

SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM. "data_retrieval

&----


*& Form bUild_listheader

&----


  • text

----


  • -->I_LISTHEADEtext

----


FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA HLINE TYPE SLIS_LISTHEADER.

HLINE-INFO = 'this is my first alv pgm'.

HLINE-TYP = 'H'.

ENDFORM. "build_listheader

&----


*& Form display_alv_report

&----


  • text

----


FORM DISPLAY_ALV_REPORT.

V_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

I_GRID_TITLE = I_TITLE_EKKO

  • I_GRID_SETTINGS =

  • IS_LAYOUT = ALV_LAYOUT

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • i_default = 'ZLAY1'

I_SAVE = 'A'

  • is_variant = i_variant

IT_EVENTS = V_EVENTS

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 TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_LISTHEADER

  • i_logo =

  • I_END_OF_LIST_GRID =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->, text

  • -->RS_SLEFIELDtext

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.

PERFORM BUILD_FIELDCATLOG_EKPO.

PERFORM EVENT_CALL_EKPO.

PERFORM POPULATE_EVENT_EKPO.

PERFORM DATA_RETRIEVAL_EKPO.

PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_EKPO.

ENDCASE.

ENDFORM. "user_command

&----


*& Form BUILD_FIELDCATLOG_EKPO

&----


  • text

----


FORM BUILD_FIELDCATLOG_EKPO.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELP'.

WA_FIELDCAT-SELTEXT_M = 'LINE NO'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MENGE'.

WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MEINS'.

WA_FIELDCAT-SELTEXT_M = 'UOM'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'NETPR'.

WA_FIELDCAT-SELTEXT_M = 'PRICE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG_EKPO

&----


*& Form event_call_ekpo

&----


  • we get all events - TOP OF PAGE or USER COMMAND in table v_events

----


FORM EVENT_CALL_EKPO.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = V_EVENTS

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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. "event_call_ekpo

&----


*& Form POPULATE_EVENT

&----


  • Events populated for TOP OF PAGE & USER COMAND

----


FORM POPULATE_EVENT_EKPO.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

ENDIF.

ENDFORM. "POPULATE_EVENT

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM F_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_LISTHEADER

  • i_logo =

  • I_END_OF_LIST_GRID =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->, text

  • -->RS_SLEFIELDtext

----


*retreiving values from the database table ekko

FORM DATA_RETRIEVAL_EKPO.

SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.

ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA: HLINE1 TYPE SLIS_LISTHEADER.

HLINE1-TYP = 'H'.

HLINE1-INFO = 'CHECKING PGM'.

ENDFORM.

FORM DISPLAY_ALV_EKPO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = I_TITLE_EKPO

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT =

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = V_EVENTS

TABLES

T_OUTTAB = IT_EKPO

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.

Regards,

Sree

Read only

Former Member
0 Likes
807

for header and logo , chk this blog

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid