Need Start routine logic

Hi,
Can anyone please let me know the code in start routine for the below.
I want to delete the unwanted datapackage in start routine for the below condition.
For  system PCR
For purch.org Z300, only those purchase orders shall be loaded to further layers which have the text "FCM" in the field Incoterms2 (ZPURINC2), the other purchase orders of this purch org and this system can be deleted.
thankyou........
Regards...
Balaji

Hi,
Delete Source_package where SYSTEM = 'PCR' and PURCH.ORG = 'Z300' and ZPURINC2 NE 'FCM'.
Check the definition of source_package in the start routine screen and use the exact infoobjects while defining the Delete statement
Regards
Githen

Similar Messages

  • ABAP assistance - start routine logic in update rule

    I have used an existing update rule and have based my logic around the same.  The purpose of the rule is to look up customer master data and get a subset of customer numbers from the transaction records so that the values for customer number from the transactional data will not be updated if it does not match with existing master data customer numbers.
    The loads are full and we drop the data before we load.
    I have listed the logic below (the number at the front is to be considered as the line number) and a list of open questions that I have thereafter:
    Start routine logic:
    1  DATA: l_index LIKE sy-tabix.
    2  DATA: BEGIN OF ls_customer,
    3        customer TYPE /BI0/OICUSTOMER,
    4        objver TYPE RSOBJVERS,
    5     END OF ls_customer,
    6      lt_customer LIKE TABLE OF ls_customer.
    7  REFRESH: lt_customer.
    8  LOOP AT DATA_PACKAGE.
    all customers from data package
    9    ls_customer-custno = DATA_PACKAGE-custid.
    10  ls_customer-objver = 'A'
    11    APPEND ls_customer TO lt_customer.
    12   ENDLOOP.
    12  SORT lt_customer.
    13  DELETE ADJACENT DUPLICATES FROM lt_customer.
    14   IF NOT lt_customer[] IS INITIAL.
    15    SELECT /BI0/OICUSTOMER RSOBJVERS
    16      FROM /BI0/PCUSTOMER
    17      INTO CORRESPONDING FIELDS OF TABLE lt_customer
    18      FOR ALL ENTRIES IN lt_customer
    19      WHERE ls_customer-custno = DATA_PACKAGE-custid
    20      AND ls_customer-objver = 'A'
    21    SORT lt_customer BY customer ASCENDING                    
    22  ENDIF.
    Questions
    Line
    1 - what is the purpose of this line? What is it that is being declared
    2 - in some code I have seen this line with OCCURS 0 at the end what does this mean with and without the term?
    4 - I am using the Data Element name is this correct or should I use the field name?
    3 - 5 here I declare an internal structure/table is that correct?
    6 - here I declare a work area based on the internal table is that correct?
    7 - What would happen if I avoided using the REFRESH statement?
    8 - 12 - Is this syntactically correct, I am trying to get a set of data which is the customer numbers which match the master data customers and the master data record is án active version and than appendíng to the work area?
    13 - My understanding is this will reduce the number of records in the work area is this correct and needed?
    14 - 22 I am trying to identify my required set of data but feel I am repeating myself, could someone advise?
    Finally what logic would I actually need to write in the key figure object, could I use something like:
    Result = lt_customer.
    Thanks
    Edited by: Niten Shah on Jun 30, 2008 8:06 PM

    1. This line is not required
    2. OCCURS 0 is the OLD way of defining an internal table with that structure.  As it is, it just defines a flat structure.
    3. Data element is usually best
    3-5 Yes
    6. No.  Here you are declaring a table of the type of the flat structure.  Just as the ABAP says!
    7. Nothing.  But by putting this in, you ensure that you know the state of the table (empty) before you start looping through the data package
    8-12. You can tell if it is syntactically correct by pressing Ctrl-F2 when in the editor.  Looks ok.
    13. Ensures your list of customers contains no duplicated.  The code up to this point is building a list of all the unique customers in the data package.
    14-22. Goes to the database and brings back ONLY those customers which are found in the master data.  Looks ok.
    This is a start routine (that's why you've got a data package).  You don't use result.  You should update the datapackage.  But this you haven't done.  Double click on the table name /BIC/PCUSTOMER to get the correct field names.
    So you have to loop through the data package again, and check if the customer in the datapackage is lt_customer.  If it is, fine, otherwise you blank it and report an error, or set an error message or whatever.
    I wouldn't do it like this.  I'd do something like this:
    STATICS: st_customer TYPE HASHED TABLE OF TYPE /bi0/oicustomer
                                  WITH UNIQUE KEY TABLE_LINE.
    * st_customer retains its value between calls, so only populate if empty
    * In one run of the infopackage, this will mean you do only one read of
    * the master data, so very efficient.
    IF st_customer IS INITIAL.
      SELECT customer FROM /BI0/PCUSTOMER
                              INTO TABLE st_customer
                              WHERE objvers EQ 'A'. " Only active values
    ENDIF.
    * Go through data package
    LOOP AT DATA_PACKAGE.
    * Check whether the customer exists.
      READ TABLE st_customer TRANSPORTING NO FIELDS
                  WITH TABLE KEY table_line = DATA_PACKAGE-custid.
      CHECK sy-subrc IS NOT INITIAL.
    * If you get here, the customer isn't valid.  So I'm just setting it blank
      CLEAR DATA_PACKAGE-custid.
      MODIFY DATA_PACKAGE. " Updates the datapackage record
    ENDLOOP.
    Even this is not fully optimised, but it's not bad.
    I strongly suggest that you get yourself sent on the basic ABAP programming course if you're going to do a lot of this.  Otherwise, read the ABAP documentation in the help.sap.com, and, from the editor, get the cursor on each ABAP keyword and press F1 to read the ABAP help.
    matt

  • Start Routine Logic Updating Field in Target ODS

    Hi,
    I am creating a  Start Routine to Update Field (date) from one ODS to another based on the Key Structure: Document Number, Line Item Number.
    I am encountering a situation as follows:
    Source
    Doc Num 1 Line Item 10 Date 1/1/1
    Target
    Doc Num 1 Line Item 10 Date 1/1/1
    DocNum 1 Line Item 20
    DocNum 1 Line Item 30
    DocNum 1 Line Item 40
    The Routine I have now correctly updates line item 10 with the date 1/1/1.
    I am trying to modify the code to only update the target ods if all of the line items are in the source.  In this example Line Item 10 would not get updated since Line Items 20,30,40 are not in the Source ODS. 
    Has anyone encountered something like this.
    Thanks for any help.

    Hi,
    If you have all the line items in target for which you want to do updates  you can do this in transformation start routine.
    Try this first hand logic :
    1. Create a internal tables(say SOURCE_INTERNAL_TABLE and TARGET_INTERNAL_TABLE)
        with fields document number and another field integer say COUNTER
    2. Read active table of source for all the document numbers in source package.
    3. Update the SOURCE_INTERNAL_TABLE for all the document number with appropriate counts
        (All the records of same document number should be in same data package)
    4. Update the TARGET_INTERNAL_TABLE by reading the target ODS as done for source.
    5. LOOP  AT SOURCE_PACKAGE
         if COUNTER in SOURCE_INTERNAL_TABLE and TARGET_INTERNAL_TABLE is not same
         then delete the record from source package itself
       END LOOP
    6. Your next code
        (Please take care that you are not referring the deleted records otherwise it will through a dump)
    If you don't have all the line items in target then you need to bring them somewhere in BI (document number and item number only sufficient with both as a key fields) so as to refer them in your start routine.
    Please update me if anything is wrong or if any corrections in logic.
    Thanks and Regards,
    Prashant Vankudre.

  • Start Routine logic problem !

    Experts ,
    in my start routine,
    my Source-field-fieldname has value "ABC123"
    and i need to assing this value in reverse order like "123ABC" to the Infoobject.
    How do i get this output ?
    thankss

    Hi Honar ,
    Please use this code to reverse the strings.I think you want it like
    Input : "ABA123"
    Output : "321CBA"
    for this use below code
    data : v_Input (20) type c .
    data : v_Output(20) type c.
    LOOP AT SOURCE_PACKAGE ASSIGNING <SOURCE_FIELDS> .
    v_Input =   <SOURCE_FIELDS>-FIELDNAME .
    CALL FUNCTION 'STRING_REVERSE'
    EXPORTING
    string =v_Input
    lang = 'E'
    IMPORTING
    RSTRING = v_Output
    EXCEPTIONS
    TOO_SMALL = 1
    OTHERS = 2
    <SOURCE_FIELDS>-FIELDNAME = v_Output .
    ENDLOOP .
    This will work .
    If you have different requirement then please tell me .
    Regards,
    Jaya

  • Start Routine logic to delete records which do not satisfy a condition

    Hello,
    Iam trying to code a start routine to delete the records from the source_package if a certain set of conditions are not met.
    It is failing at the last statement.
    Pls help.
    Thanks
    Jagadish
    code is as follows..
    LOOP AT SOURCE_PACKAGE assigning <SOURCE_FIELDS>.
    IF not (
    ( <SOURCE_FIELDS>-/BIC/ZCLSD_DT BETWEEN <SOURCE_FIELDS>-/BIC/ZWEEKOF
    AND <SOURCE_FIELDS>-/BIC/ZNONWKOF )
      AND
      ( <SOURCE_FIELDS>-/BIC/ZCLSD_DT IS  INITIAL )
    DELETE SOURCE_PACKAGE FROM <SOURCE_FIELDS>.
    (is failing at the delete statement.)
    ENDIF.
    ENDLOOP.

    Thanks Pratap,
    I used an internal table to load the records and used a delete statement out side the LOOP.
    By using a Work Area assignment instead of the Source_fields, The delete statement is giving me an error saying "Conversion of Numeric Value to type Object is not valid".
    Here is the code I have modified...
       TYPES: BEGIN OF LINE,
                WO(6) type c,
              END OF LINE.
       DATA: WA TYPE LINE,
             ITAB TYPE TABLE OF LINE.
    LOOP AT SOURCE_PACKAGE assigning <SOURCE_FIELDS>.
    IF NOT (
    ( <SOURCE_FIELDS>-/BIC/ZCLSD_DT BETWEEN <SOURCE_FIELDS>-/BIC/ZWEEKOF
        AND <SOURCE_FIELDS>-/BIC/ZNONWKOF
      AND
      <SOURCE_FIELDS>-/BIC/ZAPRD_DT IS NOT initial )
    Append <SOURCE_FIELDS>-/BIC/ZWO_NBR to itab.
    ENDIF.
    ENDLOOP.
    loop at itab into WA.
    DELETE SOURCE_PACKAGE where /bic/ZWO_NBR = WA-wo.
    endloop.

  • Start routine logic

    All Open Items  +   (Status Closed  and BLINEDATE <= Last day of the current Month  and Clearing Date > Last Day of the current Month  )
    Need to implement above routine in the star routine,
    To find open item we have a char FI_DOCSTAT if this is u2018Ou2019 it is a open item
    And if this is u2018Cu2019 that is a closed item.
    I know how to get that last month
    Unable to find the logic for the same.
    If you have some time please try to give the logic.
    Thanks,
    Satish

    Hi,
    Take the system date and calculate the Last Date of the month(through FM) then filter out the records.
    Regards,
    Pradeep.
    Edited by: Pradeepkdas on Jan 27, 2012 1:27 PM

  • Start routine logic to delete sourcepackage if there are no entries in itab

    Hi there,
    I am trying to Delete entries from a source_package where
    source_package-material does not exist in itab_ds001(this internal table contain 3000 records, and has columns material, and Batch) and
    source_package-batch does not exist in itab_ds001(this internal table contain 3000 records, and has columns material, and Batch)
    I knew, it can be achieved with 2 loops,
    But the problem is, My full load deal with 4 million records
    --> 4 million times 3000 internal loops.,...takes lot of time to execute.
    so I am looking for some ABAP coding help from experts
    appreciate your time

    Hi, it is very easy.
    LOOP AT source_package assigning <source_fields>.
    READ TABLE itab_ds001 Transporting no fields
    With key material = <source_fields>-material.
    IF sy-subrc NE 0.
    DELETE source_package index sy-tabix.
    ENDIF.
    READ TABLE itab_ds001 Transporting no fields
    With key batch = <source_fields>-batch
    IF sy-subrc NE 0.
    DELETE source_package index sy-tabix.
    ENDIF.
    ENDLOOP.
    Hope it is helpful

  • How do you identify the Logical system in start routine of a transformation

    My scenario is this.  I have five r3 systems that I am extracting from.   In the start routine of the transformation from the r3 data source to my data store I  am going to delete data and I need to know the source system id.    How do I identify the logical system or source system id in the transformation.  Is there a system field that contains this information.    I do not want to hard code the source system id in the routine.

    hi
    have a lool at tables rsreqdone and rsbkrequest with a join you should be able to determine the source.
    regards
    Boujema
    How to give points: Mark your thread as a question while creating it. In the answers you get, you can assign the points by clicking on the stars to the left. You also get a point yourself for rewarding (one per thread).
    Edited by: Boujema Bouhazama on May 9, 2008 12:04 AM

  • Need to run start routine only once

    I understand that for every data package from ODS to Cube, the start routine is run.  But I need to run it only once.  Is there anyway to achieve this?  As the programming logic doesn't really do anything to the data package, I don't need it to be in the start routine.  But as I populate a database table using that routine, which in turn is used in update routines, I need to kick it off before the load from ODS to cube happens.  I think an ABAP routine variant can be kicked off in process chains.  Did anyone use the variant and know how to kick off the routine?  Do I have to write this logic in a function module and then kick it off using ABAP variant in Process chains? 
    I would prefer a way to limit my start routine to run once for every data load rather than kicking it off through process chain.  Can someone discuss which is a good approach and how I go about it?  Thanks for your inputs.
    Sam

    Hi Sameer,
    Let me recap you req. You want to populate a database table in your start routine and need to do it once for a load.
    There is no possible way to limit the no. of times a Start routine is run, but you can find some worksaround.
    Is there anyway you can identify that your DB table is updated with new records, i.e.
    1> You delete and refill table every time
    2> You have some kind of time stamps.
    If one of the above case is true, then you can use that as a check in the Start routine to limit the no. of times the DB table is being populated.
    Regards,
    Sree

  • Need some help on Start routines,

    Hi Gurus,
    I am new to SAP ABAP, I am a BI consultant with 0 ABAP knowledge, Please help me writing a code for the following scenario.(START ROUTINE)
    I have a DSO(S_DSO) as source and cube(T_CUBE) as target, and before extracting the data into T_CUBE i need to validate the data. for this I got one more DSO(LU_DSO) for look up.
    structures of the dso's and cube :
    S_DSO  ............                                                T_CUBE .........   .....                        LU_DSO
    ZDOC_NO  .........                           ZDOC_NO ...........                       ZDOC_NO
    ZPROD_FAM  ........                                       ZPROD_FAM .........       ZPROD_FAM
    QTY   .........    .....................                                                             QTY........
    UNIT_PRICE  ..........                                        UNIT_PRICE.......
    LOGIC
    if S_DSO-ZDOC_NO = LU_DSO-ZDOC_NO AND S_DSO-ZPROD_FAM = LU_DSO-ZPROD_FAM
    THEN
    S_DSO-ZDOC_NO = T_CUBE-ZDOC_NO AND S_DSO-ZPROD_FAM = T_CUBE-ZPROD_FAM AND
    S_DSO-QTY = T_CUBE-QTY AND S_DSO-UNIT_PRICE = T_CUBE-UNIT_PRICE
    please help me to achieve this....please provide code from the initializations of internal tables not just the looping conditions.
    You help will be most appreciated
    Surabhi
    Edited by: surabhi5579 on Mar 28, 2009 8:14 PM
    Edited by: surabhi5579 on Mar 28, 2009 8:16 PM
    Edited by: surabhi5579 on Mar 28, 2009 8:17 PM
    Edited by: surabhi5579 on Mar 28, 2009 8:17 PM

    Hi Viren,
    I did applied the code in Start routine but the out put is not as required.
    My Data model is as follows:
    zmd_dso(source dso)                                        
    zdocno..  zprod_fam.. qty.. price                               
    a001...      A    ...         10   ... 100                                      
    a002 ...    B     ...          20  ...  200                                      
    a003...     C     ...          30  ...  300
    zmd_dsc(lookup dso)
    zdocno ...  zprod_fam
    a001  ....      A 
    a003    ....    C
    desired output
    zdata_ic(target)
    zdoc_no ...  zprod_fam ..  qty   ..  price
    aoo1  ...     A    ...          10   ...    100
      a003   ...    C   ...            30 ...      300
    As per the above table   zmd_dso is the source DSO and Zdata_ic is Target Cube, but in between there is DSO called zmd_dsc which contains zdoc_no and zprod_fam   and after the transfermation u can see the cube filterd by the values in zmd_dsc which is a look up dso. the doc_no "  a002" and the Zprod_fam "B" are not present in the lookup dso and that is the reason why the entries are not visible in the cube after extraction.
    I tried ur code, but the result is same as source dso  i can see all the records which are available in the source dso and it is not cross checking the lookup dso that is Zmd_dsc.
    I hope ur understanding what i meant to say. sorry if i am confusing you.
    Edited by: surabhi5579 on Mar 29, 2009 7:08 PM
    Edited by: surabhi5579 on Mar 29, 2009 7:19 PM

  • What is the logic behind the start routine

    Dear One's,
    Kindly take a moment and explain the logic behind this start routine written in update rules of ODS.
    PROGRAM UPDATE_ROUTINE.
    $$ begin of global - insert your declaration only below this line  -
    $$ end of global - insert your declaration only before this line   -
    The follow definition is new in the BW3.x
    TYPES:
      BEGIN OF DATA_PACKAGE_STRUCTURE.
         INCLUDE STRUCTURE /BIC/CST_T07_O006.
    TYPES:
         RECNO   LIKE sy-tabix,
      END OF DATA_PACKAGE_STRUCTURE.
    DATA:
      DATA_PACKAGE TYPE STANDARD TABLE OF DATA_PACKAGE_STRUCTURE
           WITH HEADER LINE
           WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.
    FORM startup
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
               MONITOR_RECNO STRUCTURE RSMONITORS " monitoring with record n
               DATA_PACKAGE STRUCTURE DATA_PACKAGE
      USING    RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
    $$ begin of routine - insert your code only below this line        -
    fill the internal tables "MONITOR" and/or "MONITOR_RECNO",
    to make monitor entries.
    DATA: ITAB_/BIC/AT07_O00600 TYPE SORTED TABLE OF /BIC/AT07_O00600
          WITH HEADER LINE
          WITH UNIQUE DEFAULT KEY INITIAL SIZE 0,
          DATA_PACKAGE_NEW TYPE STANDARD TABLE OF DATA_PACKAGE_STRUCTURE
          WITH HEADER LINE
          WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.
    sort the datapackage based on lead number and lead program definition
    SORT DATA_PACKAGE BY /BIC/TLDNR /BIC/TLDPRGFTE.
    from the resources ODS read all lead values based on the values those
    SELECT * FROM /BIC/AT07_O00600 INTO TABLE
             ITAB_/BIC/AT07_O00600
             FOR ALL ENTRIES IN DATA_PACKAGE
             WHERE /BIC/TLDNR = DATA_PACKAGE-/BIC/TLDNR.
    FIELD-SYMBOLS: <LS_DATA_PACKAGE> TYPE DATA_PACKAGE_STRUCTURE.
    FIELD-SYMBOLS: <LS_/BIC/AT07_O00600> TYPE /BIC/AT07_O00600.
    loop at internal table of ODS to check if there are lead program defin
    from the source which mean the values of lead program definition in OD
    values of lead program definition in datapackage.
       LOOP AT ITAB_/BIC/AT07_O00600 ASSIGNING <LS_/bic/at07_o00600>.
         READ TABLE DATA_PACKAGE
          TRANSPORTING NO FIELDS
          WITH KEY
          /BIC/TLDNR = <LS_/bic/at07_o00600>-/BIC/TLDNR
          /BIC/TLDPRGFTE = <LS_/bic/at07_o00600>-/BIC/TLDPRGFTE
          BINARY SEARCH.
          IF SY-SUBRC <> 0.
    new lines with zero values are inserted because there are no correspon
    DATA_PACKAGE_NEW-/BIC/TLDNR = <LS_/BIC/AT07_O00600>-/BIC/TLDNR.
    DATA_PACKAGE_NEW-/BIC/TLDPRGFTE = <LS_/BIC/AT07_O00600>-/BIC/TLDPRGFTE.
      DATA_PACKAGE_NEW-/BIC/TLDFTE = 0.
      APPEND DATA_PACKAGE_NEW.
         ENDIF.
      ENDLOOP.
    append the new records which are created for the leads in the datapack
      APPEND LINES OF DATA_PACKAGE_NEW TO DATA_PACKAGE.
    reset the sorting of the datapackage back to its original state
      SORT DATA_PACKAGE.
    if abort is not equal zero, the update process will be canceled
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.
    Thanks in advance

    hi,
    it's retrieve data from table /BIC/AT07_O00600
    and add to data package, so your records will be more than from source
    hope this helps.

  • Need help in ABAP coding in start routine

    Hi,
    I have a requriement like
    -To take the value of month which is an attribute of category(info Object) for which category value is 1. I need to apply the month obtained as the filter to another info object. I have opted to write this ABAP code in start routine. Can anyone guide me on this code.
    Thanks in advance.

    do you not have an abap-er at your disposal? i don't imagine this to be quick & dirty that can be written without access to your system! some analysis work may also be required before the actual coding can be done...so I wouldn't post the entire functional spec (business requirement) here hoping for a solution; that would be too weird.
    Regards.

  • Start Routine to populate the Logical Source System

    Hi Friends please help me with the below
    1. <b>Requirement</b> : to Populate The system Date , Source System
    in BI for Each load request.
    <b>
    1 Solution:</b> I thought of writing the Start Routine for this but it is giving me error
    syntax Error: END METHOD MISSING?????
    2. Also I have requirement to populate 0sourcsys source system id, can any body help how to populate that.
    Thanks
    Poonam Roy
    <b>ABAP Code.</b>
    I have the End Method. what more to do.
      METHOD start_routine.
    *=== Segments ===
        FIELD-SYMBOLS:
          <SOURCE_FIELDS>    TYPE tys_SC_1.
        DATA:
          MONITOR_REC     TYPE rstmonitor.
    <b>
    $$ begin of routine - insert your code only below this line        -</b>
    ... "insert your code here
    <b>
    FORM STARTROUTINE
    USING G_S_MINFO TYPE RSSM_S_MINFO
    CHANGING DATAPAK type TRANSTRU
    ABORT LIKE SY-SUBRC.
    DATA: ZLOAD_DAT LIKE SY-DATUM
    ZZSOURSYS TYPE RSLOGSYS
    IF G_S_MINFO-DATAPAKID=1
    SOURCE_FIELDS-ZLOAD_DAT = SY-DATE.
    SOURCE_FIELDS-ZZSOURSYS = G_S_MINFO-LOGSYS.
    ENDIF.
    ABORT = 0.
    ENDFORM.
    ENDMETHOD.
    ENDCLASS</b>.
    *--  fill table "MONITOR" with values of structure "MONITOR_REC"
    *-   to make monitor entries
    ... "to cancel the update process
       raise exception type CX_RSROUT_ABORT.
    $$ end of routine - insert your code only before this line         -
      ENDMETHOD.

    Hi,
    Check whether the formula is useful here than Routine. Because you can see the Sy-datum , source system( I Guess) fields as avaialable formula elements .
    With rgds,
    Anil Kumar Sharma .P

  • Help needed on start routines in update rules

    Hi All,
    I want to extract data from two data sources(For ex 2LIS_02_HDR, 2LIS_02_ITM).
    I am using 2 first layer ODS' and one second layer ODS for consolidation.I want to write a start routine in the update rules so that the data of the MATNR(Material Number) field from 2LIS_02_ITM will be populated in the second layer ODS when the keys (EBELN) of the datasources are equal in the first layer ODS'.
    Can anyone send me the code for this requirement?
    Thanks in Advance,
    Sanjana.

    i am assuming u have a direct transformation with 2lis_02_hdr
    and u want to look up on the DSO of 2lis_02_ITM to get the material.
    MATNR = 0material
    EBELN = 0docnum.
    put this code in the start routine of the transformation of 2lis_02_HDR.
    TYPES: BEGIN OF s_itm,
                material TYPE /bi0/oimaterial,
                docnum TYPE /bi0/oidocnum,
                END OF s_itm.
        DATA: wa_itm TYPE s_itm,
              t_itm TYPE STANDARD TABLE OF s_itm.
    LOOP AT DATA_PACKAGE.
            SELECT material
                          docnum
            FROM /bic/aDSO_itm
       APPENDING TABLE t_itm
       WHERE docnum = <comm_structure>-docnum.
    endloop.
    IF NOT t_itm[] IS INITIAL.
          SORT t_itm ASCENDING BY docnum.
         DELETE ADJACENT DUPLICATES FROM t_itm      COMPARING docnum.
         ENDIF.
    Now write this below code in the update routine of 0material in the transformation from 2lis_2_HDR.
    CLEAR RESULT.
    READ TABLE T_itm INTO WA_Itm WITH KEY
          DOCNUM  = comm_structure-docnum.
    BINARY SEARCH.
    IF SY-SUBRC = 0.
      RESULT = WA_itm-material.
    ENDIF.

  • Start routine in transformation

    Hi,
        I need to read master data in a start routine only once.If I write a select statement in the start routine , the select is executed for every data package.I want the select to be executed only once and data can be used by all data packages.I tried keeping the code in the global section of the start routine class and that didn't help either.
       Any ideas.
    Thanks in advance

    Hi Siva,
    Then..Use Static Internal table...
    Structured Static Internal Table Definition
    - STATICS itab TYPE tabtype [WITH HEADER LINE].
    - STATICS itab TYPE tabkind OF linetype
    [WITH [UNIQUE|NON-UNIQUE] keydef]
    [INITIAL SIZE n] [WITH HEADER LINE]. 
    - STATICS itab LIKE tabkind OF lineobj
    [WITH [UNIQUE|NON-UNIQUE] keydef]
    [INITIAL SIZE n] [WITH HEADER LINE].
    - STATICS itab TYPE linetype OCCURS n [WITH HEADER LINE].
    - STATICS itab LIKE lineobj OCCURS n [WITH HEADER LINE].
    - STATICS: BEGIN OF itab OCCURS n,
    END OF itab [VALID BETWEEN f1 AND f2].
    STATICS itab TYPE RANGE OF type.
    STATICS itab LIKE RANGE OF f
    @@@@@@@@@@@@@22
    Logic: make flag variable as static variable in global area.
    First data package...
    IF flag EQ ' '.
    Read Master data table and put in STATIC internal TABLE.
    So the next time(next data package)..not read from master data table
    flag = 'X'.
    ENDif.
    LOOP DATA_PACKAGE.
    ENDLOOP.
    @@@@@@@@@@@@2
    Regards,
    San!
    Message was edited by:
            Sandeep Khatri(San!)

Maybe you are looking for

  • Blank screen in itunes 10.5 on t410

    Get a Blank screen when trying to open Itunes store I have installed removed installed software

  • IMP-00008 Strange behaviour of IMPORT utility

    I'm importing a dump file which works fine multiple times. Whenever I use the import argument constraints=N the import starts and after a while hammers the output with strange error messages as listed at the end. As soon as I set the argument to cons

  • Has anyone has worked on 7.4 dual Stack

    Hi Experts Has anyone has worked on 7.4 dual Stack I Have Soap to Soap senario using Remote Fuction module ? can you tell me any one step by step procedure? Regards Sagar

  • Installing Flash Player w/Safari  error message

    Attempting to install Flash Player and error message - Close Safari and safari is closed. Any ideas on how to trouble shoot?

  • RFC Enabling a Function Module

    Hi Friends I need to remote enable a Function Module( for RFCs ) which was already developed some years ago. I need to know what all things I need to take care of when remote enabling such a Function Module. Thanks ~S