Dropdown list in ALV Display

 

REPORT ZVB_DD.
TYPE-POOLS:SLIS.
TABLES:VBAK,VBAP.
SELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

TYPES:BEGIN OF TY_VBAK,
  VBELN TYPE VBAK-VBELN,
  END OF TY_VBAK,
  BEGIN OF TY_VBAP,
    VBELN TYPE VBAP-VBELN,
    POSNR TYPE VBAP-POSNR,
    END OF TY_VBAP,
    BEGIN OF TY_FINAL,
       VBELN TYPE VBAK-VBELN,
    POSNR TYPE VBAP-POSNR,
      DD TYPE DAVO,
      END OF TY_FINAL.

DATA:LT_VBAK TYPE TABLE OF TY_VBAK,
      LS_VBAK TYPE TY_VBAK,
      LT_VBAP TYPE TABLE OF TY_VBAP,
      LS_VBAP TYPE TY_VBAP,
      LT_FINAL TYPE TABLE OF TY_FINAL,
      LS_FINAL TYPE TY_FINAL.

DATA:LT_FCAT TYPE LVC_T_FCAT,
      LS_FCAT TYPE LVC_S_FCAT.

DATA:LT_DD TYPE LVC_T_DROP,
      LS_DD TYPE LVC_S_DROP.

DATA:LO_OBJECT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA:LO_GRID TYPE REF TO CL_GUI_ALV_GRID.


SELECT VBELN
  FROM VBAK
  INTO TABLE LT_VBAK
  WHERE VBELN IN S_VBELN.
  IF LT_VBAK IS NOT INITIAL.
    SELECT VBELN POSNR
      FROM VBAP
      INTO TABLE LT_VBAP
      FOR ALL ENTRIES IN LT_VBAK
      WHERE VBELN LT_VBAK-VBELN.
      ENDIF.

LOOP AT LT_VBAK INTO LS_VBAK.
  LOOP AT LT_VBAP INTO LS_VBAP WHERE VBELN LS_VBAK-VBELN.
    LS_FINAL-VBELN LS_VBAP-VBELN.
    LS_FINAL-POSNR LS_VBAP-POSNR.
    APPEND LS_FINAL TO LT_FINAL.
    CLEAR:LS_FINAL.
    ENDLOOP.
  ENDLOOP.

sort lt_final by vbeln posnr.
 

CALL SCREEN '100'.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
if sy-ucomm 'BACK'.
  LEAVE TO SCREEN '0'.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.

 CREATE OBJECT LO_OBJECT
EXPORTING
  CONTAINER_NAME 'CONT'.

CREATE OBJECT LO_GRID
EXPORTING
  I_PARENT LO_OBJECT.

REFRESH lt_fcat.
CLEAR ls_fcat.
LS_FCAT-COL_POS '1'.
ls_fcat-fieldname 'VBELN'.
LS_FCAT-scrtext_m 'Sales Order'.
APPEND LS_FCAT TO LT_FCAT.
CLEAR LS_FCAT.

LS_FCAT-COL_POS '2'.
ls_fcat-fieldname 'POSNR'.
LS_FCAT-scrtext_m 'SO Item'.
APPEND LS_FCAT TO LT_FCAT.
CLEAR LS_FCAT.

LS_FCAT-COL_POS '2'.
ls_fcat-fieldname 'DAVO'.
LS_FCAT-scrtext_m 'Ship-to'.
LS_FCAT-EDIT 'X'.
*ls_fcat-CELL_MERGE = 'X'.
APPEND LS_FCAT TO LT_FCAT.
CLEAR LS_FCAT.

LS_DD-handle '1'.
LS_DD-VALUE ' '.
APPEND LS_DD TO LT_DD.
LS_DD-handle '1'.
LS_DD-VALUE 'A'.
APPEND LS_DD TO LT_DD.
LS_DD-handle '1'.
LS_DD-VALUE 'B'.
APPEND LS_DD TO LT_DD.
LS_DD-handle '1'.
LS_DD-VALUE 'C'.
APPEND LS_DD TO LT_DD.

CALL METHOD LO_GRID->SET_DROP_DOWN_TABLE
EXPORTING
  IT_DROP_DOWN LT_DD.
LOOP AT LT_FCAT INTO LS_FCAT.
  CASE LS_FCAT-FIELDNAME.
    WHEN 'DAVO'.
      LS_FCAT-DRDN_HNDL '1'.
      LS_FCAT-OUTPUTLEN 15.
      MODIFY LT_FCAT FROM LS_FCAT.
    ENDCASE.
  ENDLOOP.

CALL METHOD lo_grid->set_table_for_first_display
  CHANGING
    it_outtab                     LT_FINAL
    it_fieldcatalog               LT_FCAT
*    it_sort                       =
*    it_filter                     =
  EXCEPTIONS
    invalid_parameter_combination 1
    program_error                 2
    too_many_lines                3
    others                        4
        .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDMODULE.

Output:

 

Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction