Quantcast
Channel: SCN : Discussion List - SAP Business Warehouse
Viewing all articles
Browse latest Browse all 6437

Delta extraction(date) with Function module problem

$
0
0

Hi All,

 

FUNCTION zrsax_biw_get_data_pr_d.

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

*"*"Local Interface:

*"  IMPORTING

*"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR

*"     VALUE(I_ISOURCE) TYPE  SBIWA_S_INTERFACE-ISOURCE OPTIONAL

*"     VALUE(I_MAXSIZE) TYPE  SBIWA_S_INTERFACE-MAXSIZE OPTIONAL

*"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL

*"     VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE OPTIONAL

*"     VALUE(I_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL

*"     VALUE(I_PRIVATE_MODE) OPTIONAL

*"     VALUE(I_CALLMODE) LIKE  ROARCHD200-CALLMODE OPTIONAL

*"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF

*"  TABLES

*"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL

*"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL

*"      E_T_DATA STRUCTURE  ZPR_ST OPTIONAL

*"  EXCEPTIONS

*"      NO_MORE_DATA

*"      ERROR_PASSED_TO_MESS_HANDLER

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

 

 

* The input parameter I_DATAPAKID is not supported yet !

 

 

* Example: InfoSource containing TADIR objects

*  TABLES: tadir.

*DATA: BEGIN OF zpr_st_copy,

*        banfn TYPE zpr_st-banfn,

*        bnfpo TYPE zpr_st-bnfpo,

*        zebkn TYPE zpr_st-zebkn,

*        knttp TYPE zpr_st-knttp,

*        vbeln TYPE zpr_st-vbeln,

*        ps_psp_pnr TYPE zpr_st-ps_psp_pnr,

*        gsber TYPE zpr_st-gsber,

*        werks TYPE zpr_st-werks,

*        statu TYPE zpr_st-statu,

*        ekgrp TYPE zpr_st-ekgrp,

*        menge TYPE zpr_st-menge,

*        frgdt TYPE zpr_st-frgdt,

*        meins TYPE zpr_st-meins,

*         loekz TYPE zpr_st-loekz,

*      END OF zpr_st_copy.

 

 

 

 

* Auxiliary Selection criteria structure

  DATA: l_s_select TYPE sbiwa_s_select.

 

 

* Maximum number of lines for DB table

  STATICS: l_maxsize TYPE sbiwa_s_interface-maxsize.

 

 

* Select ranges

*  RANGES: l_r_pgmid  FOR tadir-pgmid,

*          l_r_object FOR tadir-object,

    RANGES: PRNO for zpr_st-banfn,

            DATE1 FOR zpr_st-frgdt.

 

 

* Parameter I_PRIVATE_MODE:

* Some applications might want to use this function module for other

* purposes as well (e.g. data supply for OLTP reporting tools). If the

* processing logic has to be different in this case, use the optional

* parameter I_PRIVATE_MODE (not supplied by BIW !) to distinguish

* between BIW calls (I_PRIVATE_MODE = SPACE) and other calls

* (I_PRIVATE_MODE = X).

* If the message handling has to be different as well, define Your own

* messaging macro which interprets parameter I_PRIVATE_MODE. When

* called by BIW, it should use the LOG_WRITE macro, otherwise do what

* You want.

 

 

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

* (following calls) ?

  IF i_initflag = sbiwa_c_flag_on.

 

 

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

* Initialization: check input parameters

*                 buffer input parameters

*                 prepare data selection

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

 

 

* The input parameter I_DATAPAKID is not supported yet !

 

 

* Invalid second initialization call -> error exit

    IF NOT g_flag_interface_initialized IS INITIAL.

 

 

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

      log_write 'E'                    "message type

                'R3'                   "message class

                '008'                  "message number

                ' '                    "message variable 1

                ' '.                   "message variable 2

      RAISE error_passed_to_mess_handler.

    ENDIF.

 

 

* Check InfoSource validity

    CASE i_isource.

      WHEN 'ZPR_ST_DS_D' OR ''.

      WHEN OTHERS.

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

        log_write 'E'                  "message type

                  'R3'                 "message class

                  '009'                "message number

                  i_isource            "message variable 1

                  ' '.                 "message variable 2

        RAISE error_passed_to_mess_handler.

    ENDCASE.

 

 

* Check for supported update mode

    CASE i_updmode.

      WHEN 'F' OR ''.

      WHEN 'C'.

      WHEN 'R'.

      WHEN 'S'. " DELTA INITIALIZATION

      WHEN 'I'. "DELTA INITIALIZATION FOR NON CUMULATIVE

      WHEN 'D'. "DELTA

      WHEN OTHERS.

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

        log_write 'E'                  "message type

                  'R3'                 "message class

                  '011'                "message number

                  i_updmode            "message variable 1

                  ' '.                 "message variable 2

        RAISE error_passed_to_mess_handler.

    ENDCASE.

BREAK-POINT.

* Check for obligatory selection criteria

*    READ TABLE i_t_select INTO l_s_select WITH KEY fieldnm = 'ZPR_ST-FRGDT'.

*    IF sy-subrc <> 0.

*      IF 1 = 2. MESSAGE e010(r3). ENDIF.

*      log_write 'E'                    "message type

*                'R3'                   "message class

*                '010'                  "message number

*                'PGMID'                "message variable 1

*                ' '.                   "message variable 2

*      RAISE error_passed_to_mess_handler.

*    ENDIF.

 

 

    APPEND LINES OF i_t_select TO g_t_select.

 

 

* Fill parameter buffer for data extraction calls

    g_s_interface-requnr    = i_requnr.

    g_s_interface-isource   = i_isource.

    g_s_interface-maxsize   = i_maxsize.

    g_s_interface-initflag  = i_initflag.

    g_s_interface-updmode   = i_updmode.

    g_s_interface-datapakid = i_datapakid.

    g_flag_interface_initialized = sbiwa_c_flag_on.

 

 

* 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 g_t_segfields.

 

 

*   Start tracing of extraction

*    bice_trace_open g_r_tracer i_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 g_counter_datapakid = 0.

 

 

* Fill range tables for fixed InfoSources. In the case of generated

* InfoSources, the usage of a dynamical SELECT statement might be

* more reasonable. BIW will only pass down simple selection criteria

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

*      LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'PGMID'.

*        MOVE-CORRESPONDING l_s_select TO l_r_pgmid.

*        APPEND l_r_pgmid.

*      ENDLOOP.

*

*      LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'OBJECT'.

*        MOVE-CORRESPONDING l_s_select TO l_r_object.

*        APPEND l_r_object.

*      ENDLOOP.

LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'ZPR_ST-FRGDT'.

            MOVE-CORRESPONDING l_s_select to DATE1.

            DATE1-sign = 'I'.

            DATE1-option = 'GE'.

            clear DATE1-high.

            APPEND DATE1.

 

 

      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 InfoSource table lines and database entries, this is trivial.

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

* be determined.

      l_maxsize = g_s_interface-maxsize.

 

 

      OPEN CURSOR WITH HOLD g_cursor FOR

*      SELECT (g_t_fields) FROM tadir

*                               WHERE pgmid  IN l_r_pgmid AND

*                                     object IN l_r_object.    "#EC CI_GENBUFF

*@ CODE FOR THE STRUCTURE TO FILL IN FROM EBAN AND EBKN@*

 

 

            SELECT a~banfn a~bnfpo k~zebkn a~knttp k~vbeln k~ps_psp_pnr k~gsber a~werks a~statu a~ekgrp a~menge a~menge a~frgdt a~meins

* INTO CORRESPONDING FIELDS OF TABLE IT1

            FROM  eban AS a INNER JOIN ebkn AS k ON ( a~banfn = k~banfn AND a~bnfpo = k~bnfpo )

            WHERE a~banfn GE '2000000000' AND a~banfn LE '2999999999' and a~loekz eq ' ' and a~frgdt ge '20130401' and a~FRGKZ eq '2'.

*BREAK-POINT.

 

 

 

 

    ENDIF.                             "First data package ?

 

 

* Fetch records into interface table. There are two different options:

* - fixed interface table structure for fixed InfoSources have to be

*   named E_T_'Name of assigned source structure in table ROIS'.

* - for generating applications like LIS and CO-PA, the generic table

*   E_T_DATA has to be used.

* Only one of these interface types should be implemented in one API !

    FETCH NEXT CURSOR g_cursor

               APPENDING CORRESPONDING FIELDS

               OF TABLE e_t_DATA

               PACKAGE SIZE l_maxsize.

 

 

    IF sy-subrc <> 0.

      CLOSE CURSOR g_cursor.

*      bice_trace_close g_r_tracer.

      RAISE no_more_data.

    ENDIF.

*    bice_collect_table g_r_tracer e_t_data.

    g_counter_datapakid = g_counter_datapakid + 1.

 

 

  ENDIF.              "Initialization mode or data extraction ?

 

 

ENDFUNCTION.

 

 

 

 

 

in the above I_t_fields and I_T_select structures  are not getting data .....

 

 

can any one pleasee let me know what mistake i hvae done with my code?

 

and i m unbale to change data source value to F1 if i am trying to change my function module and extract structure are disappearing....

 

i m not getting why it is happening .......

 

thank you

vijay


Viewing all articles
Browse latest Browse all 6437

Trending Articles



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