ALV中不同单位统计的问题

ALV中不同统计问题。[@more@]

*&---------------------------------------------------------------------*

*& 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

请使用浏览器的分享功能分享到微信等