Generic datasource - Extract delta by FM

Hi,
I used the FM RSAX_BIW_GET_DATA_SIMPLE as template to extract data from datasource.
But this FM extarct full data.
I need to extract delta by FM.
Can you please send me a sample code that extract delta using timestamp?
Thanks,
Mohamad.

Thank you Soumya for the reply.
I need a sapmle code. That's mean a FM that extract from non sap table, by delta.
Best Regards,
Mohamad.

Similar Messages

  • Generic Datasource with Delta and functionmodule

    Hi together,
    who can help me ??
    Ihave created a generic datasource with function module and
    delta.
    the extractor runs well while i use full update and also initialization.
    If i start the delta extraction, the extractor crashed with short-dump.
    the message is SAPSQL_INVALID_FIELDNAME
    What can i do, and what is wrong.
    regards
    thorsten Weiss

    Hi Roberto,
    here is the code from the function-module:
    FUNCTION zbw_mm_get_eket.
    ""Lokale Schnittstelle:
    *"  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 DEFAULT 1000
    *"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL
    *"     VALUE(I_READ_ONLY) TYPE  SBIW_BOOL DEFAULT SBIW_C_FALSE
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_DATA OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
      INCLUDE lrsalk01.
    DataSource for table EKET
      TABLES: zv_mm_eket.
    interne Tabelle für Bearbeitung
      DATA:   itab_0 TYPE TABLE OF zstr_eket WITH HEADER LINE.
      TYPES: BEGIN OF typ_categ,
              j_4kbwef    TYPE atnam,
              /afs/bwel   TYPE j_4kbwef,
             END OF typ_categ.
      DATA: l_s_data_eket  TYPE zstr_eket,
            ld_cat_struct  TYPE j_4kcsgr,
            lt_cat_fields  TYPE TABLE OF j_4kcif001,
            ls_cat_fields  TYPE j_4kcif001,
            ls_mara        TYPE mara,
            l_tabix        LIKE sy-tabix,
            itab_cat       TYPE TABLE OF typ_categ ,
            ls_cat         TYPE typ_categ,
            h_feldsize1(8)        TYPE c,"wegen Typ-konflikt im FB
            h_feldsize2(8)        TYPE c."wegen Typ-konflikt im FB
    Auxiliary Selection criteria structure
      DATA: l_s_select TYPE rsselect.
    Maximum number of lines for DB table
      STATICS: s_t_select     LIKE rsselect OCCURS 0 WITH HEADER LINE,
               s_t_fields     LIKE rsfieldsel OCCURS 0 WITH HEADER LINE,
    counter
              s_counter_datapakid LIKE sy-tabix,
    cursor
              s_cursor TYPE cursor.
    Select ranges
      RANGES: l_r_ebeln       FOR zv_mm_eket-ebeln,
              l_r_ebelp       FOR zv_mm_eket-ebelp,
              l_r_bsart       FOR zv_mm_eket-bsart.
    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 'ZDS_V_MM_EKET'.
          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
                      ' function modul was created for DS ' &
                      'ZDS_V_MM_EKET"!'.
            "message variable 2
            RAISE error_passed_to_mess_handler.
        ENDCASE.
        APPEND LINES OF i_t_select TO s_t_select.
    Fill parameter buffer for data extraction calls
       S_T_SELECT-REQUNR    = I_REQUNR.
       S_T_SELECT-DSOURCE   = I_DSOURCE.
       S_T_SELECT-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_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_t_select INTO l_s_select WHERE fieldnm = 'EBELN'.
            MOVE-CORRESPONDING l_s_select TO l_r_ebeln.
            APPEND l_r_ebeln.
          ENDLOOP.
          LOOP AT s_t_select INTO l_s_select WHERE fieldnm = 'EBELP'.
            MOVE-CORRESPONDING l_s_select TO l_r_ebelp.
            APPEND l_r_ebelp.
          ENDLOOP.
          LOOP AT s_t_select INTO l_s_select WHERE fieldnm = 'BSART'.
            MOVE-CORRESPONDING l_s_select TO l_r_bsart.
            APPEND l_r_bsart.
          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_t_fields) FROM zv_mm_eket
          WHERE
          ebeln      IN               l_r_ebeln           AND
          ebelp      IN               l_r_ebelp         AND
          bsart    IN             l_r_bsart.
        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 i_maxsize.
        FETCH NEXT CURSOR s_cursor
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE itab_0
                   PACKAGE SIZE i_maxsize.
        LOOP AT itab_0 INTO l_s_data_eket.
          l_tabix = sy-tabix.
    Lesen Erstellungsdatum aus EKKO
          SELECT SINGLE aedat FROM ekko INTO l_s_data_eket-sydat
                         WHERE ebeln = l_s_data_eket-ebeln.
    Lesen Partner aus EKPA
          SELECT SINGLE lifn2 FROM ekpa INTO l_s_data_eket-plief
                         WHERE ebeln = l_s_data_eket-ebeln AND
                               ebelp = l_s_data_eket-ebelp AND
                               ekorg = l_s_data_eket-ekorg AND
                               werks = l_s_data_eket-werks .
          IF NOT l_s_data_eket-matnr IS INITIAL .
    *A Lesen material für Kategoriestruktur j_4kcsgr(F001 oder R002)
            CLEAR ls_mara.
            CALL FUNCTION 'J_3A1_LESEN_MARA_SINGLE'
                 EXPORTING
                      i_matnr         = l_s_data_eket-matnr
                 IMPORTING
                      e_mara          = ls_mara
                 EXCEPTIONS
                      param_not_valid = 1
                      OTHERS          = 2.
            IF sy-subrc NE 0.
            ENDIF.
    *E Lesen material für Kategoriestruktur j_4kcsgr(F001 oder R002)
    *A Aufsplitten Bestandskategorie
            REFRESH lt_cat_fields.
            CALL FUNCTION 'J_4KG_SPLIT_CAT'
              EXPORTING
                client                            = sy-mandt
                csgr                              = ls_mara-j_4kcsgr
                cat_appl                          = 'S'
                cat_value                         = l_s_data_eket-j_4kscat
      NECESSARY_SPECIFIED               = ' '
              TABLES
                cat_fields_tab                    = lt_cat_fields
              EXCEPTIONS
                no_category_structure_found       = 1
              OTHERS                            = 2.
            IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ELSE."sy-subrc <> 0
    Verarbeitung der Ergebnisse
              LOOP AT lt_cat_fields INTO ls_cat_fields.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_SCONFIG'.
                  l_s_data_eket-zz_bwel_sconfig = ls_cat_fields-j_4kcatv.
                ENDIF.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_CONFIG'.
                  l_s_data_eket-zz_bwel_config = ls_cat_fields-j_4kcatv.
                ENDIF.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_COUNTRY'.
                  l_s_data_eket-j_3abwel_country = ls_cat_fields-j_4kcatv.
                ENDIF.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_COUNTRYGRP'.
                  l_s_data_eket-zz_bwel_coungrp = ls_cat_fields-j_4kcatv.
                ENDIF.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_STOCKTYPE'.
                  l_s_data_eket-zz_bwel_stktype = ls_cat_fields-j_4kcatv.
                ENDIF.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_ORDER'.
                  l_s_data_eket-zz_bwel_order = ls_cat_fields-j_4kcatv.
                ENDIF.
                IF ls_cat_fields-j_4kbwef EQ 'BW_CAT_QUALITY'.
                  l_s_data_eket-j_3abwel_qual = ls_cat_fields-j_4kcatv.
                ENDIF.
              ENDLOOP."lt_cat_fields
            ENDIF.
    *E Aufsplitten Bestandskategorie
    *A Aufsplitten MAtrix
            IF NOT l_s_data_eket-j_3asize IS INITIAL.
              CALL FUNCTION 'J_3A_SPLIT_SIZES'
                   EXPORTING
                        matnr              = l_s_data_eket-matnr
                        j_3asize           = l_s_data_eket-j_3asize
                   IMPORTING
                        j_3akord1          = l_s_data_eket-j_3abwel_color
                        j_3akord2          = h_feldsize1
                        j_3akord3          = h_feldsize2
                   EXCEPTIONS
                        no_grid_determined = 1
                        OTHERS             = 2.
              IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
              ELSE.
                l_s_data_eket-zz_bwel_size1 = h_feldsize1.
                l_s_data_eket-zz_bwel_size2 = h_feldsize2.
              ENDIF.
            ENDIF."not l_s_data_eket-J_3ASIZE is initial
    *E Aufsplitten MAtrix
            MODIFY itab_0 FROM l_s_data_eket INDEX l_tabix.
          ENDIF."not l_s_data_eket-matnr is initial
        ENDLOOP.                                                "itab_0
      An Ausgabe-Tabelle übergeben
        APPEND LINES OF itab_0 TO e_t_data.
        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.
    regards
    thorsten

  • Generic datasource with Delta queue

    Hi All,
    I 've created a generic datasource on prices tables A* and KONP. Next, I used HowTo document "create generic datasource that uses delta queue", finding the right BTE that could catch prices modification. Up to this point, everything works fine.
    I've extracted an Init delta to BW and now, on R/3, in RSA7, I can see a delta queue for my generic datasource.
    When I modify price conditions in VK12, BTE works fine and I can see the counter in RSA7 increasing. I also can see new entries in table TRFCQOUT with status READY. (either in SE16 or in SMQ1 )
    The problem is :
    - in RSA7, if I want to display the posted data, system returns an empty list (whereas the counter is different from 0)
    - when I run a delta InfoPackage, no data is sent to BW, but in table TRFCQOUT, status has been changed to READ for entries that previously had status READY (and old entries that had status READ due to a previous delta upload are deleted)
    Does anyone has any idea about the reason of the issue ?
    Thanks for any help
    AJ

    Sure, I can.
    The problem was in the specific coding that update the delta queue : not all the fields were updated and some of these fields were used as selection criteria in th delta infopackage...
    in RSA7, when you try to see the data in the queue, the system only shows you the records that match the selection criterias of your delta IP...so in our case, because of those empty fields, no records were selected...
    AJ

  • Generic Datasource eventhough delta enabled not working

    Hi Experts,
    I have created a Datasource by creating a Function Module and also this function module i copied and did the changes the function module i used as a template is RSAX_BIW_GET_DATA_SIMPLE
    and after creating the thing i have created a generic delta by using LAST_CHANGED_ON date as delta specific field and i have initialized the delta its fine it creating an entry in RSA7
    in my first init load i got 4000 records so immly i have done delta again it brought 4000 but when i checked in RSA7 for delta their are no records but still its brining 4000 records ...but as per my assumption it should not get any records becoz we already got the delta.
    Thanks and regards
    Sreedhar

    Hi
    Even after making changes to code its still bring all the records with each load.
    below i am pasting my code please advise what is that i am doing wrong so that delta is not getting picked up. instead every time its a full load.
    FUNCTION ZRSAX_BIW_GET_DATA_SIMPLE.
    ""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  ZDPR_DASHBOARD_T OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    Example: DataSource for table SFLIGHT
    TABLES: DPR_DASHBOARD.
    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.
    DATA : LF_OBJECT TYPE EVE_TV_OBJECT_GUID.
    DATA : LF_DATE TYPE DPR_TV_LAST_CHANGE_DATE.
    Select ranges
      RANGES: L_R_OBJECT  FOR LF_OBJECT .
      RANGES: L_R_DATE FOR LF_DATE.
    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 'ZDPREXTRACTION'.
          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 = 'OBJECT_GUID'.
           MOVE-CORRESPONDING L_S_SELECT TO L_R_OBJECT.
           APPEND L_R_OBJECT.
        ENDLOOP.
    LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'LAST_CHANGE_DATE'.
            MOVE-CORRESPONDING l_s_select TO l_r_date.
            APPEND l_r_date.
          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 (S_S_IF-T_FIELDS) FROM  DPR_DASHBOARD
                                   WHERE LAST_CHANGE_DATE in l_R_DATE. "AND
                                           OBJECT_GUID  IN L_R_OBJECT.
    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.
    Regards
    Sreedhar
    Message was edited by:
            Sreedhar M

  • BW GENERIC EXTRACTION DELTA PROBLEM

    I have a problem for extracting delta from R/3 to BW.
    Init data is loaded from R/3 to BW system for ZST_ORDER datasource.
    Repair full request and selection parameter is created on date August 1st 2007 to August15th 2007.
    During the delta extraction - A lot of records around 500,000 records are getting extracting from R/3 to BW.
    R/3 side - There is only 5 entries available in AUFK table.
    It should extract delta only less than 35 entries.
    ZST_ORDER is generic datasource . Delta captured field is DATUM -New status changed record value 2.
    Advance Thx for your help. The code looks like
    FUNCTION ZST_ORDER.
    ""Local Interface:
    *" IMPORTING
    *" REFERENCE(I_REQUNR) TYPE SRSC_S_IF_SIMPLE-REQUNR
    *" REFERENCE(I_DSOURCE) TYPE SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
    *" REFERENCE(I_MAXSIZE) TYPE SRSC_S_IF_SIMPLE-MAXSIZE DEFAULT 1000
    *" REFERENCE(I_INITFLAG) TYPE SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
    *" REFERENCE(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 ZST_ORDEROPTIONAL
    *" EXCEPTIONS
    *" NO_MORE_DATA
    *" ERROR_PASSED_TO_MESS_HANDLER
    TABLES: AUFK, "Order master data
    TJ02T, "System status texts
    TJ30T, "Texts for user status
    JSTO. "Status object information
    DATA DECLARATION
    DATA: L_DATE TYPE DATS,
    L_STATUS TYPE J_STATUS,
    L_LINES TYPE SY-TABIX,
    L_CHANGED(1) TYPE C.
    Auxiliary Selection criteria structure
    DATA: L_S_SELECT TYPE SRSC_S_SELECT.
    Another data objects
    Service Order Data
    DATA: BEGIN OF LT_AUFK OCCURS 0,
    AUFNR LIKE AUFK-AUFNR,
    AUART LIKE AUFK-AUART,
    ERDAT LIKE AUFK-ERDAT,
    AEDAT LIKE AUFK-AEDAT,
    STDAT LIKE AUFK-STDAT,
    AEZEIT LIKE AUFK-AEZEIT,
    ERFZEIT LIKE AUFK-ERFZEIT,
    IDAT1 LIKE AUFK-IDAT1,
    IDAT2 LIKE AUFK-IDAT2,
    IDAT3 LIKE AUFK-IDAT3,
    LOEKZ LIKE AUFK-LOEKZ,
    OBJNR LIKE AUFK-OBJNR,
    END OF LT_AUFK.
    Individual Object Status
    DATA: BEGIN OF LT_JEST OCCURS 0,
    OBJNR LIKE JEST-OBJNR,
    STAT LIKE JEST-STAT,
    INACT LIKE JEST-INACT,
    CHGNR LIKE JEST-CHGNR,
    END OF LT_JEST.
    ***Change Documents for System/User Statuses (Table JEST)
    DATA: BEGIN OF LT_JCDS OCCURS 0,
    OBJNR LIKE JCDS-OBJNR,
    STAT LIKE JCDS-STAT,
    CHGNR LIKE JCDS-CHGNR,
    USNAM LIKE JCDS-USNAM,
    UDATE LIKE JCDS-UDATE,
    UTIME LIKE JCDS-UTIME,
    INACT LIKE JCDS-INACT,
    CHIND LIKE JCDS-CHIND,
    END OF LT_JCDS.
    DATA: BEGIN OF LT_JSTO OCCURS 0,
    OBJNR LIKE JSTO-OBJNR,
    STSMA LIKE JSTO-STSMA,
    END OF LT_JSTO.
    STATIC FIELDS
    STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
    counter
    S_COUNTER_DATAPAKID LIKE SY-TABIX,
    cursor
    S_CURSOR TYPE CURSOR.
    User-defined Ranges
    RANGES: L_R_AUFNR FOR AUFK-AUFNR ,
    L_R_ERDAT FOR AUFK-ERDAT.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
    IF I_INITFLAG = SBIWA_C_FLAG_ON.
    Check DataSource validity
    CASE I_DSOURCE.
    WHEN 'ZST_ORDER '.
    WHEN OTHERS.
    RAISE ERROR_PASSED_TO_MESS_HANDLER.
    ENDCASE.
    Copy selection criteria for future extractor calls (fetch-calls)
    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.
    S_S_IF-INITFLAG = I_INITFLAG.
    APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.
    ELSE.
    First data package -> OPEN CURSOR
    IF S_COUNTER_DATAPAKID = 0.
    LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
    WHERE FIELDNM = 'AUFNR'.
    MOVE-CORRESPONDING L_S_SELECT TO L_R_AUFNR.
    APPEND L_R_AUFNR.
    ENDLOOP.
    LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
    WHERE FIELDNM = 'ERDAT'.
    MOVE-CORRESPONDING L_S_SELECT TO L_R_ERDAT.
    APPEND L_R_ERDAT.
    ENDLOOP.
    LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT
    WHERE FIELDNM = 'DATUM'.
    L_DATE = L_S_SELECT-LOW.
    ENDLOOP.
    OPEN CURSOR WITH HOLD S_CURSOR FOR
    SELECT AUFNR AUART ERDAT
    AEDAT OBJNR AEZEIT
    STDAT ERFZEIT IDAT1
    IDAT2 IDAT3 LOEKZ
    FROM AUFK
    WHERE AUFNR IN L_R_AUFNR AND
    ERDAT IN L_R_ERDAT.
    ENDIF.
    Fetch records into interface table LT_AUFK
    FETCH NEXT CURSOR S_CURSOR
    APPENDING CORRESPONDING FIELDS OF TABLE LT_AUFK
    PACKAGE SIZE S_S_IF-MAXSIZE.
    IF SY-SUBRC <> 0.
    CLOSE CURSOR S_CURSOR.
    RAISE NO_MORE_DATA.
    ENDIF.
    Determining the number of lines of the table LT_AUFK .
    L_LINES = LINES( LT_AUFK ).
    IF L_LINES IS NOT INITIAL.
    Sort the internal table LT_AUFK
    SORT LT_AUFK BY OBJNR ASCENDING.
    Selecting the records from JCDS depending upon the entries in LT_AUFK.
    SELECT OBJNR STAT CHGNR USNAM
    UDATE UTIME INACT CHIND
    INTO TABLE LT_JCDS
    FROM JCDS
    FOR ALL ENTRIES IN LT_AUFK
    WHERE OBJNR EQ LT_AUFK-OBJNR
    AND ( CHGNR EQ '001'
    OR UDATE >= L_DATE ).
    Sort the internal table lt_jcds.
    SORT LT_JCDS BY OBJNR STAT CHGNR ASCENDING.
    Select records from table JEST depending upon the entries in LT_AUFK.
    SELECT OBJNR STAT INACT CHGNR
    INTO TABLE LT_JEST
    FROM JEST
    FOR ALL ENTRIES IN LT_AUFK
    WHERE OBJNR = LT_AUFK-OBJNR.
    SELECT OBJNR STSMA
    INTO TABLE LT_JSTO
    FROM JSTO
    FOR ALL ENTRIES IN LT_AUFK
    WHERE OBJNR = LT_AUFK-OBJNR.
    SORT LT_JSTO BY OBJNR.
    ENDIF.
    LOOP AT LT_JEST.
    CLEAR: LT_AUFK,
    l_changed.
    CLEAR L_CHANGED.
    CLEAR LT_JSTO.
    READ TABLE LT_JSTO WITH KEY OBJNR = LT_JEST-OBJNR BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    E_T_DATA-STSMA = LT_JSTO-STSMA.
    ENDIF.
    *End**
    Read the data from LT_AUFK.
    READ TABLE LT_AUFK WITH KEY OBJNR = LT_JEST-OBJNR BINARY SEARCH.
    E_T_DATA-AUFNR = LT_AUFK-AUFNR.
    E_T_DATA-AUART = LT_AUFK-AUART.
    E_T_DATA-ERDAT = LT_AUFK-ERDAT.
    E_T_DATA-AEDAT = LT_AUFK-AEDAT.
    E_T_DATA-AEZEIT = LT_AUFK-AEZEIT.
    E_T_DATA-ERFZEIT = LT_AUFK-ERFZEIT.
    E_T_DATA-IDAT1 = LT_AUFK-IDAT1.
    E_T_DATA-IDAT2 = LT_AUFK-IDAT2.
    E_T_DATA-IDAT3 = LT_AUFK-IDAT3.
    E_T_DATA-LOEKZ = LT_AUFK-LOEKZ.
    E_T_DATA-INACT = LT_JEST-INACT.
    E_T_DATA-CHGNR = LT_JCDS-CHGNR.
    e_t_data-datum = lt_aufk-erdat.
    READ TABLE LT_JCDS WITH KEY OBJNR = LT_JEST-OBJNR
    STAT = LT_JEST-STAT
    CHGNR = '001'
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    E_T_DATA-UDATE = LT_JCDS-UDATE.
    E_T_DATA-AEDAT = LT_JCDS-UDATE.
    E_T_DATA-UTIME = LT_JCDS-UTIME.
    E_T_DATA-AEZEIT = LT_JCDS-UTIME.
    E_T_DATA-CHIND = LT_JCDS-CHIND.
    E_T_DATA-USNAM = LT_JCDS-USNAM.
    e_t_data-chgnr = lt_jcds-chgnr.
    IF LT_JCDS-UDATE GE L_DATE
    AND L_DATE IS NOT INITIAL.
    L_CHANGED = 'X'.
    ENDIF.
    IF LT_JEST-CHGNR NE '001'.
    CLEAR LT_JCDS.
    READ TABLE LT_JCDS WITH KEY OBJNR = LT_JEST-OBJNR
    STAT = LT_JEST-STAT
    CHGNR = LT_JEST-CHGNR
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    L_CHANGED = 'X'.
    E_T_DATA-AEDAT = LT_JCDS-UDATE.
    E_T_DATA-AEZEIT = LT_JCDS-UTIME.
    E_T_DATA-CHIND = LT_JCDS-CHIND.
    E_T_DATA-USNAM = LT_JCDS-USNAM.
    e_t_data-chgnr = lt_jcds-chgnr.
    ENDIF.
    ENDIF.
    IF LT_JEST-STAT(1) EQ 'I'.
    E_T_DATA-ISTAT = LT_JEST-STAT.
    ELSEIF LT_JEST-STAT(1) EQ 'E'.
    E_T_DATA-ESTAT = LT_JEST-STAT.
    ENDIF.
    IF L_CHANGED EQ 'X'
    AND L_DATE IS NOT INITIAL.
    APPEND E_T_DATA.
    ELSEIF L_DATE IS INITIAL.
    APPEND E_T_DATA.
    ENDIF.
    ENDIF.
    CLEAR: LT_AUFK,
    E_T_DATA.
    ENDLOOP.
    CLEAR LT_JEST.
    REFRESH LT_JEST.
    next data package
    S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
    ENDIF. "Initialization mode or data extraction ?
    ENDFUNCTION.

    hi,
    for that quantity SALK3 is referring a different table in the reference field for your table fields. check that field and refer the correct table for that field in table view.
    table join has a problem in that. i think your joined some other table with that field. replace the field assignment or create a new view.
    hope this help you
    regards
    harikrishna N

  • GENERIC EXTRACTION DELTA SETTINGS

    HI Everyone,
                        I need to know how we set up Generic Delta in the following scenarios.
    1) When we have a Generic Extractor based on a View and this View has multiple table(For Example 2 Tables to start with).
    Then how wil you have the Generic Delta based on which field from which table? FOr example Table 1 has Header Data and Table2 has Item  Data.Our Functional  Consultant says Header can change or Item data can change.So we need to pick  up the record based on the change in each of the tables. For Example , there is a field called CHANGED DATE(AENDT) which is present in both the tables. Now , in the view if I add AENDT from Table1, then Table1's chnages will only be updated i guess. What if the change occurs in TABLE2 (ITEM).
    I dont know how to go about this. The solution is I created two Generic Extractors with two views (The only difference between the views is AENDT field coming from TABLE1 in the first extractor and AENDT field coming from  TABEL2 in the second Extractor).But I think  this  is not the best way and there must be an alternative for this
    2) The other issue is If I have a Function Module which Brings data from Multiple Tables, then how to select the field on which Delta is set.Do we need to write some Logic. After writing the logic, can we directly set the Generic Delta in RSO2 or is there any other way to do it.
    Regards,
    Samir

    Hi Samir,
    We too had a simliar requirement. In your case you can create a FM generic datasource on top of the view. The view in your case will get the intersection of the Header and Item level data.  the main challenge was to get the delta records as we can have both Orders created and changed , and in Delta can be maintained on only one field.
    To overcome this issue in the FM coding, Steps:
    create Generic datasource, with Delta on changed on date (AENDT)
    So during extraction you get the date on which the last Load was succesfully completed using the (AENDT).
    So in the selection part use the statement similar to this:
          select * from vbap into table  it_order where
                                 ( erdat  in l_r_erdat or aedat in l_r_zaedat ) and
                                 ( erdat in l_r_aedat or aedat in l_r_aedat )
    Sample generic datasource for your reference:
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/403b299b-94e5-2c10-a3b4-e2cecb8ee869?quicklink=index&overridelayout=true
    Hope this helps.
    Regards,
    Umesh.

  • Generic datasource delta enabling  against S973 & S966

    hellow gurus
    m workin on BW 3.5
    i have to  create Generic datasource for Warrqanty FOC against Sales
    for that i need to create a datasource using S966 and S973 View
    could u plzz tel me
    on which field should i make Delta enable in generic Datasource and
    what shuld i selc in DATA-Specific Field -
    and which radio button
    Time Stamp
    or Cal Day or Numeric Pointer
    and
    Saftety interval upper and lower limit for the same.
    points will be awarded as my gesture and thanks for ur efforts
    regards

    Hi,
    The following is the criteria that needs to be looked upon during Delta enabling in Generic Datasource.
    Delta Specific Field :
    Time Stamp - If you are extracting data for critical modules like FICO, go for Time stamp.
    Calendar Day - If data is extracted from modules that does not have huge postings in a day, like Sales or Delivery Billing, go for Calendar day.
    Numeric Pointer - For sequentially generated records like GLPCA, go for Numeric Pointer.
    Safety Interval (Upper & Lower Limits) :
    (1) If delta field is Date (Record Create Date or change date), then use Upper Limit of 1 day.This will load Delta in BW as of yesterday. Leave Lower limit blank.
    (2) If delta field is Time Stamp, then use Upper Limit of equal to 1800 Seconds (30 minutes). This will load Delta in BW as of 30 minutes old. Leave Lower limit blank.
    (3) If delta field is a Numeric Pointer i.e. generated record # like in GLPCA table, then use Lower Limit. Use count 10-100. Leave upper limit blank. If value 10 is used then last 10 records will be loaded again.
    If a record is created when load was running, those records may get lost. To prevent this situation, lower limit can be used to backup the starting sequence number.
    This may result in some records being processed more than once; therefore, be sure this DataSources is only feeding an ODS Object.
    Regards,
    Balaji V

  • Delta-Specific Field for Generic DataSource

    Hi,
    I have defined a Generic DataSource for Transaction data on R/3-Side.
    This DataSource is based on View/Table EKKO (Purchasing Document Header) for some specific customer requirements. Delta-Specific Field is AEDAT (Calend. Day). Safety Interval Upper Limit is set 1 Cal. Days. No Safety Interval Lower Limit has been defined. "New Status for Changed Records" has been marked.
    When we see this DataSource in Extractor Checker (RSA3), this data source
    Extracted all delta data where AEDAT is not blank.
    When I see the content of table EKKO, I can find few records where AEDAT is blank.
    These records are missing in Extractor Checker.
    How I can solve this problem? Which delta-specific field can be used in
    this generic Datasource? Should I define an additional Generic DataSource with
    Delta-Specific Field BEDAT (as BEDAT is filled when AEDAT is blank in table EKKO)?
    Thanks for the answer.

    Delta based  on calday wont pick all the records  which are recently posted and you can not run the delta more than one time in a day ,end of the day only you can run the delta.
    Set the delta as Tme Stamp and specify the Upper  limit to 5 minuts.
    We can run the delta no. times and pick the documents posted in short interval of time.
    With Regards,
    Kishore.

  • Generic DataSource & Delta setup

    Hello Folks,
    I am trying to get my Generic DataSources and Delta concepts straight and got more confused after reading a white paper titled "how to ...create generic delta". <b>I am on SAP R/3 4.6c and BW 3.0b.</b>
    <b>This white paper talks about creating generic datasource and delta using RSO2 in BW</b>. It explains how to  specify  delta-specific field and then select a delta type (AIE or ADD) which sets the "delta update" flag after generating.
    My question is
    1)should we create a generic datasource and delta from BW as suggested by this white paper and not in SAP R/3 directly using RSO2 and RSA3? what are the pros and cons.
    I tried creating a generic datasource in SAP R/3 using RSO2 since these transactions are available in SAP R/3. I noticed the "delta update" checkbox was always(or for the cases I tried) blank and protected. Also noticed a menu item under "Datasource" called "setup delta" to be grayed out as well. So looks like, a delta can be set up in SAP R/3 but does not let me do it.
    My question is
    1) why can't I set up a delta?

    Hi Jay,
    First, you do not create a Datasource from BW. A Datasource is created in R/3. You replicate them to BW afterwards so that you can create/map them to Transfer Rules.
    Datasource creation is in R/3 only. You can of course create  BW as a source of data for other systems but thats something else.
    Creating a <b>GENERIC DELTA</b> is based only on <b>TIMESTAMP</b>, <b>NUMERIC POINTER</b> and <b>CALENDAR DAY</b>.  <i>Delta Check box</i> is really grayed out for <b>GENERIC DATASOURCES</b> because once you specify that your generic data source is <i>DELTA</i> capable by using any of the three options above as DELTA, then the <i>Delta Check Box</i> is automatically checked.
    What <i>Setup Delta</i> are you referring that you cannot do?
    --Jkyle

  • Cannot create R3TR OSOA Version from a Generic Datasource

    Hello my friends,
    I need your help, please,
    I have created a Generic Datasource, this generic datasource extracts data from a View in ECC, when I create the datasource and save it(RSO2 transaction), the system(ECC) only show me the R3TR OSOD object available to transport it, I need see the R3TR OSOA object to transport de datasource from Dev to QA system. So when I transport the datasource, i can't find the active version in QA System.
    I think that this could be an authorizations issue, but i am not very sure.
    This are the steps that I am executing:
    1.- Assign the datasource to an Object Directory.
    2.-The Object generated is OSOD(Delivery version) type.
    Thanks for your help!!
    Regards.
    Antonio.

    HI,
    Have you enhanced any fields if please collect the append structure
    that is the not problem first collect the TR at RSA6 same data source.
    please find the doc how to collect the data source in ECC.
    ECC Data sources Transportation
    Thanks,
    Phani.

  • Delta extraction for a generic datasource

    Hi BWers,
    I want put in Delta the extraction of a generic datasource.
    Currently this generic datasource is based on the table VBPA (Sales Document: Partner). Any time field exists.
    We need a time field in order to converse to a Delta extraction. This time field exists in the table VBAP (Sales Document: Item data). In fact two time fields exist: one which is filled at the creation of the sales order (ERDAT), another at the change of the sales order (AEDAT).
    The fields VBELN, POSNR and MANDT are keys in the tables VBAP and VBPA.
    The table VBAP changes when partner functions is created or changed in a sales order (VBELN) :
    - When it is a creation of a new sales order (with new partner functions), a new record is created in VBAP and the field ERDAT (Created on) is filled. The field AEDAT (Changed on) is empty.
    - When is a change of an existing sales order, the corresponding record in VBAP changed, and the field AEDAT is filled. ERDAT stays unchanged.
    In order to converse to the Delta extraction, i need a only one time-field (calendar day) in RSO2 / Generic Delta.
    But there is 2 time-fields ERDAT and AEDAT. So i just need to get AEDAT if it is filled, else if AEDAT is empty I will get ERDAT.
    I would base my datasource on a view between VBPA and VBAP with one field which will be filled by AEDAT or ERDAT (with the conditions below). But it seems it is not possible.
    Can you give me other ideas ?
    Thanks a lot.
    Cheers,
    Vince.

    In order to create a generic delta from two source fields, ERDAT and AEDAT in this case, you're going to have to create your generic extractor from a Function Module. Otherwise you'll only have the standard functionality available to you for creating the generic delta, which allows you to base it on only one column.
    Here's a sample you can use, that was created for VBFA, and change for your DataSource.
    FUNCTION y_docu_flow.
    *"*"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  YSDS_DOCU_FLOW OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    *& Global Data Declarations
    * Type for VBFA Data
      TYPES : BEGIN OF ty_vbfa            ,
                mandt   TYPE vbfa-mandt   ,
                vbelv   TYPE vbfa-vbelv   ,
                posnv   TYPE vbfa-posnv   ,
                vbeln   TYPE vbfa-vbeln   ,
                posnn   TYPE vbfa-posnn   ,
                vbtyp_n TYPE vbfa-vbtyp_n ,
                rfmng   TYPE vbfa-rfmng   ,
                meins   TYPE vbfa-meins   ,
                rfwrt   TYPE vbfa-rfwrt   ,
                waers   TYPE vbfa-waers   ,
                vbtyp_v TYPE vbfa-vbtyp_v ,
                plmin   TYPE vbfa-plmin   ,
                erdat   TYPE vbfa-erdat   ,
                aedat   TYPE vbfa-aedat   ,
              END   OF ty_vbfa            .
    * Internal Tables and Selection Criteria Structure
      DATA : t_vbfa     TYPE STANDARD TABLE OF ty_vbfa ,
             l_s_select TYPE srsc_s_select             .
    * Field Symbols
      FIELD-SYMBOLS : <fs_fields> TYPE rsfieldsel.
    * Constants
      CONSTANTS : c_error_msgty TYPE rslogparms-msgty VALUE 'E'            ,
                  c_error_msgid TYPE rslogparms-msgid VALUE 'YAERO_WTY_VSR',
                  c_error_msgv1 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V1 ' ,
                  c_error_msgv2 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V2 ' ,
                  c_error_msgv3 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V3 ' ,
                  c_error_msgv4 TYPE rslogparms-msgv1 VALUE ' MESSAGE_V4 ' ,
                  c_error_msgno TYPE rslogparms-msgno VALUE 999            ,
                  c_alias(2)    TYPE c                VALUE 'A~'           ,
                  c_vbfa        TYPE dntab-tabname    VALUE 'VBFA'         .
    * Maximum Database Lines, Data Package Counter and Cursor
      STATICS : s_s_if              TYPE srsc_s_if_simple ,
                s_counter_datapakid TYPE sy-tabix         ,
                s_cursor            TYPE cursor           .
    * Select Ranges
      RANGES : r_erdat FOR vbfa-erdat ,
               r_aedat FOR vbfa-aedat ,
               r_vbelv FOR vbfa-vbelv ,
               r_posnv FOR vbfa-posnv ,
               r_vbeln FOR vbfa-vbeln ,
               r_posnn FOR vbfa-posnn .
    *& Processing Logic
    * Refresh Internal Table and Clear work area
      REFRESH: t_vbfa   ,
               e_t_data .
    * Check the Extraction Mode (Delta Initialization Or Delta)
      IF i_initflag EQ sbiwa_c_flag_on.
    *   Determine DataSource Validity
        IF i_dsource NE 'YSDDS_DOCU_FLOW'.
    *     Call Function to Write Log
          CALL FUNCTION 'RSAL_LOG_WRITE'
            EXPORTING
              i_msgty = c_error_msgty
              i_msgid = c_error_msgid
              i_msgno = c_error_msgno
              i_msgv1 = c_error_msgv1
              i_msgv2 = c_error_msgv2
              i_msgv3 = c_error_msgv3
              i_msgv4 = c_error_msgv4.
    *     Raise Exception
          RAISE error_passed_to_mess_handler.
        ENDIF.                  " IF i_dsource NE 'YSDDS_DOCU_FLOW'.
    *   Append the Selection Criteria
        APPEND LINES OF i_t_select TO s_s_if-t_select.
    *   Fill parameter buffer for data extraction calls
        MOVE : i_requnr  TO s_s_if-requnr  ,
               i_dsource TO s_s_if-dsource ,
               i_maxsize TO s_s_if-maxsize .
    *   Append Fields to be Selected
        APPEND LINES OF i_t_fields TO s_s_if-t_fields.
    *   Add the Alias to Fields
        LOOP AT s_s_if-t_fields
          ASSIGNING <fs_fields>.
          CONCATENATE c_alias
                      <fs_fields>-fieldnm
                 INTO <fs_fields>-fieldnm.
          CONDENSE <fs_fields>-fieldnm NO-GAPS.
        ENDLOOP.                " LOOP AT s_s_if-t_fields..
      ELSE.                     " IF i_initflag EQ sbiwa_c_flag_on
    *   For First Data Package, Open Cursor
        IF s_counter_datapakid EQ 0.
    *     Clear Ranges
          CLEAR : r_erdat ,
                  r_aedat ,
                  r_vbelv ,
                  r_posnv ,
                  r_vbeln ,
                  r_posnn .
    *     Fill Selection Ranges
          LOOP AT s_s_if-t_select
            INTO l_s_select.
    *       Determine Selection Range Field Name
            CASE l_s_select-fieldnm.
    *         Created On Date
              WHEN 'ERDAT'.
                MOVE : l_s_select-sign   TO r_erdat-sign   ,
                       l_s_select-option TO r_erdat-option ,
                       l_s_select-low    TO r_erdat-low    ,
                       l_s_select-high   TO r_erdat-high   .
                APPEND r_erdat.
    *           Fill the change date too
                MOVE r_erdat[] TO r_aedat[].
    *         Predecessor Document Number
              WHEN 'VBELV'.
                MOVE : l_s_select-sign   TO r_vbelv-sign   ,
                       l_s_select-option TO r_vbelv-option ,
                       l_s_select-low    TO r_vbelv-low    ,
                       l_s_select-high   TO r_vbelv-high   .
                APPEND r_vbelv.
    *         Predecessor Document Line Item
              WHEN 'POSNV'.
                MOVE : l_s_select-sign   TO r_posnv-sign   ,
                       l_s_select-option TO r_posnv-option ,
                       l_s_select-low    TO r_posnv-low    ,
                       l_s_select-high   TO r_posnv-high   .
                APPEND r_posnv.
    *         Successor Document Number
              WHEN 'VBELN'.
                MOVE : l_s_select-sign   TO r_vbeln-sign   ,
                       l_s_select-option TO r_vbeln-option ,
                       l_s_select-low    TO r_vbeln-low    ,
                       l_s_select-high   TO r_vbeln-high   .
                APPEND r_vbeln.
    *         Successor Document Line Item
              WHEN 'POSNN'.
                MOVE : l_s_select-sign   TO r_posnn-sign   ,
                       l_s_select-option TO r_posnn-option ,
                       l_s_select-low    TO r_posnn-low    ,
                       l_s_select-high   TO r_posnn-high   .
                APPEND r_posnn.
            ENDCASE.            " CASE l_s_select-fieldnm.
          ENDLOOP.              " LOOP AT s_s_if-t_select..
    *     Open Cursor on View to Fetch data
    *     If full load with Selection on Fiscal Year
          IF r_aedat[] IS INITIAL.
    *       Full Extraction
            OPEN CURSOR
            WITH HOLD s_cursor FOR
          SELECT (s_s_if-t_fields)
            FROM vbfa      AS a
            JOIN pnwtyv    AS b
              ON a~vbelv   EQ b~sdvbeln
           WHERE a~vbelv   IN r_vbelv
             AND a~posnv   IN r_posnv
             AND a~vbeln   IN r_vbeln
             AND a~posnn   IN r_posnn
             AND a~rfmng   NE 0
             AND a~erdat   IN r_erdat
             AND b~sdvbeln NE space.
          ELSE.
    *       Delta Extraction Using ERDAT and AEDAT
            OPEN   CURSOR
            WITH   HOLD s_cursor FOR
          SELECT   (s_s_if-t_fields)
            FROM   vbfa      AS a
            JOIN   pnwtyv    AS b
              ON   a~vbelv   EQ b~sdvbeln
           WHERE   a~vbelv   IN r_vbelv
             AND   a~posnv   IN r_posnv
             AND   a~vbeln   IN r_vbeln
             AND   a~posnn   IN r_posnn
             AND   a~rfmng   NE 0
             AND ( a~erdat   IN r_erdat
              OR   a~aedat   IN r_aedat )
             AND   b~sdvbeln NE space.
          ENDIF.                " IF r_aedat[] IS INITIAL
        ENDIF.                  " IF s_counter_datapakid..
    *   Fetch Records into Interface Table
        FETCH NEXT CURSOR s_cursor
             APPENDING CORRESPONDING FIELDS
              OF TABLE t_vbfa
          PACKAGE SIZE s_s_if-maxsize.
    *   No More Data, Raise Exception
        IF sy-subrc NE 0.
    *     Close the Cursor
          CLOSE CURSOR s_cursor.
    *     Raise Exception
          RAISE no_more_data.
        ELSE.
    *     Move Extracted Data to Output Structure
          MOVE t_vbfa[] TO e_t_data[].
    *     Release Memory
          FREE t_vbfa.
    *     Sort Output Structure
          SORT e_t_data BY vbelv
                           posnv
                           vbeln
                           posnn
                           vbtyp_n.
    *     Delete Duplicate Records from Output Structure
          DELETE ADJACENT DUPLICATES
            FROM e_t_data
       COMPARING vbelv
                 posnv
                 vbeln
                 posnn
                 vbtyp_n.
    *     Increment Data Package Number
          s_counter_datapakid = s_counter_datapakid + 1.
        ENDIF.                  " IF sy-subrc NE 0
      ENDIF.                    " IF i_initflag EQ sbiwa_c_flag_on
    ENDFUNCTION.              
    Edited by: Dennis Scoville on Jul 16, 2009 8:29 AM
    Edited by: Dennis Scoville on Jul 16, 2009 8:29 AM

  • Delta extraction for COPA generic datasource

    Hi,
    I have created generic datasource for COPA with timestamp as delta.I have initialized the delta in BW and was able to extract the same number of records which I had in RSA3.To test the delta created couple of records and when tried to extract it was giving me 0 records with Info doc status 8 in the status tab.The processing is red and it does not drop down. I checked in the the roosource table in R3 and it shows delta process as AIE and safety interval is 120 for the timestamp(will change it later).

    The safety interval is just 120 seconds. One more thing is when I initialized the delta on the R3 side in RSA7 I can find my datasource but under the status tab it shows some other datasource and also the delta field and current status are empty. So do u think I have to add the UPMOD field to my generic datasource or any of your suggestions for creating delta are welcome.
    Regards,
    Kal

  • Delta issue on a Generic Datasource

    Hi
       I had a Generic Datasource on a Z table.
       The Z table had a Date field on which Delta is based.The Postings are performed manually.
      How to solve the delta issue in the below scenario.
    Ex; A user made a manual posting with a date 09AUG2010 today and delta is extracted to BW.
        But tommorow a used made another posting with a date 14JULY2010....
    Currently that record is not being extracted....how can i resolve this
    Thanks

    Hi,
    Once the data source is created you will extract the data till that date and as the delta is set it will fetch the newly updated records .But i dont think one can post with the back dates in R/3 side.
    If i'm not wrong if you are asking regarding record got missed out them wht need to be done?
    Then do the repair full request and pull the missed delta records and it wont effect the delta settings.
    Regards
    KP

  • Generic Datasource on table IMRG in R/3- delta on timestamp is it ok ?

    Hi
    I am creating Generic datasource based on table IMRG in R/3, This has stoppages related data. which we need in BI report. There is a field for Time-stamp in the table, i have checked values in table IMRG, but in R/3 it shows no data for the time-stamp.
    Now i want to create delta basis for this generic datasource based on table, so shall i create delta based on time-stamp or date field.  
    If I create delta based on time-stamp will it create problem in delta extraction subsequently? Please share your experience in such a cases.

    There is a field for Time-stamp in the table, i have checked values in table IMRG, but in R/3 it shows no data for the time-stamp.
    Delta specific field should be something which defines changes in your table, not something which is blank always.Based on the change in this delta specific field only delta will be pulled.Having it blank will never pull you delta.
    Hope this helps.

  • Error while extracting data from Generic datasource

    Hello Gurus,
    I have encountered an error "Errors in source system" with status red while extracting data from generic datasource into DSO.
    I have done below things:-
    1. Checked the jobs in source system, the job is successfully completed
    2. The generic datasource is active and supporting delta with calender day  in source system.
    3. No TRfc error and no idocs stucked.
    4. No short dumps in source system.
    5. The delta queue(RSA7) is showing 0 with status as green.
    6. Replicated the datasource On BW side and also activated the transfer rules by RS_TRANSU_ACTIVATE_ALL
    The problem has not yet solved. Could you guys please suggest me what might be the reason for this error......
    Thanks,
    Sonu

    Hello,
    I have used the generic delta using calender day.
    Safety upper limit : - 1
    Safety lowerr limit : - 0
    I have made the entries in va01 transaction, but the delta queus is not getting updated which should show 1.
    Do Generic extraction require any job to transfer data from Database table to delta queue.
    We are not able to get the delta records on BW side. Please suggest.
    Please suggest.
    Thanks,
    Sonu

Maybe you are looking for

  • HP LaserJet Pro M1217 nfw MFP - Scanner Error 22

    We are having Scan/Copy/Fax issues. Specifically "Scanner Error 22" (Yes 22, no not 52). I cannot find a manual specific to this model. When I bring one up via HP's website the actual pdf of the manual is for two other versions and they have the Erro

  • Special Standard printer only for acrobat reader, is this possible? Registry Hack

    In my networking earea are a lot of printers also a big toshiba copying mashine. While printing a pdf file to it with an PCL6 printer driver it takes a lot of time to print this. When i take a Postscript driver it runs faster ... so when my users wil

  • Multiple legal entities in one Request Set

    Hi, I have a question that hopefully someone can help with. It will make life so much easier here! In our environment on 11.5.9, we have multiple legal entities each a separate set of books. We're trying to create a request set to run multiple financ

  • Why is my shipping taking so long?

    i ordered my macbook pro 15 inch 2.2 gig for college about 2 weeks ago and have seen nothing about the product being shipped, i called up my college's book store where i ordered the computer and asked them what the problem was, to which i was told th

  • Apple id password not accepted after ipad update to ios5

    So I've just upgraded my iPad 2 with ios 5 and the apple id password doesn't work.  I've reset the password 4 times now and still it's not accepting it.  I've turned off the iPad and tried again and still no joy.  Any ideas?