
CLASS ZCL_AMDP_SUM DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES IF_AMDP_MARKER_HDB.
TYPES:
BEGIN OF TY_MATDOC,
BUKRS TYPE BUKRS,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
WERKS TYPE WERKS_D,
LGORT TYPE LGORT_D,
MEINS TYPE MEINS,
MATNR TYPE MATNR,
MENGE TYPE MENGE_D,
ACCUMULATE TYPE MENGE_D,
TOTAL TYPE MENGE_D,
END OF TY_MATDOC,
TT_MATDOC TYPE STANDARD TABLE OF TY_MATDOC.
CLASS-METHODS:
TRIGGER_MATDOC IMPORTING VALUE(IV_CLIENT) TYPE SY-MANDT
VALUE(IV_WERKS) TYPE WERKS_D
VALUE(IV_BUKRS) TYPE BUKRS
VALUE(IV_LGORT) TYPE LGORT_D
EXPORTING VALUE(ET_RESULT) TYPE TT_MATDOC.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_AMDP_SUM IMPLEMENTATION.
METHOD TRIGGER_MATDOC BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY
USING MATDOC.
IT_TABLE =
SELECT T1.BUKRS,
T1.EBELN,
T1.EBELP,
T1.WERKS,
T1.LGORT,
T1.MEINS,
T1.MATNR,
--original value
T1.MENGE,
--accumulate value
SUM( T1.MENGE ) OVER ( PARTITION BY T1.BUKRS, T1.WERKS, T1.LGORT, T1.MEINS, T1.MATNR
ORDER BY T1.BUKRS, T1.WERKS, T1.LGORT, T1.MEINS, T1.MATNR
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS ACCUMULATE,
--sum total value
SUM( T1.MENGE ) OVER ( PARTITION BY T1.BUKRS, T1.WERKS, T1.LGORT, T1.MEINS, T1.MATNR
ORDER BY T1.BUKRS, T1.WERKS, T1.LGORT, T1.MEINS, T1.MATNR ) AS TOTAL
FROM MATDOC AS T1
WHERE T1.MANDT = :IV_CLIENT
AND T1.WERKS = :IV_WERKS
AND T1.BUKRS = :IV_BUKRS
AND T1.LGORT = :IV_LGORT;
ET_RESULT = SELECT * FROM :IT_TABLE;
ENDMETHOD.
ENDCLASS.
TYPES:
BEGIN OF TY_MATDOC,
BUKRS TYPE BUKRS,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
WERKS TYPE WERKS_D,
LGORT TYPE LGORT_D,
MEINS TYPE MEINS,
MATNR TYPE MATNR,
MENGE TYPE MENGE_D,
ACCUMULATE TYPE MENGE_D,
TOTAL TYPE MENGE_D,
END OF TY_MATDOC,
TT_MATDOC TYPE STANDARD TABLE OF TY_MATDOC.
DATA:
GT_MATDOC TYPE TT_MATDOC.
START-OF-SELECTION.
DATA(L_CHECK) = CL_ABAP_DBFEATURES=>USE_FEATURES(
EXPORTING REQUESTED_FEATURES =
VALUE #(
( CL_ABAP_DBFEATURES=>CALL_AMDP_METHOD )
( CL_ABAP_DBFEATURES=>AMDP_TABLE_FUNCTION )
)
).
"CHECK AMDP
IF L_CHECK = ABAP_FALSE.
CL_DEMO_OUTPUT=>DISPLAY( 'Please check system again' ).
ELSE.
ZCL_AMDP_SUM=>TRIGGER_MATDOC(
EXPORTING IV_CLIENT = SY-MANDT
IV_WERKS = 'MM02'
IV_BUKRS = 'FS01'
IV_LGORT = '1000'
IMPORTING ET_RESULT = GT_MATDOC
).
CL_DEMO_OUTPUT=>DISPLAY( GT_MATDOC ).
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
5 | |
3 | |
3 | |
3 | |
3 | |
2 | |
2 | |
2 | |
2 |