Wednesday 5 November 2014

field catlog

REPORT Z05_INT_LIST.

TYPESBEGIN OF T_MARD,
           WERKS TYPE MARD-WERKS,
           LGORT TYPE MARD-LGORT,
           MATNR TYPE MARD-MATNR,
           INSME TYPE MARD-INSME,
           EINME TYPE MARD-EINME,
           SPEME TYPE MARD-SPEME,
       END OF T_MARD.


DATA:    W_MARD TYPE T_MARD.

DATA:    I_MARD TYPE STANDARD TABLE OF T_MARD.

* Types Pools
TYPE-POOLS:
    SLIS.
* Types
TYPES:
    T_FIELDCAT         TYPE SLIS_FIELDCAT_ALV,
    T_EVENTS           TYPE SLIS_ALV_EVENT,
    T_LAYOUT           TYPE SLIS_LAYOUT_ALV.
* Workareas
DATA:
    W_FIELDCAT         TYPE T_FIELDCAT,
    W_EVENTS           TYPE T_EVENTS,
    W_LAYOUT           TYPE T_LAYOUT.
* Internal Tables
DATA:
    I_FIELDCAT         TYPE STANDARD TABLE OF T_FIELDCAT,
    I_FIELDCAT1        TYPE STANDARD TABLE OF T_FIELDCAT,
    I_EVENTS           TYPE STANDARD TABLE OF T_EVENTS.


START-OF-SELECTION.

  PERFORM GET_DATA_FROM_DATABASE .


  END-OF-SELECTION.

  PERFORM BUILD_FIELDCATALOG.
  PERFORM BUILD_EVENTS.
  PERFORM BUILD_LAYOUT.
  PERFORM DISPLAY_DATA.

  FORM BUILD_FIELDCATALOG .
  CLEAR :
  W_FIELDCAT,
  I_FIELDCAT[].

  PERFORM BUILD_FCAT USING:
  "Field   Int.Table Column headings
  'WERKS' 'I_MARD' 'WERKS',
  'LGORT' 'I_MARD' 'LGORT',
  'MATNR' 'I_MARD' 'MATERIAL NUMBER',
  'INSME' 'I_MARD' 'INSME',
  'EINME' 'I_MARD' 'EINME',
  'SPEME' 'I_MARD' 'SPEME'.
ENDFORM.                    " build_fieldcatalog

*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
FORM DISPLAY_DATA .
  DATA :PROGRAM LIKE SY-REPID VALUE SY-REPID.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM PROGRAM
      IS_LAYOUT          W_LAYOUT
      IT_FIELDCAT        I_FIELDCAT
      IT_EVENTS          I_EVENTS
    TABLES
      T_OUTTAB           I_MARD.
  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.                    " display_data

*&---------------------------------------------------------------------*
*&      Form  get_data_from_database
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_DATA_FROM_DATABASE .
  CLEAR :I_MARD,
  I_MARD[].

  SELECT WERKS LGORT MATNR INSME EINME SPEME
  FROM MARD
  INTO CORRESPONDING FIELDS OF TABLE I_MARD
  UP TO 100 ROWS.


ENDFORM.                    " get_data_from_database

*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE.

  DATA :
  I_HEADER TYPE SLIS_T_LISTHEADER,
  W_HEADER LIKE LINE OF I_HEADER.

  DATA:L_DATE1 TYPE DATUM,
  L_DATE2 TYPE DATUM.

  W_HEADER-TYP 'S'.
  W_HEADER-INFO SY-TITLE.
  APPEND W_HEADER TO I_HEADER.
  CLEAR W_HEADER.

  W_HEADER-TYP 'H'.
  W_HEADER-INFO SY-REPID.
  APPEND W_HEADER TO I_HEADER.
  CLEAR W_HEADER.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY I_HEADER
      I_LOGO             'ENJOYSAP_LOGO'.

ENDFORM.                    "top_of_page
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT
*&---------------------------------------------------------------------*

FORM BUILD_FCAT  USING  L_FIELD L_TAB L_TEXT.

  W_FIELDCAT-FIELDNAME L_FIELD.
  W_FIELDCAT-TABNAME   L_TAB.
  W_FIELDCAT-SELTEXT_M L_TEXT.
  APPEND W_FIELDCAT TO I_FIELDCAT.
  CLEAR W_FIELDCAT.

ENDFORM.                    " BUILD_FCAT
*&---------------------------------------------------------------------*
"      Form  build_events
"     Events
"     ------
"    1. When we use ALV,certain events TOP-OF-PAGE ,END-OF-PAGE,
"       AT LINE-SELECTION,AT USER-COMMANDs are not triggered.
"    2. To perform those Functions ,we have to build Events table and
"       pass this table through REUSE_ALV_LIST_DISPALY Function.
*&---------------------------------------------------------------------*
FORM BUILD_EVENTS .
  CLEAR :
  W_EVENTS,I_EVENTS[].

  W_EVENTS-NAME 'TOP_OF_PAGE'.
  W_EVENTS-FORM 'TOP_OF_PAGE'.
  APPEND W_EVENTS TO I_EVENTS.
  CLEAR W_EVENTS.
ENDFORM.                    " build_events
*&---------------------------------------------------------------------*
"&      Form  build_layout
"     Layouts
"     -------
"  Use :We change the display of our list using layouts.
"  ===
"  Features
"  ========
"    The layouts that you can use vary according to the type of list:
"   1-->In all lists, you can do the following:
"       (a).Choose one of the std layouts supplied with the std system.
"       (b).Change the current layout of the list .
"   2-->In lists that use only the standard layouts in the std system
"       you cannot save your changes to the current layout.When you
"       choose the layouts, only the standard layouts will be proposed.
"   3-->In some lists, you can also save the layouts that you have
"       defined as our own layouts.
"      User-defined layouts are generally saved for all users. They can
"       then be used by all users. All users will be able to choose from
"       the user-defined layouts as well as the standard layouts.
"   4-->In some lists, you can also save user-specific layouts that you
"       have defined . When you choose the current layout,only these
"       layouts are available to you.
"   5-->You can delete or transport layouts, or define them as initial
"       layouts
"   6-->STRUCTURE :SLIS_LAYOUT_ALV.
*&---------------------------------------------------------------------*
FORM BUILD_LAYOUT .
  CLEAR:
  W_LAYOUT.
  W_LAYOUT-COLWIDTH_OPTIMIZE 'X'.
ENDFORM.                    " build_layout

No comments:

Post a Comment