Data error with generic extractor

Hi Friends!
I have a generic extractor based on view z_customer
The view is easy:
table: KNVP
fields: KUNNR, KUNN2, PARVW, MANDT
conditions: PARVW eq 'RG'
When I check the table (SE16)  with customer 'X', show me only one record,
but when I run the extractor (RSA3) show me four records.
- What is wrong in my view?  Perhaps something relative with the client (MANDT)?
Thank you in advance!

Hi.,
It's not mandatory that you must include MANDT field in view.
check check the number of records in the created view, not in the table.
If the number of records matches in view with RSA3, then it is fine.
-- Selva

Similar Messages

  • Problem with data records with generic extractor

    I have created generic exractor based on function module.
    When i fetch the data with one infopackage it fetches only 104,239 ( which is wrong correct record are 155,120 )
    But when i fetch the data with six different infopackages with different filters it fetches 155,120
    So is extracotr gives wrong values if it exceeds greater than 100 k records ?
    I want to fetch all the records in one ifopackage please suggest.

    Hi Venkatesh,
    Thanks a lot, my Bsource BI settings are like this
    Source System   Max KB   Maximam line Frequency  Max Proc.
    CLNT700           100000        100000        10     10     
    Should i increase the values to more than  100000
    Or should i cahnge the following code ?
    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
                   of TABLE gt_ebi
                   PACKAGE SIZE S_S_IF-MAXSIZE.
        IF SY-SUBRC <> 0.
          CLOSE CURSOR S_CURSOR.
          RAISE NO_MORE_DATA.
        ENDIF.

  • HT5439 Has anyone had the Network time and date error with Apple TV when traveling?

    Has anyone had the Network time and date error with Apple TV when traveling?

    Jasion,
    Maybe a bit beside the question, but it is always recommended here to open/save from/to own hard disk, and to copy from/to networks and removable media. You may be lucky, at least for a while, but it is better to be safe than sorry.
    In addition to the (far greater) risk of file corruption, some issues are mentioned here:
    http://helpx.adobe.com/illustrator/kb/illustrator-support-networks-removable-media.html

  • How to Generate Information Errors in Generic Extractor Function Module

    Hi, In my Generic Extractor logic I am reaching out to an additional table to get a field.  I would like to produce an informational error or red error in the process monitor if I'm unable to get the field.  Is this possible?  How can I generate these messages in the Extractor Function Module?
    Thanks!

    Hi,
    Please go through the below doc. It explanins each and every step of creation of generic extractor through Function module.
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a0f46157-e1c4-2910-27aa-e3f4a9c8df33?quicklink=index&overridelayout=true
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c062a3a8-f44c-2c10-ccb8-9b88fbdcb008?quicklink=index&overridelayout=true
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/30aefb04-7043-2c10-8e92-941536eebc79?quicklink=index&overridelayout=true
    Regards,
    mahesh

  • Error creating a multisource data foundation with generic odbc connection

    Hi all,
    we've created a generic odbc datasource connection to a Pervasive database.
    When creating a single source data foundation and universe with this connection everything works fine.
    When we try to create a multisource data foundation we can add the connection,
    but while trying to expand the connection we get the error message "Owners are not available".
    Same message when trying to inert a table.
    (We've created both a 32 bit and a 64 bit DSN)
    System: BO 4.1 SP2 PL3
    Any ideas?
    Thanks,
    Silvia

    Hi Silvia,
    The generic odbc is not a supported connection for a multisource universe.
    This information is available in the product availability matrix.
    1. Log into the SAP Support Portal
    2. choose the Tab for Release & Upgrade Info
    3. Choose the Link Product Availability Matrix.
    Hope this helps!
    Jacqueline

  • Error with Generic delta extractor when checking in RSA3

    Hi,
    I have created one Test Generic Datasource based on Table MARA.Delta specific field I mentioned is LAEDA(Last changed On). After creating I have generated the datasorce also. But when I check the datasource in RSA3, I am getting error if Update Mode is "D". Error is "An error occurred during extraction". I am not seeing this datasource in RSA7 (Delta Queue).
       If I say Update Mode is "F", then extractor is working fine.It is fetching some records.
    Your help will be appreciated.
    Thanks
    Sirineni.

    Hi Sirneni,
            Is your Init load in BW successfull. Only after
    successfull completion of init load in BW  the data source appears in delta queue RSA7 in R/3. Also check whether any materials are being changed in R/3 because u r delta is based on  last changed date.
    Regards,
    Prakash B

  • Several Issue: Stale Data Error with 2 pages opened at same time

    Hello Gurus,
    I developed an OAF page to create and also update records. My page, depending from the operation, can show the data on fields, for update, or blank, on case to create records. This page contains one LOV field, input fields and textarea field to get the data.
    When i try record or update using one page per time, the LOV field works fine and records are uptodated with success.
    But if i use 2 pages or more in these situations:
    - one page is opened in update operation;
    - another page to create a new record.
    Issue: When i click to change the LOV field value on create page, or update page, the Lov pop-up is opened with success, but when i click in another value, i get this error below. Any action also can cause this error, like click on Back Button (with name 'Voltar', created by me). Please see the error below:
    Error: Stale Data*
    The requested page contains stale data.*
    This error could have been caused through the use of the browser's navigation*
    buttons (the browser Back button, for example).*
    Cause:*
    The view object XXXAM.XXXVO1 contained no record.*
    The displayed records may have been deleted, or the current record for the view*
    object may not have been properly initialized.*
    This error hapens when i open 2 pages on update operation mode also.
    This error dont hapens only when i open 2 pages on create operation mode.
    Ps:
    Note: I have an ApplicationModule (AM) for LOV and another AM for this page, but i used this other AM to another page too and VOs. Have any problem on this???
    To help to understand, i printed my page, u can see the screenshots on links below:
    http://imageshack.us/a/img850/9186/printforum1.png
    http://imageshack.us/a/img197/2185/printforum2.png
    I´ll print some code blocks and if u need know more code blocks, please tell me:
    My PageCO Controller, at processFormRequest, code to define update or create Operation:
    +if (row.getNewRowState() == Row.STATUS_NEW) {+
    operationType = createOperation;
    +} else {+
    operationType = updateOperation;
    +}+
    My Controller, at processRequest, update or create operation:
    +if (!pageContext.isFormSubmission()) {+
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    String reqHeaderId =
    pageContext.getParameter("requisitionHeaderId");
    +Serializable[] params = {reqHeaderId};+
    IcxReceivingAlreadyExistsVOImpl receivingExistsVO = (IcxReceivingAlreadyExistsVOImpl)am.findViewObject("IcxReceivingAlreadyExistsVO1");
    receivingExistsVO.initQuery(reqHeaderId);
    +if (receivingExistsVO.hasNext()) {+
    TransactionUnitHelper.startTransactionUnit(pageContext, UPDATE_RECEIVER_TRX);
    am.invokeMethod("initPersonQuery", params);
    +} else {+
    TransactionUnitHelper.startTransactionUnit(pageContext, CREATE_RECEIVER_TRX);
    am.invokeMethod("createReceivingPerson", params);
    +}+
    +}+
    My AMImpl.java :
    +public void createReceivingPerson(String reqHeaderId) {+
    OAViewObject vo = getIcxReceivingPersonVO1();
    +if (!vo.isPreparedForExecution()) {+
    vo.executeQuery();
    +}+
    Row row = vo.createRow();
    vo.insertRow(row);
    row.setNewRowState(Row.STATUS_INITIALIZED);
    row.setAttribute("RequisitionHeaderId", reqHeaderId);
    +}+
    +public void initPersonQuery(String reqHeaderId) {+
    IcxReceivingPersonVOImpl vo = getIcxReceivingPersonVO1();
    +if (vo == null) {+
    +MessageToken[] errTokens = { new MessageToken("OBJECT_NAME", "IcxReceivingPersonVO1")};+
    throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", errTokens);
    +}+
    vo.initQuery(reqHeaderId);
    +}+
    +public void apply() {+
    getTransaction().commit();
    +}+
    +public void rollback(){+
    Transaction txn = getTransaction();
    +if (txn.isDirty()) {+
    txn.rollback();
    +}+
    +}+
    In the hope of a solution, waiting for ur precious help, Gurus
    My true thanks since now,
    Best Regards,
    Alberto Bogéa

    Hi,
    Can you please tell, if you are using the same EO/VO combination for both the operation - Insert and Update on both screens.
    Quite possible, that when you open two screen in say Update Mode and you open the two List Of Values, then as soon as you have selected the value in one of the LOV, the Other LOV will throw you stale data as the same VO/EO is being used.
    Try using two different EOs/VOs combination and see if that helps.
    Regards,
    Saurabh Agrawal

  • Delta with Generic Extractor using function module

    Hi,
    I have created an extractor using function module and it work fine (mode FULL)
    It's an extractor based on the FM RSAX_BIW_GET_DATA_SIMPLE.
    In TCODE RSO2, I have specified a delta field (AEDAT).
    In table ROOSOURCE, this extractor is defined by :
    DELTA = AIE
    EXMETHOD = F1
    When I extract data in Init mode, there is no problem. But delta don't extract any entries.
    When I trace with TCODE ST01, in Init mode the function module is executed but in delta mode, there is no trace of any use of this function module.
    I don't know how to do to make this extractor work fine in delta mode.

    Hi Pascal,
    The same function module i have used and succesffuly doing delta using it. So it works for both full & delta.
    How ur testing it and where are you testing it for delta.
    Do the delta testing through BI end. Set the
    As u have already set the delta field., now Follow below steps:
    1. First set the safety interval upper limit to -1, so that it will extract the delta data of 1 day back records also.
    2. Please make sure wether the delta records are available or not in r/3, if there is no records to be fetched in for delta then u will not be able to track out wether delta is working or not.
    3. Now do the init from BI end first. Delta initialization without data transfer. - It will give u green status with 1 dummmy record.
    4. Now do the delta. It will extract the delta records.
    Before that make sure that if any selection your giving in Infopackage should be met out by these delta records.
    Thanks
    Dipika

  • Data packets/size - Generic extractor

    Hi all,
    We built a custom function module based datasource and it is extracting data to BW in one big packet of 900,000+ records and the load is taking about 18 hours. We are trying to spilt the BW extraction into smaller data packets to improve performance but unable to do so. Following is our extraction program...
    Please let me know where we are doing it wrong...
    This Program fetches/build e_t_data. The issue is, program does not splitting into packets as the SAP standard program does.
    ""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_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL
    *"  TABLES
    *"      E_T_DATA STRUCTURE  Z0333W OPTIONAL
    *"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT
    *"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
      DATA: lr_range_name TYPE rsselect-fieldnm.
      DATA: st_e_t_data TYPE z0333w.
      STATICS: l_cursor TYPE cursor.
      STATICS: called(1) TYPE c VALUE 'N'.
    Maximum number of lines for DB table
      STATICS: l_maxsize TYPE sbiwa_s_interface-maxsize.
      FIELD-SYMBOLS: <l_range> TYPE ANY,
                     <l_t_range> TYPE STANDARD TABLE.
      IF i_initflag = 'X'.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Fill parameter buffer for data extraction calls
        g_s_interface-requnr    = i_requnr.
        g_s_interface-isource   = i_dsource.
        g_s_interface-maxsize   = i_maxsize.
        g_s_interface-initflag  = i_initflag.
        g_s_interface-datapakid = i_datapakid.
        g_flag_interface_initialized = sbiwa_c_flag_on.
        REFRESH g_t_select.
        REFRESH g_t_fields.
        APPEND LINES OF i_t_select TO g_t_select.
        APPEND LINES OF i_t_fields TO g_t_fields.
      ELSE.
    first data package of first table -> open cursor
        IF g_counter_datapakid = 0.
    *--Get selection ranges
          LOOP AT i_t_select.
            MOVE-CORRESPONDING i_t_select TO <l_range>.
            APPEND <l_range> TO <l_t_range>.
          ENDLOOP.
          l_maxsize = g_s_interface-maxsize.
    fetch plants for the company code
          PERFORM get_plants.
    fetch mast data into internal table as we will be using MAST for validation
    of whether BOM exist or not.
          SELECT * FROM mast INTO TABLE it_mast
                             WHERE stlan = '1' OR stlan = '6'.
          SORT it_mast BY matnr werks stlan.
    Material BOM information
    First data package -> OPEN CURSOR
         OPEN CURSOR WITH HOLD l_cursor FOR
        SELECT mast~matnr
               mast~werks
               mast~stlnr
               mast~stlan
               mast~stlal
               stko~stlty
       FROM mast INNER JOIN stko
         ON stkostlnr = maststlnr AND
            stkostlal = maststlal
       FOR ALL entries IN gt_werks
      WHERE mast~matnr IN gr_matnr AND
            mast~werks IN gr_werks AND
            mast~stlan IN gr_stlan AND
            mast~werks = gt_werks-werks AND
            mast~stlal = '01' AND
            stko~stlty = 'M'  AND                    "Material BOM only
            ( maststlan = '1' OR maststlan = '6' ).
        ENDIF.
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
        REFRESH: gt_mat_bom,gt_mat_bom1.
        FETCH NEXT CURSOR l_cursor
                   APPENDING CORRESPONDING FIELDS
                   OF TABLE  gt_mat_bom
                   PACKAGE SIZE i_maxsize.
        IF sy-subrc <> 0.
          CLOSE CURSOR l_cursor.
          RAISE no_more_data.
        ELSE.
    get BOM data and fill E_T_DATA
          PERFORM get_bom_data TABLES e_t_data.
        ENDIF.
    Increment Package
        g_counter_datapakid = g_counter_datapakid + 1.
      ENDIF.
    ENDFUNCTION
    Thanks,
    Anirudh.

    I'm not sure, but this might help:
    * Fetch records into interface table.
    * named E_T_'Name of extract structure'.
      DO.
        REFRESH: gt_mat_bom,gt_mat_bom1.
        FETCH NEXT CURSOR l_cursor
          APPENDING CORRESPONDING FIELDS
          OF TABLE gt_mat_bom
          PACKAGE SIZE i_maxsize.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
    * get BOM data and fill E_T_DATA
          PERFORM get_bom_data TABLES e_t_data.
        ENDIF.
    * Increment Package
        g_counter_datapakid = g_counter_datapakid + 1.
      ENDDO.
      CLOSE CURSOR l_cursor.
      RAISE no_more_data.
    Rob

  • Date Error with Albums

    i recently been noticing problems with some ordering of my albums
    in my itunes window i display my albums by "albums by year" but some albums are placed later when they have an earlier album date
    i've tried changing the tags, changing the date etc but nothing moves it to its correct position
    I've checked to see if all the info is right and it is
    can anyone help with this problem?
    thank you in advance

    yeah i dont like how itunes organises my files
    so i have folders for each artist, then playlists for each album!
    i've thought of the rogue characters, so i've checked all the little idyiosyncracies that could be wrong with it
    i managed to fix one of my artists by labelling the 'album artist' as the artist and that put them in the right order
    but for another artist nothing i did put it in the correct order so i've been forced to add the 'year' in the playlist and organise it through that
    i'm very anal when it comes to my organisation and i'd prefer it if things just worked lol
    thanx for all your help, i guess now it just remains a mystery!

  • JDeveloper Error with Generics

    Hi folks,
    we got a slight problem. A project containing the following code parts compiles without any problems - no warnings, no errors. Here is the code:
    public abstract class AbstractGenericDAO<INTERFACE, T extends INTERFACE, ID extends Serializable> {
         public INTERFACE getById(ID primaryId) {
              return findById(primaryId, false);
    public class SettlementTypeDAO extends
              AbstractGenericDAO<ISettlementType
    , SettlementType, Integer>
    But the JDeveloper Codeeditor marks 'SettlementTypeDAO.getById(10)' as an error:
    "Type '...ISettlementType' expected but INTERFACE found.Cannot assign value of type INTERFACE to variable of type '...ISettlementType'."
    In fact we dont know why. Does somebody have a helpful idea?
    Thanks a lot in advance.
    Sebastian

    Hi,
    I can't seem to reproduce this problem. With a project configured with -source 1.5, I see no red underlines with the following code in 10.1.3 production (just to check... are you using the production build (3673)? You can verify on the About box).
    package project1;
    import java.io.Serializable;
    public abstract class AbstractGenericDAO<INTERFACE, T extends INTERFACE, ID extends Serializable> {
    public INTERFACE getById(ID primaryId) {
      return null;
    interface ISettlementType {}
    class SettlementType implements ISettlementType {}
    class SettlementTypeDAO extends
    AbstractGenericDAO<ISettlementType, SettlementType, Integer>
    class Test
      public void something()
        SettlementTypeDAO dao = new SettlementTypeDAO();
        ISettlementType result = dao.getById( 0 );
    }

  • Date Error with DB

    String rday=req.getParameter("rday");
         String rmonth=req.getParameter("rmonth");
         String ryear=req.getParameter("ryear");
         String pdate=rday+"-"+rmonth.substring(0,3)+"-"+0+ryear;
         int rday1=Integer.parseInt(req.getParameter("rday1"));
         String rmonth1=req.getParameter("rmonth1");
         String ryear1=req.getParameter("ryear1");
         int rday2=(rday1+1);
         String pdate1=rday2+"-"+rmonth1.substring(0,3)+"-"+0+ryear1;
         rs=stm.executeQuery("select news_product.news_id,news_product.product,news.news_id,to_char(news_date,'dd-Mon-yy'),news.heading from news_product,news where news.news_id=news_product.news_id and news_product.product='Steel and Metal' and news_date between '"+pdate+"' and '"+pdate1+"' order by news_date desc");ERROR:
    java.sql.SQLException: [Microsoft][ODBC driver for Oracle][Oracle]ORA-01858: a non-numeric character was found where a numeric was expected
    and when am parsing int then it also gives error so
    please let me know the solution
    TIA

    prepared statement is not all that you are insisting for it.Yes it is.
    >
    I solved my problem and am quoting here for other
    peoples:
    String startDate=rday+"-"+rmonth+"-"+ryear;
    String endDate=rday1+"-"+rmonth1+"-"+ryear;This will only work for your particular situation. Not a general solution for "other peoples".
    anyhow I appreciate your help and thanks to you that
    you have given me your precious time. thanks again
    Sabre150It might "work", but it's far from optimal.
    %

  • Generic Extractor: enriching GL Data with Purchasing Data

    Experts,
    This is my first time with Generic Extractor.
    Requirement:
    We have a requirement to enrich GL data with Purchasing data via the Material Document Number.
    I need to provide this upto to the datawarehouse layer wherein another team will take over.
    Solution idea:
    Material Document is not part of the datasource 2LIS_02_SCL.
    a. Should I enhance this datasource to include material number  OR
    b. Develop a concept to create a generic delat enabled extractor that pulls data from EKBE, GR and IR information.
    In EKBE multiple material documents can exist per PO. The extractor returns 2 record per PO (before and after image) with the updated information.So if we have the first GR with Material document 901 and then a second GR with material doc 902 the extractor loads 3 records. New record, Before image and after image and the only one stored in BI is the after image. material doc would have value 902 if enhanced.
    For the generic extractor approach the  the ability to load deltas is crucial, since the EKBE table is very big. Maybe
    "CPUDT-Day On Which Accounting Document Was Entered" and "CPUTM-Time of Entry" can be leveraged as delta hook.
    Any ideas???
    Thanks,
    Jain

    No one answered

  • Generic Extractor on DB Table without Date, Time stamp

    Hi all,
    We have requirement of creating a generic extractor on the table which doesnt have date or time stamp in the data field. The only option availabel is to extract from Document numbers.
    And we cant put the extractor mode to "Read from view" because the table contains Currency field which refers to external table for currency key.
    The moment we change the extractor mode from Extraction from view to Extraction from FM the option "Numeric pointer" gets hidden.
    What shall we do in this scenario ?? Pls advice.
    Thanks.
    Regards
    Nimesh

    Hello Tapan, Prakash
    Prakash : Currency key is needed in BW .
    Tapan : I was just trying diff. options i.e. extraction from view and FM . Problem with Generic Extractor is that i dont have any date fields getting updated in the table. The only field that can be used for delta is document number. And Generic extractor only allows date or time stamp option , its not allowing numeric pointer if one reads from FM.
    Regards
    Nimesh

  • Generic extractor OK in RSA3 but no result with IP

    Hi Gurus
    I have a generic extractor which runs well in RSA3 but when I call it with an IPAK the R/3 job (BI_REQ) runs forever and gives no result.
    This happens in full and delta mode.
    Any ideas ?
    Thanks

    Here is the main code.
    The idea is to use the input packet to create an output packet with the same structure but different fields populated.
    FUNCTION zbw_biw_pricing.
    *"*"Interface locale :
    *"  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  ZBW_KONH OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    * DI.08.0055 Remontée prix VKPB
    *  'Delta hook' par BTE, voir transactions FINF, FIBF et
    *  MF Z_BW_BTE_DELTA_00503301_01 et Z_BW_BTE_DELTA_00503301_01_WRI
    *                         Création
    * Auteur: JWA                            Date: 30/04/2007
    * DataSource for view of Delta Q alimenté par le BTE
      TABLES: zbw_konh, usr01.
    * Auxiliary Selection criteria structure
      DATA: l_s_select TYPE srsc_s_select.
    * Maximum number of lines for DB table
      STATICS: s_s_if TYPE srsc_s_if_simple,
    * counter
              s_counter_datapakid LIKE sy-tabix,
    * cursor
              s_cursor TYPE cursor,
    * Vue 1 article actifs -> 1 GM
              t_mara     TYPE STANDARD TABLE OF zmatnr_matkl,
    * Vue 1 GM -> n articles actifs
              t_mara2     TYPE STANDARD TABLE OF zmatnr_matkl,
    * Vue 1 division -> 1 OA + 1 Société
              t_zvt001_wk TYPE STANDARD TABLE OF zvt001_wk,
    * Date de validité pricing
              w_datextract TYPE sydatum,
              w_separator TYPE zseparateur,
    * Data pour selections IP
         l_r_matnr TYPE STANDARD TABLE OF matnr_ran WITH HEADER LINE,
         l_r_werks TYPE STANDARD TABLE OF werks_ran WITH HEADER LINE,
         l_r_spart TYPE STANDARD TABLE OF spart_ran WITH HEADER LINE,
         l_r_matkl TYPE STANDARD TABLE OF matkl_ran WITH HEADER LINE.
    * Data pour paramètrer VKPB
      DATA :
           t_matnr_low TYPE STANDARD TABLE OF matnr_ran ,
           t_werks_low TYPE STANDARD TABLE OF werks_ran ,
           w_t_mara TYPE zmatnr_matkl,
           w_e_t_data TYPE zbw_konh,
    * Data pour liste VKPB
           t_liste     TYPE STANDARD TABLE OF abaplist ,
           t_listasci  TYPE STANDARD TABLE OF zchar150 ,
    * Paquet retourné d'après la liste VKPB.
           e_t_data2   TYPE STANDARD TABLE OF zbw_konh .
    * 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_PRICING'.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE e009(r3). ENDIF.
    * this is a typical log call. Please write every error message like this
            log_write 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      i_dsource   "message variable 1
                      ' '.                 "message variable 2
            RAISE error_passed_to_mess_handler.
        ENDCASE.
        APPEND LINES OF i_t_select TO s_s_if-t_select.
    * Fill parameter buffer for data extraction calls
        s_s_if-requnr    = i_requnr.
        s_s_if-dsource   = i_dsource.
        s_s_if-maxsize   = i_maxsize.
    * Fill field list table for an optimized select statement
        APPEND LINES OF i_t_fields TO s_s_if-t_fields.
    * Date extraction
        w_datextract = sy-datum.
    * Vue 1 article actif -> 1 GM pour binary search.
        SELECT  matnr matkl spart FROM  mara INTO TABLE t_mara
          WHERE  lvorm  = ' '.
        SORT t_mara BY matnr.
    * Vue 1 GM -> n articles actifs pour binary search.
        t_mara2[] = t_mara[].
        SORT t_mara2 BY matkl.
    * Vue 1 division->1 OA, divison->1 société  pour binary search
        SELECT * FROM zvt001_wk  INTO TABLE t_zvt001_wk.
        SORT t_zvt001_wk BY werks.
    * Séparateur
        SELECT SINGLE * FROM  usr01
         WHERE  bname   = sy-uname.
        IF usr01-dcpfm = 'X'.                "decimal separator is point
          w_separator-sep1 = ',' .           "suppress commas
        ELSE.
          w_separator-sep1 = '.' .           "suppress points.
        ENDIF.
      ELSE.                 "Initialization mode or data extraction ?
    * Data transfer: First Call      OPEN CURSOR + FETCH
    *                Following Calls FETCH only
    * First data package -> OPEN CURSOR
        IF s_counter_datapakid = 0.
    * Fill range tables BW will only pass down simple selection criteria
    * of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'MATNR'.
            MOVE-CORRESPONDING l_s_select TO l_r_matnr.
            APPEND l_r_matnr.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'WERKS'.
            MOVE-CORRESPONDING l_s_select TO l_r_werks.
            APPEND l_r_werks.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'SPART'.
            MOVE-CORRESPONDING l_s_select TO l_r_spart.
            APPEND l_r_spart.
          ENDLOOP.
          LOOP AT s_s_if-t_select INTO l_s_select WHERE fieldnm = 'MATKL'.
            MOVE-CORRESPONDING l_s_select TO l_r_matkl.
            APPEND l_r_matkl.
          ENDLOOP.
    * Determine number of database records to be read per FETCH statement
    * from input parameter I_MAXSIZE.
          OPEN CURSOR WITH HOLD s_cursor FOR
    *      SELECT (s_s_if-t_fields) FROM zbw_konh
           SELECT  kotabnr vakey FROM zbw_konh
              WHERE
              kvewe = 'A'        AND "Détermination prix
              kappl IN ('M','V') AND "ADV et Achats'
    * A modifier si nouvelle condition, + extraction des champs paramètre
              kotabnr IN ('017', '018', '071', '073', '074', '079') .
        ENDIF.                             "First data package ?
    * Fetch records into interface table.
        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.
    * Dérivation des paramètres pour VKPB
        PERFORM params_vkpb
         TABLES
    * Paquet entrée
           e_t_data
    * Paramètres lancement VKPB
           t_matnr_low
           t_werks_low
    * Paramètres venant de l'IP
           l_r_matnr
           l_r_werks
           l_r_matkl
           l_r_spart
    * vues
           t_mara
           t_mara2
           t_zvt001_wk.
    * Appel de VKPB si au moins un article trouvé
        IF NOT t_matnr_low[] IS INITIAL.
          PERFORM submit_vkpb
          TABLES
    * Paramètres lancement VKPB
           t_matnr_low
           t_werks_low
           t_listasci
        USING w_datextract.
    * Interpretation Liste VKPB
    *    BREAK ALEREMOTE.
    *    BREAK JWADDELL.
          PERFORM list_vkpb
            TABLES
              t_listasci
              e_t_data2
    * Paramètres venant de l'IP pour filtrage
              l_r_spart
    * pour le cas toutes divisions
              l_r_werks
    * vues
              t_mara
              t_zvt001_wk
    * Date validité
          USING w_datextract
              w_separator.
    * Retourner paquet
          e_t_data[] = e_t_data2[].
          REFRESH e_t_data2[].
        ELSE.
    * no data
          REFRESH  e_t_data[].
        ENDIF.
        s_counter_datapakid = s_counter_datapakid + 1.
      ENDIF.              "Initialization mode or data extraction ?
    ENDFUNCTION.=

Maybe you are looking for