Sunday, 20 August 2017

Use of ALV Field Catalog to calculate TOTAL and SORT table for sub total calculation

This post shows to calculate the subtotal and total. 

REPORT  ZAVI_FEVER2.

TYPE-POOLSSLIS.

DATAIT_SPFLI TYPE TABLE OF SPFLI,
      WA_SPFLI TYPE SPFLI.
DATAIT_FCAT TYPE  SLIS_T_FIELDCAT_ALV,
      WA_FCAT TYPE  SLIS_FIELDCAT_ALV.
DATAIT_sort TYPE slis_t_sortinfo_alv.
DATAWA_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATAWA_sort TYPE slis_SORTinfo_alv.
SELECT FROM SPFLI INTO TABLE IT_SPFLI .

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
   EXPORTING
     I_PROGRAM_NAME               'SY-REPID'
*     I_INTERNAL_TABNAME           =
     I_STRUCTURE_NAME             'SPFLI'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
*     I_INCLNAME                   =
*     I_BYPASSING_BUFFER           =
*     I_BUFFER_ACTIVE              =
    CHANGING
      ct_fieldcat                  IT_FCAT
   EXCEPTIONS
     INCONSISTENT_INTERFACE       1
     PROGRAM_ERROR                2
     OTHERS                       3
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

WA_SORT-FIELDNAME 'CARRID'.
WA_SORT-SPOS '1'.
WA_SORT-UP 'X'.
WA_SORT-SUBTOT 'X'.
APPEND WA_SORT TO IT_SORT.


LOOP AT IT_FCAT INTO WA_FCAT.
  IF WA_FCAT-FIELDNAME 'DISTANCE'.
    WA_FCAT-DO_SUM 'X'.
    MODIFY IT_FCAT FROM WA_FCAT TRANSPORTING DO_SUM.
    ENDIF.
    ENDLOOP.

    WA_LAYOUT-TOTALS_TEXT 'TOTAL'.

 CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
*    I_INTERFACE_CHECK              = ' '
*    I_BYPASSING_BUFFER             =
*    I_BUFFER_ACTIVE                = ' '
    I_CALLBACK_PROGRAM             'SY-REPID'
*    I_CALLBACK_PF_STATUS_SET       = ' '
*    I_CALLBACK_USER_COMMAND        = ' '
    I_STRUCTURE_NAME               'SPFLI'
    IS_LAYOUT                      WA_LAYOUT
    IT_FIELDCAT                    IT_FCAT
*    IT_EXCLUDING                   =
*    IT_SPECIAL_GROUPS              =
    IT_SORT                        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
*    IR_SALV_LIST_ADAPTER           =
*    IT_EXCEPT_QINFO                =
*    I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
*  IMPORTING
*    E_EXIT_CAUSED_BY_CALLER        =
*    ES_EXIT_CAUSED_BY_USER         =
   TABLES
     t_outtab                       IT_SPFLI
  EXCEPTIONS
    PROGRAM_ERROR                  1
    OTHERS                         2
           .
 IF sy-subrc <> 0.
* Implement suitable error handling here
 ENDIF
.

No comments:

Post a Comment