Application Development 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: 

How to use ALV Grid?

Former Member
0 Kudos

Hi,

I am totally new to ALV Grids. Could you give a full example of creating a ALV Grid with 2 columns, thinking there is a internal table itab with itab-col1 & itab-col2. Please start from initialising variables and onwards.

Thanks,

Kishan

1 ACCEPTED SOLUTION

rahulkavuri
Active Contributor
0 Kudos

A small sample code

*&---------------------------------------------------------------------*
*& Report  Z_TEST_GRID                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_TEST_GRID                             .


*Data Declaration
*----------------
DATA: BEGIN OF T_EKKO,
  EBELN TYPE EKPO-EBELN,
  EBELP TYPE EKPO-EBELP,
  FLAG TYPE C,
 END OF T_EKKO.

  DATA: GD_REPID LIKE SY-REPID, "Exists
  REF_GRID TYPE REF TO CL_GUI_ALV_GRID. "new

DATA: BEGIN OF IT_EKKO OCCURS 0.
        INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_EKKO.

DATA: BEGIN OF IT_BACKUP OCCURS 0.
        INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_BACKUP.
*ALV data declarations
TYPE-POOLS: SLIS.                                 "ALV Declarations
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV.


************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  PERFORM DATA_RETRIEVAL.
  PERFORM BUILD_FIELDCATALOG.
  PERFORM BUILD_LAYOUT.
  IT_BACKUP[] = IT_EKKO[].
  PERFORM DISPLAY_ALV_REPORT.


*&--------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG.
  REFRESH FIELDCATALOG.
  CLEAR FIELDCATALOG.
*
   FIELDCATALOG-FIELDNAME   = 'FLAG'.
  FIELDCATALOG-SELTEXT_M   = 'Check'.
  FIELDCATALOG-INPUT     = 'X'.
  FIELDCATALOG-EDIT     = 'X'.
  fieldcatalog-checkbox = 'X'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'EBELN'.
  FIELDCATALOG-SELTEXT_M   = 'Purchase Order'.
  FIELDCATALOG-INPUT     = 'X'.
  FIELDCATALOG-EDIT     = 'X'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'EBELP'.
  FIELDCATALOG-SELTEXT_M   = 'PO Item'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT.
  "Permet d'ajuster les colonnes au text
*  gd_layout-colwidth_optimize = 'X'.
*  GD_LAYOUT-TOTALS_TEXT       = 'Totals'(201).

*  gd_layout-box_fieldname = 'SELECT'.
*  gd_layout-box_tabname   = 'IT_EKKO'.

ENDFORM.                    " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT .
  GD_REPID = SY-REPID.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM        = GD_REPID
*            i_callback_top_of_page   = 'TOP-OF-PAGE'
*            I_CALLBACK_PF_STATUS_SET  = 'SET_PF_STATUS'
*            I_CALLBACK_USER_COMMAND   = 'USER_COMMAND'
*            i_grid_title             = 'My Title'
            IS_LAYOUT                 = GD_LAYOUT
            IT_FIELDCAT               = FIELDCATALOG[]
       TABLES
            T_OUTTAB                  = IT_EKKO
       EXCEPTIONS
            PROGRAM_ERROR             = 1
            OTHERS                    = 2.

  IF SY-SUBRC <> 0.
    WRITE:/ SY-SUBRC.
  ENDIF.

ENDFORM.                    " DISPLAY_ALV_REPORT


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM DATA_RETRIEVAL.
  SELECT EBELN EBELP
   UP TO 10 ROWS
    FROM EKPO
    INTO CORRESPONDING FIELDS OF TABLE  IT_EKKO.
ENDFORM.                    " DATA_RETRIEVAL


*----------------------------------------------------------------------*
*                      FORM SET_PF_STATUS                              *
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB   TYPE  SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD_FULLSCREEN1' EXCLUDING RT_EXTAB.
ENDFORM.                    "set_pf_status

11 REPLIES 11

Former Member
0 Kudos

hi

chk this sample code

type-pools : slis.

DATA: BEGIN OF IT_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN, "Sales Document

VBTYP LIKE VBAK-VBTYP, "SD document category

AUDAT LIKE VBAK-AUDAT, "Document date (date received/sent)

AUGRU LIKE VBAK-AUGRU, "Order reason (reason for the business)

AUART LIKE VBAK-AUART, "Sales Document Type

NETWR LIKE VBAK-NETWR, "Net Sales Order in Doc. Currency

WAERK LIKE VBAK-WAERK, "SD document currency

ICON TYPE ICON-ID, "traffic lights

END OF IT_VBAK.

DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "field catalog

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "field catalog ITAB

WA_SORT TYPE SLIS_SORTINFO_ALV, "SORT work area

IT_SORT TYPE SLIS_T_SORTINFO_ALV, "SORT ITAB

LAYOUT TYPE SLIS_LAYOUT_ALV, "LAYOUT

WA_FCODE TYPE SLIS_EXTAB, "FUN CODE

I_FCODE_EXTAB TYPE SLIS_T_EXTAB,

WA_EVENTS TYPE SLIS_ALV_EVENT,

IT_EVENTS TYPE SLIS_T_EVENT.

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-FIELDNAME = 'ICON'.

WA_FIELDCAT-SELTEXT_L = 'ICON'.

WA_FIELDCAT-ICON = 'X'.

WA_FIELDCAT-OUTPUTLEN = 8.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-SELTEXT_L = 'SALES DOC NO.'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-FIELDNAME = 'AUDAT'.

WA_FIELDCAT-SELTEXT_L = 'CREATED ON'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-FIELDNAME = 'VBTYP'.

WA_FIELDCAT-SELTEXT_L = 'CATEGORY'.

WA_FIELDCAT-OUTPUTLEN = 1.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 6.

WA_FIELDCAT-FIELDNAME = 'AUGRU'.

WA_FIELDCAT-SELTEXT_L = 'REASON'.

WA_FIELDCAT-OUTPUTLEN = 3.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 5.

WA_FIELDCAT-FIELDNAME = 'AUART'.

WA_FIELDCAT-SELTEXT_L = 'DOC TYPE'.

WA_FIELDCAT-OUTPUTLEN = 4.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 7.

WA_FIELDCAT-FIELDNAME = 'NETWR'.

WA_FIELDCAT-SELTEXT_L = 'NET VALUE'.

WA_FIELDCAT-OUTPUTLEN = 17.

WA_FIELDCAT-DECIMALS_OUT = 2.

  • WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 8.

WA_FIELDCAT-FIELDNAME = 'WAERK'.

WA_FIELDCAT-SELTEXT_L = 'UNIT'.

WA_FIELDCAT-OUTPUTLEN = 50.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

  • IS_LAYOUT = LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_SORT = IT_SORT

  • I_CALLBACK_PF_STATUS_SET = 'STATUS'

  • IT_EXCLUDING = I_FCODE_EXTAB

  • I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • IT_EVENTS = IT_EVENTS[]

TABLES

T_OUTTAB = IT_VBAK.

amit_khare
Active Contributor
0 Kudos

Hi,

You can go to SE38 transaction and type BCALV* and press F4. You will get a lot of standard programs for help.

Regards,

Amit

former_member188685
Active Contributor
0 Kudos

Hi,

check this small code...

REPORT  ZTEST_ALV_CHECK     message-id zz           .


TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      L_LAYOUT type slis_layout_alv,
      x_events type slis_alv_event,
      it_events type SLIS_T_EVENT.

DATA: BEGIN OF ITAB OCCURS 0,
      VBELN LIKE VBAK-VBELN,
      POSNR LIKE VBAP-POSNR,
      CHK(1),
     END OF ITAB.

SELECT VBELN
       POSNR
       FROM VBAP
       UP TO 20 ROWS
       INTO TABLE ITAB.

X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.


  x_events-NAME = SLIS_EV_END_OF_PAGE.
  x_events-FORM = 'END_OF_PAGE'.
  APPEND x_events  TO iT_EVENTS.
  CLEAR x_events .
  x_events-NAME = SLIS_EV_TOP_OF_PAGE.
  x_events-FORM = 'TOP_OF_PAGE'.
  APPEND x_events  TO iT_EVENTS.
  CLEAR x_events .



CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM       = SY-REPID
    IS_LAYOUT                = L_LAYOUT
    IT_FIELDCAT              = IT_FIELDCAT
    it_events                = it_events
  TABLES
    T_OUTTAB                 = ITAB
  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_PAGE.
* BREAK-POINT.
  WRITE: / 'TOP_OF_PAGE'.
ENDFORM.

FORM END_OF_PAGE.
* BREAK-POINT.
  WRITE: / 'END_OF_PAGE'.
ENDFORM.

regards

vijay

Former Member
0 Kudos

Hi,

Simple example of how to implement an ALV grid

Note that this example uses table ZSFLIGHT. The table is equivalent to the table SFLIGHT.

Steps:

1. Create an executable program (Report)

2. Create a screen (100) and place a custom container named ALV_CONTAINER on the screen

3. Create a Pushbutton. Give it the text Exit and the functioncode EXIT

REPORT sapmz_hf_alv_grid .

TABLES: zsflight.

*----

-


  • 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.

*----

-


  • G L O B A L D A T A

*----

-


DATA: ok_code LIKE sy-ucomm,

g_wa_sflight LIKE sflight.

  • 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.

*----

-


  • 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.

  • Create objects

IF go_custom_container IS INITIAL.

CREATE OBJECT go_custom_container

EXPORTING container_name = 'ALV_CONTAINER'.

CREATE OBJECT go_grid

EXPORTING

i_parent = go_custom_container.

PERFORM load_data_into_grid.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

*&----


*

*& Form load_data_into_grid

*&----


*

FORM load_data_into_grid.

  • Read data from table SFLIGHT

SELECT *

FROM zsflight

INTO TABLE gi_sflight.

  • Load data into the grid and display them

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

CHANGING it_outtab = gi_sflight.

ENDFORM. " load_data_into_grid

Allow the user to save and reuse the layout

A button can be shown on the grid toolbar, allowing the user to save and reuse a layout. The button looks like this:

See also example in SAP standard program BCALV_GRID_09.

To do this use the parameters IS_VARIANT and I_SAVE of the set_table_for_first_display method. Note that the IS_VARIANT

parameter must have the structure DISVARIANT.

The I_SAVE "Options for saving layouts" parameter can have the following values:

· U Only user specific layouts can be saved

· X Only global layouts can be saved

· A Both user specific and global layouts can be saved

· Space Layouts can not be saved

Add the following code to the example:

FORM load_data_into_grid.

DATA:

  • For parameter IS_VARIANT

l_layout TYPE disvariant.

Code..........

  • Load data into the grid and display them

l_layout-report = sy-repid.

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

is_variant = l_layout

i_save = 'A'

CHANGING it_outtab = gi_

Integrate user defined functions in the grid toolbar

Possibilities:

· Replace existing functions in the toolbar or context men with user defined functions

· Add new functions to the toolbar or context menu

Note that the whole toolbar can be removed using the IT_TOOLBAR_EXCLUDING parameter of the set_table_for_first_display

method.

See also example in SAP standard program BCALV_GRID_05

1) To get access to the icons insert the following statement in the top of the program:

TYPE-POOLS: icon.

2) To allow the declaration of o_event_receiver before the lcl_event_receiver class is defined, declare it as deferred in the start of

the program

  • To allow the declaration of o_event_receiver before the lcl_event_receiver class is defined, declare it as deferred in the

  • start of the program

CLASS lcl_event_receiver DEFINITION DEFERRED.

3) Declare reference to the event handler class

DATA:

o_event_receiver TYPE REF TO lcl_event_receiver.

4) Class for event receiver. This class adds the new button to the toolbar and handles the event when the button is pushed

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'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMETHOD.

ENDCLASS.

5) In the PBO module, crate object for event handler and set handler

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.

6) In the PBO module after the CALL METHOD go_grid->set_table_for_first_display, raise event

toolbar to show the modified toolbar

CALL METHOD go_grid->set_toolbar_interactive.

Set focus to the grid

After CALL METHOD go_grid->set_table_for_first_display insert the following statement:

CALL METHOD cl_gui_control=>set_focus EXPORTING control = go_grid.

Set the title of the grid

Fill the grid_title field of structure lvc_s_layo.

Note that the structure lvc_s_layo can be used for to customize the grid appearance in many ways.

DATA:

  • ALV control: Layout structure

gs_layout TYPE lvc_s_layo.

  • Set grid title

gs_layout-grid_title = 'Flights'.

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

is_layout = gs_layout

CHANGING it_outtab = gi_sflight.

Customize the appearence of the grid

The structure lvc_s_layo contains fields for setting graphical properties, displaying exceptions, calculating totals and enabling specific

interaction options.

Fill the apporpiate fields of structure lvc_s_layo and insert it as a parameter in the CALL METHOD

go_grid->set_table_for_first_display. See the example under Set the title of the grid.

If you want to change apperance after list output, use the methods get_frontend_layout and set_frontend_layout.

Examples of fields in structure lvc_s_layo:

GRID_TITLE Setting the title of the grid

SEL_MODE. Selection mode, determines how rows can be selected. Can have the following values:

· A Multiple columns, multiple rows with selection buttons.

· B Simple selection, listbox, Single row/column

· C Multiple rows without buttons

· D Multiple rows with buttons and select all ICON

Setting and getting selected rows (Columns) and read line contents

You can read which rows of the grid that has been selected, and dynamic select rows of the grid using methods get_selected_rows

and set_selected_rows. There are similar methods for columns.

Note that the grid table always has the rows in the same sequence as displayed in the grid, thus you can use the index of the selected

row(s) to read the information in the rows from the table. In the examples below the grid table is named gi_sflight.

Data declaration:

DATA:

  • Internal table for indexes of selected rows

gi_index_rows TYPE lvc_t_row,

  • Information about 1 row

g_selected_row LIKE lvc_s_row.

Example 1: Reading index of selected row(s) and using it to read the grid table

CALL METHOD go_grid->get_selected_rows

IMPORTING

et_index_rows = gi_index_rows.

DESCRIBE TABLE gi_index_rows LINES l_lines.

IF l_lines = 0.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'

EXPORTING

textline1 = 'You must choose a valid line'.

EXIT.

ENDIF.

LOOP AT gi_index_rows INTO g_selected_row.

READ TABLE gi_sflight INDEX g_selected_row-index INTO g_wa_sflight.

ENDIF.

ENDLOOP.

Example 2: Set selected row(s).

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.

ENDIF.

Make an Exception field ( = Traffic lights)

There can be defined a column in the grid for display of traffic lights. This field is of type Char 1, and can contain the following values:

· 1 Red

· 2 Yellow

· 3 Green

The name of the traffic light field is supplied inh the gs_layout-excp_fname used by method set_table_for_first_display.

Example

TYPES: BEGIN OF st_sflight.

INCLUDE STRUCTURE zsflight.

TYPES: traffic_light TYPE c.

TYPES: END OF st_sflight.

TYPES: tt_sflight TYPE STANDARD TABLE OF st_sflight.

DATA: gi_sflight TYPE tt_sflight.

  • Set the exception field of the table

LOOP AT gi_sflight INTO g_wa_sflight.

IF g_wa_sflight-paymentsum < 100000.

g_wa_sflight-traffic_light = '1'.

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.

  • Name of the exception field (Traffic light field)

gs_layout-excp_fname = 'TRAFFIC_LIGHT'.

  • Grid setup for first display

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

is_layout = gs_layout

CHANGING it_outtab = gi_sflight.

Color a line

The steps for coloring a line i the grid is much the same as making a traffic light.

  • To color a line the structure of the table must include a Char 4 field for color properties

TYPES: BEGIN OF st_sflight.

INCLUDE STRUCTURE zsflight.

  • 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.

  • Loop trough the table to set the color properties of each line. The color properties field is

  • Char 4 and the characters is set as follows:

  • Char 1 = C = This is a color property

  • Char 2 = 6 = Color code (1 - 7)

  • Char 3 = Intensified on/of = 1 = on

  • Char 4 = Inverse display = 0 = of

LOOP AT gi_sflight INTO g_wa_sflight.

IF g_wa_sflight-paymentsum < 100000.

g_wa_sflight-line_color = 'C610'.

ENDIF.

MODIFY gi_sflight FROM g_wa_sflight.

ENDLOOP.

  • Name of the color field

gs_layout-info_fname = 'LINE_COLOR'.

  • Grid setup for first display

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

is_layout = gs_layout

CHANGING it_outtab = gi_sflight.

Refresh grid display

Use the grid method REFRESH_TABLE_DISPLAY

Example:

CALL METHOD go_grid->refresh_table_display.

Complete code for the ALV grid example

This example shows and ALV grid with flights. After selecting a line a change button can be pushed to display a change screen. After

the changes have been saved, the ALV grid screen is displayed again, and the grid is updated with the changes.

The example shows:

· How to setup the ALV grid

· How to ste focus to the grid

· How to set the title of the grid

· How to allow a user to save and reuse a grid layout (Variant)

· How to customize the ALV grid toolbar

· Refresh the grid

· Set and get row selection and read line contents

· Make and exception field (Traffic light)

· Coloring a line

Steps:

· Create screen 100 with the ALV grid. Remember to include an exit button

· Add a change button to the ALV grid toolbar

· Create screen 200 the Change screen

The screens:

The code:

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

rgds,

latheesh

Former Member
0 Kudos

Hii

REPORT Z_ALVGRID

NO STANDARD PAGE HEADING

LINE-COUNT 65(3)

LINE-SIZE 220

MESSAGE-ID ZZ.

************************************************************************

  • Type Pools *

************************************************************************

TYPE-POOLS: SLIS, ICON.

************************************************************************

  • Tables *

************************************************************************

TABLES: VBAK. "Sales Document Data

************************************************************************

  • Internal Tables *

************************************************************************

  • TABLE TO HOLD DATA OF SALES DOCUMENT

DATA: BEGIN OF IT_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN, "Sales Document

VBTYP LIKE VBAK-VBTYP, "SD document category

AUDAT LIKE VBAK-AUDAT, "Document date (date received/sent)

AUGRU LIKE VBAK-AUGRU, "Order reason (reason for the business)

AUART LIKE VBAK-AUART, "Sales Document Type

NETWR LIKE VBAK-NETWR, "Net Sales Order in Doc. Currency

WAERK LIKE VBAK-WAERK, "SD document currency

ICON TYPE ICON-ID, "traffic lights

END OF IT_VBAK.

************************************************************************

  • Work Areas *

************************************************************************

*WORK AREAS DEFINED FOR ALV'S

DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "field catalog

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "field catalog ITAB

WA_SORT TYPE SLIS_SORTINFO_ALV, "SORT work area

IT_SORT TYPE SLIS_T_SORTINFO_ALV, "SORT ITAB

LAYOUT TYPE SLIS_LAYOUT_ALV, "LAYOUT

WA_FCODE TYPE SLIS_EXTAB, "FUN CODE

I_FCODE_EXTAB TYPE SLIS_T_EXTAB,

WA_EVENTS TYPE SLIS_ALV_EVENT,

IT_EVENTS TYPE SLIS_T_EVENT.

.

************************************************************************

  • Selection-Screen *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

PARAMETERS: P_VBTYP LIKE VBAK-VBTYP DEFAULT 'C'.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.

PARAMETERS: LIST RADIOBUTTON GROUP G1,

GRID RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF BLOCK B2.

************************************************************************

  • At Selection-Screen *

************************************************************************

*VALIDATION

************************************************************************

  • Start of Selection *

************************************************************************

START-OF-SELECTION.

*POPULATION OF DATA INTO INTERNAL TABLE ITAB

PERFORM GET_DATA.

*DEFINE USER DEFINED FIELDCATALOG

PERFORM DEFINE_FIELDCATALOG.

*SUBTOTALS AND TOTALS DISPLAY USING SORT

PERFORM SORT_LIST.

*CHANGE FCODE OF STATUS

PERFORM CHANGE_FCODE.

*CHECK RADIOBUTTON OPTION AND ACCORDINGLY FINAL DISPLAY

PERFORM CHECK_OPTION.

*&----


*

*& Form GET_DATA

*&----


*

  • text

*----


*

FORM GET_DATA.

SELECT VBELN

VBTYP

AUDAT

AUGRU

AUART

NETWR

WAERK FROM VBAK INTO TABLE IT_VBAK

WHERE VBELN IN S_VBELN AND VBTYP = P_VBTYP

AND ERDAT > '01.01.2004' AND NETWR > 0.

LOOP AT IT_VBAK.

IF IT_VBAK-NETWR < 10000.

IT_VBAK-ICON = '@08@'.

ELSEIF IT_VBAK-NETWR > 100000.

IT_VBAK-ICON = '@0A@'.

ELSE.

IT_VBAK-ICON = '@09@'.

ENDIF.

MODIFY IT_VBAK INDEX SY-TABIX.

ENDLOOP.

ENDFORM. "GET_DATA

*&----


*

*& Form CHECK_OPTION

*&----


*

  • text

*----


*

FORM CHECK_OPTION.

WA_EVENTS-NAME = 'TOP_OF_PAGE'.

WA_EVENTS-FORM = 'TOP'.

APPEND WA_EVENTS TO IT_EVENTS.

CLEAR WA_EVENTS.

WA_EVENTS-NAME = 'END_OF_LIST'.

WA_EVENTS-FORM = 'END_LIST'.

APPEND WA_EVENTS TO IT_EVENTS.

CLEAR WA_EVENTS.

IF LIST = 'X'.

PERFORM LIST_DISP.

ENDIF.

IF GRID = 'X'.

PERFORM GRID_DISP.

ENDIF.

ENDFORM. "CHECK_OPTION

*&----


*

*& Form DEFINE_FIELDCATALOG

*&----


*

  • text

*----


*

FORM DEFINE_FIELDCATALOG.

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-FIELDNAME = 'ICON'.

WA_FIELDCAT-SELTEXT_L = 'ICON'.

WA_FIELDCAT-ICON = 'X'.

WA_FIELDCAT-OUTPUTLEN = 8.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-SELTEXT_L = 'SALES DOC NO.'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-FIELDNAME = 'AUDAT'.

WA_FIELDCAT-SELTEXT_L = 'CREATED ON'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-FIELDNAME = 'VBTYP'.

WA_FIELDCAT-SELTEXT_L = 'CATEGORY'.

WA_FIELDCAT-OUTPUTLEN = 1.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 6.

WA_FIELDCAT-FIELDNAME = 'AUGRU'.

WA_FIELDCAT-SELTEXT_L = 'REASON'.

WA_FIELDCAT-OUTPUTLEN = 3.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 5.

WA_FIELDCAT-FIELDNAME = 'AUART'.

WA_FIELDCAT-SELTEXT_L = 'DOC TYPE'.

WA_FIELDCAT-OUTPUTLEN = 4.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 7.

WA_FIELDCAT-FIELDNAME = 'NETWR'.

WA_FIELDCAT-SELTEXT_L = 'NET VALUE'.

WA_FIELDCAT-OUTPUTLEN = 17.

WA_FIELDCAT-DECIMALS_OUT = 2.

  • WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-COL_POS = 8.

WA_FIELDCAT-FIELDNAME = 'WAERK'.

WA_FIELDCAT-SELTEXT_L = 'UNIT'.

WA_FIELDCAT-OUTPUTLEN = 50.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "DEFINE_FIELDCATALOG

*&----


*

*& Form DEFINE_LAYOUT

*&----


*

  • text

*----


*

FORM DEFINE_LAYOUT.

LAYOUT-ZEBRA = 'X'.

LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL SUM'.

LAYOUT-WINDOW_TITLEBAR = 'EXERCISE 2'.

LAYOUT-TOTALS_TEXT = 'TOTAL'.

ENDFORM. "DEFINE_LAYOUT

*&----


*

*& Form SORT_LIST

*&----


*

  • text

*----


*

FORM SORT_LIST.

WA_SORT-FIELDNAME = 'VBELN'.

WA_SORT-TABNAME = 'IT_VBAK'.

WA_SORT-SPOS = 1.

WA_SORT-UP = 'X'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

WA_SORT-FIELDNAME = 'NETWR'.

WA_SORT-TABNAME = 'IT_VBAK'.

WA_SORT-UP = 'X'.

WA_SORT-SPOS = 2.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

ENDFORM. "SORT_LIST

*&----


*

*& Form LIST_DISP

*&----


*

  • text

*----


*

FORM LIST_DISP.

PERFORM DEFINE_LAYOUT.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = IT_FIELDCAT

IS_LAYOUT = LAYOUT

IT_SORT = IT_SORT

I_CALLBACK_PF_STATUS_SET = 'STATUS'

IT_EXCLUDING = I_FCODE_EXTAB

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IT_EVENTS = IT_EVENTS[]

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_VBAK

  • 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. "LIST_DISP

*&----


*

*& Form GRID_DISP

*&----


*

  • text

*----


*

FORM GRID_DISP.

PERFORM DEFINE_LAYOUT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IS_LAYOUT = LAYOUT

IT_FIELDCAT = IT_FIELDCAT

IT_SORT = IT_SORT

I_CALLBACK_PF_STATUS_SET = 'STATUS'

IT_EXCLUDING = I_FCODE_EXTAB

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IT_EVENTS = IT_EVENTS[]

TABLES

T_OUTTAB = IT_VBAK.

  • 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. "GRID_DISP

*&----


*

*& Form STATUS

*&----


*

  • text

*----


*

  • -->P_EXTAB text

*----


*

FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM. "STATUS

*&----


*

*& Form USER_COMMAND

*&----


*

  • text

*----


*

  • -->R_UCOMM text

  • -->RS_SELFIELD text

*----


*

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'BACK' OR 'CANC' OR 'EXIT'.

LEAVE TO SCREEN 0.

WHEN '&IC1'.

SET PARAMETER ID 'AUN' FIELD RS_SELFIELD-VALUE.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDCASE.

ENDFORM. "USER_COMMAND

*&----


*

*& Form CHANGE_FCODE

*&----


*

  • text

*----


*

FORM CHANGE_FCODE.

WA_FCODE = 'PRNT'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&OAD'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&AVE'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&EB9'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&SUM'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&UMC'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&XPA'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

WA_FCODE = '&OMP'.

APPEND WA_FCODE TO I_FCODE_EXTAB.

ENDFORM. "CHANGE_FCODE

*&----


*

*& Form TOP

*&----


*

  • text

*----


*

FORM TOP.

IF LIST = 'X'.

WRITE:/ SY-ULINE.

WRITE:/ 'DATE:', SY-DATUM,55 'INTELLIGROUP ASIA PVT LTD'.

WRITE:/ 'TIME:', SY-UZEIT.

WRITE:/ 'USER NAME:', SY-UNAME,60 SY-TITLE.

WRITE:/ 'PAGE', SY-PAGNO.

WRITE:/ SY-ULINE.

ENDIF.

IF GRID = 'X'.

DATA: LS_LINE TYPE SLIS_LISTHEADER,

E04_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

  • Listenüberschrift: Typ H

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

  • LS_LINE-KEY: not used for this type

LS_LINE-INFO = 'Summary'.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

  • Kopfinfo: Typ S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = 'Intelligroup'.

LS_LINE-INFO = ''.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

LS_LINE-KEY = 'ASIA'.

LS_LINE-INFO = 'PVT LTD'.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

  • Aktionsinfo: Typ A

CLEAR LS_LINE.

LS_LINE-TYP = 'A'.

  • LS_LINE-KEY: not used for this type

LS_LINE-INFO = 'truman'.

APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = E04_LT_TOP_OF_PAGE

I_LOGO = 'ENJOY_SAP_LOGO'.

ENDIF.

ENDFORM. "TOP

*&----


*

*& Form END_LIST

*&----


*

  • text

*----


*

FORM END_LIST.

IF LIST = 'X'.

SKIP 2.

WRITE:/60 'END OF PAGE'.

ENDIF.

IF GRID = 'X'.

DATA: LS_LINE TYPE SLIS_LISTHEADER,

E04_LT_END_OF_LIST TYPE SLIS_T_LISTHEADER.

  • Listenüberschrift: Typ H

CLEAR LS_LINE.

LS_LINE-TYP = 'H'.

  • LS_LINE-KEY: not used for this type

LS_LINE-INFO = 'Summary'.

APPEND LS_LINE TO E04_LT_END_OF_LIST.

  • Kopfinfo: Typ S

CLEAR LS_LINE.

LS_LINE-TYP = 'S'.

LS_LINE-KEY = 'Intelligroup'.

LS_LINE-INFO = ''.

APPEND LS_LINE TO E04_LT_END_OF_LIST.

LS_LINE-KEY = 'ASIA'.

LS_LINE-INFO = 'PVT LTD'.

APPEND LS_LINE TO E04_LT_END_OF_LIST.

  • Aktionsinfo: Typ A

CLEAR LS_LINE.

LS_LINE-TYP = 'A'.

  • LS_LINE-KEY: not used for this type

LS_LINE-INFO = TEXT-105.

APPEND LS_LINE TO E04_LT_END_OF_LIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = E04_LT_END_OF_LIST.

ENDIF.

ENDFORM. "END_LIST

Former Member
0 Kudos

Hi,

Please go through this simple exampl:

&----


*& Report ZM_ALV1 *

*& *

&----


*& *

*& *

&----


REPORT ZM_ALV1 no standard page heading message-id zp.

TYPE-POOLS: SLIS.

TABLES: MARA, MAKT, MARC, MARD.

DATA: BEGIN OF IT_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

maktx like makt-maktx,

MEINS LIKE MARA-MEINS,

END OF IT_MARA.

DATA: BEGIN OF IT_PLANT OCCURS 0,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARD-WERKS,

LGORT LIKE MARD-LGORT,

LABST LIKE MARD-LABST,

END OF IT_PLANT.

DATA: BEGIN OF I_TAB OCCURS 0,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARC-WERKS,

LGORT LIKE MARD-LGORT,

MAKTX LIKE MAKT-MAKTX,

MTART LIKE MARA-MTART,

MEINS LIKE MARA-MEINS,

LABST LIKE MARD-LABST,

LIGHTS(1),

END OF I_TAB.

DATA: PG_NAME LIKE SY-REPID.

DATA: FIELDS TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

I_LAYOUT TYPE SLIS_LAYOUT_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1.

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN.

  • SELECT MARAMATNR MARCWERKS MARAMTART MARAMEINS INTO CORRESPONDING FIELDS OF I_TAB FROM MARA INNER JOIN MARC

  • ON MARCMATNR = MARAMATNR WHERE MARA~MATNR IN S_MATNR.

  • SELECT SINGLE MAKTX INTO I_TAB-MAKTX FROM MAKT WHERE MATNR = I_TAB-MATNR AND SPRAS = SY-LANGU.

*

  • APPEND I_TAB.

  • CLEAR I_TAB.

  • ENDSELECT.

**

  • IF SY-SUBRC <> 0.

  • MESSAGE E012.

  • ENDIF.

    • without joins

*****************

refresh it_mara.

refresh it_plant.

refresh i_tab.

select matnr mtart meins into corresponding fields of it_mara from mara where matnr in s_matnr.

select single maktx into corresponding fields of it_mara from makt where matnr = it_mara-matnr and spras = sy-langu.

append it_mara.

clear it_mara.

endselect.

if sy-subrc <> 0.

message e013.

endif.

select matnr werks lgort labst into corresponding fields of table it_plant from mard for all entries in it_mara where matnr = it_mara-matnr.

if sy-subrc <> 0.

message e013.

endif.

  • select labst into corresponding fields of it_plant from mard where matnr = it_mara-matnr.

  • append it_plant.

  • endselect.

  • if sy-subrc <> 0.

  • message e013.

  • endif.

sort it_mara.

sort it_plant.

sort i_tab.

loop at it_PLANT.

i_tab-matnr = it_plant-matnr.

i_tab-werks = it_plant-werks.

i_tab-lgort = it_plant-lgort.

i_tab-labst = it_plant-labst.

read table it_mara with key matnr = it_plant-matnr.

i_tab-mtart = it_mara-mtart.

i_tab-meins = it_mara-meins.

i_tab-maktx = it_mara-maktx.

append i_tab.

endloop.

START-OF-SELECTION.

PERFORM ZFILL_FIELDS.

PERFORM Z_LAYOUT.

PERFORM Z_DISPLAY.

&----


*& Form ZFILL_FIELDS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form ZFILL_FIELDS .

FIELDS-FIELDNAME = 'MATNR'.

FIELDS-SELTEXT_M = 'MATERIAL NUMBER'.

FIELDS-KEY = 'X'.

FIELDS-COL_POS = 0.

FIELDS-OUTPUTLEN = 20.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'MAKTX'.

FIELDS-SELTEXT_M = 'DESCRIPTION'.

FIELDS-COL_POS = 4.

FIELDS-OUTPUTLEN = 40.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'MTART'.

FIELDS-SELTEXT_M = 'TYPE'.

FIELDS-COL_POS = 5.

FIELDS-OUTPUTLEN = 6.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'MEINS'.

FIELDS-SELTEXT_M = 'UOM'.

FIELDS-COL_POS = 6.

FIELDS-OUTPUTLEN = 7.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'WERKS'.

FIELDS-SELTEXT_M = 'PLANT'.

FIELDS-COL_POS = 1.

FIELDS-OUTPUTLEN = 10.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'LGORT'.

FIELDS-SELTEXT_M = 'STORAGE LOC'.

FIELDS-COL_POS = 2.

FIELDS-OUTPUTLEN = 25.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'LABST'.

FIELDS-SELTEXT_M = 'STOCK'.

FIELDS-COL_POS = 3.

FIELDS-OUTPUTLEN = 10.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

endform. " ZFILL_FIELDS

&----


*& Form Z_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form Z_LAYOUT .

I_LAYOUT-ZEBRA = 'X'.

endform. " Z_LAYOUT

&----


*& Form Z_DISPLAY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form Z_DISPLAY .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_GRID_TITLE = 'MATERIAL INFORMATION ALONG WITH THEIR PLANTS'

IS_LAYOUT = I_LAYOUT

IT_FIELDCAT = FIELDS[]

  • IMPORTING

TABLES

t_outtab = I_TAB

EXCEPTIONS

PROGRAM_ERROR = 1

.

IF sy-subrc = 1.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF SY-SUBRC <> 0.

MESSAGE E015.

ENDIF.

endform. " Z_DISPLAY

For ALV grid display, you need to take an internal table

which you need to pass to REUSE_ALV_GRID_DISPLAY function.

As far as your case is concerned, you can add the type pool slis and then pass itab in TABLES parameter of REUSE_ALV_GRID_DISPLAY function.

In field catalog section you can do:

FIELDS-FIELDNAME = 'itab-col1'.

FIELDS-SELTEXT_M = 'Coulmn 1'.

FIELDS-KEY = 'X'.

FIELDS-COL_POS = 0.

FIELDS-OUTPUTLEN = 20.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

FIELDS-FIELDNAME = 'itab-col2'.

FIELDS-SELTEXT_M = 'Column 2'.

FIELDS-COL_POS = 1.

FIELDS-OUTPUTLEN = 40.

FIELDS-EMPHASIZE = 'X'.

APPEND FIELDS.

Rest all same....

You can do it ... just go through the above program.

The declarations of fieldcatalog and layout will be the same in case of your program too.

Regards,

Sangeeta.

Former Member
0 Kudos

Hai Kishan

Check the following Code

&----


*& Report ZALV_GRID *

*& *

&----


*& *

*& *

&----


REPORT ZALV_GRID .

TABLES: MARA.

TYPE-POOLS : SLIS.

*----


  • Data declaration

*----


DATA: BEGIN OF I_MARA OCCURS 0.

INCLUDE STRUCTURE MARA.

DATA: END OF I_MARA.

DATA: V_REPID LIKE SY-REPID.

*----


  • selection-screen

*----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.

PARAMETERS: P_MTART LIKE MARA-MTART DEFAULT 'ROH'.

SELECTION-SCREEN END OF BLOCK B1.

*----


  • initialisation

*----


INITIALIZATION.

S_MATNR-LOW = '1400'.

S_MATNR-HIGH = '1500'.

APPEND S_MATNR.

V_REPID = SY-REPID.

*----


  • start-of-selection

*----


START-OF-SELECTION.

SELECT * FROM MARA

INTO TABLE I_MARA

WHERE MATNR IN S_MATNR AND

MTART = P_MTART.

CHECK SY-SUBRC = 0.

*----


  • end of selection

*----


END-OF-SELECTION.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

I_STRUCTURE_NAME = 'MARA'

  • IS_LAYOUT =

  • IT_FIELDCAT =

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = I_MARA

  • 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.

Thanks & regards

Sreenivasulu P

rahulkavuri
Active Contributor
0 Kudos

A small sample code

*&---------------------------------------------------------------------*
*& Report  Z_TEST_GRID                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_TEST_GRID                             .


*Data Declaration
*----------------
DATA: BEGIN OF T_EKKO,
  EBELN TYPE EKPO-EBELN,
  EBELP TYPE EKPO-EBELP,
  FLAG TYPE C,
 END OF T_EKKO.

  DATA: GD_REPID LIKE SY-REPID, "Exists
  REF_GRID TYPE REF TO CL_GUI_ALV_GRID. "new

DATA: BEGIN OF IT_EKKO OCCURS 0.
        INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_EKKO.

DATA: BEGIN OF IT_BACKUP OCCURS 0.
        INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_BACKUP.
*ALV data declarations
TYPE-POOLS: SLIS.                                 "ALV Declarations
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV.


************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  PERFORM DATA_RETRIEVAL.
  PERFORM BUILD_FIELDCATALOG.
  PERFORM BUILD_LAYOUT.
  IT_BACKUP[] = IT_EKKO[].
  PERFORM DISPLAY_ALV_REPORT.


*&--------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG.
  REFRESH FIELDCATALOG.
  CLEAR FIELDCATALOG.
*
   FIELDCATALOG-FIELDNAME   = 'FLAG'.
  FIELDCATALOG-SELTEXT_M   = 'Check'.
  FIELDCATALOG-INPUT     = 'X'.
  FIELDCATALOG-EDIT     = 'X'.
  fieldcatalog-checkbox = 'X'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'EBELN'.
  FIELDCATALOG-SELTEXT_M   = 'Purchase Order'.
  FIELDCATALOG-INPUT     = 'X'.
  FIELDCATALOG-EDIT     = 'X'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'EBELP'.
  FIELDCATALOG-SELTEXT_M   = 'PO Item'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT.
  "Permet d'ajuster les colonnes au text
*  gd_layout-colwidth_optimize = 'X'.
*  GD_LAYOUT-TOTALS_TEXT       = 'Totals'(201).

*  gd_layout-box_fieldname = 'SELECT'.
*  gd_layout-box_tabname   = 'IT_EKKO'.

ENDFORM.                    " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT .
  GD_REPID = SY-REPID.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM        = GD_REPID
*            i_callback_top_of_page   = 'TOP-OF-PAGE'
*            I_CALLBACK_PF_STATUS_SET  = 'SET_PF_STATUS'
*            I_CALLBACK_USER_COMMAND   = 'USER_COMMAND'
*            i_grid_title             = 'My Title'
            IS_LAYOUT                 = GD_LAYOUT
            IT_FIELDCAT               = FIELDCATALOG[]
       TABLES
            T_OUTTAB                  = IT_EKKO
       EXCEPTIONS
            PROGRAM_ERROR             = 1
            OTHERS                    = 2.

  IF SY-SUBRC <> 0.
    WRITE:/ SY-SUBRC.
  ENDIF.

ENDFORM.                    " DISPLAY_ALV_REPORT


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM DATA_RETRIEVAL.
  SELECT EBELN EBELP
   UP TO 10 ROWS
    FROM EKPO
    INTO CORRESPONDING FIELDS OF TABLE  IT_EKKO.
ENDFORM.                    " DATA_RETRIEVAL


*----------------------------------------------------------------------*
*                      FORM SET_PF_STATUS                              *
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB   TYPE  SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD_FULLSCREEN1' EXCLUDING RT_EXTAB.
ENDFORM.                    "set_pf_status

Former Member
0 Kudos

Hi kishan,

this is a simple code for alv list display and grid display.try it!

type-pools: slis.

data: g_repid like sy-repid,

I_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,

l_fieldcat TYPE SLIS_FIELDCAT_ALV.

parameters: list radiobutton group rad1,

grid radiobutton group rad1.

data: begin of it_mara occurs 0,

matnr like makt-matnr,

maktx like makt-maktx,

end of it_mara.

initialization.

g_repid = sy-repid.

start-of-selection.

select matnr maktx from makt into table

it_mara.

*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

  • EXPORTING

  • I_PROGRAM_NAME = g_repid

  • I_INTERNAL_TABNAME = 'IT_MARA'

    • I_STRUCTURE_NAME = 'mara'

    • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_INCLNAME = g_repid

    • I_BYPASSING_BUFFER =

    • I_BUFFER_ACTIVE =

  • CHANGING

  • CT_FIELDCAT = I_FIELDTAB

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 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.

end-of-selection.

perform modify_fiedcat.

if list = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = g_repid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND =

  • I_STRUCTURE_NAME = g_repid

  • IS_LAYOUT = wa_layout

IT_FIELDCAT = I_FIELDTAB

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_MARA

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.

elseif grid = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = g_repid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_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_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = i_fieldtab

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = it_mara

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.

endif.

&----


*& Form modify_fiedcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM modify_fiedcat .

*loop at i_fieldtab into l_fieldcat.

  • case l_fieldcat-fieldname.

*

  • when 'matnr'.

clear l_fieldcat.

L_FIELDCAT-TABNAME = 'IT_MARA'.

L_FIELDCAT-FIELDNAME = 'MATNR'.

l_fieldcat-seltext_l = 'material number'.

  • l_fieldcat-ddictxt = 'l'.

l_fieldcat-col_pos = 2.

l_fieldcat-outputlen = 20.

APPEND L_FIELDCAT TO I_FIELDTAB.

CLEAR L_FIELDCAT .

  • when 'maktx'.

L_FIELDCAT-TABNAME = 'IT_MARA'.

L_FIELDCAT-FIELDNAME = 'MAKTX'.

l_fieldcat-seltext_l = 'description'.

  • l_fieldcat-ddictxt = 'l'.

l_fieldcat-col_pos = 1.

l_fieldcat-outputlen = 30.

APPEND L_FIELDCAT TO I_FIELDTAB.

CLEAR L_FIELDCAT .

*endcase.

*modify i_fieldtab from l_fieldcat.

*endloop.

award points if helpful.

regards,

keerthi.

0 Kudos

Please check below ALV GRID program.

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

*& Report ZSALESORDER_REPORT2

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

*&

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

REPORT ZSALESORDER_REPORT2.

TYPES: BEGIN OF TY_VBAP,

VBELN TYPE VBAP-VBELN,

POSNR TYPE VBAP-POSNR,

MATNR TYPE VBAP-MATNR,

MATWA TYPE VBAP-MATWA,

CHARG TYPE VBAP-CHARG,

NETPR TYPE VBAP-NETPR,

END OF TY_VBAP.

TYPES:BEGIN OF TY_FINAL,

VBELN TYPE VBAP-VBELN,

POSNR TYPE VBAP-POSNR,

MATNR TYPE VBAP-MATNR,

MATWA TYPE VBAP-MATWA,

CHARG TYPE VBAP-CHARG,

NETPR TYPE VBAP-NETPR,

END OF TY_FINAL.

DATA:IT_SALES TYPE TABLE OF TY_VBAP,

WA_SALES TYPE TY_VBAP.

DATA:IT_FINAL TYPE TABLE OF TY_FINAL,

WA_FINAL TYPE TY_FINAL.

DATA: IT_SLIS TYPE SLIS_T_FIELDCAT_ALV,

WA_SLIS TYPE SLIS_FIELDCAT_ALV..

DATA:LS_LAYOUT TYPE SLIS_LAYOUT_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_ORDER FOR WA_SALES-VBELN.

SELECTION-SCREEN END OF BLOCK B1.

PERFORM GET_DATA.

PERFORM PROCESS_DATA.

PERFORM FIELDCATE.

PERFORM DISPLAY.

START-OF-SELECTION.

FORM GET_DATA.

SELECT VBELN

POSNR

MATNR

MATWA

CHARG

NETPR

FROM VBAP

INTO TABLE IT_SALES

WHERE VBELN IN S_ORDER.

ENDFORM.

FORM PROCESS_DATA.

LOOP AT IT_SALES INTO WA_SALES.

WA_FINAL-VBELN = WA_SALES-VBELN.

WA_FINAL-POSNR = WA_SALES-POSNR.

WA_FINAL-MATNR = WA_SALES-MATNR.

WA_FINAL-MATWA = WA_SALES-MATWA.

WA_FINAL-CHARG = WA_SALES-CHARG.

WA_FINAL-NETPR = WA_SALES-NETPR.

APPEND WA_FINAL TO IT_FINAL.

CLEAR:WA_FINAL.

ENDLOOP.

ENDFORM.

FORM FIELDCATE.

WA_SLIS-FIELDNAME = 'VBELN'.

WA_SLIS-TABNAME = 'IT_FINAL'.

WA_SLIS-SELTEXT_S = 'Order number'.

APPEND WA_SLIS TO IT_SLIS.

CLEAR:WA_SLIS.

WA_SLIS-FIELDNAME = 'POSNR'.

WA_SLIS-TABNAME = 'IT_FINAL'.

WA_SLIS-SELTEXT_S = 'Order number'.

APPEND WA_SLIS TO IT_SLIS.

CLEAR:WA_SLIS.

WA_SLIS-FIELDNAME = 'MATNR'.

WA_SLIS-TABNAME = 'IT_FINAL'.

WA_SLIS-SELTEXT_S = 'Order number'.

APPEND WA_SLIS TO IT_SLIS.

CLEAR:WA_SLIS.

WA_SLIS-FIELDNAME = 'MATWA'.

WA_SLIS-TABNAME = 'IT_FINAL'.

WA_SLIS-SELTEXT_S = 'Order number'.

APPEND WA_SLIS TO IT_SLIS.

CLEAR:WA_SLIS.

WA_SLIS-FIELDNAME = 'CHARG'.

WA_SLIS-TABNAME = 'IT_FINAL'.

WA_SLIS-SELTEXT_S = 'Order number'.

APPEND WA_SLIS TO IT_SLIS.

CLEAR:WA_SLIS.

WA_SLIS-FIELDNAME = 'NETPR'.

WA_SLIS-TABNAME = 'IT_FINAL'.

WA_SLIS-SELTEXT_S = 'Order number'.

APPEND WA_SLIS TO IT_SLIS.

CLEAR:WA_SLIS.

WA_SORT-SPOS = 1.

WA_SORT-FIELDNAME = 'POSNR'.

WA_SORT-UP = 'X'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR:WA_SORT.

ENDFORM.

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

*& Form FIELD_CAT

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

FORM DISPLAY.

LS_LAYOUT-ZEBRA = 'X'.

LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

* I_INTERFACE_CHECK = ' '

* I_BYPASSING_BUFFER = ' '

* I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

* I_CALLBACK_PF_STATUS_SET = ' '

* I_CALLBACK_USER_COMMAND = ' '

* I_CALLBACK_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_GRID_SETTINGS =

IS_LAYOUT = LS_LAYOUT

IT_FIELDCAT = IT_SLIS

* IT_EXCLUDING =

* IT_SPECIAL_GROUPS =

* IT_FILTER =

* IS_SEL_HIDE =

* I_DEFAULT = 'X'

* I_SAVE = 'SAVE'

* IS_VARIANT =

* IT_EVENTS =

* IT_EVENT_EXIT =

* IS_PRINT =

* IS_REPREP_ID =

* I_SCREEN_START_COLUMN = 0

* I_SCREEN_START_LINE = 0

* I_SCREEN_END_COLUMN = 0

* I_SCREEN_END_LINE = 0

* I_HTML_HEIGHT_TOP = 0

* I_HTML_HEIGHT_END = 0

* IT_ALV_GRAPHICS =

* IT_HYPERLINK =

* IT_ADD_FIELDCAT =

* IT_EXCEPT_QINFO =

* IR_SALV_FULLSCREEN_ADAPTER =

* O_PREVIOUS_SRAL_HANDLER =

* IMPORTING

* E_EXIT_CAUSED_BY_CALLER =

* ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_FINAL[]

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

* Implement suitable error handling here

ENDIF.

ENDFORM.