ALV with Field Catelogue

Sample ALV report with Field Catelogue



The below code explains you how to create an ALV report with field catelogue using Function module.


*&---------------------------------------------------------------------*

*& Report  ZALV_2                                                      *

*&                                                                     *

*&---------------------------------------------------------------------*

*&                                                                     *

*&                                                                     *

*&---------------------------------------------------------------------*

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

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

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

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

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

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

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

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

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