ALV Report with field catalog and layout in SAP ABAP

Example ALV report for using field catalog and layput in SAP ABAP
REPORT  ZALV_2                                  .

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

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

TYPE-POOLS: SLIS.

DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
      WA_FLDCAT LIKE LINE OF IT_FLDCAT,
      WA_LAYO TYPE SLIS_LAYOUT_ALV.


START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM GENERATE_FLDCAT.
  PERFORM GENERATE_LAYOUT.


END-OF-SELECTION.
  PERFORM SHOW_GRID.

FORM GET_DATA .
  SELECT A~MATNR
           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 GENERATE_FLDCAT .
  IF P_MANU = 'X'.
    WA_FLDCAT-col_pos = 1.
    WA_FLDCAT-fieldname = 'MATNR'.
    WA_FLDCAT-outputlen = 18.
    WA_FLDCAT-seltext_m = 'Material No'.
    WA_FLDCAT-ddictxt = 'M'.
    WA_FLDCAT-KEY = 'X'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
    CLEAR WA_FLDCAT.

*--2ND
    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.

*--3rd
    WA_FLDCAT-col_pos = 2.
    WA_FLDCAT-fieldname = 'WERKS'.
    WA_FLDCAT-outputlen = 6.
    WA_FLDCAT-seltext_m = 'Plant'.
    WA_FLDCAT-ddictxt = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.

*--4th
    WA_FLDCAT-col_pos = 3.
    WA_FLDCAT-fieldname = 'LGORT'.
    WA_FLDCAT-outputlen = 7.
    WA_FLDCAT-seltext_m = 'Str.Loc'.
    WA_FLDCAT-ddictxt = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.

*--5th
    WA_FLDCAT-col_pos = 5.
    WA_FLDCAT-fieldname = 'LABST'.
    WA_FLDCAT-outputlen = 20.
    WA_FLDCAT-seltext_m = 'Qty'.
    WA_FLDCAT-ddictxt = 'M'.
    APPEND WA_FLDCAT TO IT_FLDCAT.
  ELSE.
*--Auto generation of fldcat
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
        I_PROGRAM_NAME               = 'ZALV_2'
        I_INTERNAL_TABNAME           = 'ITAB'
*   I_STRUCTURE_NAME             =
        I_INCLNAME                   = 'ZALV_2'
      CHANGING
        CT_FIELDCAT                  = IT_FLDCAT
     EXCEPTIONS
       INCONSISTENT_INTERFACE       = 1
       PROGRAM_ERROR                = 2
       OTHERS                       = 3.

    IF SY-SUBRC <> 0.
      MESSAGE E000(Z00) WITH 'Error in Generating Fieldcatalog'.
    ELSE.
*--Modifying Fldcat
      LOOP AT IT_FLDCAT INTO WA_FLDCAT.
        CASE wa_fldcat-fieldname.
          WHEN 'MATNR'.
            WA_FLDCAT-REF_TABNAME = SPACE.
*            WA_FLDCAT-HOTSPOT = 'X'.

          WHEN 'WERKS' OR 'LGORT'.
*            WA_FLDCAT-KEY = SPACE.
            WA_FLDCAT-REF_TABNAME = SPACE.

        ENDCASE.
          MODIFY IT_FLDCAT FROM WA_FLDCAT.
      ENDLOOP.
    ENDIF.
  ENDIF.
ENDFORM.                    " GENERATE_FLDCAT

FORM SHOW_GRID .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
*   I_CALLBACK_PROGRAM                = ' '
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
    IS_LAYOUT                         = WA_LAYO
    IT_FIELDCAT                       = IT_FLDCAT
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
*   I_SAVE                            = ' '
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
    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 GENERATE_LAYOUT .
  WA_LAYO-ZEBRA = 'X'.
*  WA_LAYO-NO_VLINE = 'X'.
*  WA_LAYO-NO_HLINE = 'X'.
*  WA_LAYO-edit     = ' '.
*  WA_LAYO-colwidth_optimize = 'X'.
   WA_LAYO-key_hotspot = 'X'.

ENDFORM.                    " GENERATE_LAYOUT

Popular posts from this blog

ALV with field catalog merge

SAP ABAP real-time Interview Questions with answers

Using GUI Upload in SAP ABAP