*&---------------------------------------------------------------------*
*& Report ZALV_SUM_DIFFERENT_UNIT
*&
*&---------------------------------------------------------------------*
REPORT ZALV_SUM_DIFFERENT_UNIT.
*----------------------------------------------------------------------*
* TYPE-POOLS
*----------------------------------------------------------------------*
TYPE-POOLS: SLIS.
*----------------------------------------------------------------------*
* TYPES
*----------------------------------------------------------------------*
TYPES: BEGIN OF TYP_DATA,
KEY(10),
NUM TYPE I,
UNIT TYPE LVC_QUAN,
END OF TYP_DATA.
*----------------------------------------------------------------------*
* DATA
*----------------------------------------------------------------------*
DATA GT_OUTTAB TYPE TABLE OF TYP_DATA WITH HEADER LINE.
DATA:
* field catalog
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
* information for sort and subtotals
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
* variant
GH_VARIANT TYPE DISVARIANT.
*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
* For Display Variant
GH_VARIANT-REPORT = SY-REPID.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM FILL_OUTTAB.
PERFORM LAYOUT_SORT_BUILD.
PERFORM SET_FCAT.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GH_VARIANT-REPORT
IT_FIELDCAT = GT_FIELDCAT[]
IT_SORT = GT_SORT[]
IS_VARIANT = GH_VARIANT
TABLES
T_OUTTAB = GT_OUTTAB[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& Form SET_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SET_FCAT.
DATA LH_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
* Key
CLEAR LH_FIELDCAT.
LH_FIELDCAT-FIELDNAME = 'KEY'.
LH_FIELDCAT-TABNAME = 'GT_OUTTAB'.
LH_FIELDCAT-REPTEXT_DDIC = 'Key'.
LH_FIELDCAT-OUTPUTLEN = 10.
LH_FIELDCAT-NO_SUM = 'X'.
LH_FIELDCAT-KEY = 'X'.
APPEND LH_FIELDCAT TO GT_FIELDCAT.
* Num
CLEAR LH_FIELDCAT.
LH_FIELDCAT-FIELDNAME = 'NUM'.
LH_FIELDCAT-TABNAME = 'GT_OUTTAB'.
LH_FIELDCAT-REPTEXT_DDIC = 'Field Num'.
* QFIELDNAME - unit measure field
LH_FIELDCAT-QFIELDNAME = 'UNIT'.
LH_FIELDCAT-OUTPUTLEN = 10.
LH_FIELDCAT-DO_SUM = 'X'.
APPEND LH_FIELDCAT TO GT_FIELDCAT.
* UNIT
CLEAR LH_FIELDCAT.
LH_FIELDCAT-FIELDNAME = 'UNIT'.
LH_FIELDCAT-TABNAME = 'GT_OUTTAB'.
LH_FIELDCAT-REPTEXT_DDIC = 'Field Unit'.
LH_FIELDCAT-OUTPUTLEN = 10.
LH_FIELDCAT-DO_SUM = 'X'.
APPEND LH_FIELDCAT TO GT_FIELDCAT.
ENDFORM. "SET_FCAT
*---------------------------------------------------------------------*
* FORM LAYOUT_SORT_BUILD
*---------------------------------------------------------------------*
* Sorting
*---------------------------------------------------------------------*
FORM LAYOUT_SORT_BUILD.
DATA LH_SORT TYPE SLIS_SORTINFO_ALV.
* Key
LH_SORT-FIELDNAME = 'KEY'.
LH_SORT-SPOS = 1.
LH_SORT-UP = 'X'.
LH_SORT-SUBTOT = 'X'.
APPEND LH_SORT TO GT_SORT.
ENDFORM. " LAYOUT_SORT_BUILD
*&---------------------------------------------------------------------*
*& Form FILL_OUTTAB
*&---------------------------------------------------------------------*
* get data of output table
*----------------------------------------------------------------------*
FORM FILL_OUTTAB.
* group 1
GT_OUTTAB-KEY = 'Group 1'.
GT_OUTTAB-NUM = 10.
GT_OUTTAB-UNIT = 'PCS'.
APPEND GT_OUTTAB.
GT_OUTTAB-KEY = 'Group 1'.
GT_OUTTAB-NUM = 10.
GT_OUTTAB-UNIT = 'TON'.
APPEND GT_OUTTAB.
GT_OUTTAB-KEY = 'Group 1'.
GT_OUTTAB-NUM = 20.
GT_OUTTAB-UNIT = 'PCS'.
APPEND GT_OUTTAB.
* group 2
GT_OUTTAB-KEY = 'Group 2'.
GT_OUTTAB-NUM = 20.
GT_OUTTAB-UNIT = 'TON'.
APPEND GT_OUTTAB.
GT_OUTTAB-KEY = 'Group 2'.
GT_OUTTAB-NUM = 40.
GT_OUTTAB-UNIT = 'PCS'.
APPEND GT_OUTTAB.
GT_OUTTAB-KEY = 'Group 2'.
GT_OUTTAB-NUM = 10.
GT_OUTTAB-UNIT = 'TON'.
APPEND GT_OUTTAB.
ENDFORM. " FILL_OUTTAB