Delta for generic extraction using FM

Hi All,
I am trying to create generic datasource using function module. I need to set delta functionality for this DS but I don't know how to set delta for FM.
Do I need to give delta specific field in RSO2? My delta specific field is either AEDAT or ERDAT? Is it possible? how to write code for this?
I have around 13 tables & there is no stadard DS for these table so is it correct way to use generic using FM or is there any other way?
plz suggest & if u have any step by step document for FM plz provide.

Hi Manesh,
Yes you need to set up your delta enabled field in RSO2 when you click the delta button for the datasource.
Usually for generic datasources we use any date field to genarete deltas and looks like you have the same (AEDAT and ERDAT a re date fields).
You dont need to write any code for this. Just provide any field for executing delta and initialize. It will get you the delta based on the date.
In some scenarios, we get postings happening on an older date and hence dates cannot be used, in those scenarios we can go by numeric pointer.
Creating a datasource on 13 tables, i ma not sure how efficient it would be (mainly depends on the data volume on these tables) but yah writing a function module will be fine.
Let me know in case of any clarification
Thanks
Sachin

Similar Messages

  • Delta for Generic Extraction

    Hi all,
    Can anyone tell about delta for generic extraction i.e 3 options in detail and when do we use it.
    thanks in advance,
    chandra sekhar

    When you want to customize existing datasources at R/3 sides then you can do that with customer exits.
    Suppose if you want to add a column to the existing datasource then you will use append structures (Transaction SBIW-> Edit Data sources - Enhance Datasource) then to fill the column you will write the code in these Exits.
    There are 4 types of Exits available.Function Group (XRSA)
    EXIT_SAPLRSAP_001 Customer Function Call for Supplying Transaction Data
    EXIT_SAPLRSAP_002 Customer Function Call for Supplying Master Data (Attributes)
    EXIT_SAPLRSAP_003 Customer Function Call for Supplying Text
    EXIT_SAPLRSAP_004 Customer Function Call for Supplying Hierarchies
    As you are aware there 4 types since the datasources in R/3 are predefined to fill the data of BW viz, attributes,Text,Hierarchy and Transaction.
    Check the below forum discussion for more information..
    DataSource Enhancement
    Regs
    Gopi
    Assign point if it helps ...

  • When to go for generic extraction using view and infoset query?

    Hi,
                        Can anyone clarify me when we should go for generic extraction using view and when we should go for generic extraction using infoset query....
    Also what is the difference between view and infoset?
    I tried but could not find out....
    Regards,
    Kalyani.

    Hi Kalyani,
    We normally go for View or infoset when the data to be fetched in BW is distributed in different tables in SAP R/3.
    Had the data been available in one table we can easily build our datasource on that table but if there are more tables then its not possible to do it without Views or Infosets. You can use Function Modules to build your datasource in case it involves complex logic to figure out the data from various tables.
    Depending upon the table relationships we create view and include various fields from these tables in that view. Same is with the Infosets, you can have more flexible options like Outer Join, left outer Join etc.
    Regards,
    Pratap Sone

  • Deltas for generic extraction.

    Hi,
    if i want use time stamp & calday  for my generic extraction , i can use uppercase and lower case, wher can i give timings suppose want run deltas for 10am-10.30am.
    regards
    anitha

    Hi,
    Security interval upper limit The delta-relevant field is a timestamp.
    The timestamp that was read last is 12:00:00. Delta extraction begins at 12:30:00. The security interval for the upper limit is 120 seconds. The selection interval for the delta request is: 12:00:00 to 12:28:00. When the extraction is finished, the pointer is set to 12:28:00. Security interval lower limit The delta-relevant field is a timestamp. After images are transferred. In BI the record is overwritten with the post-change status, for example, for master data. Any duplicate data records do not affect BI. The last read timestamp is 12:28:00. Delta extraction begins at 13:00. The security interval for the lower limit is 180 seconds. The selection interval for the delta request is: 12:25:00 to 13:00:00. When the extraction is finished, the pointer is set to 13:00:00.

  • Need code for Generic Extraction using FM using multiple tables.

    Hi Experts,
    We are doing a generic functional module extraction based on four tables - say,
    Table TT1 u2013 with fields AA, BB.
    Table TT2 u2013 with fields CC, DD.
    Table TT3 u2013 with fields EE, FF.
    Table TT4 u2013 with fields GG, HH.
    The value of the field BB = DD.
    The value of the field DD = FF.
    The value of the field FF = HH.
    The key field with which we have to extract data is AA.
    We have created a structure for the above tables u2013 say STR containing all the fields from the above tables.
    Now as such all the data from the tables is in the internal table ITF.
    This data from the internal table is passed to the structure STR.
    Somewhere, I think we are making a mistake. I do not know where.
    When we check the datasource extraction in RSA3, we find that there is data only from the Table TT1. Data from other tables does not populate in the datasource.
    We do not know where we went wrong.
    Kindly help us.
    Thanking you all in advance.
    With Kind Regards,
    Shreeem.

    Hi,
    You will have to use the select query with joins as given in the below example,
    SELECT  pcarrid pconnid ffldate bbookid
      INTO  CORRESPONDING FIELDS OF TABLE itab
      FROM  ( ( spfli AS p
                INNER JOIN sflight AS f ON pcarrid = fcarrid AND
                                           pconnid = fconnid    )
                INNER JOIN sbook   AS b ON bcarrid = fcarrid AND
                                           bconnid = fconnid AND
                                           bfldate = ffldate     )
      WHERE p~cityfrom = 'FRANKFURT' AND
            p~cityto   = 'NEW YORK'  AND
            fseatsmax > fseatsocc.
    But I would suggest you to better create a Data base View with all the required tables and then use that view for data selection in your FM.
    Regards,
    Durgesh.

  • Where to find deltas in generic extraction

    hi experts,
    could you please explain me tcodes which are used to find the delta data while we go for generic extraction. Also can anyone explain me the full process of extracting the data using  
    infoset query and function module.
    Cheers,
    Pragya.

    Hi
    You can define delta's in generic using " calendr day, numeric pointer, time stamp."
    Generic Delta
    If a field exists in the extract structure of a DataSource that contains values which increase monotonously over time, you can define delta capability for this DataSource. If such a delta-relevant field exists in the extract structure, such as a timestamp, the system determines the data volume transferred in the delta method by comparing the maximum value transferred with the last load with the amount of data that has since entered the system.  Only the data that has newly arrived is transferred.
    To get the delta, generic delta management translates the update mode into a selection criterion. The selection of the request is enhanced with an interval for the delta-relevant field. The lower limit of the interval is known from the previous extraction. The upper limit is taken from the current value, such as the timestamp or the time of extraction. You can use security intervals to ensure that all data is taken into consideration in the extractions. After the data request was transferred to the extractor, and the data was extracted, the extractor then informs generic delta management that the pointer can be set to the upper limit of the previously returned interval.
    The delta for generic DataSources cannot be used with a BW system release prior to 3.0. In older SAP BW releases, the system does not replicate DataSources for master data and texts that were made delta-enabled using the delta for generic DataSources.
    Determining the Generic Delta for a DataSource
           1.      Choose Generic Delta.
           2.      In the subsequent dialog box, specify the delta-determining field and the type for this field.
           3.      Maintain the settings for the generic delta:
                                a.      Specify a security interval.
    The purpose of a security interval is to make the system take into consideration records that appear during the extraction process but which remain unextracted (since they have yet to be saved) during the next extraction.
    You have the option of adding a security interval to the upper limit/lower limit of the interval.
    A security interval should only be specified for the lower limit when the delta method results in a new status for changed records, in other words, when the status is overwritten in BW. In this case, duplicate data records that could arise in such a safety interval have no affect on BW.
                                b.      Choose the delta type for the data to be extracted.
    The delta type is used to determine how extracted data is interpreted in BW and which data targets in which it can be posted.
    With the delta type additive delta, the record to be loaded for summarizable key figures only returns the change to the key figure. The extracted data is added in BW. DataSources with this delta type can supply both ODS objects and InfoCubes with data.
    With the delta type New Status for Changed Records, every record to be loaded returns the new status for all key figures and characteristics. The values are overwritten in BW. DataSources with this delta type can write the data into ODS objects and master data tables.
           4.      Save your entries.
    Delta transfer is now possible for this DataSource.
    After generating the DataSource, you can see this from the marking for the field Delta Update on the DataSource: Customer Version screen.
    In systems from release 4.0B, you can display the current value of the delta-relevant field in the delta queue.
    Example for Determining the Selection Interval for a Generic Delta
    Safety Interval Upper Limit
    The delta-relevant field is a timestamp.
    The timestamp that was read last is 12:00:00. Delta extraction begins at 12:30:00. The safety interval for the upper limit is 120 seconds. The safety interval for the delta request is: 12:00:00 to 12:28:00. Upon completion of the extraction, the pointer is set to 12:28:00.
    Safety Interval Lower Limit
    The delta-relevant field is a timestamp. After images are transferred. In other words, the record is overwritten with the status after the change in BW, for example for master data. Any duplicate records that appear have no effect upon the BW system.
    The last changed timestamp is 12:28:00. Delta extraction begins at 13:00. The safety interval for the lower limit is 180secs. The safety interval for the delta request is: 12:25:00 to 13:00:00. Upon completion of the extraction, the pointer is set to 13:00:00.
    source: help.sap.com
    Hope it helps
    kalyan

  • Generic extraction using table

    Hello friends,
    We have three methods in Generic extraction, as we know.
    1. Using view/Table
    2. Using FM
    3. Using Infoset Query
    I know pretty well the extraction using View, but when do we use "Table"?
    Is there a specific method to perform generic extraction using TABLE?
    Please clarify

    Thanks for the replies.
    In case of a generic extraction with view, i've followed the below procedure.
    1. RSO2.
    2.create a generic datasource by giving a view name and selecting the fields for selection criteria, save and generate.
    3. replicate data sources in BW.
    4. create an infosource and assign the data source, mapping and create an infopackage to load data.
    Now ,
    1. how do we enable Delta for this method?
    2. Is  this possible at all? if yes, how?
    3. How do we proceed after the replication of DataSources in BI? specifically, procedure in BI?
    Pls clarify.

  • Scenarios for Generic extraction

    Hello experts ,
    Please give me some scenarios where we will go for the extraction using
    function module,
    infoset query,
    View.
    Thanks in advance,
    pragya.

    Hi Pragya,
    Generic extractors are of 3 types:
    1. Based on table/view
    2. Based on Infoset Query
    3. Based on Function module
    <i>In some cases Business Content will not give your required data sources , In such scenarios you need to develop your own data sources ( Views / Function modules ) , Then you can bring that data source to BW and use that .
    if you can't find the suitable business content data source then you have to create
    your own data source ( Generic )
    or enhance the given data source.</i>
    <b>Need for customized generic extractor</b>
    Business Content may not have a suitable
    Data Source for your application.
    Business Content may require additional enhancements that need data that is not supplied by SAP BW.
    The application may not have its own generic data extraction method.
    We have used our own custom programs to populate tables in SAP system.
    Please see link below
    <u>http://help.sap.com/saphelp_nw04s/helpdata/en/3f/548c9ec754ee4d90188a4f108e0121/frameset.htm</u>
    Good weblogs
    <b>/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
    /people/sap.user72/blog/2005/04/19/logistic-cockpit-a-new-deal-overshadowed-by-the-old-fashioned-lis
    /people/sap.user72/blog/2004/12/16/logistic-cockpit-delta-mechanism--episode-one-v3-update-the-145serializer146
    /people/sap.user72/blog/2004/12/23/logistic-cockpit-delta-mechanism--episode-two-v3-update-when-some-problems-can-occur
    /people/sap.user72/blog/2005/01/19/logistic-cockpit-delta-mechanism--episode-three-the-new-update-methods
    Regards, ABY

  • Deltas in generic extraction

    how can we set delta updates in generic extraction?can any one help in this

    Hi Praveen,
    Please do check the link for step by step for generic extraction
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/84bf4d68-0601-0010-13b5-b062adbb3e33
    check the following
    http://help.sap.com/bp_biv235/BI_EN/html/bw.htm
    business content
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/biw/g-i/how%20to%20co-pa%20extraction%203.0x
    https://websmp203.sap-ag.de/co
    http://help.sap.com/saphelp_nw04/helpdata/en/37/5fb13cd0500255e10000000a114084/frameset.htm
    (navigate with expand left nodes)
    Check these links:
    /people/sap.user72/blog/2004/12/16/logistic-cockpit-delta-mechanism--episode-one-v3-update-the-145serializer146
    /people/sap.user72/blog/2004/12/23/logistic-cockpit-delta-mechanism--episode-two-v3-update-when-some-problems-can-occur
    /people/sap.user72/blog/2005/01/19/logistic-cockpit-delta-mechanism--episode-three-the-new-update-methods
    /people/sap.user72/blog/2005/02/14/logistic-cockpit--when-you-need-more--first-option-enhance-it
    /people/sap.user72/blog/2005/04/19/logistic-cockpit-a-new-deal-overshadowed-by-the-old-fashioned-lis
    <b>For Generic:</b>
    >Go to Tcode : RSO2,
    >There give the name of data source which you want to create like transaction data source or master data attribue or Text data source.
    >enter
    >again in the next screen you need to give application like SD or MM etc
    >in the same screen need to select table/view or infosetquery or function module. these are different ways of creating data sources.
    >Give the name for the same like if u r creating data source on table give the name of table.
    >click on Generic delta which will there in application tool bar and fill the required columns in that screen like type of delta and all
    >continue and save
    >it will give all the fieds
    >enable the check boxes based on your requirement like selection or hide or field only..
    >save
    Hope This Helps.
    Regards,
    Ravikanth

  • Generic Extraction - Using Function Modules

    Hi Friends,
    Can you pl let me know the step by step process for creating generic extraction using function module?
    Thanks in Advance.
    Regards,
    Ari.
    Please search the forum before posting a thread
    Edited by: Pravender on Aug 5, 2010 7:31 PM

    Hi,
    Plz find this doc.
    http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a0f46157-e1c4-2910-27aa-e3f4a9c8df33.
    And go this link...
    http://www.sdn.sap.com/irj/scn/advancedsearch?query=genericextractionwithfunctionmadule
    Regards.....KP
    Edited by: kundan.sap on Aug 5, 2010 4:35 PM

  • Bussiness  Scenario for GENERIC   EXTRACTION

    Hi friends,
       can any one  explain me... in what situation we go for Generic Extractions..
    The normal reason is  When  the Bussiness Content  Datasource is not matching with our requirement.. we go for Generic extraction.. 
         I told like this only... but they are not satisfied with my answer.. and they asked .. tell me the  bussiness scenario( in what situation u  done  generic extraction)
      so, friends... could any one plz explain  me any scenario... which you done for generic extraction...
             i will appriciate  by giving   points  to the appropriate  answers..
    Thanks
    babu

    Hi,
    These 2 below links may be helpful,
    <u>GENERIC DATA EXTRACTION USING FUNCTION MODULE</u>
    <u>Difference between Generic Extraction and Enhancement of existing Extractor</u>
    1)Go to RSA6 and find the data source you need to enhance.--> Display
    2)Double click on the Extract structure.
    3)Now click on the append structure button to add the required field on to the existing structure.
    4) add your required fields with ZZ appended to your field.
    5) Save & Activate the append structure. Then go back and make sure you activate the extract structure also.
    6) Now again go back to RSA6 and select your Data Source. But this time go to change Data Source to remove the hide option to the enhanced fields. By default they’ll be in hide mode. If you don’t remove the hide field then this field will not be seen in BW side.
    7) Now go to SE38 to write the logic to populate the data into the enhanced field. Program name to write the logic is ZXRSAU01.
    8) Check + Save + Activate.
    9) Check in RSA3 if data is populated as per your requirement.
    10) Replicate your Data Source.
    11) Now go to Data Source/ Trans. Structure screen. Now you can see the enhanced field on the right hand side.Enhancements:
    <b>Enhancements:BW Side:
    Go to CMOD.</b>
    1. To Save&#61664; give Description &#61664; create&#61664;create new project—give the project name
    2. Select the radio button Enhancement Assignment and give the Enhancement name you want and press Enter.
    3. If the Enhancement is already assigned to some other project it will display the same message saying it is already assigned it some other project. Click on&#61664;
    4. If the Enhancement is not assigned to any project save.
    5. Give RSR00001 (For Variable Exits)
    6. Activate the Project.
    7. and click on the components button.&#61664;Now go to Display
    8. Now Double click on EXIT_SAPLRRS0_001. In that you can see an include ZXRSRU01.
    9. Double click on that include, it will say program name ZX…… are reserved for includes of exit Functions groups.
    10. Just Press Enter.
    11. It’ll Pop-Up a window Create Object.&#61664;saying Include ZX…. Does not exits
    12. That is where you have to write the code for the variable exits. BW: Virtual&#61664;
    13. RSR00002 Chars and Key Figures. BW: Moving Characteristics.&#61664;
    14. RSR00003
    Thanks,
    Aby Jacob

  • Error occurred while loading Generic extraction using Function module

    Hi all
    I'm trying to do INIT for Generic Extractor using Function module, but i'm getting error as "Error occurred in the source system"
    Error message from the source system
    Diagnosis
    An error occurred in the source system.
    System Response
    Caller 09 contains an error message.
    Further analysis:
    The error occurred in Extractor .
    Refer to the error message.
    Procedure
    How you remove the error depends on the error message.
    Note
    If the source system is a Client Workstation, then it is possible that the file that you wanted to load was being edited at the time of the data request. Make sure that the file is in the specified directory, that it is not being processed at the moment, and restart the request.
    Job terminated in source system --> Request set to red
    Message no. RSM078
    Can u help plz....

    Hi Vishnu
    This are the Job log details i found in source system...Can u tell what whould be the problem?
    Message
    Job started
    Step 001 started (program SBIE0001, variant &0000000002861, user ID
    Asynchronous transmission of info IDoc 2 in task 0001 (0 parallel tasks)
    DATASOURCE = ZYFI102
    RLOGSYS    =
    REQUNR     = REQU_D9Y4CZDQULRIHRRVU33KOLQZO
    UPDMODE    = D
    LANGUAGES  = *
             Current Values for Selected Profile Parameters               *
    abap/heap_area_nondia......... 0                                       *
    abap/heap_area_total.......... 10737418240                             *
    abap/heaplimit................ 40000000                                *
    zcsa/installed_languages...... DE                                      *
    zcsa/system_language.......... E                                       *
    ztta/max_memreq_MB............ 2047                                    *
    ztta/roll_area................ 3000000                                 *
    ztta/roll_extension........... 2000000000                              *
    No authorization for Acct type D
    Job cancelled after system exception ERROR_MESSAGE
    Thanks in advance
    Edited by: MohanDP on Feb 25, 2011 11:58 AM
    Edited by: MohanDP on Feb 25, 2011 12:01 PM

  • Issue with generic extraction using FM

    Hi All,
    I am trying to load from one DSO to other DSO, where i am trying to use generic extraction using FM, where i created strucutre of second DSO .
    created Generic datasource with Function module.
    when i am loading data using infopackage, its loading perfectly into PSA(with 100 records) and when i am loading thru DTP to Data target( second DSO), it is looping many records in each datapackage(like 8 million in each package) and updating into datatarget finally 100 records. but it is taking long time to finish the process.( i copied RSAX_GET_SIMPLE_DATA) and added transformation logic to it .
    so i would like to know, if there is anything i have to change in the Function module code, to fix this.
    i would also like to know,  request is already in PSA, will it again extract from FM, when updating thru DTP.
    Thanks
    R,man
    Points will be awarded.

    Hi
    I also had the same process. In the code of the function module. just check the Raise Exception code, probably ABAP guy can help. Also try to debug the code in RSA3 in debug mode. Actually it is going to a infinite loop, I guess.
    Regards
    Souresh

  • Delta fo Generic extractor using function module

    Hi,
    I am using the following function module for generic extractor but its always showing me extraction error.Could anyone please suggest to resolve the issue.
    Thanks in advance fo rsuggestion.
    FUNCTION Z_BW_SALESDATA_EXTRACT_CHNG2.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR
    *"     VALUE(I_ISOURCE) TYPE  SBIWA_S_INTERFACE-ISOURCE OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SBIWA_S_INTERFACE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL
    *"     VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE OPTIONAL
    *"     VALUE(I_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL
    *"     VALUE(I_PRIVATE_MODE) OPTIONAL
    *"     VALUE(I_CALLMODE) LIKE  ROARCHD200-CALLMODE OPTIONAL
    *"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_DATA OPTIONAL
    *"      E_T_SOURCE_STRUCTURE_NAME OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    The input parameter I_DATAPAKID is not supported yet !
    Example: InfoSource containing TADIR objects
      TABLES: VBFA,VBRK,tadir.
    Auxiliary Selection criteria structure
      DATA: l_s_select TYPE sbiwa_s_select.
    Maximum number of lines for DB table
      STATICS: l_maxsize TYPE sbiwa_s_interface-maxsize.
    user defined variables.
      DATA : X_UPDMODE(1) Type c,        " Update Type
            X_LastUpdate Like Sy-Datum. " Last Update Date
             X_LastUpdate TYPE RODELTAID. " Last Update Date   "TCS_KAP
    Select ranges
      RANGES: L_R_VBELN   FOR VBAK-VBELN,
              L_R_AUDAT   FOR VBAK-AUDAT.
    Parameter I_PRIVATE_MODE:
    Some applications might want to use this function module for other
    purposes as well (e.g. data supply for OLTP reporting tools). If the
    processing logic has to be different in this case, use the optional
    parameter I_PRIVATE_MODE (not supplied by BIW !) to distinguish
    between BIW calls (I_PRIVATE_MODE = SPACE) and other calls
    (I_PRIVATE_MODE = X).
    If the message handling has to be different as well, define Your own
    messaging macro which interprets parameter I_PRIVATE_MODE. When
    called by BIW, it should use the LOG_WRITE macro, otherwise do what
    You want.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      IF i_initflag = sbiwa_c_flag_on.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    The input parameter I_DATAPAKID is not supported yet !
    Invalid second initialization call -> error exit
        IF NOT g_flag_interface_initialized IS INITIAL.
          IF 1 = 2. MESSAGE e008(r3). ENDIF.
          log_write 'E'                    "message type
                    'R3'                   "message class
                    '008'                  "message number
                    ' '                    "message variable 1
                    ' '.                   "message variable 2
          RAISE error_passed_to_mess_handler.
          ENDIF.
    Check InfoSource validity
        CASE i_isource.
          WHEN 'Z_BW_SDDATA_CREATEON'.
          WHEN 'Y'.
          WHEN 'Z'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE e009(r3). ENDIF.
            log_write 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      i_isource            "message variable 1
                      ' '.                 "message variable 2
            RAISE error_passed_to_mess_handler.
        ENDCASE.
    Check for supported update mode
       CASE i_updmode.
         WHEN 'F'.
         WHEN OTHERS.
           IF 1 = 2. MESSAGE e011(r3). ENDIF.
           log_write 'E'                  "message type
                     'R3'                 "message class
                     '011'                "message number
                     i_updmode            "message variable 1
                     ' '.                 "message variable 2
           RAISE error_passed_to_mess_handler.
       ENDCASE.
    Check for obligatory selection criteria
       READ TABLE i_t_select INTO l_s_select WITH KEY fieldnm = 'VBELN'.
       IF sy-subrc <> 0.
         IF 1 = 2. MESSAGE e010(r3). ENDIF.
         log_write 'E'                    "message type
                   'R3'                   "message class
                   '010'                  "message number
                   'PGMID'                "message variable 1
                   ' '.                   "message variable 2
         RAISE error_passed_to_mess_handler.
       ENDIF.
       APPEND LINES OF i_t_select TO g_t_select.
    Fill parameter buffer for data extraction calls
        g_s_interface-requnr    = i_requnr.
        g_s_interface-isource   = i_isource.
        g_s_interface-maxsize   = i_maxsize.
        g_s_interface-initflag  = i_initflag.
        g_s_interface-updmode   = i_updmode.
        g_s_interface-datapakid = i_datapakid.
        g_flag_interface_initialized = sbiwa_c_flag_on.
    Store Update mode in static variable...
       X_UPDMODE = I_UPDMODE.
        Select Single DELTAID
               Into   X_LastUpdate
               From   ROOSGENDLM
               Where  OLTPSOURCE = 'Z_BW_SDDATA_CREATEON'.
        If X_LastUpdate Is Initial.
          X_LastUpdate = '19800101'. " The oldest..., this should not happen
        Endif.
    Fill field list table for an optimized select statement
    (in case that there is no 1:1 relation between InfoSource fields
    and database table fields this may be far from beeing trivial)
        APPEND LINES OF i_t_fields TO g_t_segfields.
      ELSE.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    X_UPDMODE = I_UPDMODE.
    First data package -> OPEN CURSOR
        IF g_counter_datapakid = 0.
    Fill range tables for fixed InfoSources. In the case of generated
    InfoSources, the usage of a dynamical SELECT statement might be
    more reasonable. BIW will only pass down simple selection criteria
    of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
          LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'VBELN'.
            MOVE-CORRESPONDING l_s_select TO L_R_VBELN.
            APPEND L_R_VBELN.
          ENDLOOP.
          LOOP AT g_t_select INTO l_s_select WHERE fieldnm = 'AUDAT'.
            MOVE-CORRESPONDING l_s_select TO L_R_AUDAT.
            APPEND L_R_AUDAT.
          ENDLOOP.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between InfoSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
    *added by Yogesh
          DELETE FROM ZBWSALEDATA.
    *ended by Yogesh
          l_maxsize = g_s_interface-maxsize.
    Check for supported update mode
          CASE X_UPDMODE.
            WHEN 'F' Or 'I'. " Full or Init
    **get sales orders
              SELECT *
                           INTO CORRESPONDING FIELDS OF TABLE I_SALESDATA
                           FROM VBAK AS K
                           INNER JOIN VBAP AS P
                                 ON  PVBELN = KVBELN
                           WHERE K~VBELN IN L_R_VBELN
                           AND   K~AUDAT IN L_R_AUDAT
                           AND   K~VBTYP = 'C'.
              IF I_SALESDATA[] IS NOT INITIAL.
                PERFORM F_GET_DATA.                   "get data
                PERFORM F_DEL_VATCOND.                "delete vat conditions
                PERFORM F_GET_TAR_COSTUNIT.           "get tariff cost unit
                PERFORM F_GET_NETVAL TABLES IT_VBDPA1. "get net val of the item
                PERFORM F_GET_SALESDATA.
    *write perform with name F_INSERT_DB_ZBWSALEDATA.
                PERFORM F_INSERT_DB_ZBWSALEDATA.      "insert into table ZBWSALESDATA
               LOOP AT I_SALESDATA WHERE NETPR = 0.
                 MOVE-CORRESPONDING I_SALESDATA TO I_SALESDATA_FIN.
                 APPEND I_SALESDATA_FIN.
               ENDLOOP.
               SORT I_SALESDATA_FIN BY VBELN POSNR KSCHL.
               DELETE ADJACENT DUPLICATES FROM I_SALESDATA_FIN
                                               COMPARING VBELN POSNR
                                                         KSCHL.
               INSERT ZBWSALEDATA FROM TABLE I_SALESDATA_FIN.
              ENDIF.
            WHEN 'D'. " Delta
              SELECT *
                             INTO CORRESPONDING FIELDS OF TABLE I_SALESDATA
                             FROM VBAK AS K
                             INNER JOIN VBAP AS P
                                   ON  PVBELN = KVBELN
                            WHERE K~ERDAT >= X_LastUpdate
                             WHERE K~ERDAT >= X_LastUpdate+0(8)          "TCS_KAP
                             AND   K~VBTYP = 'C'.
              IF I_SALESDATA[] IS NOT INITIAL.
                PERFORM F_GET_DATA.                   "get data
                PERFORM F_DEL_VATCOND.                "delete vat conditions
                PERFORM F_GET_TAR_COSTUNIT.           "get tariff cost unit
                PERFORM F_GET_NETVAL TABLES IT_VBDPA1. "get net val of the item
                PERFORM F_GET_SALESDATA.
    *write perform with name F_INSERT_DB_ZBWSALEDATA.
                PERFORM F_INSERT_DB_ZBWSALEDATA.      "insert into table ZBWSALESDATA
               LOOP AT I_SALESDATA WHERE NETPR = 0.
                 MOVE-CORRESPONDING I_SALESDATA TO I_SALESDATA_FIN.
                 APPEND I_SALESDATA_FIN.
               ENDLOOP.
               SORT I_SALESDATA_FIN BY VBELN POSNR KSCHL.
               DELETE ADJACENT DUPLICATES FROM I_SALESDATA_FIN
                                               COMPARING VBELN POSNR
                                                         KSCHL.
               INSERT ZBWSALEDATA FROM TABLE I_SALESDATA_FIN.
              ENDIF.
            WHEN OTHERS.
              IF 1 = 2. MESSAGE E011(R3). ENDIF.
              LOG_WRITE 'E' "message type
              'R3' "message class
              '011' "message number
              I_UPDMODE "message variable 1
              ' '. "message variable 2
              RAISE ERROR_PASSED_TO_MESS_HANDLER.
          ENDCASE.
    **end get sales orders
          OPEN CURSOR WITH HOLD g_cursor FOR
          SELECT (g_t_fields) FROM ZBWSALEDATA.
         WHERE pgmid  IN l_r_pgmid AND
                                        object IN l_r_object.
        ENDIF.                             "First data package ?
    Fetch records into interface table. There are two different options:
    - fixed interface table structure for fixed InfoSources have to be
      named E_T_'Name of assigned source structure in table ROIS'.
    - for generating applications like LIS and CO-PA, the generic table
      E_T_DATA has to be used.
    Only one of these interface types should be implemented in one API !
        FETCH NEXT CURSOR g_cursor
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE E_T_DATA
                   PACKAGE SIZE l_maxsize.
        IF sy-subrc <> 0.
          CLOSE CURSOR g_cursor.
          RAISE no_more_data.
        ENDIF.
        g_counter_datapakid = g_counter_datapakid + 1.
      ENDIF.              "Initialization mode or data extraction ?
    Best regards,
    Yogesh

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

  • When we go for Views and Function Modules for Generic Extraction

    Hi Experts,
    Can you please explain when we go for extracting the data using Views and when we got using Function Modules using Generic Extraction from R/3 system to BW with examples. And also can you explain when we go for delta for the above both scenarios.
    Thanks for you help in advance
    Rohith

    Hi,
    Scenario for Extarction using FM
    Imagine the scenario where you need to extract data from
    tables having no common field between them and thereby preventing you from creating a view on top of those tables..
    Or simply consider tables that are highly unrelatd in terms of fields, but you have a requiremnt to extract data from them.
    Also Refer.
    create generic extractor based on 2 tables
    Generic Extraction via Function Module
    /people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
    Steps.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a0f46157-e1c4-2910-27aa-e3f4a9c8df33
    http://help.sap.com/saphelp_nw04/helpdata/en/86/1c8c3e94243446e10000000a114084/frameset.htm
    Scenario for Extraction using View
    If there are more number of tables and data in those tables can be represented using joins then we can use this type of extraction
    For more info Refer these links
    http://help.sap.com/saphelp_nw2004s/helpdata/en/cf/21ecf9446011d189700000e8322d00/frameset.htm
    Difference between "Help View" and "Search Help"
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/21ed06446011d189700000e8322d00/frameset.htm
    for more detailed info look on:
    http://www.sap-img.com/abap/what-is-the-different-types-and-usage-of-views.htm
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/abap+dictionary&
    For GEneric Delta refer these links
    [generic with delta;
    [https://forums.sdn.sap.com/click.jspa?searchID=11388803&messageID=5164737]

Maybe you are looking for

  • I am getting error 1001 on my ipad 2 while upgrading updates

    When click to upgrade updates on my ipad 2 i get error 1001 and says please try again later.

  • Problems with a Lenovo X41 and a docking station

    I have problems with a Lenovo X41 and the docking station. Sometimes, when the laptop is undocked and used in other location, when I try to dock it again, some devices, such as mouse or keyboeard attached to the docking station, don't work. I will ap

  • How to add a jpg. watermark to images in bridge?

    I'm trying to work out how to add a jpg. watermark to my images in bridge and also how to batch add the watermark.

  • SET element of LIST ITEM

    Hi, I have a List Item on my form in which I am populating data in tree format...and that list item populates the data based on a check box value...my form is like this Account # : ___________ Description : ____________________________ [ X ] Sub Acco

  • AirPlay vs AirParrot

    I tried this before, but got no reactions, but does anyone notice that streaming movies from a 3ghz 13inch retina mbp is not as smooth as it should be? Is this a software issue or is it the built in graphics card that can't handle the streaming? If I