Saturday, July 14, 2018

Dynamic ALV (Material Wise Display Dynamic Plant)


Material Wise Display Dynamic Plant

In My previews post this Requirement is Little different Here i want to display Dynamic Plant according to Material.

*&---------------------------------------------------------------------*
*& Report  ZDYNAMIC_ALV_PLANT
*&
*&---------------------------------------------------------------------*
*& Project : Display Material wise Dynamic Plant
*& Authore : Rohit Subhash
*&---------------------------------------------------------------------*

REPORT ZDYNAMIC_ALV_PLANT.
*&---------------------------------------------------------------------*
*& Structure for Plant Data for Material Table
*&---------------------------------------------------------------------*
TYPES BEGIN OF TY_MARC,
                  MATNR TYPE MATNR,
                  WERKS  TYPE WERKS_D,
               END OF TY_MARC.

*&---------------------------------------------------------------------*
*& Internal Table Declaration
*&---------------------------------------------------------------------*
DATA GT_MARC TYPE TABLE OF TY_MARC,
              LT_MARC TYPE TABLE OF TY_MARC,
              GT_FCAT TYPE LVC_T_FCAT.

*&---------------------------------------------------------------------*
*& Workarea Declaration
*&---------------------------------------------------------------------*
DATA GS_MARC TYPE TY_MARC,
              GS_FCAT TYPE LVC_S_FCAT,
              GS_LAY  TYPE LVC_S_LAYO.

*&---------------------------------------------------------------------*
*& Constant Declaration
*&---------------------------------------------------------------------*
DATA LV_MATNR TYPE MARC-MATNR,
              LV_LONG  TYPE SCRTEXT_L.

*&---------------------------------------------------------------------*
*& Field Symbols Declaration
*&---------------------------------------------------------------------*
FIELD-SYMBOLS <FT_DYNAMIC> TYPE STANDARD TABLE,
                                <FS_DYN>     TYPE ANY,
                                <FS_DATA>    TYPE ANY,
                                <FS_MARC>   TYPE TY_MARC.

*&---------------------------------------------------------------------*
*& Class Variable Declaration
*&---------------------------------------------------------------------*
DATA LO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
              LO_ALV     TYPE REF TO CL_GUI_ALV_GRID.

*&---------------------------------------------------------------------*
*& INITIALIZATION Event.
*&---------------------------------------------------------------------*
INITIALIZATION.
  REFRESH GT_MARC,
                      LT_MARC,
                      GT_FCAT.

  CLEAR GS_MARC,
                  GS_FCAT,
                  GS_LAY.

*& Selection Screen
  SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS S_MATNR FOR LV_MATNR.
  SELECTION-SCREEN END OF BLOCK A1.

*&---------------------------------------------------------------------*
*& START-OF-SELECTION Event
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*& Getting Data from MARC Table
  PERFORM GET_MARC.
*& Populate Dynamic Column.
  PERFORM POP_DYN_COLUMN.
*& Populate Data into Dynamic Internal Table
  PERFORM POP_DATA_DYNAMIC_TAB.
*& Call Screen.
  PERFORM CALL_SCREEN.

*&---------------------------------------------------------------------*
*&      Form  GET_MARC
*&---------------------------------------------------------------------*
*      This routine is used to get the data from Plant Data for Material Table
*----------------------------------------------------------------------*
FORM GET_MARC .

  SELECT MATNR
                WERKS
      FROM MARC INTO TABLE GT_MARC
      WHERE MATNR IN S_MATNR.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  POP_DYN_COLUMN
*&---------------------------------------------------------------------*
*     Populate Dynamic Column
*----------------------------------------------------------------------*
FORM POP_DYN_COLUMN .

  REFRESH GT_FCAT[].
  GS_FCAT-FIELDNAME 'MATNR'.
  GS_FCAT-SCRTEXT_L 'Material'.
  GS_FCAT-OUTPUTLEN '18'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

*& Remove Duplicate plant
  LT_MARC[] GT_MARC[].
  SORT LT_MARC BY WERKS.
  DELETE ADJACENT DUPLICATES FROM LT_MARC COMPARING WERKS.

  LOOP AT LT_MARC INTO GS_MARC.

    GS_FCAT-FIELDNAME GS_MARC-WERKS.
    CONCATENATE 'Plant' '-' GS_MARC-WERKS INTO LV_LONG.
    GS_FCAT-SCRTEXT_L LV_LONG.          "GS_MARC-WERKS.
    GS_FCAT-OUTPUTLEN '04'.
    APPEND GS_FCAT TO GT_FCAT.
    CLEAR GS_FCATLV_LONG.

  ENDLOOP.

  DATA T_NEWTAB TYPE REF TO DATA,
                T_NEWLIN TYPE REF TO DATA.

*& Create Dynamic ALV Internal Table
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
*     I_STYLE_TABLE             =
      IT_FIELDCATALOG           GT_FCAT
*     I_LENGTH_IN_BYTE          =
    IMPORTING
      EP_TABLE                  T_NEWTAB
*     E_STYLE_FNAME             =
    EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL 1
      OTHERS                    2.
  IF SY-SUBRC <> 0.
*   Implement suitable error handling here
  ENDIF.

*& Assign Field Sysmbol Data to Dynamic Internal Table
  ASSIGN T_NEWTAB->TO <FT_DYNAMIC>.

*& Create Dynamic Workarea
  CREATE DATA T_NEWLIN LIKE LINE OF <FT_DYNAMIC>.
  ASSIGN T_NEWLIN->TO <FS_DYN>.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  POP_DATA_DYNAMIC_TAB
*&---------------------------------------------------------------------*
*      Populate Data into Dynamic Internal Table
*----------------------------------------------------------------------*
FORM POP_DATA_DYNAMIC_TAB .

  SORT GT_MARC BY MATNR.
  LOOP AT GT_MARC ASSIGNING <FS_MARC>.

    "Populate Material Value
    ASSIGN COMPONENT 'MATNR' OF STRUCTURE <FS_DYN> TO <FS_DATA>.
    IF <FS_DATA> IS ASSIGNED.
      <FS_DATA> <FS_MARC>-MATNR.
    ENDIF.

    "Populate 'X' Acording to Plant in Material Wise
    ASSIGN COMPONENT <FS_MARC>-WERKS OF STRUCTURE <FS_DYN> TO <FS_DATA>.
    IF <FS_DATA> IS ASSIGNED.
      <FS_DATA> 'X'.
    ENDIF.

    AT END OF MATNR.

      APPEND <FS_DYN> TO <FT_DYNAMIC>.
      CLEAR <FS_DYN>.

    ENDAT.

  ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  CALL_SCREEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CALL_SCREEN .

  CALL SCREEN 9001.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Module  STATUS_9001  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.

  SET PF-STATUS 'ZSTATUS'.
  SET TITLEBAR 'ZTITLE'.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  DISPLAY  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE DISPLAY OUTPUT.

  GS_LAY-ZEBRA 'X'.
  GS_LAY-CWIDTH_OPT 'X'.

  CHECK LO_DOCKING IS INITIAL.

*& Create Object for Docking Container
  CREATE OBJECT LO_DOCKING
    EXPORTING
      PARENT                      CL_GUI_DOCKING_CONTAINER=>DEFAULT_SCREEN
      REPID                       SY-REPID
      DYNNR                       SY-DYNNR
*     SIDE                        = DOCK_AT_LEFT
      EXTENSION                   2000
*     STYLE                       =
*     LIFETIME                    = lifetime_default
*     CAPTION                     =
*     METRIC                      = 0
*     RATIO                       =
*     NO_AUTODEF_PROGID_DYNNR     =
*     NAME                        =
    EXCEPTIONS
      CNTL_ERROR                  1
      CNTL_SYSTEM_ERROR           2
      CREATE_ERROR                3
      LIFETIME_ERROR              4
      LIFETIME_DYNPRO_DYNPRO_LINK 5
      OTHERS                      6.
  IF SY-SUBRC <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

*& Create Object for CL_GUI_ALV_GRID Class.
  CREATE OBJECT LO_ALV
    EXPORTING
*     I_SHELLSTYLE      = 0
*     I_LIFETIME        =
      I_PARENT          LO_DOCKING
*     I_APPL_EVENTS     = space
*     I_PARENTDBG       =
*     I_APPLOGPARENT    =
*     I_GRAPHICSPARENT  =
*     I_NAME            =
*     I_FCAT_COMPLETE   = SPACE
    EXCEPTIONS
      ERROR_CNTL_CREATE 1
      ERROR_CNTL_INIT   2
      ERROR_CNTL_LINK   3
      ERROR_DP_CREATE   4
      OTHERS            5.
  IF SY-SUBRC <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

*& Display Data
  CALL METHOD LO_ALV->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
*     I_BUFFER_ACTIVE               =
*     I_BYPASSING_BUFFER            =
*     I_CONSISTENCY_CHECK           =
*     I_STRUCTURE_NAME              =
*     IS_VARIANT                    =
      I_SAVE                        'X'
      I_DEFAULT                     'X'
      IS_LAYOUT                     GS_LAY
*     IS_PRINT                      =
*     IT_SPECIAL_GROUPS             =
*     IT_TOOLBAR_EXCLUDING          =
*     IT_HYPERLINK                  =
*     IT_ALV_GRAPHICS               =
*     IT_EXCEPT_QINFO               =
*     IR_SALV_ADAPTER               =
    CHANGING
      IT_OUTTAB                     <FT_DYNAMIC>
      IT_FIELDCATALOG               GT_FCAT
*     IT_SORT                       =
*     IT_FILTER                     =
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION 1
      PROGRAM_ERROR                 2
      TOO_MANY_LINES                3
      OTHERS                        4.
  IF SY-SUBRC <> 0.
*   Implement suitable error handling here
  ENDIF.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.

  IF SY-UCOMM EQ 'BACK' OR SY-UCOMM EQ 'EXIT' OR SY-UCOMM EQ 'CANCEL'.

    LEAVE TO SCREEN 0.

  ENDIF.

ENDMODULE.

Output:



































Download Sour code

Dynamic ALV

Dynamic ALV Report.

Say you have a requirement where you want to show a report to indicate one Material is Present in how many purchase order. Say your purchase order number is 'P1' is present in three Material 'M1', 'M2' and 'M3', then your ALV Report show only one row with three column like P1, M1, M2 and M3 and in Material we need to display Material Description.
















Here we can show one Purchase Number having Three Material so now i want to display in single Row three Material with there Description.

*&---------------------------------------------------------------------*
*& Report  ZDYNAMIC_ALV
*&
*&---------------------------------------------------------------------*
*& Project     : Dynamic ALV
*& Authore     : Rohit Subhash
*& Description : Display Dynamic Material and Material Description
*&---------------------------------------------------------------------*

REPORT ZDYNAMIC_ALV.
*&---------------------------------------------------------------------*
*& Structure for Purchasing Document Header Table
*&---------------------------------------------------------------------*
TYPES BEGIN OF TY_EKPO,
                  EBELN  TYPE EBELN,
                  EBELP  TYPE EBELP,
                  TXZ01  TYPE TXZ01,
                  MATNR  TYPE MATNR,
                  WERKS  TYPE EWERK,
                  MENGE  TYPE BSTMG,
                  NETPR  TYPE BPREI,
              END OF TY_EKPO.

*& Internal Table Declaration
DATA GT_EKPO  TYPE TABLE OF TY_EKPO,
              LT_EKPO  TYPE TABLE OF TY_EKPO,
              GT_FCAT TYPE LVC_T_FCAT.

*& Workarea Declaration
DATA GS_EKPO  TYPE TY_EKPO,
              GS_FCAT TYPE LVC_S_FCAT,
              GS_LAY  TYPE LVC_S_LAYO.

*& Constant Declaration
DATA LV_EBELN TYPE EKPO-EBELN,
              LV_LINES TYPE INT4,
              LV_INDEX TYPE INT4,
              LV_MENGE TYPE MENGE_D,
              LV_NETPR TYPE NETPR.

*& Declare Local Object for Global Class.
DATA LO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
              LO_GUI     TYPE REF TO CL_GUI_ALV_GRID.

*& Dynamic Internal Table and Dynamic workarea Declaration
FIELD-SYMBOLS <FT_DYN_TAB> TYPE STANDARD TABLE,
                                <FS_DYN>           TYPE ANY,
                                <FS_EKPO>          TYPE TY_EKPO,
                                <FS_FINAL>         TYPE ANY.

DATA T_NEWTAB  TYPE REF TO DATA,
              T_NEWLINE TYPE REF TO DATA.

*& Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS S_EBELN FOR LV_EBELN.

SELECTION-SCREEN END OF BLOCK A1.

*&---------------------------------------------------------------------*
*& INITIALIZATION Event
*&---------------------------------------------------------------------*
INITIALIZATION.
  REFRESH GT_EKPO[],
                      LT_EKPO[],
                      GT_FCAT[].

  CLEAR GS_EKPO,
                  GS_FCAT,
                  GS_LAY.

*&---------------------------------------------------------------------*
*& START-OF-SELECTION Event
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*& This Routine is used to Get the Data from EKPO Table
  PERFORM GET_EKPO.
*& Populate Dynamic Column and Create Dynamic Internal Table.
  PERFORM POP_DYN_COLUMN.
*& Populate Data into Dynamic Internal Table
  PERFORM POP_DYN_DATA.
*& Call Screen and Display Data
  PERFORM CALL_SCREEN.

*&---------------------------------------------------------------------*
*&      Form  GET_EKPO
*&---------------------------------------------------------------------*
*    This routine is used to get the data from Purchasing Document Item Table
*----------------------------------------------------------------------*
FORM GET_EKPO .

  SELECT EBELN
                EBELP
                TXZ01
                MATNR
                WERKS
                MENGE
               NETPR
     FROM EKPO INTO TABLE GT_EKPO WHERE EBELN IN S_EBELN.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  POP_DYN_COLUMN
*&---------------------------------------------------------------------*
*     Populate Dynamic Column and Create Dynamic Internal Table
*----------------------------------------------------------------------*
FORM POP_DYN_COLUMN .

  GS_FCAT-FIELDNAME 'EBELN'.
  GS_FCAT-SCRTEXT_M 'Pur. Order No'.
  GS_FCAT-OUTPUTLEN '10'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GS_FCAT-FIELDNAME 'MENGE'.
  GS_FCAT-SCRTEXT_M 'Quantity'.
  GS_FCAT-OUTPUTLEN '13'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GS_FCAT-FIELDNAME 'NETPR'.
  GS_FCAT-SCRTEXT_M 'Price Per Unit'.
  GS_FCAT-OUTPUTLEN '15'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

*& Find Total Number of MATNR(Materia)
  LT_EKPO[] GT_EKPO[].
  DELETE LT_EKPO WHERE MATNR IS INITIAL.
  SORT LT_EKPO BY MATNR.
  DELETE ADJACENT DUPLICATES FROM LT_EKPO COMPARING MATNR.

*& Find total Number of Record.
  DESCRIBE TABLE LT_EKPO LINES LV_LINES.

  CLEAR LV_INDEX.
  DO LV_LINES TIMES.

    LV_INDEX LV_INDEX + 1.

    CLEAR GS_EKPO.
    " Read Record Based on Index
    READ TABLE LT_EKPO INTO GS_EKPO INDEX LV_INDEX.
    "Remove Material Leading ZERO
    SHIFT GS_EKPO-MATNR LEFT DELETING LEADING '0'.
    GS_FCAT-FIELDNAME GS_EKPO-MATNR.
    GS_FCAT-SCRTEXT_L GS_EKPO-MATNR.
    GS_FCAT-OUTPUTLEN '40'.
    APPEND GS_FCAT TO GT_FCAT.
    CLEAR GS_FCAT.

  ENDDO.

*& Create Dynamic Internal Table.
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
*     I_STYLE_TABLE             =
      IT_FIELDCATALOG           GT_FCAT
*     I_LENGTH_IN_BYTE          =
    IMPORTING
      EP_TABLE                  T_NEWTAB
*     E_STYLE_FNAME             =
    EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL 1
      OTHERS                    2.
  IF SY-SUBRC NE 0.

  ENDIF.

*& Assign the Field Symbol with dynmic Internal Table
  ASSIGN T_NEWTAB->TO <FT_DYN_TAB>.

*& Create Dynamic Workare
  CREATE DATA T_NEWLINE LIKE LINE OF <FT_DYN_TAB>.
  ASSIGN T_NEWLINE->TO <FS_DYN>.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  POP_DYN_DATA
*&---------------------------------------------------------------------*
*       Populate Data into Dynamic Internal Table
*----------------------------------------------------------------------*
FORM POP_DYN_DATA .

  LOOP AT GT_EKPO ASSIGNING <FS_EKPO> .

    ASSIGN COMPONENT 'EBELN' OF STRUCTURE <FS_DYN> TO <FS_FINAL>.
    IF <FS_FINAL> IS ASSIGNED.
      <FS_FINAL> <FS_EKPO>-EBELN.
    ENDIF.

    ASSIGN COMPONENT 'MENGE' OF STRUCTURE <FS_DYN> TO <FS_FINAL>.
    IF <FS_FINAL> IS ASSIGNED.
      LV_MENGE LV_MENGE + <FS_EKPO>-MENGE.
      <FS_FINAL> LV_MENGE.
    ENDIF.

    ASSIGN COMPONENT 'NETPR' OF STRUCTURE <FS_DYN> TO <FS_FINAL>.
    IF <FS_FINAL> IS ASSIGNED.
      LV_NETPR LV_NETPR + <FS_EKPO>-NETPR.
      <FS_FINAL> LV_NETPR.
    ENDIF.

    "Getting Material Description based on Material Number.
    CLEAR GS_EKPO.
    READ TABLE GT_EKPO INTO GS_EKPO WITH KEY EBELN <FS_EKPO>-EBELN EBELP <FS_EKPO>-EBELP.
    IF SY-SUBRC EQ 0.
      IF GS_EKPO-MATNR IS NOT INITIAL.
        SHIFT GS_EKPO-MATNR LEFT DELETING LEADING '0'.
        ASSIGN COMPONENT GS_EKPO-MATNR OF STRUCTURE <FS_DYN> TO <FS_FINAL>.
        IF <FS_FINAL> IS ASSIGNED.
          <FS_FINAL> <FS_EKPO>-TXZ01.
        ENDIF.
      ENDIF.
    ENDIF.

    AT END OF EBELN.

      APPEND <FS_DYN> TO <FT_DYN_TAB>.
      CLEAR LV_NETPRLV_MENGE<FS_DYN>.

    ENDAT.

  ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  CALL_SCREEN
*&---------------------------------------------------------------------*
*      Call Screen 9001
*----------------------------------------------------------------------*
FORM CALL_SCREEN .

  CALL SCREEN 9001.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Module  STATUS_9001  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.

  SET PF-STATUS 'ZSTATUS'.
  SET TITLEBAR 'ZTITLE'.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  DISPLAY  OUTPUT
*&---------------------------------------------------------------------*
*       Display Data
*----------------------------------------------------------------------*
MODULE DISPLAY OUTPUT.

  GS_LAY-CWIDTH_OPT 'X'.
  GS_LAY-ZEBRA 'X'.

*& Check Docking Container is Initial or Not
  CHECK LO_DOCKING IS INITIAL.

*& Creat Object for Docking Container.
  CREATE OBJECT LO_DOCKING
    EXPORTING
      PARENT                      CL_GUI_DOCKING_CONTAINER=>DEFAULT_SCREEN
      REPID                       SY-REPID
      DYNNR                       SY-DYNNR
*     SIDE                        = DOCK_AT_LEFT
      EXTENSION                   2000
*     STYLE                       =
*     LIFETIME                    = lifetime_default
*     CAPTION                     =
*     METRIC                      = 0
*     RATIO                       =
*     NO_AUTODEF_PROGID_DYNNR     =
*     NAME                        =
    EXCEPTIONS
      CNTL_ERROR                  1
      CNTL_SYSTEM_ERROR           2
      CREATE_ERROR                3
      LIFETIME_ERROR              4
      LIFETIME_DYNPRO_DYNPRO_LINK 5
      OTHERS                      6.

*& Create Object for CL_GUI_ALV_GRID Class.
  CREATE OBJECT LO_GUI
    EXPORTING
*     I_SHELLSTYLE      = 0
*     I_LIFETIME        =
      I_PARENT          LO_DOCKING
*     I_APPL_EVENTS     = space
*     I_PARENTDBG       =
*     I_APPLOGPARENT    =
*     I_GRAPHICSPARENT  =
*     I_NAME            =
*     I_FCAT_COMPLETE   = SPACE
    EXCEPTIONS
      ERROR_CNTL_CREATE 1
      ERROR_CNTL_INIT   2
      ERROR_CNTL_LINK   3
      ERROR_DP_CREATE   4
      OTHERS            5.

*& Display Data
  CALL METHOD LO_GUI->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
*     I_BUFFER_ACTIVE               =
*     I_BYPASSING_BUFFER            =
*     I_CONSISTENCY_CHECK           =
*     I_STRUCTURE_NAME              =
*     IS_VARIANT                    =
      I_SAVE                        'A'
      I_DEFAULT                     'X'
      IS_LAYOUT                     GS_LAY
*     IS_PRINT                      =
*     IT_SPECIAL_GROUPS             =
*     IT_TOOLBAR_EXCLUDING          =
*     IT_HYPERLINK                  =
*     IT_ALV_GRAPHICS               =
*     IT_EXCEPT_QINFO               =
*     IR_SALV_ADAPTER               =
    CHANGING
      IT_OUTTAB                     <FT_DYN_TAB>
      IT_FIELDCATALOG               GT_FCAT
*     IT_SORT                       =
*     IT_FILTER                     =
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION 1
      PROGRAM_ERROR                 2
      TOO_MANY_LINES                3
      OTHERS                        4.
  IF SY-SUBRC <> 0.
*   Implement suitable error handling here
  ENDIF.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.

  IF SY-UCOMM 'BACK' OR SY-UCOMM 'EXIT' OR SY-UCOMM 'CANCEL'.
    LEAVE TO SCREEN 0.
  ENDIF.

ENDMODULE.


Output:














Download Sour Code: Code