Friday, April 18, 2014

ABAP - ALV





 
REPORT  ZMYSAPLIBRARY.

TYPE-POOLSSLIS.

DATAG_REPID LIKE SY-REPID
GS_PRINT            TYPE SLIS_PRINT_ALV
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER
GT_EVENTS           TYPE SLIS_T_EVENT
GT_SORT             TYPE SLIS_T_SORTINFO_ALV
GS_LAYOUT           TYPE SLIS_LAYOUT_ALV
GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV
FIELDCAT_LN LIKE LINE OF GT_FIELDCAT
COL_POS TYPE I.

DATABEGIN OF ITAB
  FIELD1(5TYPE C
  FIELD2(5TYPE C
  FIELD3(5TYPE DECIMALS 2
END OF ITAB.

DATABEGIN OF ITAB1 OCCURS 0
  INCLUDE STRUCTURE ITAB
DATAEND OF ITAB1.

DATABEGIN OF ITAB_FIELDCAT OCCURS 0
  INCLUDE STRUCTURE ITAB
DATAEND OF ITAB_FIELDCAT.

** Print Parameters 
*PARAMETERS: 
*            P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE 
*            P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO 
*            P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE 
*            P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE 
*            P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO 
*            P_RESERV TYPE I.                  "NO OF FOOTER LINE

INITIALIZATION
G_REPID SY-REPID
*PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS

START-OF-SELECTION
* TEST DATA 
MOVE 'TEST1' TO ITAB1-FIELD1
MOVE 'TEST1' TO ITAB1-FIELD2
MOVE '10.00' TO ITAB1-FIELD3
APPEND ITAB1.

MOVE 'TEST2' TO ITAB1-FIELD1
MOVE 'TEST2' TO ITAB1-FIELD2
MOVE '20.00' TO ITAB1-FIELD3
APPEND ITAB1.

DO 50 TIMES
  APPEND ITAB1
ENDDO.

END-OF-SELECTION.

PERFORM BUILD
PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS
PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE
PERFORM CALL_ALV.

FORM BUILD
* DATA FIELD CATALOG 
* Explain Field Description to ALV 
DATAFIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.

CLEAR FIELDCAT_IN
FIELDCAT_LN-FIELDNAME 'FIELD1'
FIELDCAT_LN-TABNAME   'ITAB1'
*FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT 
FIELDCAT_LN-KEY       ' '.   "SUBTOTAL KEY 
FIELDCAT_LN-NO_OUT    ' '
FIELDCAT_LN-SELTEXT_L 'HEAD1'
APPEND FIELDCAT_LN TO GT_FIELDCAT.

CLEAR FIELDCAT_IN
FIELDCAT_LN-FIELDNAME 'FIELD2'
FIELDCAT_LN-TABNAME   'ITAB1'
FIELDCAT_LN-NO_OUT    'X'
FIELDCAT_LN-SELTEXT_L 'HEAD2'
APPEND FIELDCAT_LN TO GT_FIELDCAT.

CLEAR FIELDCAT_IN
FIELDCAT_LN-FIELDNAME     'FIELD3'
FIELDCAT_LN-TABNAME       'ITAB1'
FIELDCAT_LN-REF_FIELDNAME 'MENGE'"<- REF FIELD IN THE DICTIONNARY 
FIELDCAT_LN-REF_TABNAME   'MSEG'.  "<- REF TABLE IN THE DICTIONNARY 
FIELDCAT_LN-NO_OUT        ' '
FIELDCAT_LN-DO_SUM        'X'.   "SUM UPON DISPLAY 
APPEND FIELDCAT_LN TO GT_FIELDCAT.

* DATA SORTING AND SUBTOTAL 
DATAGS_SORT TYPE SLIS_SORTINFO_ALV.

CLEAR GS_SORT
GS_SORT-FIELDNAME 'FIELD1'
GS_SORT-SPOS      1
GS_SORT-UP        'X'
GS_SORT-SUBTOT    'X'
APPEND GS_SORT TO GT_SORT.

CLEAR GS_SORT
GS_SORT-FIELDNAME 'FIELD2'
GS_SORT-SPOS      2
GS_SORT-UP        'X'
*GS_SORT-SUBTOT    = 'X'. 
APPEND GS_SORT TO GT_SORT.

ENDFORM.

FORM CALL_ALV
* ABAP List Viewer 
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' 
EXPORTING 
* I_INTERFACE_CHECK = ' ' 
* I_BYPASSING_BUFFER = 
* I_BUFFER_ACTIVE = ' ' 
I_CALLBACK_PROGRAM G_REPID
* I_CALLBACK_PF_STATUS_SET = ' ' 
* I_CALLBACK_USER_COMMAND = ' ' 
I_STRUCTURE_NAME 'ITAB1' 
IS_LAYOUT =  GS_LAYOUT
IT_FIELDCAT GT_FIELDCAT[]
* IT_EXCLUDING = 
* IT_SPECIAL_GROUPS = 
  IT_SORT GT_SORT[]
* IT_FILTER = 
* IS_SEL_HIDE = 
* I_DEFAULT = 'X' 
* I_SAVE = ' ' 
* IS_VARIANT = 
  IT_EVENTS GT_EVENTS[]
* IT_EVENT_EXIT = 
  IS_PRINT GS_PRINT
* IS_REPREP_ID = 
* I_SCREEN_START_COLUMN = 0 
* I_SCREEN_START_LINE = 0 
* I_SCREEN_END_COLUMN = 0 
* I_SCREEN_END_LINE = 0 
* IMPORTING 
* E_EXIT_CAUSED_BY_CALLER = 
* ES_EXIT_CAUSED_BY_USER = 
TABLES 
T_OUTTAB ITAB1
EXCEPTIONS 
PROGRAM_ERROR 
OTHERS 2
ENDFORM.

* HEADER FORM 
FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT
CONSTANTS
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'
*GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.

  DATALS_EVENT TYPE SLIS_ALV_EVENT.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET' 
       EXPORTING 
            I_LIST_TYPE 
       IMPORTING 
            ET_EVENTS   LT_EVENTS.

  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
                           INTO LS_EVENT
  IF SY-SUBRC 0
    MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM
    APPEND LS_EVENT TO LT_EVENTS
  ENDIF.

* define END_OF_PAGE event 
* READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE 
*                          INTO LS_EVENT. 
* IF SY-SUBRC = 0. 
*   MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM. 
*   APPEND LS_EVENT TO LT_EVENTS. 
* ENDIF. 
ENDFORM.

FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER
  DATAGS_LINE TYPE SLIS_LISTHEADER.

  CLEAR GS_LINE
  GS_LINE-TYP  'H'
  GS_LINE-INFO 'HEADER 1'
  APPEND GS_LINE TO GT_TOP_OF_PAGE.

  CLEAR GS_LINE
  GS_LINE-TYP  'S'
  GS_LINE-KEY  'STATUS 1'
  GS_LINE-INFO 'INFO 1'
  APPEND GS_LINE TO GT_TOP_OF_PAGE
  GS_LINE-KEY  'STATUS 2'
  GS_LINE-INFO 'INFO 2'
  APPEND GS_LINE TO GT_TOP_OF_PAGE.

* CLEAR GS_LINE. 
* GS_LINE-TYP  = 'A'. 

* GS_LINE-INFO = 'ACTION'. 
* APPEND GS_LINE TO  GT_TOP_OF_PAGE.

ENDFORM.

FORM TOP_OF_PAGE
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
       EXPORTING 
            IT_LIST_COMMENTARY GT_LIST_TOP_OF_PAGE
  WRITESY-DATUM'Page No'SY-PAGNO LEFT-JUSTIFIED
ENDFORM.

FORM END_OF_PAGE
  WRITE at (sy-linszsy-pagno CENTERED
ENDFORM.

* PRINT SETTINGS 
*FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV. 
*  LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE 
*  LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO 
*  LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE 
*  LS_PRINT-NO_NEW_PAGE        = P_NONEWP. 
*  LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO 
*  LS_PRINT-RESERVE_LINES      = P_RESERV. 
*ENDFORM.

*END OF ZALV PROGRAM

No comments:

Post a Comment