Error_passed_to_mess_handler

Hi all,
I meet a problem in extracting the master data from a CRM system. The following message appears for each of them : "error_passed_to_mess_handler". Nothing is connected with IS-U.
Thanks for your help.
Geo

Hai Geoffroy,
              From the limited information you gave, it seems some of the following could be reasons for your hanging. First of all check in RSA3 if you are getting any data for the extraction. Then check the following.
1. Check the RFC connections
2. It may so happen that the extraction was run more than once the same time and the system hangs up making a lock to prevent errors. You have to run a program for this. See note:0486120
3. See also notes:0486120, 874155
Hope this helps.

Similar Messages

  • What is the best way, while creating Function Module based extractor

    Hi Friends,
    I am Sreekanth.
    I have created a Functio Module based Extractor,
    To fetch data from COPA tables.
    In this extracton 3 tables are getting involved.
    1) CE3OP01 2) CE4OP01 and 3) CE1OP01.
    Logic required is as follow:
    1) get data from CE3OP01 and for all entries of this data set,
    get data from CE4OP01 and CE1OP01 and finally send the data set to BW after few manupulations.
    I have implemented the whole logic and its working fine in DEVELOPMENT box where data volume is less.
    But the same code is timing out in Quality Box, due to huge volues of data.
    Below I am copying the code that i am using . Any body can suggest me how to proceed further so that my code works with huge volumes of data.
    Now I am getting the time out error while selection data from CE3IOP01 table itself.
    FUNCTION /ds1/c_bw_zds_copa_recon.
    ""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
    *"  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  /DS1/FI_COPA_RECN OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
                            PROGRAM INFORMATION                          *
    RIEF ID.......: N/A                                                  *
    PROGRAM.......: /DS1/C_BW_ZDS_COPA_RECON               
    PROGRAM FUNCTION: This Function Module Extracts Cost Center, Company *
    Code, and all Amount fields form CE3OP01 table and  sectaktbo       "
    *     Current profitability segment (CO-PA)                          *
         paobjnr     "     Profitability Segment Number (CO-PA)       *
         pasubnr     "     Profitability segment changes (CO-PA)      *
         bukrs            "     Company Code
         kndnr       "     Customer from CE4Op01 table.               *
    Segrigate one record from CE3Op01 into 93 based on Value fields.    *
    PROGRAM TYPE..Function Module                                        *
    DEV. CLASS..../DS1/MI_01                                             *
    LOGICAL DB.... N/A                                                   *
                   Conventions used in the Program                       *
    *     global variables      --> g_*                                    *
    *     local variables       --> l_*                                    *
    *     constants             --> c_*                                    *
    *     internal tables       --> t_*                                    *
    *     structures            --> x_*                                    *
    *     parameters            --> p_*                                    *
    *     select-options        --> s_*                                    *
    *     ranges                --> r_*                                    *
    *     workarea          --> w_*                                    *
    *     field symbol            --> fs_*                                   *
    Declaration for Interface: Selection criteria
      STATICS: s_s_if TYPE srsc_s_if_simple,
    Maximum number of lines for DB table
      ls_s_if TYPE srsc_s_if_simple, "Static Structure
    counter
              ls_counter_datapakid LIKE sy-tabix,"Static Counter
    cursor
              ls_cursor TYPE cursor,"Static Cursor.
              ls_cursor1 TYPE cursor."Static Cursor.
    *CONSTANTS
      CONSTANTS:  lc_datasource TYPE char14 VALUE 'ZDS_COPA_RECON',
                                                 " Data Source Name
                  lc_msgtype TYPE char1 VALUE 'E',  "message type
                  lc_msgcls  TYPE char2 VALUE 'R3', "message class
                  lc_msgnum  TYPE char3 VALUE '009',"Message Number.
                  lc_001 TYPE char3 VALUE '001',
                  lc_b0 TYPE char2 VALUE 'B0',
                  lc_10 TYPE char2 VALUE '10',
                  lc_01 TYPE char2 VALUE '01',
                  lc_02 TYPE char2 VALUE '02',
                  lc_1 TYPE sy-tabix VALUE 1.
    *Data Declaration.
      DATA: lt_ce3op01  TYPE STANDARD TABLE OF x_ce3op01,
            " Internal table for ce3op01
            lt_ce3op02  TYPE STANDARD TABLE OF x_ce3op01,
            lt_ce4op01  TYPE STANDARD TABLE OF x_ce4op01,
            " Internal table for ce4op01
            lw_ce3op01  TYPE x_ce3op01,
            " Work area for ce3op01
            lw_ce3op02  TYPE x_ce3op01,                         "MOD-002
            lw_ce4op01  TYPE x_ce4op01,
            " Work area for ce4op01
            lw_e_t_data TYPE /ds1/fi_copa_recn,
      " Work area for /ds1/fi_copa_recn.
    *CE1op01
      lt_ce1op01 TYPE STANDARD TABLE OF x_ce1op01,"Internaltable
      lw_ce1op01 TYPE x_ce1op01,"Work area for CE1op01.
    **CE1op01
      lt_fldlist TYPE STANDARD TABLE OF lx_fldlist, "fields list
      lw_fldlist TYPE lx_fldlist,"  FIELDS list work area
      lt_flnmval TYPE STANDARD TABLE OF lx_flnmval,"table for splitting
      lw_flnmval TYPE lx_flnmval,"work area for spilitting
      l_index TYPE i VALUE 1, "to keep track of index.
      l_len   TYPE i,
      l_s_no_recs   TYPE sy-tabix VALUE 99,
      l_s_loop_from        TYPE sy-tabix,     "from "MOD-002
      l_s_loop_to          TYPE sy-tabix,                       "to"MOD-002
      l_norecs             TYPE sy-tabix,                       "MOD-002
      l_count              TYPE sy-tabix.                       "MOD-002
    *Field Symbols.
      FIELD-SYMBOLS:
         <fs_flnmval> TYPE lx_flnmval."Field symbol for fild values
    Selection Ranges
      RANGES:  lr_bukrs      FOR ce4op01-bukrs, " Range for company code
      lr_versi      FOR ce3op01-versi," Range for version
      lr_paledger   FOR ce3op01-paledger,"Range for paledger
      lr_vrgar      FOR ce3op01-vrgar,"Range for vrgar
      lr_gjahr      FOR ce3op01-gjahr,"Range for Fiscal year
      lr_perbl      FOR ce3op01-perbl."Range for perbl
    Initialization mode (first call by SAPI) or data transfer mode
      IF i_initflag = sbiwa_c_flag_on.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Check DataSource validity
        IF ls_counter_datapakid = 0.
          CASE i_dsource.
            WHEN lc_datasource.
            WHEN OTHERS.
              IF 1 = 2. MESSAGE e009(r3). ENDIF.                "#EC *
    this is a typical log call. Please write every error message like this
              log_write lc_msgtype "'E'                  "message type
                        lc_msgcls  "'R3'                 "message class
                        lc_msgnum  "'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.
          APPEND LINES OF i_t_fields TO s_s_if-t_fields.
    Fill parameter buffer for data extraction calls
          ls_s_if-requnr    = i_requnr.
          ls_s_if-dsource   = i_dsource.
          ls_s_if-maxsize   = i_maxsize.
          ls_s_if-initflag  = i_initflag.
      Company Code
          LOOP AT s_s_if-t_select  INTO  i_t_select WHERE fieldnm = c_bukrs.
            MOVE: i_t_select-sign   TO lr_bukrs-sign,
                  i_t_select-option TO lr_bukrs-option,
                  i_t_select-low    TO lr_bukrs-low,
                  i_t_select-high   TO lr_bukrs-high.
            APPEND lr_bukrs.
          ENDLOOP.
    *Version (0)
    *SRSC_S_IF_SIMPLE-T_SELECT
          LOOP AT s_s_if-t_select INTO i_t_select WHERE fieldnm = c_versi.
       LOOP AT i_t_select  INTO  s_s_if-t_select WHERE fieldnm = c_versi.
            MOVE: i_t_select-sign   TO lr_versi-sign,
                  i_t_select-option TO lr_versi-option,
                  i_t_select-low    TO lr_versi-low,
                  i_t_select-high   TO lr_versi-high.
            APPEND lr_versi.
          ENDLOOP.
    *Currency Type (company code only)
         LOOP AT s_s_if-t_select INTO i_t_select WHERE fieldnm = c_paledger.
            MOVE: i_t_select-sign   TO lr_paledger-sign,
                  i_t_select-option TO lr_paledger-option.
            IF i_t_select-low = lc_b0.
              MOVE lc_01 TO lr_paledger-low.
            ELSEIF  i_t_select-low = lc_10.
              MOVE lc_02 TO lr_paledger-low.
            ENDIF.
            APPEND lr_paledger.
          ENDLOOP.
    *Record Type
          LOOP AT s_s_if-t_select INTO i_t_select WHERE fieldnm = c_vrgar.
            MOVE: i_t_select-sign   TO lr_vrgar-sign,
                  i_t_select-option TO lr_vrgar-option,
                  i_t_select-low    TO lr_vrgar-low,
                  i_t_select-high   TO lr_vrgar-high.
            APPEND lr_vrgar.
          ENDLOOP.
    *Fiscal Year
          LOOP AT s_s_if-t_select INTO i_t_select WHERE fieldnm = c_gjahr.
            MOVE: i_t_select-sign   TO lr_gjahr-sign,
                  i_t_select-option TO lr_gjahr-option,
                  i_t_select-low    TO lr_gjahr-low,
                  i_t_select-high   TO lr_gjahr-high.
            APPEND lr_gjahr.
          ENDLOOP.
    *Period Block/Year
          LOOP AT s_s_if-t_select INTO i_t_select WHERE fieldnm = c_perbl.
            MOVE: i_t_select-sign   TO lr_perbl-sign,
                  i_t_select-option TO lr_perbl-option,
                  i_t_select-low    TO lr_perbl-low,
                  i_t_select-high   TO lr_perbl-high.
            APPEND lr_perbl.
          ENDLOOP.
    *Value Field Name.
          LOOP AT s_s_if-t_select INTO i_t_select WHERE fieldnm = c_fldnm.
            MOVE:
            i_t_select-sign   TO gr_zfldnm-sign,
            i_t_select-option TO gr_zfldnm-option,
            i_t_select-low   TO gr_zfldnm-low,
            i_t_select-high   TO gr_zfldnm-high.
            APPEND gr_zfldnm.
          ENDLOOP.
    First data package -> OPEN CURSOR
          IF ls_counter_datapakid = 0.
    *Create 93 Field names in an internal table.
         MOVE 'VV010' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV011' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV012' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV013' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV014' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV015' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV016' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV020' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV021' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV030' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV031' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV032' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV033' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV034' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV035' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV200' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV201' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV202' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV203' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV036' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV037' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV038' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV039' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV040' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV041' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV042' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV043' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV204' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV205' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV211' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV212' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV213' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV222' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV223' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV230' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV232' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV233' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV500' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV501' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV502' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV503' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV504' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV505' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV506' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV507' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV508' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV509' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV510' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV511' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV512' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV513' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV514' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV515' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV516' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV517' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV518' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV519' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV520' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV236' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV206' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV051' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV052' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV053' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV054' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV055' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV056' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV057' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV058' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV059' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV060' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV241' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV242' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV243' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV244' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV245' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV246' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV247' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV248' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV249' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV250' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV521' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV522' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV523' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV524' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV525' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV526' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV527' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV528' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV529' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV530' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV227' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV226' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
         MOVE 'VV224' TO lw_fldlist-fldnam. APPEND lw_fldlist TO lt_fldlist.
            OPEN CURSOR WITH HOLD ls_cursor FOR
                 SELECT
                 paobjnr      " Profitability Segment Number (CO-PA)
                 paledger     " Currency type for an operating concern
                 vrgar        " Record Type
                 versi        " Plan version (CO-PA)
                 gjahr            " Fiscal Year
                 perbl            " Fiscal year/period block
                 pasubnr
                 vv010001     " List Price
                 vv011001     " Formula Price
                 vv012001     " Customer Price
                 vv013001     " Manual Price
                 vv014001     " Retail Pump Price
                 vv015001     " Markup
                 vv016001     " Net Proceeds Other
                 vv020001     " Excise Duty Offset
                 vv021001     " Duties & Government
                 vv030001     " Sales Discounts
                 vv031001     " Sales Surcharges
                 vv032001     " Sales Rebates
                 vv033001     " Agents Comm Paid
                 vv034001     " RBA CR Royalties
                 vv035001     " Other Revenues
                 vv200001     " Transfer PriceSupply
                 vv201001     " Prim Tran Tariff Sup
                 vv202001     " S&Handling TariffDis
                 vv203001     " Sec Trans Tariff Dis
                 vv036001     " Proceeds from Servic
                 vv037001     " Exchanges
                 vv038001     " Throughput fees
                 vv039001     " Output Tax Offset
                 vv040001     " CR comm & Oth Oil Pr
                 vv041001     " Supplier fees
                 vv042001     " RBA Fairshare Adjust
                 vv043001     " Contr Comm Paid IG
                 vv204001     " Sec Tran Tariff Supp
                 vv205001     " Comp Stock Obligatio
                 vv211001     " Prim Tran Tar Transf
                 vv212001     " S&Handling Tar Trans
                 vv213001     " Sec Trans TariffTran
                 vv222001     " DIS:S&Handl Tar OvUn
                 vv223001     " DIS:Sec Tr TarifOvUn
                 vv230001     " Transfer Price LSC
                 vv232001     " S&Handling Tar LSC
                 vv233001     " Sec Trans Tariff LSC
                 vv500001     " 3rd Party Purchases
                 vv501001     " Transf from Oth Sect
                 vv502001     " Purchases IG
                 vv503001     " Inter-Seg Transf Pur
                 vv504001     " Import Freight
                 vv505001     " Stock Variations
                 vv506001     " Other Product Cost
                 vv507001     " Pipeline Operat Exp
                 vv508001     " Primary Transp Expen
                 vv509001     " Manufacturing Expens
                 vv510001     " Supply /Process Exp
                 vv511001     " MK Processing Plants
                 vv512001     " S&Handling Expenses
                 vv513001     " Sec Transp Expenses
                 vv514001     " Point of Sale Expens
                 vv515001     " Contr Comm Rec IG
                 vv516001     " Assoc Inc Dividend
                 vv517001     " Marketing & Sell Exp
                 vv518001     " Other Rev from Dist
                 vv519001     " Other Rev Transferrd
                 vv520001     " Stock Write-Off
                 vv236001     " Oth cost Tar LSC SMP
                 vv206001     " Prim Trp tariff Dist
                 vv051001     " CR Net Turnover
                 vv052001     " Dummy Price 2
                 vv053001     " Dummy Price 3
                 vv054001     " Dummy Price 4
                 vv055001     " Dummy Price 5
                 vv056001     " Dummy Price 6
                 vv057001     " Dummy Price 7
                 vv058001     " Dummy Price 8
                 vv059001     " Dummy Price 9
                 vv060001     " Dummy Price10
                 vv241001     " DummyTariff 1
                 vv242001     " DummyTariff 2
                 vv243001     " DummyTariff 3
                 vv244001     " DummyTariff 4
                 vv245001     " DummyTariff 5
                 vv246001     " DummyTariff 6
                 vv247001     " DummyTariff 7
                 vv248001     " DummyTariff 8
                 vv249001     " DummyTariff 9
                 vv250001     " DummyTariff10
                 vv521001     " SD&A Rebates
                 vv522001     " Dummy Cost 2
                 vv523001     " Dummy Cost 3
                 vv524001     " Dummy Cost 4
                 vv525001     " Dummy Cost 5
                 vv526001     " Dummy Cost 6
                 vv527001     " Dummy Cost 7
                 vv528001     " Dummy Cost 8
                 vv529001     " Dummy Cost 9
                 vv530001     " Dummy Cost 10
                 vv227001     " Sec Tr TarifOvUn LSC
                 vv226001     " S&Handl Tar OvUn LSC
                 vv224001     " Pr Tra TariffOvU DIS
                 FROM ce3op01
                 WHERE   paledger = lc_02 AND
                 vrgar    IN lr_vrgar AND
                 versi    IN lr_versi AND
                 perbl    IN lr_perbl AND
                 gjahr    IN lr_gjahr.
          ENDIF.
    For all other cursors.
          FETCH NEXT CURSOR ls_cursor
              APPENDING TABLE lt_ce3op02
              PACKAGE SIZE ls_s_if-maxsize.
          IF sy-subrc <> 0.
            EXIT.
          ENDIF.
          SORT lt_ce3op02 BY paobjnr pasubnr paledger vrgar versi gjahr
               perbl.
          DELETE ADJACENT DUPLICATES FROM lt_ce3op02 COMPARING paobjnr.
    *Begin of MODE-002
          DESCRIBE TABLE lt_ce3op02 LINES l_norecs.
          l_s_loop_from = lc_1.
          DO.
            l_s_loop_to = l_s_loop_from + l_s_no_recs.
            LOOP AT lt_ce3op02 INTO lw_ce3op02
            FROM l_s_loop_from TO l_s_loop_to .
              APPEND lw_ce3op02 TO lt_ce3op01.
            ENDLOOP.
            SORT lt_ce3op01 BY paobjnr.
    *End of MOS-002
            SELECT
              aktbo       "     Current profitability segment (CO-PA)
              paobjnr     "     Profitability Segment Number (CO-PA)
              pasubnr     "     Profitability segment changes (CO-PA)
              kndnr       "     Customer
              artnr
              bukrs     "     Company Code
              prctr
              kokrs
           FROM ce4op01
           INTO TABLE lt_ce4op01
           FOR ALL ENTRIES IN lt_ce3op01
           WHERE paobjnr = lt_ce3op01-paobjnr AND
                 pasubnr = lt_ce3op01-pasubnr AND
                 bukrs  IN lr_bukrs.
    *CE1op01
            SELECT
            paledger
            vrgar
            versi
            perio
            paobjnr
            pasubnr
            belnr
            posnr
            rbeln
            rposn
           FROM ce1op01
           INTO TABLE lt_ce1op01
           FOR ALL ENTRIES IN lt_ce3op01
           WHERE paledger = lt_ce3op01-paledger AND
                 vrgar    = lt_ce3op01-vrgar AND
                 versi    = lt_ce3op01-versi AND
                 perio    = lt_ce3op01-perbl AND
                 paobjnr = lt_ce3op01-paobjnr AND
                 pasubnr = lt_ce3op01-pasubnr.
    **CE1op01
            LOOP AT lt_ce3op01 INTO lw_ce3op01.
              MOVE:
              lw_ce3op01-paobjnr   TO lw_flnmval-paobjnr,
             lw_ce3op01-paledger  TO lw_flnmval-paledger,
             lw_ce3op01-vrgar     TO lw_flnmval-vrgar,
                      lw_ce3op01-versi     TO lw_flnmval-versi,
                      lw_ce3op01-gjahr     TO lw_flnmval-gjahr,
                      lw_ce3op01-perbl     TO lw_flnmval-perbl.
    *appending all 93 fields as records
              MOVE lw_ce3op01-vv010001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv011001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv012001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv013001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv014001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv015001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv016001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv020001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv021001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv030001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv031001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv032001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv033001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv034001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv035001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv200001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv201001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv202001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv203001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv036001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv037001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv038001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv039001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv040001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv041001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv042001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv043001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv204001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv205001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv211001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv212001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv213001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv222001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv223001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv230001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv232001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv233001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv500001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv501001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv502001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv503001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv504001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv505001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv506001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv507001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv508001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv509001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv510001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv511001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv512001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv513001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv514001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv515001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv516001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv517001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv518001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv519001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv520001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv236001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv206001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv051001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv052001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv053001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv054001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv055001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv056001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv057001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv058001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv059001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv060001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv241001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv242001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv243001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv244001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv245001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv246001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv247001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv248001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv249001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv250001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv521001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv522001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv523001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv524001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv525001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv526001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv527001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv528001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv529001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv530001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv227001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv226001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
              MOVE lw_ce3op01-vv224001    TO lw_flnmval-zamunt.
              APPEND lw_flnmval TO lt_flnmval.
    *Segrigating all one record into 102 records is complete
            ENDLOOP.
            LOOP AT lt_flnmval ASSIGNING <fs_flnmval>.
              IF l_index > 93.
                l_index = 1.
              ENDIF.
              READ TABLE lt_fldlist INTO lw_fldlist INDEX l_index.
              IF sy-subrc = 0.
                CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                  EXPORTING
                    input  = lw_fldlist-fldnam
                  IMPORTING
                    output = <fs_flnmval>-fldnam.
              ENDIF.
              l_index = l_index + 1.
            ENDLOOP.
            SORT lt_ce4op01 BY paobjnr.
            SORT lt_ce1op01 BY paobjnr  paledger vrgar  versi.
            SORT gr_zfldnm BY low.
            DELETE lt_flnmval WHERE fldnam NOT IN gr_zfldnm.
            LOOP AT lt_flnmval INTO lw_flnmval.
              READ TABLE lt_ce4op01 INTO  lw_ce4op01 WITH KEY
                                 paobjnr = lw_flnmval-paobjnr BINARY SEARCH.
              IF sy-subrc = 0.
                MOVE :   lw_flnmval-paledger  TO lw_e_t_data-paledger,
                         lw_flnmval-vrgar     TO lw_e_t_data-vrgar,
                         lw_flnmval-versi     TO lw_e_t_data-versi ,
                         lw_flnmval-gjahr     TO lw_e_t_data-gjahr,
                         lw_flnmval-perbl     TO lw_e_t_data-perbl,
                         lw_ce4op01-bukrs     TO lw_e_t_data-bukrs,
                         lw_ce4op01-kndnr     TO lw_e_t_data-kndnr,
                         lw_ce4op01-artnr     TO lw_e_t_data-artnr,
                         lw_ce4op01-prctr     TO lw_e_t_data-prctr,
                         lw_ce4op01-kokrs     TO lw_e_t_data-kokrs,
                         lw_flnmval-fldnam   TO lw_e_t_data-zfldnm,
                         lw_flnmval-zamunt   TO lw_e_t_data-zamount.
    CE1op01
                READ TABLE lt_ce1op01 INTO lw_ce1op01 WITH KEY
                            paobjnr = lw_flnmval-paobjnr
                            paledger = lw_flnmval-paledger
                            vrgar  = lw_flnmval-vrgar
                            versi = lw_flnmval-versi BINARY SEARCH.
                IF sy-subrc = 0.
                  MOVE: lw_ce1op01-rbeln  TO lw_e_t_data-rbeln,
                        lw_ce1op01-rposn  TO lw_e_t_data-rposn.
                ENDIF.
    CE1op01
                APPEND lw_e_t_data TO gt_out_data.
              ENDIF.
            ENDLOOP.
    *Begin of MOD-002
            FREE lt_flnmval.
            REFRESH :lt_ce3op01,lt_ce4op01,lt_ce1op01.
            e_t_data[] = gt_out_data[].
            DELETE e_t_data WHERE zfldnm NOT IN gr_zfldnm.
            l_s_loop_from = l_s_loop_to + lc_1.
            l_count = l_count + 20.
            IF l_count GE l_norecs.
              EXIT.
            ENDIF.
          ENDDO.
    *End of MOD-002
          ls_counter_datapakid = ls_counter_datapakid + 1.
        ENDIF.                        "IF S_COUNTER_DATAPAKID = 0
      ELSE.
        IF i_maxsize IS INITIAL.
          RAISE error_passed_to_mess_handler.
        ENDIF.
        IF g_start IS INITIAL.
          g_start = 1.
        ELSE.
          g_start  = g_end + 1.
        ENDIF.
        g_end = g_start + i_maxsize - 1.
    Population of E_T_DATA based on Data records size
        APPEND LINES OF gt_out_data FROM g_start TO g_end TO e_t_data.
        DELETE e_t_data WHERE zfldnm NOT IN gr_zfldnm.
        IF e_t_data[] IS INITIAL.
          RAISE no_more_data.
        ENDIF.
        ls_counter_datapakid = ls_counter_datapakid + 1.
      ENDIF.
    ENDFUNCTION.
    Thanks & regards,
    Sreekanth
    +91 9740091981

    Hello Sreekanth,
    See this blog [Generic Extraction via Function Module|/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module]
    Also see this
    [Line Item Level Data Extraction for Financial Accounting and Controlling|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a7f2f294-0501-0010-11bb-80e0d67c3e4a]
    Thanks
    Chandran

  • Not getting the data for delta for 0ASSET_ATTR_TEXT  in RSA3

    Hi All
    In RSA3, I am not able to extract the delta for the datasource ASSET_ATTR_TEXT. But when it is on full update then i am gettign the records, when i changed to "D" it is giving me the error 'Errors occurred during the extraction' and the error messege says
    "Errors occurred during the extraction
    Message no. RJ012
    Diagnosis
    During the extraction phase an error occurred for the extractor. An exception, 'error_passed_to_mess_handler' was triggered.
    System Response
    A more precise description of the error can be found in the log.
    Procedure
    Check the function module or the call from the extractor check program
    Kindly provide some inputs on the same
    Regards
    Abhi

    hi Siggi,
    I have checked Datasource in the ROOSOURCE Table for this datasource the DELTA IS - AIE. And do did the Init from the BW i got 8210 recods.Then i executed the Delta Pack. there was an error happend.
    But When i loaded Delta i got the error as :
    Diagnosis                
             Not all the initialization requests have been completed yet for this   
        DataSource, or there may be an incorrect initialization request.                                                                               
    System response                                                                               
    No delta requests can be processed whilst there is an initialization   
        request that has not been completed.                                                                               
    Procedure                                                     Wait until the initialization request has finished, or delete the entry
        for the incorrect initialization request from the corresponding display
        in the Scheduler.                                                      
    Regards
    Abhi

  • Unable to get delta observation,

    i am trying get delta records from ztable based on time stamp with 900sec lower timestamp,,,,,,,,,,
    please correct my code,
    Example: DataSource for table SFLIGHT
      TABLES: zsales_order1.
    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_zvbeln FOR zsales_order1-zvbeln,
              l_r_zerdat FOR zsales_order1-zerdat,
              l_r_zerzet FOR zsales_order1-zerzet,
              l_r_ztimestamp FOR zsales_order1-ztimestamp.
      DATA : startdate TYPE sy-datum,
             starttime TYPE sy-uzeit,
             enddate TYPE sy-datum,
             endtime TYPE sy-uzeit,
             timestamp TYPE tzonref-tstamps.
    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
    Check DataSource validity
        CASE i_dsource.
          WHEN 'ZSALES_ORDER_FUN1'.
          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 = 'ZVBELN'.
            MOVE-CORRESPONDING l_s_select TO l_r_zvbeln.
            APPEND l_r_zvbeln.
           LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZERDAT'.
              MOVE-CORRESPONDING l_s_select TO l_r_zerdat.
              APPEND l_r_zerdat.
           LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZERZET'.
                MOVE-CORRESPONDING l_s_select TO l_r_zerzet.
                APPEND l_r_zerzet.
       LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZTIMESTAMP'.
                  timestamp = l_s_select-low.
                  CONVERT TIME STAMP timestamp
                  TIME ZONE sy-zonlo INTO DATE startdate TIME starttime.
                  timestamp = l_s_select-high.
                  CONVERT TIME STAMP timestamp
                  TIME ZONE sy-zonlo INTO DATE enddate TIME endtime.
                  l_r_zerdat-low = startdate.
                  l_r_zerdat-sign = l_s_select-sign.
                  l_r_zerdat-option = l_s_select-option.
                  l_r_zerdat-high = enddate.
                  APPEND l_r_zerdat.
                  l_r_zerzet-low = starttime.
                  l_r_zerzet-sign = l_s_select-sign.
                  l_r_zerzet-option = l_s_select-option.
                  l_r_zerzet-high = endtime.
                  APPEND l_r_zerzet.
                ENDLOOP.
              ENDLOOP.
            ENDLOOP.
          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
          SELECT zvbeln
    zerdat
    zerzet
    zland1
    zkunnr
    zlgort
    zposnv
    zmatnr
    znetpr
    waerk
    zkpein
    zkmein
    zarktx
    zstadat
    zaedat
    zaezet
    ztimestamp FROM zsales_order1 WHERE zvbeln IN l_r_zvbeln
                                  AND zerdat IN l_r_zerdat
                                  AND zerzet IN l_r_zerzet
                                  AND (
          ( zerdat >= startdate AND ( zerzet >= starttime     OR
          ( zerdat <= enddate   AND   zerzet <= endtime ) ) ) OR
          ( zaedat >= startdate AND ( zaezet >= starttime     OR
          ( zaedat <= enddate   AND   zaezet <= endtime ) ) )
        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.
    thanks in advance

    As per the description of this forum at the top of the page I do not think this is posted correctly:
    This forum is dedicated to all other development-related questions which are not directly addressed by other forums. This includes Business Objects SDKs, products, or technologies which do not fall under BusinessObjects Enterprise, BusinessObjects Edge, Crystal Reports Server, or Crystal Reports (for example Desktop Intelligence SDK, Universe Designer SDK, Portal Integration Kits, Java User Function Libraries, and other third party technologies or development languages).
    - Ludek

  • GDE - function module.. code .. problem

    hi all,
    I am extracting data using FM
    from PAYR and REGUH.
    I need:
    Payr
    doc1 ven01.........filds.a b c.
    doc2 ven02.........filds..
    doc3 ven02.........filds..
    doc4 ven03.........filds..
    My Fm is working fine.
    I need from REGUH:
    doc1 ven01.........filds p q r..
    doc2 ven02.........filds..
    doc3 ven02.........filds..
    doc4 ven03.........filds..
    doc5 ven05.........filds..
    doc6 ven06.........filds..
    doc5 and Doc6 not there in Payr table. finally i need 6 records with a, b,c, p, q, r
    I wrote code:
    ========
    error : It returns dump..
    saying : INDEX problem..?
    Modify e_t_data index sy-tabix.
    FUNCTION z_biw_payr_get_data .
    ""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
    *"     REFERENCE(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  ZBIW_AP_PAYR OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    Example: DataSource for table SFLIGHT
      TABLES: payr.
    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.
    *internal tables:
    I_payr like payr occurs 0 with header line.
    I_reguh like reguh occurs 0 with header line.
    Select ranges
      RANGES: l_r_gjahr   FOR zap_payr-gjahr,
              l_r_vblnr   FOR zap_payr-vblnr,
              l_r_zbukr   FOR zap_payr-zbukr.
    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
    please Check DataSource validity
        CASE i_dsource.
          WHEN 'ZAP_PAYR'.
          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 = 'GJAHR'.
            MOVE-CORRESPONDING l_s_select TO l_r_gjahr.
            APPEND l_r_gjahr.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'VBLNR'.
                  MOVE-CORRESPONDING l_s_select TO l_r_vblnr.
            APPEND l_r_vblnr.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'ZBUKR'.
            MOVE-CORRESPONDING l_s_select TO l_r_zbukr.
            APPEND l_r_zbukr.
          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.
    Extracts from Tableu2026..1
          OPEN CURSOR WITH HOLD s_cursor FOR
          SELECT mandt zbukr hbkid hktid rzawe chect checf laufd laufi lifnr
            kunnr empfg ubhkt vblnr gjahr zaldt waers rwbtr strgb pridt
            priti prius xmanu xbanc bancd extrd extrt xbukr zanre znme1
            znme2 znme3 znme4 zpstl zort1 zstra zpfac zland zregi zbnks
            zbnkn zbnkl zbkon voidr voidd voidu checv hbkiv hktiv zpst2
            xragl pernr seqnr btznr rec_belnr rec_gjahr zpfor uzawe ichec
            irefe rwskt
          FROM  payr
          WHERE zbukr  IN l_r_zbukr
                AND   vblnr  IN l_r_vblnr
          AND   gjahr  IN l_r_gjahr.
        AND   rzawe  EQ 'C'.
        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.
    **get all u2018Du2019 and 2 series VBLNR records from REGUH
    _** --- CHECK the codes for WITH CASE 1 OR CASE 2._
    Case 1 :
    *Select * from reguh*
         Into corresponding fields of table i_reguh
         For all entries in e_t_data
         Where lifnr = e_t_data-lifnr
          And  rzawe = u2018Du2019
          and  Vblnr like u20182%u2019.
    Or u2026u2026 Or u2026u2026 Or u2026u2026
    Case2 :
    *Select * from reguh*
         Into corresponding fields of table i_reguh
         Where rzawe = u2018Du2019
          and  Vblnr like u20182%u2019.
    Loop at e_t_data.
      Read table i_reguh with key lifnr = e_t_data-lifnr
        If sy-subrc = 0.
          E_t_data-laufi  like reguh- laufi.
          E_t_data-Zbukr like reguh-zbukr.
          E_t_data-lifnr like reguh- lifnr .
          E_t_data-empfg like reguh- empfg.
          E_t_data-vblnr  like reguh-vblnr
          E_t_data-waers like reguh-waers
          E_t_data-srtgb like reguh-srtgb.
          E_t_data-znme1 like reguh- znme1.
          E_t_data-znme2  like reguh- znme2.
          E_t_data-znme3 like reguh- znme3.
          E_t_data-znme4 like reguh- znme4.
          E_t_data-zpstl like reguh-zpstl.
          E_t_data-zort1   like reguh-zortl.
          E_t_data-zstra like reguh-zstra.
          E_t_data-zpfac like reguh-zpfac.
          E_t_data-zland like reguh-zland.
          E_t_data-zregi like reguh-zregi.
          E_t_data-zbnkl like reguh-zbnkl.
          E_t_data-rzawe like reguh-rzawe.
          E_t_data-hktid like reguh-hktid.
          E_t_data-hbkid like reguh-hbkid.
          E_t_data-zpst2 like reguh-zpst2.
          E_t_data-uzawe like reguh-uzawe.
                E_t_data-pernr like reguh-pernr.
         E_t_data-btznr like reguh-btanr.
         E_t_data-laufd like reguh-laufd.
         E_t_data-zaldt like reguh-zaldt.
         E_t_data-rwbtr like reguh-rwbtr.
         E_t_data-rwskt like reguh-rwskt.
         Modify e_t_data index sy-tabix.
    Else.
         E_t_data-laufi  like reguh- laufi.
                E_t_data-Zbukr like reguh-zbukr.
         E_t_data-lifnr like reguh- lifnr .
         E_t_data-empfg like reguh- empfg.
         E_t_data-vblnr  like reguh-vblnr
         E_t_data-waers like reguh-waers
         E_t_data-srtgb like reguh-srtgb.
         E_t_data-znme1 like reguh- znme1.
         E_t_data-znme2  like reguh- znme2.
         E_t_data-znme3 like reguh- znme3.
         E_t_data-znme4 like reguh- znme4.
         E_t_data-zpstl like reguh-zpstl.
         E_t_data-zort1   like reguh-zortl.
         E_t_data-zstra like reguh-zstra.
         E_t_data-zpfac like reguh-zpfac.
         E_t_data-zland like reguh-zland.
         E_t_data-zregi like reguh-zregi.
         E_t_data-zbnkl like reguh-zbnkl.
         E_t_data-rzawe like reguh-rzawe.
         E_t_data-hktid like reguh-hktid.
         E_t_data-hbkid like reguh-hbkid.
         E_t_data-zpst2 like reguh-zpst2.
         E_t_data-uzawe like reguh-uzawe.
         E_t_data-pernr like reguh-pernr.
         E_t_data-btznr like reguh-btanr.
         E_t_data-laufd like reguh-laufd.
         E_t_data-zaldt like reguh-zaldt.
         E_t_data-rwbtr like reguh-rwbtr.
         E_t_data-rwskt like reguh-rwskt.
    Modify e_t_data index sy-tabix.
    Endif.
    Endloop.
    Logic for eliminating voided Checks Begin
        itab[] = e_t_data[].
        SORT itab BY chect.
        LOOP AT itab WHERE ( voidu NE space ) AND ( voidd NE space ).
          wa_idx = sy-tabix.
          wa_chect = itab-chect. CLEAR wa_found.
                wa_zbukr = itab-zbukr.
          wa_hbkid = itab-hbkid.
          wa_hktid = itab-hktid.
          wa_rzawe = itab-rzawe.
          DO.
            SELECT SINGLE * FROM payr WHERE
            zbukr = wa_zbukr AND
            hbkid = wa_hbkid AND
            hktid = wa_hktid AND
            rzawe = wa_rzawe AND
            chect = wa_chect.
            IF sy-subrc NE 0.
    Not transferring this record to BW
          message 'Invalid Check No.' type 'I'.
              DELETE itab.
              wa_found = 'Y'. EXIT.
            ENDIF.
            IF ( payr-voidu NE space ) AND ( payr-voidd NE space ).
              wa_chect = payr-checv.
              wa_zbukr = payr-zbukr.
              wa_hbkid = payr-hbkid.
                        wa_hktid = payr-hktid.
              wa_rzawe = payr-rzawe.
    If the Replacement Check # points to Original Check No., this record
    will be skipped.
              IF itab-chect = payr-checv.
                DELETE itab INDEX wa_idx.
                EXIT.
              ENDIF.
            ELSE.
              MOVE-CORRESPONDING payr TO itab.
              APPEND itab. wa_found = 'Y'.
              MOVE-CORRESPONDING itab TO itab1.
              APPEND itab1.
              EXIT.
            ENDIF.
            IF wa_found = 'Y'.
              EXIT.
            ENDIF.
          ENDDO.
        ENDLOOP.
        SORT itab by zbukr hbkid hktid rzawe chect.
            DELETE ADJACENT DUPLICATES FROM itab COMPARING zbukr hbkid hktid
        rzawe chect.
        LOOP AT itab1.
          READ TABLE itab WITH KEY
          zbukr = itab1-zbukr
          hbkid = itab1-hbkid
          hktid = itab1-hktid
          rzawe = itab1-rzawe
          chect = itab1-chect BINARY SEARCH.
          IF ( itab-voidu IS NOT INITIAL ).
            DELETE TABLE itab FROM itab1.
          ENDIF.
        ENDLOOP.
    04/13/08 commented to satisfy 4th condition
    Do not extract the Original record of the replaced Check
       LOOP AT itab.
         IF ( itab-voidu IS NOT INITIAL ) AND
            ( itab-voidd IS NOT INITIAL ).
           DELETE itab.
         ENDIF.
       ENDLOOP.
    04/13/08 commented to satisfy 4th condition
    Logic for eliminating voided Checks End
    ***The below process can be used for Delta Extraction using Time Stamp
       loop at itab.
         concatenate itab-pridt itab-priti into wa_timstmp.
         move wa_timstmp to itab-timstmp.
         move-corresponding itab to e_t_data.
         append e_t_data.
       endloop.
        e_t_data[] =    itab[].
        s_counter_datapakid = s_counter_datapakid + 1.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.
    =========
    Please advise me and where will i correct the code.
    Thanks in advance,
    Siri.
    Edited by: SIRI SIRI on Jun 3, 2008 3:26 PM

    Hi,
    use the following:
    define a index variable.
    data: l_index type sy-tabix.
    in your loop at e_t_data.
    loop at e_t_data.
    new statement
    l_index = sy-tabix.
    changed statement
    modify e_t_data index l_index.
    endloop.
    The other read operations on internal tables will reset sy-tabix so that it will point to a invalid record.
    regards
    Siggi

  • I_UPDMODE has no value in my Function Module when using Delta Extraction

    Help me please.
    My system is BW 3.52
    Please see the source code below and tell me why I_UPDMODE has not been passed value. I have ever used "I_SOURCE" but the value pass to I_DSOURCE. Can anyone tell me where is the upload mode pass to?
    FUNCTION ZBWFN_TEST_DELTA.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR
    *"     VALUE(I_DSOURCE) 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_RLOGSYS) TYPE  SRSC_S_INTERFACE-RLOGSYS OPTIONAL
    *"     VALUE(I_READ_ONLY) TYPE  SRSC_S_INTERFACE-READONLY OPTIONAL
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_DATA STRUCTURE  ZISU_ERCHC OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    This extractor is part of a delta scenario based on a timestamp
    included in the fields of table ROVERCUBE1. The interesting part
    takes place in form get_time_interval, where the date range is
    calculated update modespecifically.
    The pointer for the date up to which delta was extracted during
    the last delta update is held in table ROBWQTSTAT.
      TABLES: ZISU_TP_ERCHC, ERCH, ERCHC.
    Auxiliary Selection criteria structure
      DATA: L_S_SELECT TYPE SBIWA_S_SELECT.
      DATA: L_ERCHC LIKE ZISU_TP_ERCHC OCCURS 0 WITH HEADER LINE.
      DATA: L_DATE LIKE SY-DATUM,
                L_ACTUAL_DATE LIKE SY-DATUM,
                L_LAST_DATE LIKE SY-DATUM.
    Maximum number of lines for DB table
      STATICS: L_MAXSIZE TYPE SBIWA_S_INTERFACE-MAXSIZE,
               BEGIN OF S_S_INTERFACE.
      INCLUDE TYPE SBIWA_S_INTERFACE.
      INCLUDE TYPE SRSC_S_INTERFACE.
      STATICS: END OF S_S_INTERFACE.
    STATICS: BEGIN OF S_R_TSTMP OCCURS 1,
                SIGN(1),
                OPTION(2),
                LOW  LIKE ROVERCUBE1-TSTMP,
                HIGH LIKE ROVERCUBE1-TSTMP,
              END   OF S_R_TSTMP.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
    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 DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZOVER_TRANS'.
          WHEN 'TEST_ROVERCUBE'.
          WHEN 'DO_DATASOURCE'.
          WHEN '0VER_DELTA_WITH_LONG_NAME'.
          WHEN '0VER_CUBE_OLD_LIS'.
          WHEN '0VER_TYPE_ATTR'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E009(R3). ENDIF.
            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.
    Check for supported update mode
        CASE I_UPDMODE.
          WHEN 'F'.
          WHEN 'D'.
          WHEN 'C'.
          WHEN 'R'.
          WHEN 'S'.
          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.
        APPEND LINES OF I_T_SELECT TO G_T_SELECT.
    Fill parameter buffer for data extraction calls
        S_S_INTERFACE-REQUNR    = I_REQUNR.
        S_S_INTERFACE-ISOURCE   = I_DSOURCE.
        S_S_INTERFACE-MAXSIZE   = I_MAXSIZE.
        S_S_INTERFACE-INITFLAG  = I_INITFLAG.
        S_S_INTERFACE-UPDMODE   = I_UPDMODE.
        S_S_INTERFACE-RLOGSYS   = I_RLOGSYS.
        S_S_INTERFACE-READONLY  = I_READ_ONLY.
        G_FLAG_INTERFACE_INITIALIZED = SBIWA_C_FLAG_ON.
        APPEND LINES OF I_T_FIELDS TO G_T_FIELDS.
    here the timerange for update modes concerning delta is calculated
    and the status table is updated
        PERFORM GET_CAL_INTERVAL TABLES G_R_DELTA_DATE[]
                                  USING  S_S_INTERFACE-ISOURCE
                                             S_S_INTERFACE-UPDMODE
                                             S_S_INTERFACE-RLOGSYS.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      calcualte range tables for key fields
                                   calculate date range due to update mode
                                   OPEN CURSOR + FETCH
                   Following Calls FETCH only
    First data package -> OPEN CURSOR
        G_COUNTER_DATAPAKID = G_COUNTER_DATAPAKID + 1.
        IF G_COUNTER_DATAPAKID = 1.
    Fill range tables.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'COUNTRY'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_COUNTRY.
           APPEND L_R_COUNTRY.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'REGION'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_REGION.
           APPEND L_R_REGION.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'KUNNR'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_KUNNR.
           APPEND L_R_KUNNR.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'TYPE'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_TYPE.
           APPEND L_R_TYPE.
         ENDLOOP.
         LOOP AT G_T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GJAHR'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_GJAHR.
           APPEND L_R_GJAHR.
         ENDLOOP.
    no data must be selected in Init simulation mode
          CHECK S_S_INTERFACE-UPDMODE NE SRSC_C_UPDMODE_INITSIMU.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE.
          L_MAXSIZE = G_S_INTERFACE-MAXSIZE.
          REFRESH: L_ERCHC.
          SELECT * FROM ERCH WHERE ERDAT IN G_R_DELTA_DATE
                                          OR AEDAT IN G_R_DELTA_DATE.
            SELECT SINGLE * FROM ERCHC WHERE BELNR = ERCH-BELNR.
            IF SY-SUBRC = 0.
              CLEAR: L_ERCHC.
              L_ERCHC-BUKRS = ERCH-BUKRS.
              L_ERCHC-ABRVORG = ERCH-ABRVORG.
              L_ERCHC-PORTION = ERCH-PORTION.
              L_ERCHC-GPARTNER = ERCH-GPARTNER.
              IF ERCHC-CPUDT IN G_R_DELTA_DATE.
                L_ERCHC-DELDT = ERCHC-CPUDT.
                L_ERCHC-DOCDT = ERCHC-BUDAT.
                L_ERCHC-RELNO = 1.
                COLLECT L_ERCHC.
              ENDIF.
              IF ERCHC-INTCPUDT IN G_R_DELTA_DATE AND
                 ERCHC-INTCPUDT IS NOT INITIAL.
                L_ERCHC-DELDT = ERCHC-INTCPUDT.
                L_ERCHC-DOCDT = ERCHC-INTBUDAT.
                L_ERCHC-REVNO = 1.
                COLLECT L_ERCHC.
              ENDIF.
            ENDIF.
          ENDSELECT.
          DELETE FROM ZISU_TP_ERCHC.
          LOOP AT L_ERCHC.
            MOVE-CORRESPONDING L_ERCHC TO ZISU_TP_ERCHC.
            INSERT ZISU_TP_ERCHC.
          ENDLOOP.
          OPEN CURSOR WITH HOLD G_CURSOR FOR
          SELECT * FROM ZISU_TP_ERCHC.
        ENDIF.                             "First data package ?
        IF S_S_INTERFACE-UPDMODE = SRSC_C_UPDMODE_INITSIMU.
          RAISE NO_MORE_DATA.
        ENDIF.
    Fetch records into interface table.
        FETCH NEXT CURSOR G_CURSOR
                   APPENDING CORRESPONDING FIELDS OF TABLE E_T_DATA
                   PACKAGE SIZE  S_S_INTERFACE-MAXSIZE.
        IF SY-SUBRC <> 0.
          RAISE NO_MORE_DATA.
        ENDIF.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.

    Dave,
    1. You can fire SELECTS in an RFC as well, but in your case the data exists in SYSTEM A and the RFC is in System B, so you can't do that. You can fire SELECTS on tables in the same system.
    2. Quick example of two table loops - EKKO (HEADER) EKPO (ITEM).
    LOOP AT EKKO.
    LOOP AT EKPO WHERE EBELN = EKKO-EBELN.
    ENDLOOP.
    ENDLOOP.
    I hope this is clear now.
    Regards,
    Ravi

  • Perform - syntax

    Hi ,
        Iam trying to write an extractor for open and closed items ie form BSAD and BSID .
    So i have written the logic .when i tryed to modularise the code .the function module is not acteping the perform statment
    Ie when i tryed to put the logic in to a perfoem its giving a syntax error like
    "Field "E_T_DATA" is unknown. It is neither in one of the specified          
    tables nor defined by a "DATA" statement . . . . . . . . . .     "     
    can you please provide me a solution for this .
    Thanks ,
    Sriram.

    Hi ,
      As you have asked for below i have attached the code .
    PERFORM FETCH_BSID .
    *PERFORM FETCH_BSAD TABLES E_T_DATA.
    this are the two perform iam trying to create just to moduralize the code .it it showing an error like .E_T_DATA is not defined which is the final extract structure .
    ""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 TYPE  ZBIAR_EXTRACTOR_AR1 OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    *& Function Module  : Z01_FBIWI_AR_EXTRACTOR                               *
    *& Title            : Extractor Industrial - AR                            *
    *& Programmer       : TSHANKAR                                             *
    *& Date             : 16/11/2007                                           *
    *& Transaction      :                                                      *
    *& Description      : This extractor fetches data fetches data from        *
                        tables BSID ,BSAD, KNVP,Z02TOTC_AR_DOC_H for closed  *
                         and open item and populate into final extract       *
                         structure FOR CLOSED                                *
    Modification Log:                                                        *
    Date      Author       Corr. #      Description                          *
    mm/dd/yy  SAPLOGONNAM  xxxxxxxxxx   Initial program development          *
              TSHANKAR                  Changes made to the application      *
                                        path                                 *
    **DATA DECLERATION
    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,
               S_CURSOR1 TYPE CURSOR.
    DATA : FLAG_BSID TYPE I VALUE 0.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
        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 = 'BUKRS'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BUKRS.
            APPEND R_BUKRS.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'KUNNR'.
            MOVE-CORRESPONDING L_S_SELECT TO R_KUNNR.
            APPEND R_KUNNR.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GJAHR'.
            MOVE-CORRESPONDING L_S_SELECT TO R_GJAHR.
            APPEND R_GJAHR.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CPUDT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_CPUDT.
            APPEND R_CPUDT.
            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
                  SELECT MANDT KUNNR WRBTR XREF3 BUKRS BELNR GJAHR BUZEI WAERS BLDAT
                         BUDAT BLART XBLNR SHKZG DMBTR GSBER ZFBDT ZLSCH ZUONR ZTERM
                         KIDNO XREF1 XREF2 SGTXT MABER HKONT PRCTR KOSTL AUFNR PROJK
                         VBUND
                          FROM BSID WHERE  BUKRS IN R_BUKRS AND KUNNR IN R_KUNNR AND
                                                            GJAHR IN R_GJAHR AND
                                                            CPUDT IN R_CPUDT .
              OPEN CURSOR WITH HOLD S_CURSOR1 FOR
                  SELECT MANDT KUNNR WRBTR XREF3 BUKRS BELNR GJAHR BUZEI WAERS BLDAT
                         BUDAT BLART XBLNR SHKZG DMBTR GSBER ZFBDT ZLSCH ZUONR ZTERM
                         KIDNO XREF1 XREF2 SGTXT MABER HKONT PRCTR KOSTL AUFNR PROJK
                         VBUND
                          FROM BSAD WHERE  BUKRS IN R_BUKRS AND KUNNR IN R_KUNNR AND
                                                            GJAHR IN R_GJAHR AND
                                                            CPUDT IN R_CPUDT .
          ENDIF.               "First data package ?
    Fetch records into interface table.
          FETCH NEXT CURSOR S_CURSOR
                     APPENDING CORRESPONDING FIELDS
                     OF TABLE IT_BSID
                     PACKAGE SIZE S_S_IF-MAXSIZE.
         FETCH NEXT CURSOR S_CURSOR1
                    APPENDING CORRESPONDING FIELDS
                    OF TABLE IT_BSAD
                    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 ?
    PERFORM FETCH_BSID .
    *PERFORM FETCH_BSAD TABLES E_T_DATA.
    *FORM FETCH_BSID TABLES P_E_T_DATA type  ZBIAR_EXTRACTOR_AR2.
          SORT IT_BSID BY KUNNR BUKRS GJAHR .
       CHECK  NOT IT_BSID[] IS INITIAL .
       PERFORM FILL_Z02TOTC_AR_DOC_H.
       PERFORM FILL_KNVP.
       LOOP AT IT_BSID .
         READ TABLE IT_Z02TOTC_AR_DOC_H WITH KEY BELNR = IT_BSID-BELNR
                                                 BUKRS = IT_BSID-BUKRS
                                                 GJAHR = IT_BSID-GJAHR
                                                 BUZEI = IT_BSID-BUZEI.
         LOOP AT IT_Z02TOTC_AR_DOC_H FROM SY-TABIX.
           IF SY-SUBRC IS INITIAL .
             IF IT_Z02TOTC_AR_DOC_H-BELNR <> IT_BSID-BELNR
              OR IT_Z02TOTC_AR_DOC_H-BUKRS <> IT_BSID-BUKRS
              OR IT_Z02TOTC_AR_DOC_H-GJAHR <> IT_BSID-GJAHR.
              OR IT_Z02TOTC_AR_DOC_H-BUZEI <> IT_BSID-BUZEI.
               EXIT .
             ENDIF .
             READ TABLE IT_KNVP WITH KEY KUNNR = IT_BSID-KUNNR
                                         VKORG = IT_BSID-BUKRS.
             IF SY-SUBRC IS INITIAL.
               MOVE-CORRESPONDING IT_KNVP TO E_T_DATA.
               MOVE-CORRESPONDING IT_Z02TOTC_AR_DOC_H TO E_T_DATA.
               MOVE-CORRESPONDING IT_BSID TO E_T_DATA.
               APPEND E_T_DATA.
             ENDIF .
           ENDIF.
         ENDLOOP .
       ENDLOOP .
    *FREE : IT_BSID ,IT_Z02TOTC_AR_DOC_H ,IT_KNVP.
    *ENDFORM.
      ENDFUNCTION.  " End of Function Z01_FBIWI_AR_EXTRACTOR
    **form for fetching cleared entries
    *FORM FETCH_BSAD using  P_E_T_DATA LIKE ZBIAR_EXTRACTOR_AR2
                   changing e_t_data type p_e_t_data.
          SORT IT_BSAD BY KUNNR BUKRS GJAHR .
       CHECK  NOT IT_BSAD[] IS INITIAL .
       PERFORM FILL_Z02TOTC_AR_DOC_H_BSAD.
       PERFORM FILL_KNVP_BSAD.
       LOOP AT IT_BSAD .
         READ TABLE IT_Z02TOTC_AR_DOC_H_BSAD WITH KEY BELNR = IT_BSAD-BELNR
                                                      BUKRS = IT_BSAD-BUKRS
                                                      GJAHR = IT_BSAD-GJAHR
                                                      BUZEI = IT_BSAD-BUZEI.
         LOOP AT IT_Z02TOTC_AR_DOC_H_BSAD FROM SY-TABIX.
           IF SY-SUBRC IS INITIAL .
             IF IT_Z02TOTC_AR_DOC_H_BSAD-BELNR <> IT_BSAD-BELNR
              OR IT_Z02TOTC_AR_DOC_H_BSAD-BUKRS <> IT_BSAD-BUKRS
              OR IT_Z02TOTC_AR_DOC_H_BSAD-GJAHR <> IT_BSAD-GJAHR.
              OR IT_Z02TOTC_AR_DOC_H-BUZEI <> IT_BSID-BUZEI.
               EXIT .
             ENDIF .
             READ TABLE IT_KNVP_BSAD WITH KEY KUNNR = IT_BSAD-KUNNR
                                              VKORG = IT_BSAD-BUKRS.
             IF SY-SUBRC IS INITIAL.
               MOVE-CORRESPONDING IT_KNVP_BSAD TO P_E_T_DATA.
               MOVE-CORRESPONDING IT_Z02TOTC_AR_DOC_H_BSAD TO P_E_T_DATA.
               MOVE-CORRESPONDING IT_BSAD TO P_E_T_DATA.
               APPEND P_E_T_DATA.
             ENDIF .
           ENDIF.
         ENDLOOP .
       ENDLOOP .
    *FREE : IT_BSAD ,IT_Z02TOTC_AR_DOC_H ,IT_KNVP.

  • Generic extractor FM : taking 5-6 hours time for 3 months to BW urgent:

    Dear experts,
    I have designed a FM for generic extraction , which is taking 5-6 hoours time for 3 months data i.e 24 lakhs records to BW up to PSA .
    i have given the coding below plz provide any modifications to improve the performance.....
    FUNCTION zhr_att_analysis.
    ""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_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  ZHR_ATT_MAIN OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    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_pernr FOR pa9004-pernr,
              l_r_bukrs FOR pa0001-bukrs,
              l_r_persg FOR pa0001-persg,
              l_r_begda FOR pa9004-begda,
              l_r_persk FOR pa0001-persk.
    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.
    *"Declaration of store data
    TYPES : BEGIN OF ty_9004,
             pernr TYPE persno,
             endda TYPE endda,
             begda TYPE begda,
             zrs TYPE zrs,
             zstorecode TYPE zstorecode,
            END OF ty_9004.
    *"Declaration of employee data
      TYPES : BEGIN OF ty_0001,
              pernr TYPE pernr_d,
              endda TYPE endda,
              begda TYPE begda,
             AEDTM TYPE AEDAT,
              bukrs TYPE bukrs,
              persg TYPE persg,
              persk TYPE persk,
              END OF ty_0001.
    *"Declaration of expected mandays
      TYPES : BEGIN OF ty_0000,
              pernr TYPE persno,
              endda TYPE endda,
              begda TYPE begda,
              aedtm TYPE aedat,
              stat2 TYPE stat2,
              massn TYPE massn,
              END OF ty_0000.
    *"Declaration of man days swiped
      TYPES : BEGIN OF ty_teven,
              pernr TYPE pernr_d,
              ldate TYPE ldate,
              satza TYPE retyp,
              aedtm TYPE aedat,
              counter_swiped TYPE i,
              END OF ty_teven.
    *"Declaration of Man days regularized
      TYPES : BEGIN OF ty_2002,
              pernr TYPE pernr_d,
              subty TYPE subty,
              endda TYPE endda,
              begda TYPE begda,
              aedtm TYPE aedat,
              END OF ty_2002.
    *"Declaration of Man days lostdue to leave
      TYPES : BEGIN OF ty_2001,
              pernr TYPE pernr_d,
              subty TYPE subty,
              endda TYPE endda,
              begda TYPE begda,
              aedtm TYPE aedat,
              END OF ty_2001.
    *****Declaration of weekly off
      TYPES : BEGIN OF ty_2003,
              pernr TYPE pernr_d,
              subty TYPE subty,
              endda TYPE endda,
              begda TYPE begda,
              aedtm TYPE aedat,
              tprog TYPE tprog,
              END OF ty_2003.
    Auxiliary Selection criteria structure
      DATA :
            it_0001 TYPE TABLE OF ty_0001,
            wa_0001 TYPE ty_0001,
            it_0000 TYPE TABLE OF ty_0000,
            wa_0000 TYPE ty_0000,
            it_teven TYPE TABLE OF ty_teven,
            wa_teven TYPE ty_teven,
            it_2002 TYPE TABLE OF ty_2002 ,
            wa_2002 TYPE ty_2002,
            it_2001 TYPE TABLE OF ty_2001,
            wa_2001 TYPE ty_2001,
            it_2003 TYPE TABLE OF ty_2003,
            wa_2003 TYPE ty_2003,
            wa_target TYPE zhr_att_main.
      DATA : date  TYPE dats,
      doj TYPE dats,
      dol TYPE dats,
      date1 TYPE dats,
      date2 TYPE dats,
             counter(9)  TYPE n.
    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
    Check DataSource validity
        CASE i_dsource.
          WHEN 'ZHR_ATT_ANALYSIS'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE e009(r3). ENDIF.
            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.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'PERNR'.
            MOVE-CORRESPONDING l_s_select TO l_r_pernr.
            APPEND l_r_pernr.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'BUKRS'.
            MOVE-CORRESPONDING l_s_select TO l_r_bukrs.
            APPEND l_r_bukrs.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'PERSG'.
            MOVE-CORRESPONDING l_s_select TO l_r_persg.
            APPEND l_r_persg.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'BEGDA'.
            MOVE-CORRESPONDING l_s_select TO l_r_begda.
            APPEND l_r_begda.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'PERSK'.
            MOVE-CORRESPONDING l_s_select TO l_r_persk.
            APPEND l_r_persk.
          ENDLOOP.
          OPEN CURSOR WITH HOLD s_cursor FOR
    populate only store code employess does not have empty store codes
            SELECT apernr bpernr bendda bbegda bbukrs bpersg b~persk FROM pa9004 AS a INNER JOIN pa0001 AS b
                    ON  apernr = bpernr
                     WHERE a~pernr IN l_r_pernr AND
                          a~zstorecode <> ''    AND
                          bukrs IN l_r_bukrs  AND
                          persg IN l_r_persg AND
                          persk IN l_r_persk.
        ENDIF.
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        FETCH NEXT CURSOR s_cursor
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE  it_0001
                   PACKAGE SIZE s_s_if-maxsize.
        IF sy-subrc <> 0.
          CLOSE CURSOR s_cursor.
          RAISE no_more_data.
        ELSE.
         break-point.
          IF l_r_begda-high = '00000000' AND l_r_begda-low = '00000000'.
            date1 = sy-datum - 1.
            date2 = sy-datum - 1.
          ELSE.
            date1 = l_r_begda-low .
            date2 = l_r_begda-high.
          ENDIF.
          SORT it_0001 BY pernr persg begda endda bukrs.
          DELETE it_0001 WHERE persg NE 'T' AND
                               persg NE 'K' AND
                               persg NE 'P' AND
                               persg NE 'W'.
          DELETE ADJACENT DUPLICATES FROM it_0001 COMPARING pernr begda endda bukrs.
    populate all the employees that are active in pa9004.
          IF NOT it_0001[] IS INITIAL.
            SELECT pernr endda begda aedtm massn FROM pa0000
                   INTO CORRESPONDING FIELDS OF TABLE it_0000
                   FOR ALL ENTRIES IN it_0001
                   WHERE pernr = it_0001-pernr
                     AND ( massn = 'A1' OR massn = '00' OR massn = 'A6' OR massn = 'A3' ).
            SORT it_0000 BY pernr begda DESCENDING.
          ENDIF.
    populate SWIPED MAN DAYS data
          IF NOT it_0001[] IS INITIAL.
            SELECT pernr ldate satza aedtm FROM teven
               INTO CORRESPONDING FIELDS OF  TABLE it_teven
               FOR ALL ENTRIES IN it_0001
               WHERE pernr = it_0001-pernr AND
                                 satza = 'P01'
                                 AND ldate IN l_r_begda.
            SORT it_teven BY pernr ldate.
          ENDIF.
    **populate REGULARIZATION DAYS data
          IF NOT it_0001[] IS INITIAL.
            SELECT pernr subty endda begda aedtm FROM pa2002
              INTO CORRESPONDING FIELDS OF  TABLE it_2002
               FOR ALL ENTRIES IN it_0001
               WHERE pernr = it_0001-pernr
                AND  begda >= date1
                AND endda <= date2 .
            SORT it_2002 BY pernr begda endda.
          ENDIF.
    **populate LEAVE DAYS data
          IF NOT it_0001[] IS INITIAL.
            SELECT pernr subty endda begda aedtm FROM pa2001
              INTO CORRESPONDING FIELDS OF   TABLE it_2001
               FOR ALL ENTRIES IN it_0001
               WHERE pernr = it_0001-pernr
                AND  begda >= date1
                AND endda <= date2  .
            SORT it_2001 BY pernr begda endda .
          ENDIF.
    **populate WEEKLY OFF data
          IF NOT it_0001[] IS INITIAL.
            SELECT pernr subty endda begda aedtm tprog FROM pa2003
              INTO CORRESPONDING FIELDS OF  TABLE it_2003
                 FOR ALL ENTRIES IN it_0001
                 WHERE pernr = it_0001-pernr AND
                              tprog = 'OFF'
                               AND  begda >= date1
                               AND endda <= date2  .
            SORT it_2003 BY pernr begda endda.
          ENDIF.
          date = sy-datum.
    ********added changes on 06.04.2008**************action type & date dependent extaction****
    loop over it_0001 table
         BREAK-POINT.
          LOOP AT it_0001 INTO wa_0001.
           if sy-tabix = 1.
            counter = 0.
    for expected mandays
            LOOP AT it_0000 INTO wa_0000 WHERE pernr = wa_0001-pernr .
              IF wa_0000-massn = 'A1' OR wa_0000-massn = '00' OR wa_0000-massn = 'A3'.
                doj = wa_0000-begda.
               if wa_0000-endda = '99991231'.
              date2  = sy-datum.
               else.
                dol = date2.
               endif.
              ELSEIF wa_0000-massn = 'A6'.
                dol = wa_0000-begda.
              ENDIF.
            ENDLOOP.
            IF  date1 <= wa_0001-begda AND date2 <= wa_0001-endda AND date2 >= wa_0001-begda AND date1 <= wa_0001-endda.
              counter = date2 - wa_0001-begda .
              counter = counter + 1.
              date = wa_0001-begda - 1.
            ELSEIF date1 >= wa_0001-begda  AND date2 >= wa_0001-endda AND date2 >= wa_0001-begda AND date1 <= wa_0001-endda.
              counter =  wa_0001-endda - date1.
              counter = counter + 1.
              date = date1 - 1.
            ELSEIF date1 >= wa_0001-begda AND date2 <= wa_0001-endda AND  date2 >= wa_0001-begda AND date1 <= wa_0001-endda.
              counter = date2  - date1.
              counter = counter + 1.
              date = date1 - 1.
            ELSEIF  date1 <= wa_0001-begda AND  date2 >= wa_0001-endda AND date2 >= wa_0001-begda AND date1 <= wa_0001-endda.
              counter = wa_0001-endda - wa_0001-begda.
              counter = counter + 1.
              date =  wa_0001-begda - 1.
            ELSE.
              CONTINUE.
            ENDIF.
    ********completed changes on 06.04.2008**************action type & date dependent extaction**
    split records from date of joining to till date
            DO counter  TIMES.
              CLEAR : wa_teven , wa_target.
              date = date + 1.
              wa_target-date1 = date.
              wa_target-pernr = wa_0001-pernr.
              wa_target-bukrs = wa_0001-bukrs.
              wa_target-persg = wa_0001-persg.
              wa_target-persk = wa_0001-persk.
    for expected mandays count
              IF wa_target-date1 >= doj AND wa_target-date1 <= dol.
                wa_target-expectedmandays = 1.
                wa_target-aedtm = wa_0000-aedtm.
    for swiped mandays
                READ TABLE it_teven INTO wa_teven WITH KEY pernr = wa_target-pernr
                                                           ldate = wa_target-date1 BINARY SEARCH.
                IF sy-subrc = 0.
                  wa_target-swiped_days = 1.
                  wa_target-aedtm = wa_teven-aedtm.
                ENDIF.
    for regularized days
                LOOP AT it_2002 INTO wa_2002 WHERE pernr = wa_target-pernr
                   AND  ( endda GE wa_target-date1 AND begda LE wa_target-date1 ).
                  wa_target-reg_days  = 1.
                  wa_target-subty2 = wa_2002-subty.
                  wa_target-aedtm = wa_2002-aedtm.
                ENDLOOP.
    for leave days
                LOOP AT it_2001 INTO wa_2001 WHERE pernr = wa_target-pernr
                   AND  ( endda GE wa_target-date1 AND begda LE wa_target-date1 ).
                  wa_target-leave_days  = 1.
                  wa_target-subty1 = wa_2001-subty.
                  wa_target-aedtm = wa_2001-aedtm.
                ENDLOOP.
    for weekly off days
                LOOP AT it_2003 INTO wa_2003 WHERE pernr = wa_target-pernr
                   AND  ( endda GE wa_target-date1 AND begda LE wa_target-date1 ).
                  wa_target-off_days   = 1.
                  wa_target-aedtm = wa_2003-aedtm.
                ENDLOOP.
    append work area to e_t_data
                APPEND wa_target TO  e_t_data.
              ENDIF.
            ENDDO.
          ENDLOOP.
    clear internal tables
          CLEAR :  it_0000 , it_0001 , it_2001 , it_2002 , it_2003 , it_teven.
        ENDIF.
        s_counter_datapakid = s_counter_datapakid + 1.
      ENDIF.   "Initialization mode or data extraction ?
    ENDFUNCTION.

    Hi Guys
    I can have both your cases looked into for you.
    Please send me an email using the contact us form in my profile. The address for this form in the section 'about me'.
    Thanks
    Stuart
    BTCare Community Mod
    If we have asked you to email us with your details, please make sure you are logged in to the forum, otherwise you will not be able to see our ‘Contact Us’ link within our profiles.
    We are sorry that we are unable to deal with service/account queries via the private message(PM) function so please don't PM your account info, we need to deal with this via our email account :-)

  • Regarding: Loading data from R/3 To BI for a Generic Data source

    Hi Every,
    Need Help Urgent
    I had created a Generic data source with function Module as the data source, in Rsa3 it is working fine.
    1-> I had replicated the data source to Bi then i had created a info package and then I executed the same. when it is getting the data and it is show in the request monitor (Number of records )  but the status is not changing from Yellow to Green.
    Status in Step by step analysis is every step is green Except "Data selection successfully finished ?"  (RED)
    2-> Then I had seen the Back ground job in Source system which is executing still. I waited for it for a long time but nearly 30 min.
    (I had done Steps one and 2 number of time by activating replicating the data source and so on, but still their is no change in it)
    3-> Then I had canceled that back ground job with the help of BASIS (as i feel that it is something going wrong).
    4-> I feel that their is some thing wrong in the Code of Extractor.
    Please Help...............
    ""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  ZBI_MATGRIR OPTIONAL
    *Need to get the data only for two Gl account which are fro material purchase while MIGO
    *G/L Account Numbers: 0010502001 0010502002
    data: E_T_DATA1 type table of ZBI_MATGRIR.
      RANGES: R_BUKRS FOR BSIS-BUKRS,
              R_BUDAT FOR BSIS-BUDAT,
              R_GJAHR FOR BSIS-GJAHR,
              R_HKONT FOR BSIS-HKONT.
      DATA: L_S_SELECT TYPE SRSC_S_SELECT.
      STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
               S_COUNTER_DATAPAKID LIKE SY-TABIX,
               S_CURSOR TYPE CURSOR.
    *Declare
      TYPES: BEGIN OF TY_FAGL,
        RBURS TYPE FAGLFLEXA-RBUKRS,
        RYEAR TYPE FAGLFLEXA-RYEAR,
        DOCNR TYPE FAGLFLEXA-DOCNR,
        BUZEI TYPE FAGLFLEXA-BUZEI,
        DOCLN TYPE FAGLFLEXA-DOCLN,
        PRCTR TYPE FAGLFLEXA-PRCTR,
        SEGMENT TYPE FAGLFLEXA-SEGMENT,
      END OF TY_FAGL.
      DATA: GT_FAGL TYPE TABLE OF TY_FAGL,
            GS_FAGL TYPE TY_FAGL.
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
        CASE I_DSOURCE.
          WHEN 'ZFI_GL_M4'.
          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.
        APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.
      ELSE.
    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 = 'BUKRS'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BUKRS.
            APPEND R_BUKRS.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GJAHR'.
            MOVE-CORRESPONDING L_S_SELECT TO R_GJAHR.
            APPEND R_GJAHR.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'BUDAT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BUDAT.
            APPEND R_BUDAT.
          ENDLOOP.
    *GRIR Inventory (RM/Stores/Spares/FG)   10502001
    *GRIR Services & Others Payable   10502002
          R_HKONT-SIGN = 'I'. "i_t_select-sign.
          R_HKONT-OPTION = 'BT'." i_t_select-option.
          R_HKONT-LOW = '0010502001'.
          R_HKONT-HIGH = '0010502002'. "i_t_select-high.
          APPEND R_HKONT.
    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
           SELECT BUKRS
                  AUGBL
                  ZUONR
                  BELNR
                  GJAHR
                  BUZEI
                  BUDAT
                  HKONT
                  BLART
                  MONAT
                  BSCHL
                  SHKZG
                  DMBTR
                  WAERS
                  FROM BSIS
                 INTO TABLE E_T_DATA
                  WHERE BUKRS  IN R_BUKRS
                    AND GJAHR IN R_GJAHR
                    AND BUDAT IN R_BUDAT
                    AND HKONT IN R_HKONT.
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        FETCH NEXT CURSOR S_CURSOR
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE E_T_DATA1
                   PACKAGE SIZE S_S_IF-MAXSIZE.
        IF SY-SUBRC <> 0.
          CLOSE CURSOR S_CURSOR.
          RAISE NO_MORE_DATA.
        ENDIF.
    DELETE E_T_DATA WHERE BLART NE 'WE'.
          SELECT BUKRS
                 AUGBL
                 ZUONR
                 BELNR
                 GJAHR
                 BUZEI
                 BUDAT
                 HKONT
                 BLART
                 MONAT
                 BSCHL
                 SHKZG
                 DMBTR
                 WAERS
                 FROM BSAS
                 into table   E_T_DATA
                 WHERE BUKRS  IN R_BUKRS
                   AND GJAHR IN R_GJAHR
                   AND BUDAT IN R_BUDAT
                   AND HKONT IN R_HKONT.
               FETCH NEXT CURSOR S_CURSOR
                  APPENDING CORRESPONDING FIELDS
                  OF TABLE E_T_DATA
                  PACKAGE SIZE S_S_IF-MAXSIZE.
    append LINES OF e_t_data1 TO E_T_DATA.
    DELETE E_T_DATA WHERE BLART NE 'WE'.
    ENDIF.                             "First data package ?
        DATA: F_YEAR TYPE BKPF-GJAHR.
        DATA: F_PERI TYPE BAPI0002_4-FISCAL_PERIOD.
    IF E_T_DATA[] IS NOT INITIAL.
       SELECT RBUKRS
              RYEAR
              DOCNR
              BUZEI
              DOCLN
              PRCTR
              SEGMENT
              FROM FAGLFLEXA
              INTO TABLE GT_FAGL
              FOR ALL ENTRIES IN E_T_DATA
           WHERE RYEAR = E_T_DATA-GJAHR
               AND DOCNR = E_T_DATA-BELNR
               AND RLDNR = '0L'
               AND RBUKRS = E_T_DATA-BUKRS
               AND BUZEI = E_T_DATA-BUZEI.
             WHERE RYEAR = E_T_DATA-GJAHR
               AND DOCNR = E_T_DATA-BELNR
               AND RBUKRS = E_T_DATA-BUKRS.
         AND DOCLN = E_T_DATA-BUZEI.
    ENDIF.
    LOOP AT E_T_DATA.
          IF E_T_DATA-SHKZG = 'H'.
            E_T_DATA-DMBTR = E_T_DATA-DMBTR * -1.
          ENDIF.
          CLEAR: F_YEAR.
          CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
            EXPORTING
              COMPANYCODEID       = E_T_DATA-BUKRS
              POSTING_DATE        = E_T_DATA-BUDAT
           IMPORTING
             FISCAL_YEAR         = F_YEAR
             FISCAL_PERIOD       = F_PERI.
          DATA: V_DOC(6) TYPE C .
          CLEAR: V_DOC.
          V_DOC =  E_T_DATA-BUZEI.
          IF V_DOC  IS NOT INITIAL.
            CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
              EXPORTING
                INPUT  = V_DOC
              IMPORTING
                OUTPUT = V_DOC.
          ENDIF.
         aS PROFIT center is not updated in all the lines in Bsis
          READ TABLE GT_FAGL INTO GS_FAGL WITH KEY  RYEAR = E_T_DATA-GJAHR
                                                    DOCNR = E_T_DATA-BELNR
                                                    RBURS = E_T_DATA-BUKRS
                                                    BUZEI = E_T_DATA-BUZEI.
          IF SY-SUBRC = 0.
            E_T_DATA-PRCTR = GS_FAGL-PRCTR.
            E_T_DATA-SEGMENT = GS_FAGL-SEGMENT.
          ENDIF.
    *As we are using the amount DMBTR in which the amount
    *will be in company code currency that is Local currency
    *group currency always in the main company code currency.
          CONCATENATE   F_YEAR '0' F_PERI INTO E_T_DATA-FISCPER.
          MODIFY E_T_DATA. " from gs_bsis transporting dmbtr fiscper.
          CLEAR: E_T_DATA.
        ENDLOOP.
          S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
       ENDIF.

    Hi,
    Please check the log of same jobs for last week and check is today its taking more time,also check with basis is their any backup initited at same time.
    Moreover until the background job failed automatically its difficult to imagine what is the exact issue.
    Thanks,

  • Data display on remote cube

    Hi Guru's
    I've created a generic ds using fm for direct access.creating virtual cube and mapped accordingluy with ds.
    Now when I do test extract on ds per a single posting day then it takes few secords to pull through the data and the no. of records are 45 on dev box.But I do data display on remote cub and it takes long and throughing a timed out error.
    I dont have any routines on transformaions.
    What could be the problem?
    Nagesh.

    HI
    here's the code in FM
    Example: DataSource for table SFLIGHT
      TABLES: BKPF,BSEG.
    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,
    Starting point for each data package
             READ_NEXT LIKE SY-TABIX,
    Total Number of Extracted Records
             NO_RECS LIKE SY-TABIX,
    Number read so far
             TEMP_CNTR(9) TYPE N.
    cursor
    S_CURSOR TYPE CURSOR.
    Select ranges
      RANGES: R_BLDAT FOR BKPF-BLDAT,
              R_BUDAT FOR BKPF-BUDAT,
              R_CPUDT FOR BKPF-CPUDT,
              R_BUKRS FOR BKPF-BUKRS,
              R_GJAHR FOR BKPF-GJAHR,
              R_BELNR FOR BKPF-BELNR.
      DATA: GT_T_DATA LIKE ZFI_GL_4 OCCURS 0 WITH HEADER LINE.
      DATA: GT_BKPF TYPE TABLE OF BKPF,
            GS_BKPF TYPE BKPF.
      DATA: COUNTER(9) TYPE N.
      DATA: LV_MONAT(3).
    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
    Check DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZFI_GL_4'.
          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 = 'BLDAT'.
            MOVE-CORRESPONDING L_S_SELECT TO r_bldat.
            APPEND R_BLDAT.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'BUDAT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BUDAT.
            APPEND R_BUDAT.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CPUDT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_CPUDT.
            APPEND R_CPUDT.
          ENDLOOP.
             LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'BUKRS'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BUKRS.
            APPEND R_BUKRS.
          ENDLOOP.
             LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GJAHR'.
            MOVE-CORRESPONDING L_S_SELECT TO R_GJAHR.
            APPEND R_GJAHR.
          ENDLOOP.
              LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'BELNR'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BELNR.
            APPEND R_BELNR.
          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.
          SELECT * FROM BKPF INTO TABLE GT_BKPF WHERE BLDAT IN R_BLDAT
                                                  AND BUDAT IN R_BUDAT
                                                  AND CPUDT IN R_CPUDT
                                                  AND BUKRS IN R_BUKRS
                                                  AND GJAHR IN R_GJAHR
                                                  AND BELNR IN R_BELNR.
          LOOP AT GT_BKPF INTO GS_BKPF.
            SELECT * FROM BSEG WHERE BELNR = GS_BKPF-BELNR
                               AND   BUKRS = GS_BKPF-BUKRS
                               AND   GJAHR = GS_BKPF-GJAHR.
              MOVE-CORRESPONDING GS_BKPF TO GT_T_DATA.
              MOVE-CORRESPONDING BSEG TO GT_T_DATA.
              CLEAR LV_MONAT.
              CONCATENATE '0' GT_T_DATA-MONAT INTO LV_MONAT.
              CONCATENATE GT_T_DATA-GJAHR LV_MONAT INTO GT_T_DATA-FISCPER.
              CALL FUNCTION 'BWFIU_GET_DOCUMENT_ORIGIN'
                EXPORTING
                  I_AWTYP    = GT_T_DATA-AWTYP
                  I_AWKEY    = GT_T_DATA-AWKEY
                IMPORTING
                  E_REFBELNR = GT_T_DATA-AWREF
                  E_REFGJAHR = GT_T_DATA-AWGJA
                  E_REFBUKRS = GT_T_DATA-AWBUK
                  E_REFKOKRS = GT_T_DATA-AWKOK.
    Lcal currency calculations.
              IF GT_T_DATA-SHKZG EQ 'S'.
                GT_T_DATA-DMSOL = GT_T_DATA-DMBTR.
                GT_T_DATA-DMSHB = GT_T_DATA-DMBTR.
                GT_T_DATA-DMHAB = 0.
              ELSEIF GT_T_DATA-SHKZG EQ 'H'.
                GT_T_DATA-DMHAB = GT_T_DATA-DMBTR.
                GT_T_DATA-DMSHB = GT_T_DATA-DMBTR * -1.
                GT_T_DATA-DMSOL = 0.
              ENDIF.
    Foriegn Currency calculations.
              IF GT_T_DATA-SHKZG EQ 'S'.
                GT_T_DATA-WRSOL = GT_T_DATA-DMBTR.
                GT_T_DATA-WRSHB = GT_T_DATA-DMBTR.
                GT_T_DATA-WRHAB = 0.
              ELSEIF GT_T_DATA-SHKZG EQ 'H'.
                GT_T_DATA-WRHAB = GT_T_DATA-DMBTR.
                GT_T_DATA-WRSHB = GT_T_DATA-DMBTR * -1.
                GT_T_DATA-WRSOL = 0.
              ENDIF.
              APPEND GT_T_DATA.
            ENDSELECT.
          ENDLOOP.
          DESCRIBE TABLE GT_T_DATA LINES NO_RECS.
          READ_NEXT = 0.
          TEMP_CNTR = 0.
        ENDIF.                             "First data package ?
    Fetch records into interface table.
        IF ( READ_NEXT GT NO_RECS ) OR ( NO_RECS EQ 0 ).
          REFRESH GT_T_DATA.
          CLEAR:S_COUNTER_DATAPAKID, COUNTER, READ_NEXT, S_S_IF, NO_RECS.
          RAISE NO_MORE_DATA.
        ENDIF.
        COUNTER = 0.
        LOOP AT GT_T_DATA FROM READ_NEXT.
          COUNTER = COUNTER + 1.
          IF COUNTER GT S_S_IF-MAXSIZE.
            IF TEMP_CNTR EQ NO_RECS.
              CLEAR: S_COUNTER_DATAPAKID,COUNTER,READ_NEXT,S_S_IF,NO_RECS.
              RAISE NO_MORE_DATA.
            ELSE.
              READ_NEXT = READ_NEXT + COUNTER.
            ENDIF.
            EXIT.
          ENDIF.
          MOVE-CORRESPONDING GT_T_DATA TO E_T_DATA.
          APPEND E_T_DATA.
          TEMP_CNTR = TEMP_CNTR + 1.
          iF TEMP_CNTR GT NO_RECS.
            CLEAR GT_T_DATA.
            CLEAR: S_COUNTER_DATAPAKID, COUNTER,READ_NEXT, S_S_IF,NO_RECS.
            RAISE NO_MORE_DATA.
            EXIT.
          ENDIF.
        ENDLOOP.
        S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.
    If it's a code then why it's quick on rsa3?
    Nagesh.

  • Delta fo Generic extractor using function module

    Hi,
    I am using the following function module for generic extractor but its always showing me extraction error.Could anyone please suggest to resolve the issue.
    Thanks in advance fo rsuggestion.
    FUNCTION Z_BW_SALESDATA_EXTRACT_CHNG2.
    ""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 OPTIONAL
    *"      E_T_SOURCE_STRUCTURE_NAME 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: VBFA,VBRK,tadir.
    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.
    user defined variables.
      DATA : X_UPDMODE(1) Type c,        " Update Type
            X_LastUpdate Like Sy-Datum. " Last Update Date
             X_LastUpdate TYPE RODELTAID. " Last Update Date   "TCS_KAP
    Select ranges
      RANGES: L_R_VBELN   FOR VBAK-VBELN,
              L_R_AUDAT   FOR VBAK-AUDAT.
    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 'Z_BW_SDDATA_CREATEON'.
          WHEN 'Y'.
          WHEN 'Z'.
          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'.
         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.
    Check for obligatory selection criteria
       READ TABLE i_t_select INTO l_s_select WITH KEY fieldnm = 'VBELN'.
       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.
    Store Update mode in static variable...
       X_UPDMODE = I_UPDMODE.
        Select Single DELTAID
               Into   X_LastUpdate
               From   ROOSGENDLM
               Where  OLTPSOURCE = 'Z_BW_SDDATA_CREATEON'.
        If X_LastUpdate Is Initial.
          X_LastUpdate = '19800101'. " The oldest..., this should not happen
        Endif.
    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.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    X_UPDMODE = I_UPDMODE.
    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 = 'VBELN'.
            MOVE-CORRESPONDING l_s_select TO L_R_VBELN.
            APPEND L_R_VBELN.
          ENDLOOP.
          LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'AUDAT'.
            MOVE-CORRESPONDING l_s_select TO L_R_AUDAT.
            APPEND L_R_AUDAT.
          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.
    *added by Yogesh
          DELETE FROM ZBWSALEDATA.
    *ended by Yogesh
          l_maxsize = g_s_interface-maxsize.
    Check for supported update mode
          CASE X_UPDMODE.
            WHEN 'F' Or 'I'. " Full or Init
    **get sales orders
              SELECT *
                           INTO CORRESPONDING FIELDS OF TABLE I_SALESDATA
                           FROM VBAK AS K
                           INNER JOIN VBAP AS P
                                 ON  PVBELN = KVBELN
                           WHERE K~VBELN IN L_R_VBELN
                           AND   K~AUDAT IN L_R_AUDAT
                           AND   K~VBTYP = 'C'.
              IF I_SALESDATA[] IS NOT INITIAL.
                PERFORM F_GET_DATA.                   "get data
                PERFORM F_DEL_VATCOND.                "delete vat conditions
                PERFORM F_GET_TAR_COSTUNIT.           "get tariff cost unit
                PERFORM F_GET_NETVAL TABLES IT_VBDPA1. "get net val of the item
                PERFORM F_GET_SALESDATA.
    *write perform with name F_INSERT_DB_ZBWSALEDATA.
                PERFORM F_INSERT_DB_ZBWSALEDATA.      "insert into table ZBWSALESDATA
               LOOP AT I_SALESDATA WHERE NETPR = 0.
                 MOVE-CORRESPONDING I_SALESDATA TO I_SALESDATA_FIN.
                 APPEND I_SALESDATA_FIN.
               ENDLOOP.
               SORT I_SALESDATA_FIN BY VBELN POSNR KSCHL.
               DELETE ADJACENT DUPLICATES FROM I_SALESDATA_FIN
                                               COMPARING VBELN POSNR
                                                         KSCHL.
               INSERT ZBWSALEDATA FROM TABLE I_SALESDATA_FIN.
              ENDIF.
            WHEN 'D'. " Delta
              SELECT *
                             INTO CORRESPONDING FIELDS OF TABLE I_SALESDATA
                             FROM VBAK AS K
                             INNER JOIN VBAP AS P
                                   ON  PVBELN = KVBELN
                            WHERE K~ERDAT >= X_LastUpdate
                             WHERE K~ERDAT >= X_LastUpdate+0(8)          "TCS_KAP
                             AND   K~VBTYP = 'C'.
              IF I_SALESDATA[] IS NOT INITIAL.
                PERFORM F_GET_DATA.                   "get data
                PERFORM F_DEL_VATCOND.                "delete vat conditions
                PERFORM F_GET_TAR_COSTUNIT.           "get tariff cost unit
                PERFORM F_GET_NETVAL TABLES IT_VBDPA1. "get net val of the item
                PERFORM F_GET_SALESDATA.
    *write perform with name F_INSERT_DB_ZBWSALEDATA.
                PERFORM F_INSERT_DB_ZBWSALEDATA.      "insert into table ZBWSALESDATA
               LOOP AT I_SALESDATA WHERE NETPR = 0.
                 MOVE-CORRESPONDING I_SALESDATA TO I_SALESDATA_FIN.
                 APPEND I_SALESDATA_FIN.
               ENDLOOP.
               SORT I_SALESDATA_FIN BY VBELN POSNR KSCHL.
               DELETE ADJACENT DUPLICATES FROM I_SALESDATA_FIN
                                               COMPARING VBELN POSNR
                                                         KSCHL.
               INSERT ZBWSALEDATA FROM TABLE I_SALESDATA_FIN.
              ENDIF.
            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.
    **end get sales orders
          OPEN CURSOR WITH HOLD g_cursor FOR
          SELECT (g_t_fields) FROM ZBWSALEDATA.
         WHERE pgmid  IN l_r_pgmid AND
                                        object IN l_r_object.
        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.
          RAISE no_more_data.
        ENDIF.
        g_counter_datapakid = g_counter_datapakid + 1.
      ENDIF.              "Initialization mode or data extraction ?
    Best regards,
    Yogesh

    Dear Yogesh,
    Try to debug the code by putting a break point at select statement...is the FM Syntactically correct ??
    Check the Select statements..if all fields are not required avoid using Select * , and use always for all entries rather than JOINS..
    Note : For Joins you have to specify the Fields in the Select...Dont use Select * ....
    Hope it helps..
    Thanks,
    Krish

  • Runtime Error:Invalid interruption of a database selection

    Hi,
    I have the above mentioned runtime error (short text of runtime error) while executuing FM with the runtime error DBIF_RSQL_INVALID_CURSOR and exception CX_SY_OPEN_SQL_DB.
    the source code  for the cause of the error is as follows:
    {       PERFORM fill_spras USING g_r_werks[]
                          CHANGING g_r_spras[].
          IF g_r_spras[] IS INITIAL.
      Please specify a value for Language.
            MESSAGE e003(yy_master_data).
            RAISE error_passed_to_mess_handler.
          ENDIF.
    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 s_marc FOR SELECT *
          FROM  marc
          WHERE werks IN g_r_werks AND
                matnr IN g_r_matnr.
        ENDIF.                             "First data package
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        FETCH NEXT CURSOR s_marc INTO TABLE gt_marc PACKAGE SIZE s_s_if-maxsize.
        IF sy-subrc = 0.
          DELETE ADJACENT DUPLICATES FROM gt_marc COMPARING matnr}
    the pointer shown in the runtime analysis is at if sy-subrc EQ 0.
    while debugging also it gives run time error when curson reaches the statement FETCH Next Cursor.
    Any ideas?

    Hi Simran,
    if for whatever reason the process is interrupted between SELECT and ENDSELECT (or, in other words, after OPEN CURSOR between subsequent FETCHes), you will get this error: The Database is exspected to run within one logical unit of work.
    If any screen is displayed waiting for user input (this also applies for debug screen), an implicit commit is is done that finishes the current LUW. The database will not like it....
    That's why you should do only minor things between SELECT and ENDSELECT (OPEN/CLOSE CURSOR).
    The E Message will also cause the end of the LUW.
    Regards,
    Clemens

  • FM error

    Hi Guru's
    I'm coding the FM to exctract data from GLPCA table for my RDA load and am calculating timestamp field using cpudt and cputm but it's throughing error.
    The error message says
    "GT_T_DATA-TIMESTAMP" must be a character-type data object (data type C, N, D, T or STRING). field string).
    I've TIMESTAMP field on the structure.
    What is the problem.
    the code is
    FUNCTION ZBW_GET_ECPCA_DATA.
    ""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  ZBWEC_PCA_1 OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    Example: DataSource for table SFLIGHT
      TABLES: GLPCA,T001.
      RANGES: R_BLDAT FOR GLPCA-BLDAT,
              R_BUDAT FOR GLPCA-BUDAT,
              R_CPUDT FOR GLPCA-CPUDT.
      DATA: GT_T_DATA LIKE ZBWEC_PCA_1 OCCURS 0 WITH HEADER LINE.
      DATA: GT_GLPCA TYPE TABLE OF GLPCA,
            GS_GLPCA TYPE GLPCA.
      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,
    Starting point for each data package
      READ_NEXT LIKE SY-TABIX,
    Total Number of Extracted Records
      NO_RECS LIKE SY-TABIX,
    Number read so far
      TEMP_CNTR(9) TYPE N.
      DATA: COUNTER(9) TYPE N.
    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
    Check DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZEC_PCA_1'.
          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 = 'BLDAT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BLDAT.
            APPEND R_BLDAT.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'BUDAT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_BUDAT.
            APPEND R_BUDAT.
          ENDLOOP.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CPUDT'.
            MOVE-CORRESPONDING L_S_SELECT TO R_CPUDT.
            APPEND R_CPUDT.
          ENDLOOP.
          SELECT * FROM GLPCA INTO TABLE GT_GLPCA WHERE BLDAT IN R_BLDAT AND
                                                        BUDAT IN R_BUDAT AND
                                                        CPUDT IN R_CPUDT.
          LOOP AT GT_GLPCA INTO GS_GLPCA.
            SELECT * FROM T001 WHERE BUKRS = GS_GLPCA-RBUKRS.
              MOVE-CORRESPONDING GS_GLPCA TO GT_T_DATA.
              MOVE-CORRESPONDING T001 TO GT_T_DATA.
              CONCATENATE GT_T_DATA-CPUDT GT_T_DATA-CPUTM INTO GT_T_DATA-TIMESTAMP.
              APPEND GT_T_DATA.
            ENDSELECT.
          ENDLOOP.
          DESCRIBE TABLE GT_T_DATA LINES NO_RECS.
          READ_NEXT = 0.
          TEMP_CNTR = 0.
        ENDIF. "First data package ?
        IF ( READ_NEXT GT NO_RECS ) OR ( NO_RECS EQ 0 ).
          REFRESH GT_T_DATA.
          CLEAR: S_COUNTER_DATAPAKID, COUNTER, READ_NEXT, S_S_IF, NO_RECS.
          RAISE NO_MORE_DATA.
        ENDIF.
        COUNTER = 0.
        LOOP AT GT_T_DATA FROM READ_NEXT.
          COUNTER = COUNTER + 1.
          IF COUNTER GT S_S_IF-MAXSIZE.
            IF TEMP_CNTR EQ NO_RECS.
              CLEAR: S_COUNTER_DATAPAKID, COUNTER,
              READ_NEXT, S_S_IF, NO_RECS.
              RAISE NO_MORE_DATA.
            ELSE.
              READ_NEXT = READ_NEXT + COUNTER.
            ENDIF.
            EXIT.
          ENDIF.
          MOVE-CORRESPONDING GT_T_DATA TO E_T_DATA.
          APPEND E_T_DATA.
          TEMP_CNTR = TEMP_CNTR + 1.
          IF TEMP_CNTR GT NO_RECS.
            REFRESH GT_T_DATA.
            CLEAR: S_COUNTER_DATAPAKID, COUNTER,
            READ_NEXT, S_S_IF, NO_RECS.
            RAISE NO_MORE_DATA.
            EXIT.
          ENDIF.
        ENDLOOP.
        S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
      ENDIF. "Initialization mode or data extraction ?
    ENDFUNCTION.
    Ramana.

    Hi,
    Then proble is with Data types only, so check
    CONCATENATE GT_T_DATA-CPUDT GT_T_DATA-CPUTM INTO GT_T_DATA-TIMESTAMP.
    You are trying to add CPUDT and CPUTM to TIMESTAMP, so check there three data types.
    See the Data types:
    CPUDT            = 8  - DATS
    CPUTM           = 6   - TIMS
    TIMESTAMP    = 15  -DEC
    all these three are three different data types but you are trying to put into DEC data type
    Thanks
    Reddy
    Edited by: Surendra Reddy on Jan 28, 2009 10:37 AM

  • Delta error in GE-Function Module

    Hi ,
    my GE-delta is based on UDATE ( chenged date) from CDHDR table.
    i created datasource in RS02 and i defined delta based in UDATE with upper limit 1 day and lower limit is '0'..
    i created FM based on RSAX_BIW_GEDATA_SIMPLE.
    for full load it working fine.
    i put some extra code for delta.
    it is not take any records...
    i dont know much ABAP.
    plz tell me where is wrong in my code for delta..
    code ...
    FUNCTION ZXBWMM_INV_POT_ID.
    ""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  ZVSAIPID OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    Example: DataSource for table SFLIGHT
    TABLES: SFLIGHT.
    TABLES: EBAN , CDPOS , CDHDR , ZVSAPR.
      TYPES : BEGIN OF TY_OBJDATE ,
            OBJECTID TYPE CDHDR-OBJECTID,
            VALUE_NEW TYPE CDPOS-VALUE_NEW,
            VALUE_OLD TYPE CDPOS-VALUE_OLD,
            UDATE TYPE CDHDR-UDATE,
            MINBE TYPE MARC-MINBE,
            BSTMA TYPE MARC-BSTMA,
            WERKS TYPE MARC-WERKS,
            VERPR TYPE MBEW-VERPR,
            STPRS TYPE MBEW-STPRS,
            LBKUM TYPE MBEW-LBKUM,
            BUDAT TYPE MKPF-BUDAT,
            MBLNR TYPE MSEG-MBLNR,
            MENGE TYPE MSEG-MENGE,
            DMBTR TYPE MSEG-DMBTR,
            END OF TY_OBJDATE.
      data : int_cdhdr type table of cdhdr with header line,
           int_cdpos type table of cdpos with HEADER LINE,
           INT_OBJDATE TYPE TABLE OF TY_OBJDATE WITH HEADER LINE.
          int_marc type table of marc with header line.
    *DATA: int_pr1 TYPE TABLE OF ZVSAIPID WITH HEADER LINE.
      DATA : BEGIN OF INT_MATNR OCCURS 10,
             MAtnr like mara-matnr,
             end of int_matnr.
    DATA : BEGIN OF INT_MARC OCCURS 10,
             matnr like marc-matnr,
             MINBE like marC-mINBE,
             BSTMA LIKE Marc-bstma,
             WERKS LIKE MARC-WERKS,
             end of int_marc.
    DATA : BEGIN OF INT_MBEW OCCURS 10,
             MATNR LIKE MBEW-MATNR,
             VERPR LIKE MBEW-VERPR,
             STPRS LIKE MBEW-STPRS,
             LBKUM LIKE MBEW-LBKUM,
             end of int_MBEW.
    DATA : BEGIN OF INT_MKPF OCCURS 10,
             MBLNR LIKE MKPF-MBLNR,
             BUDAT LIKE MKPF-BUDAT,
             END OF INT_MKPF.
    DATA : BEGIN OF INT_MSEG OCCURS 10,
             MATNR LIKE MSEG-MATNR,
             MBLNR LIKE MSEG-MBLNR,
             MENGE LIKE MSEG-MENGE,
             DMBTR LIKE MSEG-DMBTR,
             END OF INT_MSEG.
    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_CARRID  FOR SFLIGHT-CARRID,
             L_R_CONNID  FOR SFLIGHT-CONNID.
      RANGES : ra_OBJECTID FOR E_T_DATA-OBJECTID.
              RA_UDATE FOR E_T_DATA-UDATE.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF I_INITFLAG = SBIWA_C_FLAG_ON.
      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.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Check DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZOI_MM_INVENTORY_IPID'.
          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.
      Check for supported update mode
    CASE I_UPDMODE.
    WHEN 'F'.
    WHEN 'D'.
    WHEN 'R'.
    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.
    READ TABLE I_T_SELECT INTO L_S_SELECT
    WITH KEY FIELDNM = 'UDATE'.
        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.
        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 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
      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
      WHERE FIELDNM = 'UDATE'.
      ENDLOOP
        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 = 'CARRID'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
           APPEND L_R_CARRID.
         ENDLOOP.
         LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
           APPEND L_R_CONNID.
         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
         SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
                                  WHERE CARRID  IN L_R_CARRID AND
                                    CONNID  IN L_R_CONNID.
         IF L_S_SELECT-LOW = '' AND L_S_SELECT-HIGH = ''. "FULL or INIT
          OPEN CURSOR WITH HOLD S_CURSOR FOR
          select * from cdhdr where OBJECTCLAS = 'MATERIAL' AND TCODE = 'MM02'.
          ELSE. "DELTA
         OPEN CURSOR WITH HOLD G_CURSOR FOR
         select * from cdhdr where OBJECTCLAS = 'MATERIAL'
         AND TCODE = 'MM02'
         AND UDATE >= L_S_SELECT-LOW
         AND UDATE <= L_S_SELECT-HIGH.
         ENDIF.
         ENDIF.
       ENDIF.
        "First data package ?
        FETCH NEXT CURSOR S_CURSOR
              APPENDING  TABLE int_cdhdr
              PACKAGE SIZE S_S_IF-MAXSIZE.
       into table int_cdhdr
        IF SY-SUBRC <> 0.
          CLOSE CURSOR S_CURSOR.
          RAISE NO_MORE_DATA.
        ENDIF.
        SELECT * FROM CDPOS INTO TABLE INT_CDPOS
             FOR ALL ENTRIES IN INT_CDHDR
             WHERE OBJECTID = INT_CDHDR-OBJECTID
             AND TABNAME = 'MARC'
             AND ( FNAME =  'BSTMA' OR FNAME = 'MINBE' ).
        LOOP AT int_cdpos.
          int_matnr-matnr = int_cdpos-objectid.
          APPEND int_matnr.
        ENDLOOP.
        SELECT  matnr MINBE BSTMA WERKS FROM MARC INTO TABLE INT_marc
                FOR ALL ENTRIES IN int_matnr
               WHERE MATNR = INT_matnr-matnr.
        SELECT  matnr VERPR STPRS LBKUM FROM MBEW INTO TABLE INT_MBEW
                FOR ALL ENTRIES IN int_matnr
               WHERE MATNR = INT_matnr-matnr.
        SELECT  matnr MBLNR MENGE DMBTR FROM MSEG INTO TABLE INT_MSEG
                FOR ALL ENTRIES IN int_matnr
               WHERE MATNR = INT_matnr-matnr.
         LOOP AT int_MSEG.
          int_MKPF-MBLNR = int_MSEG-MBLNR.
          APPEND int_MKPF.
        ENDLOOP.
        SELECT  MBLNR BUDAT FROM MKPF INTO TABLE INT_MKPF
                FOR ALL ENTRIES IN int_MKPF
               WHERE MBLNR = INT_MKPF-MBLNR.
    *BREAK-POINT.
        LOOP AT INT_CDPOS.
          READ TABLE INT_CDHDR WITH KEY OBJECTID = INT_CDPOS-OBJECTID .
          IF SY-SUBRC = 0.
            INT_OBJDATE-OBJECTID = INT_CDPOS-OBJECTID.
            INT_OBJDATE-VALUE_NEW = INT_CDPOS-VALUE_NEW.
            INT_OBJDATE-VALUE_OLD = INT_CDPOS-VALUE_OLD.
            INT_OBJDATE-UDATE = INT_CDHDR-UDATE.
            READ TABLE INT_MARC WITH KEY MATNR = INT_CDPOS-OBJECTID .
            IF SY-SUBRC = 0.
              INT_OBJDATE-MINBE = INT_MARC-MINBE.
              INT_OBJDATE-BSTMA = INT_MARC-BSTMA.
              INT_OBJDATE-WERKS = INT_MARC-WERKS.
              ENDIF.
            READ TABLE INT_MBEW WITH KEY MATNR = INT_CDPOS-OBJECTID .
            IF SY-SUBRC = 0.
              INT_OBJDATE-VERPR = INT_MBEW-VERPR.
              INT_OBJDATE-STPRS = INT_MBEW-STPRS.
              INT_OBJDATE-LBKUM = INT_MBEW-LBKUM.
             ENDIF.
            READ TABLE INT_MSEG WITH KEY MATNR = INT_CDPOS-OBJECTID .
            IF SY-SUBRC = 0.
              INT_OBJDATE-MBLNR = INT_MSEG-MBLNR.
              INT_OBJDATE-MENGE = INT_MSEG-MENGE.
              INT_OBJDATE-DMBTR = INT_MSEG-DMBTR.
             ENDIF.
            READ TABLE INT_MKPF WITH KEY MBLNR = INT_MSEG-MBLNR .
            IF SY-SUBRC = 0.
              INT_OBJDATE-MBLNR = INT_MKPF-MBLNR.
              INT_OBJDATE-BUDAT = INT_MKPF-BUDAT.
             ENDIF.
            APPEND INT_OBJDATE.
          ENDIF.
        ENDLOOP.
    *SELECT * FROM EBAN
        INTO CORRESPONDING FIELDS OF TABLE INT_PR1
        FOR ALL ENTRIES IN INT_OBJDATE
        WHERE BAnfn = int_objdate-objectid.
    *ZZPRREL
        LOOP AT INT_OBJDATE.
          E_T_DATA-OBJECTID = INT_OBJDATE-OBJECTID.
          E_T_DATA-UDATE = INT_OBJDATE-UDATE.
          E_T_DATA-VALUE_NEW = INT_OBJDATE-VALUE_NEW.
          E_T_DATA-VALUE_OLD = INT_OBJDATE-VALUE_OLD.
          E_T_DATA-MINBE = INT_OBJDATE-MINBE.
          E_T_DATA-BSTMA = INT_OBJDATE-BSTMA.
          E_T_DATA-WERKS = INT_OBJDATE-WERKS.
          E_T_DATA-VERPR = INT_OBJDATE-VERPR.
          E_T_DATA-STPRS = INT_OBJDATE-STPRS.
          E_T_DATA-LBKUM = INT_OBJDATE-LBKUM.
          E_T_DATA-MBLNR = INT_OBJDATE-MBLNR.
          E_T_DATA-MENGE = INT_OBJDATE-MENGE.
          E_T_DATA-DMBTR = INT_OBJDATE-DMBTR.
          E_T_DATA-BUDAT = INT_OBJDATE-BUDAT.
          APPEND E_T_DATA.
          CLEAR  E_T_DATA.
        ENDLOOP.
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.
    i assign points....
    Regards,
    PSR.

    Hi ,
    i am not find any sollution for this..
    any body help me for this problum...
    i assign points..
    Regards,
    PSR

  • Error when Fetching CATs Data to BI

    Hi,
    I have created data source in R/3 System (Source System) for CATS data and extracting data Using function Module. Using transaction RSA3 it is fetching all the desired records in R/3 System.
    In BI System extracting Full Data and when monitoring it is throwing Error.
    Error 7 when sending an IDoc
    Error when opening an RFC connection    2
    Error when opening an RFC connection
    Errors in source system
    Function Module for fetching CATS Data
    FUNCTION ZLBTIME_GET_CATSREC.
    *"*"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  ZLSCATS OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    * Example: DataSource for table SFLIGHT
    *  TABLES: SFLIGHT.
    * 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_CARRID  FOR SFLIGHT-CARRID,
    **          L_R_CONNID  FOR SFLIGHT-CONNID.
    * 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
    * Check DataSource validity
        CASE I_DSOURCE.
          WHEN 'ZLTIME_DS_3'.
          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 = 'CARRID'.
    **        MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
    **        APPEND L_R_CARRID.
    **      ENDLOOP.
    **      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
    **        MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
    **        APPEND L_R_CONNID.
    **      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
    **      SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
    **                               WHERE CARRID  IN L_R_CARRID AND
    **                                     CONNID  IN L_R_CONNID.
            OPEN CURSOR WITH HOLD s_cursor FOR
    *        SELECT * FROM zlvctmbw.
            SELECT a~counter a~pernr a~workdate a~skostl a~lstar a~rproj a~awart a~kokrs a~meinh a~tcurr a~price
                   a~unit a~bukrs a~ersda a~erstm a~ernam a~laeda a~laetm a~status a~refcounter a~reason a~belnr
                   a~catshours a~act1 a~act2 a~task a~lang1 a~narr1 a~lang2 a~narr2 a~cmnt a~clst a~plchl
                   b~ltxa1 b~transfer b~hrkostl b~hrlstar b~hrcostasg b~statkeyfig b~catsquantity b~bemot
                   c~pspnr c~pspid
                   d~kunnr
            FROM   catsdb AS a
            LEFT OUTER JOIN catsco AS b ON a~counter = b~counter
            JOIN   prps AS p ON p~pspnr = a~rproj
            JOIN   proj AS c ON c~pspnr = p~psphi
            JOIN   zltproj AS d ON d~pspnr = c~pspnr.
        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.
    When fetching data using VIEW in source system it works fine.
    When testing for fetching data of SFLIGHT using function module ZRSAX_BIW_GET_DATA_SIMPLE
    made a copy of RSAX_BIW_GET_DATA_SIMPLE, it is working fine.
    Pls suggest the cause of error.
    Regards
    Vishal

    Hello Praveen,
    Connection is fine as I tried fetching data of SFLIGHT using standard template function module which works fine and in transaction sm58 I do not any data.
    Regards
    Vishal

Maybe you are looking for