Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Simple code for creating dropdown lists for columns in ALV grid output

Error rendering macro 'code': Invalid value specified for parameter 'lang'
REPORT zalv_dropdowns.
*Type pools declarations for ALV
TYPE-POOLS : slis.
*data declarations for ALV container,ALV grid, Fieldcatalogues & layout
DATA: g_grid TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container,
      gt_fieldcat TYPE lvc_t_fcat,
      gs_layout TYPE lvc_s_layo.
*INTERNAL TABLE AND WA DECLARATIONS FOR t517 A table
DATA: gt_outtab TYPE STANDARD TABLE OF t517a INITIAL SIZE 0,
      wa_outtab TYPE t517a.
*initialisation event
INITIALIZATION.
*Start of selection event
START-OF-SELECTION.
*Call to ALV
  CALL SCREEN 600.
*On this statement double click it takes you to the screen painter SE51.
*Create a Custom container and name it CCONT and OK code as OK_CODE.
*Save check and Activate the screen painter.
*Now a normal screen with number 600 is created which holds the ALV grid.
*PBO of the actual screen , Here we can give a title and customized menus
*Here we also call the subroutine for ALV output.
*---------------------------------------------------------------------
*MODULE PBO OUTPUT *
*---------------------------------------------------------------------
MODULE pbo OUTPUT.
*set pf-status 'xxx'.
*set titlebar 'MAIN100'.
*Subroutine to display the output in alv
  PERFORM alv_output.
ENDMODULE. "pbo OUTPUT
*PAI module of the screen created. In case we use an interactive ALV or
*for additional functionalities we can create OK codes and based on the user command we can do the coding.
*---------------------------------------------------------------------
*MODULE PAI INPUT *
*---------------------------------------------------------------------
MODULE pai INPUT.
ENDMODULE. "pai INPUT
*&---------------------------------------------------------------------
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------
FORM build_fieldcat.
  DATA ls_fcat TYPE lvc_s_fcat.
*Build the field catalogue
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name = 'T517A'
    CHANGING
      ct_fieldcat      = gt_fieldcat.
*To assign dropdown in the fieldcataogue
  LOOP AT gt_fieldcat INTO ls_fcat.
    CASE ls_fcat-fieldname.
      WHEN 'SLART'.
*drdn-hndl = '1' is the first list box
        ls_fcat-drdn_hndl = '1'.
        ls_fcat-outputlen = 15.
        MODIFY gt_fieldcat FROM ls_fcat.
*drdn-hndl = '2' is the second list box
      WHEN 'ABART'.
        ls_fcat-drdn_hndl = '2'.
        ls_fcat-outputlen = 15.
        MODIFY gt_fieldcat FROM ls_fcat.
    ENDCASE.
  ENDLOOP.
ENDFORM. "build_fieldcat
*&---------------------------------------------------------------------
*& Form ALV_OUTPUT
*&---------------------------------------------------------------------
FORM alv_output .
*Create object for container
  CREATE OBJECT g_custom_container
    EXPORTING
      container_name = 'CCONT'.
*create object for grid
  CREATE OBJECT g_grid
    EXPORTING
      i_parent = g_custom_container.
*Build fieldcat and set column
*Assign a handle for the dropdown listbox.
  PERFORM build_fieldcat.
*Build layout
  PERFORM build_layout.
*Define a drop down table.
  PERFORM dropdown_table.
*fetch values from the T517A table
  SELECT * FROM t517a INTO TABLE gt_outtab.
*Display ALV output
  CALL METHOD g_grid->set_table_for_first_display
    EXPORTING
      is_layout       = gs_layout
    CHANGING
      it_fieldcatalog = gt_fieldcat
      it_outtab       = gt_outtab.
ENDFORM. "ALV_OUTPUT
*&---------------------------------------------------------------------
*& Form dropdown_table
*&---------------------------------------------------------------------
FORM dropdown_table.
*Declarations for drop down lists in ALV.
  DATA: lt_dropdown TYPE lvc_t_drop,
  ls_dropdown TYPE lvc_s_drop.
*First SLART listbox (handle '1').
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '01 Primary school'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '02 Lower Secondary'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '03 Upper Secondary'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '04 Professional School'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '05 College'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '06 University'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '1'.
  ls_dropdown-value = '09 Other Establishment'.
  APPEND ls_dropdown TO lt_dropdown.
*Second ABART listbox (handle '2').
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '10 Primary School certificate'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '20 Lower secondary/Junior high'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '30 High school diploma(B-levels)'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '31 Vocational'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '32 Matriculation'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '40 Specialist vocational certificate'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '50 College degree Level1'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '51 College degree Level2'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '52 Masters degree'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '60 Univ Degree level1'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '61 Bachelors degree'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '62 Masters degree'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '63 Licenciate'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '64 Doctors Degree Ph.D'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '89 None'.
  APPEND ls_dropdown TO lt_dropdown.
  ls_dropdown-handle = '2'.
  ls_dropdown-value = '90 Unknown'.
  APPEND ls_dropdown TO lt_dropdown.
*method to display the dropdown in ALV
  CALL METHOD g_grid->set_drop_down_table
    EXPORTING
      it_drop_down = lt_dropdown.
ENDFORM. " dropdown_table
*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       layout for ALV output
*----------------------------------------------------------------------*
FORM build_layout .
  gs_layout-cwidth_opt = 'X'.
  gs_layout-grid_title = 'ALV DROPDOWN LISTS'.
  gs_layout-no_toolbar = 'X'.
ENDFORM. " build_layout