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
Post a Comment