Appending Generic datasource

Hi Gurus
We have datasource based on view created on EBAN and EBKN in our sandbox but I found few extra field which are "Z" fields added to data source .This fields are not available in view but when I go RSA6 ( R/3) and view data source and double click extract structure I can see those fields in "Display structure" as an appended field so would you pl tell me how can I add this fields to extract structure without adding them to database view?
Pl give me steps if possible as I am developing this in BW DEV system and new to BW.
Pl pl pl help

Hi Gurus
I found where to append the ES but when I include the Z objects and VORNR its giving me the following error , pl tell me what this error means...
<b>Field VORNR does not lie within customer namespace
Message no. DT 221
Diagnosis
Fields of customizing includes and append structures should lie in the customer namerange. You can then be sure that there will be no conflicts with SAP field names in future Release upgrades.
The customer namerange for fields is YY and ZZ.
Procedure
If they are new fields or fields which are only used in structures, you are recommended to change the field names and the reports which access them.
The field name for fields of database tables cannot be changed without the corresponding data being lost. It is only necessary to change the field name if the same name is used by SAP.</b>

Similar Messages

  • Field in Append Structure for Generic Datasource

    Hi:
    I created a Generic Datasource based on a view. After that, I created an Append to the Extraction Structure to include a field not originally on the view (and not related to any table in the view) to be calculated using customer exit in CMOD.
    At the moment of activating the Datasource, this new field doesn't appear in the selection window but in RSA6 it shows there with options "Hide Field" and "Field only Known in Customer Exit" checked.
    Again, I try to edit the Datasource but this field is not in the list to change those two checks.
    Any idea?
    Thanks.
    Luis Sales

    Dear Luis Sales,
    I was having the same requirement. I tried it hard for removing the tick mark on the HIDE option. But it was not working at all.
    I tried these steps.
    1. From RSO2 went to Extract structure. Edit Mode-> append structure.
    2. Appended required fields and activated both append structure and extract structure.
    3. Back to datasource and Save it.
    4. Came out of transaction RSO2. ( latter Logged of system )
    5. after re login - RSA6 selected given Datasource and change. there I could change the selection of HIDE field. ( Even earlier I was not able to do that)
    May be these steps help you out.

  • Generic datasource by function module to fetch data from multiple tables?

    I'm writing a function module to fetch price, for generic datasource.
    At first, extract test is OK. But InfoPackage never stop  when loading data to PSA in BW.
    And I find the example codes:
         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.
        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.
    There using Cursor to fetch data package by package, and raise exception NO_MORE_DATA to stop the loading process.
    Now I fetch data from multiple tables, I don't think I can use Cursor.
    Then How can I handle this?  
    Thanks a lot.

    Thanks
    IF IT_999[] IS INITIAL.
        SELECT A~KNUMH A~MATNR A~KSCHL VKORG VTWEG A~DATBI A~DATAB KBETR KMEIN KPEIN C~MTART APPENDING CORRESPONDING FIELDS OF
          TABLE TP_DATA
            FROM A999 AS A
              INNER JOIN KONP AS B
                  ON A~KNUMH = B~KNUMH
              INNER JOIN MARA AS C
                 ON A~MATNR = C~MATNR
    *          FOR ALL ENTRIES IN IT_999
                    WHERE
    *      A~KNUMH = IT_999-KNUMH  AND
           ( ( A~KSCHL = 'ZPRC' AND VKORG = 'Z000' AND VTWEG = 'Z1' ) OR
                          ( A~KSCHL = 'ZPRD' AND VKORG = 'A000' AND VTWEG = 'Y3' ) ) AND
    *                      A~DATBI >= SY-DATUM AND
                          LOEVM_KO = ''.
        SELECT A~KNUMH A~MATNR A~KSCHL VKORG VTWEG A~DATBI A~DATAB KBETR AS KHETR  KMEIN KPEIN C~MTART APPENDING CORRESPONDING FIELDS OF
          TABLE TP_DATA
            FROM A999 AS A
              INNER JOIN KONP AS B
                  ON A~KNUMH = B~KNUMH
              INNER JOIN MARA AS C
                 ON A~MATNR = C~MATNR
    *          FOR ALL ENTRIES IN IT_999
                    WHERE
    *      A~KNUMH = IT_999-KNUMH AND
          A~KSCHL = 'ZPR3' AND A~VKORG = 'I000' AND
    *                      DATBI >= SY-DATUM AND
                          LOEVM_KO = ''.
      ENDIF.
      IF IT_997[] IS INITIAL.
        SELECT A~KNUMH A~MATNR A~KSCHL VTWEG A~DATBI A~DATAB KBETR AS KHETR KMEIN KPEIN C~MTART APPENDING CORRESPONDING FIELDS OF
          TABLE TP_DATA
            FROM A997 AS A
              INNER JOIN KONP AS B
                  ON A~KNUMH = B~KNUMH
              INNER JOIN MARA AS C
                 ON A~MATNR = C~MATNR
    *          FOR ALL ENTRIES IN IT_997
                    WHERE
    *      A~KNUMH = IT_997-KNUMH      AND
          A~KSCHL = 'ZPRA' AND VTWEG = 'Y1' AND
    *                      DATBI >= SY-DATUM AND
                      LOEVM_KO = ''.
      ENDIF.
      IF IT_996[] IS INITIAL.
        SELECT A~KNUMH A~MATNR A~KSCHL A~DATBI A~DATAB KBETR AS KHETR KMEIN KPEIN C~MTART APPENDING CORRESPONDING FIELDS OF
           TABLE TP_DATA
             FROM A996 AS A
               INNER JOIN KONP AS B
                   ON A~KNUMH = B~KNUMH
               INNER JOIN MARA AS C
                  ON A~MATNR = C~MATNR
    *          FOR ALL ENTRIES IN IT_996
                    WHERE
    *      A~KNUMH = IT_996-KNUMH AND
          A~KSCHL = 'ZPRB' AND
    *                       DATBI >= SY-DATUM AND
          LOEVM_KO = ''.
      ENDIF.
      SELECT   MATNR     "u7269u6599u53F7u7801
               MEINH     "u4ED3u50A8u5355u4F4Du7684u5907u7528u8BA1u91CFu5355u4F4D
               UMREZ     "u57FAu672Cu8BA1u91CFu5355u4F4Du8F6Cu6362u5206u5B50
               UMREN     "u8F6Cu6362u4E3Au57FAu672Cu8BA1u91CFu5355u4F4Du7684u5206u6BCD
          FROM MARM
          INTO CORRESPONDING FIELDS OF TABLE IT_MARM
           FOR ALL ENTRIES IN TP_DATA
         WHERE MATNR = TP_DATA-MATNR AND  MEINH = TP_DATA-KMEIN.
      LOOP AT TP_DATA.
        IF TP_DATA-KPEIN NE 0.
          TP_DATA-KBETR =  TP_DATA-KBETR / TP_DATA-KPEIN.
          TP_DATA-KHETR =  TP_DATA-KHETR / TP_DATA-KPEIN.
        ENDIF.
        IF TP_DATA-KSCHL = 'ZPRA'.
    *       TP_DATA-MEINH = 'ZI'.
    *      TP_DATA-KSCHL = 'B4'.
          IF TP_DATA-KMEIN = 'ZI'.
            TP_DATA-KBETR = TP_DATA-KHETR / '1.17'.
          ELSE.
            READ TABLE IT_MARM INTO WA_MARM1 WITH KEY MATNR = TP_DATA-MATNR MEINH = TP_DATA-KMEIN.
    *           READ TABLE IT_MARM INTO WA_MARM2 WITH KEY MATNR = TP_DATA-MATNR MEINH = 'CT'.
            TP_DATA-KHETR = TP_DATA-KHETR * WA_MARM1-UMREN / WA_MARM1-UMREZ.
    *           * WA_MARM2-UMREZ / WA_MARM2-UMREN.
            TP_DATA-KBETR = TP_DATA-KHETR / '1.17'.
          ENDIF.
        ELSEIF TP_DATA-KSCHL = 'ZPRB'.
    *      TP_DATA-KSCHL = 'L0'.
    *       TP_DATA-MEINH = 'ZI'.
          IF TP_DATA-KMEIN = 'ZI'.
            TP_DATA-KBETR = TP_DATA-KHETR / '1.17'.
          ELSE.
            READ TABLE IT_MARM INTO WA_MARM1 WITH KEY MATNR = TP_DATA-MATNR MEINH = TP_DATA-KMEIN.
    *           READ TABLE IT_MARM INTO WA_MARM2 WITH KEY MATNR = TP_DATA-MATNR MEINH = 'BAG'.
            TP_DATA-KHETR = TP_DATA-KHETR * WA_MARM1-UMREN / WA_MARM1-UMREZ.
    *           * WA_MARM2-UMREZ / WA_MARM2-UMREN.
            TP_DATA-KBETR = TP_DATA-KHETR / '1.17'.
          ENDIF.
        ELSEIF TP_DATA-KSCHL = 'ZPRC' OR TP_DATA-KSCHL = 'ZPRD'.
    *       TP_DATA-MEINH = 'ZI'.
          IF TP_DATA-KMEIN = 'ZI'.
            TP_DATA-KHETR = TP_DATA-KBETR * '1.17'.
          ELSE.
            READ TABLE IT_MARM INTO WA_MARM1 WITH KEY MATNR = TP_DATA-MATNR MEINH = TP_DATA-KMEIN.
    *           READ TABLE IT_MARM INTO WA_MARM2 WITH KEY MATNR = TP_DATA-MATNR MEINH = 'WZI'.
            TP_DATA-KBETR = TP_DATA-KBETR * WA_MARM1-UMREN / WA_MARM1-UMREZ.
    *           * WA_MARM2-UMREZ / WA_MARM2-UMREN.
            TP_DATA-KHETR = TP_DATA-KBETR * '1.17'.
          ENDIF.
        ELSEIF TP_DATA-KSCHL = 'ZPR3'.
    *      TP_DATA-KSCHL = 'B2'.
          IF TP_DATA-KMEIN = 'ZI'.
            TP_DATA-KBETR = TP_DATA-KHETR / '1.17'.
          ELSE.
            READ TABLE IT_MARM INTO WA_MARM1 WITH KEY MATNR = TP_DATA-MATNR MEINH = TP_DATA-KMEIN.
    *           READ TABLE IT_MARM INTO WA_MARM2 WITH KEY MATNR = TP_DATA-MATNR MEINH = 'BAG'.
            TP_DATA-KHETR = TP_DATA-KHETR * WA_MARM1-UMREN / WA_MARM1-UMREZ.
    *           * WA_MARM2-UMREZ / WA_MARM2-UMREN.
            TP_DATA-KBETR = TP_DATA-KHETR / '1.17'.
          ENDIF.
        ENDIF.
        TP_DATA-MEINH = '01'.
        MODIFY TP_DATA.
    E_T_DATA-MATNR =   TP_DATA-MATNR.
    E_T_DATA-KSCHL =   TP_DATA-KSCHL.
    E_T_DATA-KHETR =   TP_DATA-KHETR.
    E_T_DATA-KBETR =   TP_DATA-KBETR.
    E_T_DATA-KMEIN =   TP_DATA-KMEIN.
    E_T_DATA-DATAB =   TP_DATA-DATAB.
    E_T_DATA-DATBI =   TP_DATA-DATBI.
    APPEND E_T_DATA.
        CLEAR WA_MARM1.
        CLEAR WA_MARM2.
      ENDLOOP.
    Edited by: Shen Peng on Oct 20, 2010 10:09 AM

  • Enhance generic datasource

    I developed a generic datasource and need some enhancements to custom fields. I got the following error in my ABAP code.
    Field "ZOXDV10019-ZZENDUSER" is unknown.
    Here is my code,
    *&  Include           ZXRSAU01
    TABLES:  VBPA.
    DATA:    l_s_zsales LIKE ZOXDV10019,
             l_counter,
             l_tabix LIKE SY-TABIX.
    CASE i_datasource.
      WHEN 'ZSALES'.
    Endless loop for debugging *
    l_counter = 7.
    while l_counter = 7.
    endwhile.
    Find end-user in the VBPA transaction data table
      LOOP AT c_t_data INTO l_s_zsales.
        l_tabix = SY-TABIX.
        SELECT SINGLE * FROM VBPA WHERE VBELN = l_s_zsales-VBELN AND POSNR = '000000' AND PARVW = 'Z1'.
    Fill fields with data from the VBPA transaction data table
        IF SY-SUBRC = 0.
          ZOXDV10019-ZZENDUSER = VBPA-KUNNR.
          MODIFY c_t_data FROM ZAZOXDV10019 INDEX l_tabix.
        ENDIF.
      ENDLOOP.
    Why SAP couldn't recognize the field of my appended structure?

    Hi Du,
    I went through your post. Can you provide some light on
    how to extract data from VBPA. But we dont use any z* fields!!
    Thanks in advance.
    Regards,
    BW IGA.

  • Can anybody explain me creating Generic Datasource using Function module?

    Hi,
    can anybody explain me creating Generic Datasource using Function module?
    Thax in advance,
    Ravi.

    Generic Extraction via Function Module
    /people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
    1. Create s structure with the fields that you need from the 4 tables . Activate.
    2. Goto SE 80 Select The Function Group , Copy , Select the Function module
    " RSAX_BIW_GET_DATA_SIMPLE " and Give a New name starting With
    Y or Z .
    3. SE37 ->Your Function module name -> Change , In table tab give your structure
    name by deleting the associated type given in " E_T_DATA " .
    4. Now select source code and Do the coding . Give Data source name in Coding .
    In your case you have to take data from more that 1 table .
    5. Activate the Function Group .
    6. In RSO2 Create the Data source , Give the Function Module Name , And Save.
    7. RSA3 -> Give data source name and Check for the Records .
    Creation of custom datasource. (Using function module)
    <b>is an example</b>
    1.Create a function group .
    2. Structure ZTEST123
    ZMATNR MATNR CHAR 18 0 Material Number
    ZMTART MTART CHAR 4 0 Material type
    ZMBRSH MBRSH CHAR 1 0 Industry sector
    ZMATKL MATKL CHAR 9 0 Material group
    ZBISMT BISMT CHAR 18 0 Old material number
    ZMAKTX MAKTX CHAR 40 0 Material description
    3. Create function module (i.e. ZTEST….) .
    FM - YMARA_DATA_TRNS
    FUNCTION YMARA_DATA_TRNS.
    ""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 ZTEST123 OPTIONAL
    *" EXCEPTIONS
    *" NO_MORE_DATA
    *" ERROR_PASSED_TO_MESS_HANDLER
    data : ZTEST123 type ZTEST123 occurs 0 with header line.
    Maximum number of lines for DB table
    STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
    S_COUNTER_DATAPAKID LIKE SY-TABIX.
    DATA: begin of t_mara occurs 0,
    ZMATNR type MATNR,
    ZMTART type MTART,
    ZMBRSH type MBRSH,
    ZMATKL type MATKL,
    ZBISMT type BISMT,
    end of t_mara.
    DATA: begin of t_makt occurs 0,
    ZMATNR type MATNR,
    ZMAKTX type MAKTX,
    end of t_makt.
    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 'ZZMARA_DATA'.
    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.
    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.
    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.
    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 MATNR
    MTART
    MBRSH
    MATKL
    BISMT
    from mara up to 10 rows
    into table t_mara.
    if not t_mara[] is initial.
    select MATNR
    maktx
    from makt
    into table t_makt
    for all entries in t_mara
    where matnr = t_mara-zmatnr.
    endif.
    loop at t_mara.
    read table t_makt with key zmatnr = t_mara-zmatnr.
    ZTEST123-zmatnr = t_mara-zmatnr.
    ZTEST123-ZMTART = t_mara-ZMTART.
    ZTEST123-ZBISMT = t_mara-ZBISMT.
    ZTEST123-ZMBRSH = t_mara-ZMBRSH.
    ZTEST123-ZMATKL = t_mara-ZMATKL.
    ZTEST123-zmaktx = t_makt-zmaktx.
    append ZTEST123.
    clear ZTEST123.
    endloop.
    clear E_T_DATA.
    refresh E_T_DATA.
    E_T_DATA[] = ZTEST123[].
    ENDIF.
    S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
    ENDIF. "Initialization mode or data extractio
    ENDFUNCTION.
    3. Create the data source using transaction (RSO2).
    4. If structure exists for the table parameter of your function module then ok else create a structure for the table parameter ‘E_T_DATA’.
    5. Test the datasource in R/3 using transaction RSA3.
    6. Transfer the data source to BW –System and replicate it in the BW-System.

  • Problem with Generic datasource from function

    I developed generic datasource from function module.
    But I have problem with the select options.
    First one is order number  OBJECT_ID type char 10. When I input Object_ID = 45755 , no data selected.
    When input 0000045755, one data record selected.
    But I called functiion CONVERSION_EXIT_ALPHA_INPUT to conevet the input data. And I found  45755 was converted to 0000045755, but no record selected.
         LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'OBJECT_ID'.
            MOVE-CORRESPONDING L_S_SELECT TO L_R_OBJECT_ID.
            APPEND L_R_OBJECT_ID.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = L_R_OBJECT_ID-high
      IMPORTING
       OUTPUT        = L_R_OBJECT_ID-high
             CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = L_R_OBJECT_ID-low
      IMPORTING
       OUTPUT        = L_R_OBJECT_ID-low
          ENDLOOP.
    Another problem is CREATED_AT, which type is DEC 15,  how could I handle it ?  input is yyyymmdd, I tried to add '000000', but can't select any data.
    Thanks for any help.

    code is :
    FUNCTION ZACTIVITY_PLAN_PARTNER.
    ""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  ZACTIVITY_PLAN_PARTNER OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    Example: DataSource for table SFLIGHT
      TABLES: CRMD_ORDERADM_H.
    Auxiliary Selection criteria structure
      DATA: L_S_SELECT TYPE SRSC_S_SELECT.
      DATA:   BEGIN OF ACTIVITY,
                       OBJECT_ID       type CRMT_OBJECT_ID_DB,
                       PROCESS_TYPE    type CRMT_PROCESS_TYPE_DB,
                       OBJECT_TYPE     type CRMT_SUBOBJECT_CATEGORY_DB,
                       CREATED_BY      type CRMT_CREATED_BY,
                       CREATED_AT      type CRMT_CREATED_AT,
               END OF ACTIVITY.
      DATA: ZACTIVITY   LIKE TABLE OF ACTIVITY WITH HEADER LINE,
            Zorder   LIKE TABLE OF ZORDER_S WITH HEADER LINE,
            d_start type c length 15,
            d_end type c length 15
    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_OBJECT_ID FOR CRMD_ORDERADM_H-OBJECT_ID,
              L_R_CREATED_AT FOR CRMD_ORDERADM_H-CREATED_AT,
              L_R_date for ZACTIVITY_PLAN_PARTNER-ZPLAN_DAT.
    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 'ZACTIVITY_PLAN_PARTNER'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E009(R3). ENDIF.
    this is a typical log call. Please write every error message like this
            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.                 "Initialization mode or data extraction ?
    First data package -> OPEN CURSOR
        IF S_COUNTER_DATAPAKID = 0.
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'OBJECT_ID'.
            MOVE-CORRESPONDING L_S_SELECT TO L_R_OBJECT_ID.
            APPEND L_R_OBJECT_ID.
         ENDLOOP.
    if  L_R_OBJECT_ID-option is initial.
      L_R_OBJECT_ID-option = 'EQ'.
      L_R_OBJECT_ID-sign ='I'.
      endif.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = L_R_OBJECT_ID-high
      IMPORTING
       OUTPUT        = L_R_OBJECT_ID-high
             CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = L_R_OBJECT_ID-low
      IMPORTING
       OUTPUT        = L_R_OBJECT_ID-low
          LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CREATED_AT'.
            MOVE-CORRESPONDING L_S_SELECT TO L_R_CREATED_AT.
            APPEND L_R_CREATED_AT.
          ENDLOOP.
          OPEN CURSOR WITH HOLD S_CURSOR FOR
          SELECT OBJECT_ID FROM CRMD_ORDERADM_H
                                  WHERE OBJECT_ID  IN  L_R_OBJECT_ID
                                  AND          CREATED_AT IN L_R_CREATED_AT    and
                                        PROCESS_TYPE EQ 'Z220'.
        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.

  • 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

  • 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

  • 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.

  • Error while transporting Generic Datasource in R/3

    Hi All,
    I have created a generic datasource(R/3) on a view. As it was in $TMP, I have assigned the datasource, ZABCD, and the view, ZVIEW to a devlopment package and also to a transport request. I released the Transport request and when I tried to import it into Q, it throwed me an error with below messages:
    Extract structure ZOX**** is not active
    The extract structure ZOX**** of the DataSource ZABCD is invalid
    Errors occurred during post-handling RSA2_DSOURCE_AFTER_IMPORT for OSOA L
    The errors affect the following components:
    BC-BW (SAP Business Information Warehouse Extractors)
    The extract structure ZOX**** is the structure used by the datsource. I forgot to assign that to the earlier TR and I think the error is because the structure is missing in the TR. Am I correct?
    How should I deal with it now? DO I need to create a new TR with this structure alone as the earlier TR is already released?
    Thanks,
    RPK.

    As you comment it is possible error was not include the structure in earlier TR.
    You can create, in se09 or se10, an empty TR. In these transactions you have a buttoun with a box drawed. Set focus on your new empty TR and push button.
    Add object from TR transported with error and the missed structure.

  • Generic DataSource using InfoSet on BI 7.0

    Hi gurus,
    I need to extract data from a InfoCube through a generic DataSource. I have created an InfoSet Query based on this InfoCube and I have noticed this kind of InfoSet is not the same that is used by Tcode RSO2.
    Does anybody know if there is any way to get this vai generic DataSource?
    I need to get data from Infocube because de Delta Control must be the package number.
    Thanks in advance,
    Silvio Messias.
    P.S.: The version of my environment is 7.0.

    Hi Ashok,
    Into the Tcode RSO2 (Generic DataSource) I have the option to collect data from an InfoSet. This InfoSet must be created through Tcode SQ02, right?
    I woult like to get data from a Infoset Query based on InfoCube, created through RSA1 on BI 7.0.
    Is there any way to do it?
    Thanks for your help,
    Silvio Messias.

  • Generic datasource creation in IS-HTCM

    Gurus
    Has anyone worked with IS-HTCM on CRM? and creating of reports with HTCM as source system?
    We want to create a few generic Datasources ....BWA1 is one option and RSO2 is the other...But can the BWA1 concept of CRM be tried in HTCM as well? or do we have to resort to RSO2?
    Thanks in advance
    Regards
    Prakash

    Hi Prakash,
    for generic datasources the transaction will be rso2 in all systems.
    Siggi

  • Problem in creating a generic datasource with infoset

    Dear Expert,
      I have to create a generic datasource with infoset. I linked the infoset with a test program below. In the program, I have one selection option, which is s_order. After creating an infoset and a datasource, this selection option 'SELECT_S_ORDER' is added to my extract structure. However, after try filtering with this SELECT_S_ORDER, it doesn't filter data at all. Why? I want to filter data with my s_order.
    REPORT  ZBI_DS_TEST.
      tables: vbak.
    * DATA
      field-symbols: <vbak>  type vbak.
      data:   t_vbak      type table of vbak,
                w_vbak     type vbak,
                t_vbak2    type table of vbak,
                w_vbak2    type vbak.
    * SELECT-OPTIONS
      selection-screen begin of block b1 with frame title text-001.
        select-options:  s_order   for  vbak-vbeln.
      selection-screen end of block b1.
        start-of-selection.
    * <Query_head>
       perform sub_select_data.
       loop at t_vbak into w_vbak2.
         move-corresponding w_vbak2 to vbak.
    * <Query_body>
       endloop.
    *&      Form  sub_select_data
    *      Select data
    FORM sub_select_data .
        select *
        into    table t_vbak
        from   vbak
        where vtweg = 'IP'.
    ENDFORM.                    " sub_select_data

    What do you mean by linking program with infoset?
    Do you get the field in your RSA3 Tcode?

  • 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

  • Invalid Extract Structure error while creating "Generic DataSource" on a view...

    Dear All,
    I have created a view on following tables MARA, AFKO and MSEG. The Table/Join condition is as follow:
    AFKO--AUFNR  = MSEG--AUFNR
    AFKO--PLNBEZ = MARA--MATNR
    I have included all the fields from MSEG and other all fields from MARA and AFKO. The view is created successfully and contents/records are also being fetched/displayed from this view.
    See screen shot as well:
    But when I go to RSO2 to create a "Generic DataSource" on this view. I get a series of warning messages and then error message "Invalid Extract Structure" and therefore I'm unable to create my DataSource on this view. See below screen shots of warning and error messages.
    Other warning messages are as follow:
    Field GAMNG with reference field MEINS: Reference table MARA is replaced by ZOXPRD0150
    Field PLSVB with reference field PLNME: Reference table PLKO is replaced by ZOXPRD0150
    Field PLSVN with reference field PLNME: Reference table PLKO is replaced by ZOXPRD0150
    Field LODIV with reference field MEINS: Reference table MARA is replaced by ZOXPRD0150
    Following is the screen shot of error message:
    1. How can I get rid of this error message and be able to create my "Generic DataSource" on top of this "View"?
    2. What should I do to resolve the above warning and error messages?
    I will appreciate your reply.
    Many thanks!
    Tariq Ashraf

    Hi Vipul,
    as you can find in CKIS table, the reference feild for value feild "WERTN" is missing.
    As per the table the reference feild is HWAER. This should have been used in place of FWAER.
    Try mentioning this in your view and this should work.
    Also I am a little enthusiastic to know, what are you trying to get from the datasource.
    If you are trying to get the cost estimate of multi level BOM, not (just one child level), then this approach may not work.
    There is a BAPI that gives such itemization split. Just FYI, in case you are looking for multi level explosion.
    "BAPI_COSTESTIMATE_ITEMIZATION".
    Hope this helps.
    Naveen.A

Maybe you are looking for

  • Maximum size of a byte array?

    Hi, I'm trying to read in a file into a byte array as following: byte[]inputformat = new byte[1280]; FileInputStream in= new FileInputStream(file); BufferedInputStream buffer= new BufferedInputStream(in); int len = buffer.read(inputformat); The probl

  • Restrict value of one variable corresponding to value passed in other.

    Dear Experts, I have query regarding BEx Authorization for the given selection screen of any variable for any report : I have three parameters/variables( Circle ,SSA and Exchange) which needs to be passed from User. Circle(state)->SSA(City)->Exchange

  • Volume Control wheel dial function

    Have a new L355-S7902 satellite laptop. Is the volume control wheel/dial on the front suppose to turn continuously? It doesn't appear to have a starting point or ending point.  Speaker volume does increase when dial rotated clock-wise, but there is n

  • Switching an upgrade to a different line

    I have a family plan with 5 lines One is eligible for an upgrade, and I want to switch it to another line to get an upgrade So, Line A is eligible for an upgrade, I want to put it on Line B Line A was activated 2 years ago in August, so next month, m

  • Crystal Reports 8.5 & 9 Via Web Application

    Post Author: bearie CA Forum: Older Products I have inherited an issue with a proprietary web based application and Crystal Reports 8.5 & 9. Someone a few years ago wrote a .dll file that would that a requested Crystal Report, via the web application