ALV Report 3

Example ALV Report 3
*&---------------------------------------------------------------------*
*& Report  ZALV3                                                       *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  ZALV4.

DATA: BEGIN OF ITAB OCCURS 1,
        MATNR LIKE MARA-MATNR,
        MTART LIKE MARA-MTART,
        MATKL LIKE MARA-MATKL,
        MAKTX LIKE MAKT-MAKTX,
        WERKS LIKE MARD-WERKS,
        LGORT LIKE MARD-LGORT,
        LABST LIKE MARD-LABST,
      END OF ITAB.

TYPE-POOLS: SLIS.

*--for field catalog
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
      WA_FLDCAT LIKE LINE OF IT_FLDCAT.

*--for layout
DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

*--For Sorting
DATA: IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

*--For events
DATA: IT_EVENTS TYPE SLIS_T_EVENT,
      WA_EVENT LIKE LINE OF IT_EVENTS.

*--for text and logos
DATA: IT_COMMENT TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

*--VARIANT
DATA: WA_VAR LIKE DISVARIANT.

DATA:   V_TEXT(20) TYPE C,
        V_REC(3) TYPE C.


SELECT-OPTIONS: S_MATNR FOR ITAB-MATNR.
PARAMETERS: P_AUTO RADIOBUTTON GROUP G1,
            P_MANU RADIOBUTTON GROUP G1.

PARAMETERS: P_CHK AS CHECKBOX DEFAULT 'X'.
PARAMETERS: P_VAR LIKE DISVARIANT-VARIANT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VAR.
  PERFORM ALV_VAR_F4.


START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM BUILD_FLDCAT.
  PERFORM BUILD_LAYOUT.
  PERFORM DO_SORT.
  PERFORM POPULATE_EVENTS.

END-OF-SELECTION.
  PERFORM SHOW-GRID.




*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_DATA .
  SELECT A~MATNR
           MTART
           MATKL
           MAKTX
           WERKS
           LGORT
           LABST
    INTO TABLE ITAB
    FROM MARA AS A
    JOIN MAKT AS B
    ON B~MATNR = A~MATNR
    JOIN MARD AS C
    ON C~MATNR = A~MATNR
    WHERE A~MATNR IN S_MATNR
      AND SPRAS = SY-LANGU.

ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  SHOW-GRID
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SHOW-GRID .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = 'ZALV4'
      I_BACKGROUND_ID    = 'PLAIN_BACKGROUND'
      IS_LAYOUT          = WA_LAYOUT
      IT_FIELDCAT        = IT_FLDCAT
      IT_SORT            = IT_SORT[]
      I_DEFAULT          = 'X'
      I_SAVE             = 'X'
      IS_VARIANT         = WA_VAR
      IT_EVENTS          = IT_EVENTS
    TABLES
      T_OUTTAB           = ITAB
    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-GRID
*&---------------------------------------------------------------------*
*&      Form  BUILD_FLDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_FLDCAT .
  IF P_MANU = 'X'.
    WA_FLDCAT-COL_POS = 1.
    WA_FLDCAT-FIELDNAME = 'MATNR'.
    WA_FLDCAT-OUTPUTLEN = 18.
    WA_FLDCAT-KEY = 'X'.
    WA_FLDCAT-SELTEXT_M = 'Material No'.
    WA_FLDCAT-DDICTXT = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.

    WA_FLDCAT-COL_POS = 2.
    WA_FLDCAT-FIELDNAME = 'MTART'.
    WA_FLDCAT-OUTPUTLEN = 10.
    WA_FLDCAT-SELTEXT_M = 'Mat Type'.
    WA_FLDCAT-DDICTXT = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.

    WA_FLDCAT-COL_POS = 3.
    WA_FLDCAT-FIELDNAME = 'MATKL'.
    WA_FLDCAT-OUTPUTLEN = 10.
    WA_FLDCAT-SELTEXT_M = 'Mat Grp'.
    WA_FLDCAT-DDICTXT = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.

    WA_FLDCAT-COL_POS = 4.
    WA_FLDCAT-FIELDNAME = 'MAKTX'.
    WA_FLDCAT-OUTPUTLEN = 40.
    WA_FLDCAT-SELTEXT_M = 'Material Desc'.
    WA_FLDCAT-DDICTXT = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.


    WA_FLDCAT-COL_POS = 5.
    WA_FLDCAT-FIELDNAME = 'WERKS'.
    WA_FLDCAT-OUTPUTLEN = 7.
    WA_FLDCAT-SELTEXT_M = 'Plant'.
    WA_FLDCAT-DDICTXT = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.

    WA_FLDCAT-COL_POS = 6.
    WA_FLDCAT-FIELDNAME = 'LGORT'.
    WA_FLDCAT-OUTPUTLEN = 10.
    WA_FLDCAT-SELTEXT_M = 'Str.Loc'.
    WA_FLDCAT-DDICTXT = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.


    WA_FLDCAT-COL_POS = 7.
    WA_FLDCAT-FIELDNAME = 'LABST'.
    WA_FLDCAT-OUTPUTLEN = 20.
    WA_FLDCAT-SELTEXT_M = 'Qty'.
    WA_FLDCAT-DDICTXT = 'M'.
    WA_FLDCAT-DO_SUM = 'X'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.
  ELSE.
*--Auto generation of field catalog
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
    I_PROGRAM_NAME               = 'ZALV3'
    I_INTERNAL_TABNAME           = 'ITAB'
*   I_STRUCTURE_NAME             = 'ZDT2'
    I_INCLNAME                   = 'ZALV3'
      CHANGING
        CT_FIELDCAT                  = IT_FLDCAT
     EXCEPTIONS
       INCONSISTENT_INTERFACE       = 1
       PROGRAM_ERROR                = 2
       OTHERS                       = 3
              .
    IF SY-SUBRC <> 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ELSE.
      LOOP AT IT_FLDCAT INTO WA_FLDCAT.
        CASE WA_FLDCAT-FIELDNAME.
          WHEN 'MATNR'.
            WA_FLDCAT-KEY = 'X'.
            WA_FLDCAT-REF_TABNAME = SPACE.
*            WA_FLDCAT-HOTSPOT = 'X'.

          WHEN 'MATKL' OR 'WERKS'.
            WA_FLDCAT-KEY = SPACE.
            WA_FLDCAT-REF_TABNAME = SPACE.

          WHEN 'LGORT'.
            WA_FLDCAT-KEY = SPACE.

          WHEN 'LABST'.
            WA_FLDCAT-DO_SUM = 'X'.
        ENDCASE.
        MODIFY IT_FLDCAT FROM WA_FLDCAT INDEX SY-TABIX.
      ENDLOOP.
    ENDIF.

  ENDIF.
ENDFORM.                    " BUILD_FLDCAT
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
  WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  WA_LAYOUT-ZEBRA = 'X'.
*WA_LAYOUT-no_colhead = 'X'.
*WA_LAYOUT-no_vline = 'X'.
*WA_LAYOUT-no_Hline = 'X'.
*WA_LAYOUT-edit = 'X'.
ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  DO_SORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DO_SORT .
  IT_SORT-FIELDNAME = 'MATNR'.
  IT_SORT-UP = 'X'.
  IT_SORT-SUBTOT = 'X'.
  APPEND IT_SORT.

ENDFORM.                    " DO_SORT
*&---------------------------------------------------------------------*
*&      Form  POPULATE_EVENTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM POPULATE_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 INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    IF SY-SUBRC = 0.
      WA_EVENT-FORM = 'PAGE_HEADER'.
      MODIFY IT_EVENTS FROM WA_EVENT INDEX SY-TABIX.
    ENDIF.

    READ TABLE IT_EVENTS INTO WA_EVENT WITH KEY NAME = 'END_OF_LIST'.
    IF SY-SUBRC = 0.
      WA_EVENT-FORM = 'PAGE_FOOTER'.
      MODIFY IT_EVENTS FROM WA_EVENT INDEX SY-TABIX.
    ENDIF.

  ENDIF.

ENDFORM.                    " POPULATE_EVENTS
*&---------------------------------------------------------------------*
*&      Form  PAGE_HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM PAGE_HEADER .
  IT_COMMENT-TYP = 'H'.
  IT_COMMENT-INFO = 'Material Stock List'.
  APPEND IT_COMMENT.

  DESCRIBE TABLE ITAB LINES V_REC.
  CONCATENATE 'No.of.Records:' V_REC INTO V_TEXT SEPARATED BY SPACE.

  IT_COMMENT-TYP = 'S'.
  IT_COMMENT-INFO = V_TEXT.
  APPEND IT_COMMENT.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = IT_COMMENT[]
      I_LOGO                   = 'ZIGROW'
*   I_END_OF_LIST_GRID       =
            .

ENDFORM.                    " PAGE_HEADER


*&--------a------------------------------------------------------------*
*&      Form  PAGE_FOOTER
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM PAGE_FOOTER .
  REFRESH IT_COMMENT.

  IT_COMMENT-TYP = 'S'.
  IT_COMMENT-INFO = SY-UNAME.
  IT_COMMENT-KEY = 'Developed by'.
  APPEND IT_COMMENT.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = IT_COMMENT[]
*     I_LOGO                   =
    I_END_OF_LIST_GRID       = 'X'.

ENDFORM.                    "PAGE_FOOTER
*&---------------------------------------------------------------------*
*&      Form  ALV_VAR_F4
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM ALV_VAR_F4 .

  WA_VAR-REPORT = SY-REPID.
  WA_VAR-USERNAME = SY-UNAME.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      IS_VARIANT    = WA_VAR
    IMPORTING
      ES_VARIANT    = WA_VAR
    EXCEPTIONS
      NOT_FOUND     = 1
      PROGRAM_ERROR = 2
      OTHERS        = 3.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    P_VAR = WA_VAR-VARIANT.
  ENDIF.

ENDFORM.                    " ALV_VAR_F4

Popular posts from this blog

ALV with field catalog merge

SAP ABAP real-time Interview Questions with answers

Using GUI Upload in SAP ABAP