Real-time example of interactive ALV in SAP ABAP
REPORT ZALV_4 .
DATA: IT_VBRK LIKE VBRK OCCURS 1 WITH HEADER LINE.
DATA: IT_VBRP LIKE VBRP OCCURS 1 WITH HEADER LINE.
DATA: V_VBELN LIKE VBRK-VBELN.
TYPE-POOLS: SLIS.
DATA: X_LAYO TYPE SLIS_LAYOUT_ALV.
DATA: IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.
SELECT-OPTIONS: S_VBELN FOR IT_VBRK-VBELN.
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 VBRK
INTO TABLE IT_VBRK
WHERE VBELN IN S_VBELN.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form SHOW_BASIC_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SHOW_BASIC_GRID .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZALV_4'
I_STRUCTURE_NAME = 'VBRK'
I_GRID_TITLE = 'Billing Document Header'
IS_LAYOUT = X_LAYO
IT_EVENTS = IT_EVENTS[]
TABLES
T_OUTTAB = IT_VBRK
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 .
X_LAYO-ZEBRA = 'X'.
X_LAYO-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 = 'CALL_SEC_GRID'.
MODIFY IT_EVENTS INDEX SY-TABIX.
ENDIF.
ENDIF.
ENDFORM. " BUILD_EVENTS
*&--------------------------------------------------------------------*
*& Form CALL_SEC_GRID
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM CALL_SEC_GRID USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
IF R_UCOMM = '&IC1'.
READ TABLE IT_VBRK INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
V_VBELN = IT_VBRK-VBELN.
IF NOT V_VBELN IS INITIAL.
* IF RS_SELFIELD-FIELDNAME = 'VBELN'.
* SET PARAMETER ID 'VF' FIELD V_VBELN.
* CALL TRANSACTION 'VF02' AND SKIP FIRST SCREEN.
* ENDIF.
REFRESH IT_VBRP.
SELECT *
FROM VBRP
INTO TABLE IT_VBRP
WHERE VBELN = V_VBELN.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'VBRP'
I_GRID_TITLE = 'Billing Document Items'
TABLES
T_OUTTAB = IT_VBRP
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.
ENDIF.
ENDIF.
ENDFORM. "CALL_SEC_GRID