Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 2796

Re: aggregation in rsax

$
0
0

FUNCTION ZDEL_SUM .

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     VALUE(I_REQUNR) TYPE  SRSC_S_IF_SIMPLE-REQUNR

*"     VALUE(I_DSOURCE) TYPE  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL

*"     VALUE(I_MAXSIZE) TYPE  SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL

*"     VALUE(I_INITFLAG) TYPE  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL

*"     VALUE(I_READ_ONLY) TYPE  SRSC_S_IF_SIMPLE-READONLY OPTIONAL

*"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF

*"  TABLES

*"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL

*"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL

*"      E_T_DATA STRUCTURE  ZDEL_SUM OPTIONAL

*"  EXCEPTIONS

*"      NO_MORE_DATA

*"      ERROR_PASSED_TO_MESS_HANDLER

*"----------------------------------------------------------------------

* Auxiliary Selection criteria structure

   DATA: l_s_select TYPE srsc_s_select.

* Maximum number of lines for DB table

   STATICS: s_s_if TYPE srsc_s_if_simple,

* counter

           s_counter_datapakid LIKE sy-tabix,

* cursor

           s_cursor TYPE cursor.

* Select ranges

   RANGES: l_r_matnr FOR mard-matnr,

           l_r_tmstmp FOR ZDELTA_AMOUNT-TMSTMP.

   data: startDate like sy-datum,

         startTime like sy-uzeit,

         endDate like sy-datum,

         endTime like sy-uzeit,

         tstamp like tzonref-tstamps.

 

   ranges: l_r_erdat for aufk-erdat,

           l_r_erfzeit for aufk-erfzeit.

* Initialization mode (first call by SAPI) or data transfer mode

* (following calls) ?

   IF i_initflag = sbiwa_c_flag_on.

************************************************************************

* Initialization: check input parameters

"SAP COMMUNITY NETWORK  SDN - sdn.sap.com  |  BPX - bpx.sap.com  |  BOC - boc.sap.com

"© 2009 SAP AG  6  Using Timestamps in Generic Delta Extraction by Function Module

*                 buffer input parameters

*                 prepare data selection

************************************************************************

* Check DataSource validity

     CASE i_dsource.

       WHEN 'ZDEL_SUM'.

       WHEN OTHERS.

         IF 1 = 2. MESSAGE e009(r3). ENDIF.

* this is a typical log call. Please write every error message like this

         log_write 'E'                  "message type

                   'R3'                 "message class

                   '009'                "message number

                   i_dsource   "message variable 1

                   ' '.                 "message variable 2

         RAISE error_passed_to_mess_handler.

     ENDCASE.

APPEND LINES OF i_t_select TO s_s_if-t_select.

* Fill parameter buffer for data extraction calls

     s_s_if-requnr    = i_requnr.

     s_s_if-dsource = i_dsource.

     s_s_if-maxsize   = i_maxsize.

* Fill field list table for an optimized select statement

* (in case that there is no 1:1 relation between InfoSource fields

* and database table fields this may be far from beeing trivial)

     APPEND LINES OF i_t_fields TO s_s_if-t_fields.

   ELSE.                 "Initialization mode or data extraction ?

************************************************************************

* Data transfer: First Call      OPEN CURSOR + FETCH

*                Following Calls FETCH only

************************************************************************

* First data package -> OPEN CURSOR

     IF s_counter_datapakid = 0.

* Fill range tables BW will only pass down simple selection criteria

* of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.

       LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'MATNR'.

         MOVE-CORRESPONDING l_s_select TO l_r_matnr.

         APPEND l_r_matnr.

       ENDLOOP.

* Timestamp is delivered as a selection criterion.

* Split the timestamp into date and time

    LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'TMSTMP'.

         tstamp = l_s_select-low.

         convert TIME STAMP tstamp TIME ZONE sy-zonlo

                 into DATE startDate TIME startTime.

         tstamp = l_s_select-high.

"SAP COMMUNITY NETWORK  SDN - sdn.sap.com  |  BPX - bpx.sap.com  |  BOC - boc.sap.com

"© 2009 SAP AG  7  Using Timestamps in Generic Delta Extraction by Function Module

         convert TIME STAMP tstamp TIME ZONE sy-zonlo

                 into DATE endDate TIME endTime.

         l_r_erdat-low = startDate.

         l_r_erdat-sign = l_s_select-sign.

         l_r_erdat-option = l_s_select-option.

         l_r_erdat-high = endDate.

         append l_r_erdat.

         l_r_erfzeit-low = startTime.

         l_r_erfzeit-sign = l_s_select-sign.

         l_r_erfzeit-option = l_s_select-option.

         l_r_erfzeit-high = endTime.

         append l_r_erfzeit.

      ENDLOOP.

* Determine number of database records to be read per FETCH statement

* from input parameter I_MAXSIZE. If there is a one to one relation

* between DataSource table lines and database entries, this is trivial.

* In other cases, it may be impossible and some estimated value has to

* be determined.

       OPEN CURSOR WITH HOLD s_cursor FOR

* Use the l_r_erdat and l_r_erfzeit for both creation and change selections

* This way we can pick up both the creations and changes in a given time period.

 

   SELECT MATNR   SUM( LABST )

        FROM MARD

        WHERE MATNR IN l_r_MATNR

        AND       ( ERSDA >= startdate  )

        GROUP BY MATNR.

 

       "GROUP BY MATNR LGORT LFGJA LFMON.

 

ENDIF.                             "First data package ?

* Fetch records into interface table.

* named E_T_'Name of extract structure'.

     FETCH NEXT CURSOR s_cursor

                APPENDING CORRESPONDING FIELDS

                OF TABLE e_t_data

                PACKAGE SIZE s_s_if-maxsize.

     IF sy-subrc <> 0.

       CLOSE CURSOR s_cursor.

       RAISE no_more_data.

     ENDIF.

     s_counter_datapakid = s_counter_datapakid + 1.

   ENDIF.              "Initialization mode or data extraction ?

ENDFUNCTION.


Viewing all articles
Browse latest Browse all 2796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>