Interactive ALV report with ALV Events in SAP ABAP
Interactive ALV report using SAP ABAP programming with ALV events and user command.
REPORT ZALV6 .
DATA: IT_EKKO LIKE EKKO OCCURS 1 WITH HEADER LINE.
DATA: IT_EKPO LIKE EKPO OCCURS 1 WITH HEADER LINE.
TYPE-POOLS: SLIS.
DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.
SELECT-OPTIONS: S_EBELN FOR IT_EKKO-EBELN.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_EVENTS.
END-OF-SELECTION.
PERFORM SHOW_BASIC_GRID.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT *
FROM EKKO
INTO TABLE IT_EKKO
WHERE EBELN IN S_EBELN.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form SHOW_BASIC_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SHOW_BASIC_GRID .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'EKKO'
I_GRID_TITLE = 'Purchase Order Header'
I_CALLBACK_PROGRAM = 'ZALV6'
IS_LAYOUT = WA_LAYOUT
IT_EVENTS = IT_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. " SHOW_BASIC_GRID
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
WA_LAYOUT-KEY_HOTSPOT = 'X'.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form BUILD_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BUILD_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = IT_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.
ELSE.
READ TABLE IT_EVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
IT_EVENTS-FORM = 'SHOW_SEC_GRID'.
MODIFY IT_EVENTS INDEX SY-TABIX.
ENDIF.
ENDIF.
ENDFORM. " BUILD_EVENTS
*&---------------------------------------------------------------------*
*& Form SHOW_SEC_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SHOW_SEC_GRID USING P_UCOMM LIKE SY-UCOMM
P_SEL TYPE SLIS_SELFIELD.
CASE P_UCOMM.
WHEN '&IC1'.
REFRESH IT_EKPO.
SELECT *
FROM EKPO
INTO TABLE IT_EKPO
WHERE EBELN = P_SEL-VALUE.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'EKPO'
I_GRID_TITLE = 'Purchase order Items'
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.
ENDCASE.
ENDFORM. " SHOW_SEC_GRID