Interactive ALV report using Function Module

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



Popular posts from this blog

ALV with field catalog merge

SAP ABAP real-time Interview Questions with answers

Using GUI Upload in SAP ABAP