Routine in infopackage for selection

I am writing an ABAP routine in an infopackage to select data upto a certain year. I want to load data for all the years upto 7 years ago. However, if I leave the l_t_range-low blank, the infopackage throws an error when I run it saying invalid date range. What's the right way to assign the low value?
l_year = sy-datum(4) - 4.
l_t_range-sign    = 'I'.
l_t_range-option  = 'BT'.
l_t_range-low     = ''.
l_t_range-high = l_year.
modify l_t_range index l_idx.

Hi Uday
Add l_t_range-low = sy-datum(4). Also i see that in l_year you have defined it as sy-datum(4) - 4. So you are only picking latest 4 years. Please change it to 7 if you want the latest 7 yrs.
Regards,

Similar Messages

  • ABAP Routine in InfoPackage for selection

    Hello,
    I have 2 InfoPackages for loading from ODS1 to ODS2. InfoPackage 1 is restricted via ABAP Routine to load only certain customer numbers.
    InfoPackage 2 is supposed to load all other customer numbers - therefore the ABAP Routine makes ranges that exclude the customer numbers selected in InfoPackage 1.
    Now I face the fact that the selection of InfoPackage 2 is much to small in numbers. Problem is, the ranges only work when entered manually - but via ABAP entry these ranges don`t work. I can`t understand why this problem happens. Do you have an idea?
    Example (first number is from, 2nd number is to)
    InfoPackage 1:       customer numbers     
    5| 5
    100|100
    999|999
    InfoPackage 2: customer numbers
    0|4
    4|99
    101|998
    1000|99999
    But selection of InfoPackage 2 does not work propberly...
                                                                                    Thanks for your help,
    Angelika

    Hi,
    no, that was just a typing mistake. Sorry.
    The problem is, that in Monitoring I can see the selection and it looks good.
    But when I check the number of datasets selected it is far to small. Therefore I don`t believe the selection works.
    I tried manually to put all the ranges selected by ABAP Routine in InfoPackage 2 in another InfoPackage 3 - the selection is identically to InfoPackage 2 (but not made via ABAP, but manually) and in Monitoring the selection looks absolutly alike.
    But the manuall InfoPackage 3 selects far more records than InfoPackage 2.
    I can`t understand the problem. Can you? Can you give me advice?
    Thanks,
    Angelika

  • Routine in Infopackage data selection doesnt give appropriate results...

    Hi Gurus,
    I need to pull data into PSA (BW 3.5) based on a certain selections in the Infopackage. Selection is based on specific values of Infoobject 0PLANT , however, as these values are multiple and do not fall in a specific range I have written a routine to derive these values.
    The routine  does the following steps :
    - creates an internal table from /bio/mplant and deletes the plant values that I do not wish to consider in the extraction.
    - delete data from l_t_range for fieldname = 'PLANT'
    - Appends data from the internal table to l_t_range.
    However, when I execute the infopackage, the extraction is done for ALL the 0PLANT values i.e it includes the data for 0PLANT value which have been delete from the internal table.
    My routine is :
    $$ end of global - insert your declaration only before this line   -
        InfoObject      = 0PLANT
        Fieldname       = PLANT
        data type       = CHAR
        length          = 000004
        convexit        =
    form compute_PLANT
      tables   l_t_range      structure rssdlrange
      using    p_infopackage  type rslogdpid
               p_fieldname    type rsfnm
      changing p_subrc        like sy-subrc.
          Insert source code to current selection field
    $$ begin of routine - insert your code only below this line        -
    TYPES ls_range like l_t_range.
    data: l_idx like sy-tabix.
    DATA: lt_plant like /bi0/mplant OCCURS 0 with header line.
              SELECT PLANT from /bi0/mplant into lt_Plant WHERE objvers = 'A
              ENDSELECT.
              delete lt_plant WHERE plant = 'W206'.
              delete lt_plant WHERE plant = 'WF11'.
              delete lt_plant WHERE plant = 'W945'.
              DELETE lt_plant WHERE plant = 'W530'.
              read table l_t_range with key
                   fieldname = 'PLANT'.
              l_idx = sy-tabix.
              DELETE l_t_range where fieldname = 'PLANT'.
              Loop at lt_plant.
                    l_t_range-sign = 'I' .
                    l_t_range-low = lt_plant-plant.
                    l_t_range-OPTION = 'EQ'.
                    append l_t_range.
              endloop.
              modify l_t_range index l_idx.
              p_subrc = 0.
    $$ end of routine - insert your code only before this line         -
    endform.
    Any bugs in the routines ?

    try this one:
    Loop at lt_plant.
    if lt_plant-plant ne 'WF11' or lt_plant-plant ne 'W945' or lt_plant-plant ne 'W530'.
    l_t_range-sign = 'I' .
    l_t_range-low = lt_plant-plant.
    l_t_range-OPTION = 'EQ'.
    append l_t_range.
    endif.
    endloop.
    or
    don't use a table with header ( use a standard table and use a work area to access the table ) and do an other select like this:
    SELECT PLANT from /bi0/mplant
    into corresponding fields of table lt_Plant
    WHERE objvers = 'A
    and plant ne 'WF11'
    and plant ne 'W945'
    and plant ne 'W530'.
    I hope it helps...
    Kind regard.
    Tobias
    Edited by: Tobias Kreuser on Aug 23, 2010 11:34 AM

  • Routine in Infopackage Data selection Tab

    HI,
    I am having one InfoObject (marital staus) in InfoPackage Data selection Tab.
    Now I want to write a ABAP routine for that infoObject in Infopackage to select only those records of  marital status = ‘SINGLE’.
        I am new to ABAP . please let me know what code should I write in this routine.

    Hi Kris,
    You would do it like this:
    data: l_idx like sy-tabix.
              read table l_t_range with key
                   fieldname = 'MARITAL_STATUS'.
              l_idx = sy-tabix.
              move: 'I'      to l_t_range-sign,
                    'EQ'     to l_t_range-option,
                    'SINGLE' to l_t_range-low.
              modify l_t_range index l_idx.
    Thanks,
    Joseph

  • ABAP ROUTINE AT INFOPACKAGE FOR DATE RANGE

    hi all,
    I want to Schedule my infopackge with selection options 
    0DATE  infoobject with First date of current month( 01.02.2008)  to last date of current month ( 29.02.2008).
    this i have to get automatically bcoz i have to use this in process chain.
    so I want to write a routine for this at the infopackage level with ABAP Routine -6 option.
    So please suggest me how to write the code for this case.
    thanks,
    kiran manyam.

    Hi Kiran,
    Please paste the following code there and also check for syntax error.
    data first_date type d.
    data last_date type d.
    first_date = sy_datum.
    first_dat+6(2) = '01'.
    CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
    Exporting
    DAY_IN = first_date
    Importing
    LAST_DAY_OF_MONTH = last_date.
              read table l_t_range with key
                   fieldname = 'DATE'.
               if sy-subrc = 0.
                   l_idx = sy-tabix.
                   l_t_range-sign = 'I'.
                   l_t_range-option = 'BT'.
                   l_t_range-low = first_date.
                   l_t_range-high = last_date.
                   modify l_t_range index l_idx.
                else.
                   move 'DATE' to l_t_range-fieldname.
                   l_t_range-sign = 'I'.
                   l_t_range-option = 'BT'.
                   l_t_range-low = first_date.
                   l_t_range-high = last_date.
                   append l_t_range.
                   endloop.
                endif.
              p_subrc = 0.

  • Routine in InfoPackage for flatfile loading

    Hi Friends,
    Can you give be possiblesolution for my scenario.
    I am getting a flatfile from a Third Party source and I am loading the data into a Cube.
    Recently, we have identified that we are getting duplicate data in the file for the same week.And I am calculating the Calweek based on that date.
    For ex:For week 35, I have same data for date 07/23, 07/24,07/25.When I pull my report for that week, I am getting trippled data in my report.
    So my requirement is to ignore two dates in that file and load only one date's data.
    Can you tell me how to do that?
    Thanks in advance
    Priya

    Adding additional key field will be the option in addition to writing some abap code. In your abap code, you could get the 0CALWEEK of the date field and store it in internal table when loading data, then every time you update, you need to read the internal table to make sure that the data is not updated, if it is, then you need to skip.
    And also if you want to add key in your ods and but don't want to change the existing ods, then you can create another ods with overwrite option which will update to the ods you have now.
    I would recommend changing key of the ods instead of using abap code which will make the loading process slower.
    thanks.
    Wond

  • ABAP routine in the infopackage for Multiple Selection

    Hi experts,
    I want to include a abap routine in the infopackage for Multiple Selection so that I can fetch only the required Material Numbers when the InfoPackage is schedule. As I have the constraints that I have to select certain Material Numbers only, that are not in series - so I cannot select"BT' fuction. Tell me what ABAP Code will work in this scenario.
    Kind regards,
    Rajesh Giribuwa

    Hi,
    The Routine will have to use 'EQ' operator and Append each selections to the Structure.
    ABAP Routine
    InfoPackage definition for Bespoke SIS Structure
    Infopackage routine !
    Regards
    Happy Tony

  • How debug a routine created in InfoPackage for Data selection ?

    Hi everybody,
    I decide to debug a routine create in InfoPackage.
    Here, the name of my ABAP routine:
    program conversion_routine
    form compute_TREATMENT_DATE
    When i execute the "/h" command to launch debugger, i don't see this routine in Call Stack...
    How i can debbug ?
    Any suggestions ?
    Thanks in advance,
    Best regards,
    Rodolphe.

    Debug ABAP Routine in InfoPackage:  
    Put a loop on the routine,
    data : debug(1).
    do.
    if debug = 'X'.
    exit.
    endif.
    enddo.
    And when run infopackage, go to sm50.
    On that process, menu program->debug program.
    In debug screen, type in debug, and fill with X and click 'edit'-pencil icon.
    F5 to next step.
    hope this helps...

  • How debug a routine create in InfoPackage for Data selection ?

    Hi everybody,
    I decide to debug a routine create in InfoPackage.
    Here, the name of my ABAP routine:
    program conversion_routine
    form compute_TREATMENT_DATE
    When i execute the "/h" command to launch debugger, i don't see this routine in Call Stack...
    How i can debbug ?
    Any suggestions ?
    Thanks in advance,
    Best regards,
    Rodolphe.

    Debug ABAP Routine in InfoPackage:  
    Put a loop on the routine,
    data : debug(1).
    do.
    if debug = 'X'.
    exit.
    endif.
    enddo.
    And when run infopackage, go to sm50.
    On that process, menu program->debug program.
    In debug screen, type in debug, and fill with X and click 'edit'-pencil icon.
    F5 to next step.
    hope this helps...

  • Need to write ABAP Routine at infopackage Selection Options

    Hi All,
    I need to write ABAP Routine at Info Package Selection Options.
    Requiremnet i need to bring  some Sales Document Types (Sales Orders Types) only from R/3.
    Ex I need OrderTypes ZQT,ZSIV etc
    Can any body help to resolve this.
    Regards,
    P.C.V.

    Hi P.C.V,
    If the order type field is already available in the Data Selection Tab of the InfoPackage, then you just need to place your selections there (e.g. order type = ZQT, ZSIV) without the need to use ABAP routines.
    If ever you really need an ABAP routine, here is an example ABAP routine. The most important concept is to modify the range table l_t_range so that the selection reflect what you need.
    data: l_idx like sy-tabix.
    data: w_startdate like sy-datum,
          w_startweek like scal-week,
          w_maxdate like sy-datum,
          w_maxweek like scal-week.
      w_startdate = sy-datum.
      w_maxdate = w_startdate + 104 * 7.
    * Calculate horizon for extraction
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE         = w_startdate
        IMPORTING
          WEEK         = w_startweek
        EXCEPTIONS
          DATE_INVALID = 1
          OTHERS       = 2.
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE         = w_maxdate
        IMPORTING
          WEEK         = w_maxweek
        EXCEPTIONS
          DATE_INVALID = 1
          OTHERS       = 2.
              read table l_t_range with key
                   fieldname = 'CALWEEK'.
              l_idx = sy-tabix.
              l_t_range-sign = 'I'.
              l_t_range-option = 'BT'.
              l_t_range-low = w_startweek.
              l_t_range-high = w_maxweek.
              modify l_t_range index l_idx.

  • How to debug a ABAP Routine which is in Infopackage Data selection Tab

    Hi ,
       Please let me know How to debug a ABAP Routine which is in Infopackage Data selection Tab.

    Hi,
    You can try to create infinite loop:
    DATA: STOP.
    WHILE STOP IS INITIAL. ENDWHILE.
    Start InfoPackage and then go to SM50 and swich on debugging for your process. Then in debugger you can change value of STOP variable to skip the loop.
    Krzys

  • Routine in Infopackage selection

    Hi,
    We are using DB Connect and hence we need to write a routine in Infopackage selections to restrict the data to be extracted.
    In the source file, there is a field called " Time stamp".
    This is a Char 23 field with mm-dd-yyyy-hh.mm.ss.sssss format.
    My requirement is lookinto first 10 char ( only for date) and filter the records.  If the date = Sy-datum, then only, i want to extract the data in BI staging.
    Is it possible to write a routine in Infopackage ?   Can you pls help me ?
    Or do i need to take the whole data into PSA and then write a routine in transformation while uploading to Data Target ?
    Regds,
    BW Small

    Hi,
    See the below code for Including  0FISCPER dynamically, so in that way you can write code to get your selection or change the data formate etc.., show this code to ABAPer ask according to this code implement your logic.
    In below code I'm calculating  0FISCPER based on Sy-Datum using FM.
    program conversion_routine.
    * Type pools used by conversion program
    type-pools: rsarc, rsarr, rssm.
    tables: rssdlrange.
    * Global code used by conversion rules
    *$*$ begin of global - insert your declaration only below this line  *-*
    * TABLES: ...
    * DATA:   ...
    *$*$ end of global - insert your declaration only before this line   *-*
    *     InfoObject      = 0FISCPER
    *     Fieldname       = FISCPER
    *     data type       = NUMC
    *     length          = 000009
    *     convexit        = PERI7
    form compute_FISCPER
      tables   l_t_range      structure rssdlrange
      using    p_infopackage  type rslogdpid
               p_fieldname    type rsfnm
      changing p_subrc        like sy-subrc.
    *       Insert source code to current selection field
    *$*$ begin of routine - insert your code only below this line        *-*
      DATA: l_idx LIKE sy-tabix,
            zzdate LIKE sy-datum,
            zzbuper LIKE t009b-poper,
            zzbdatj LIKE t009b-bdatj,
            zzperiod(7) TYPE c.
      READ TABLE l_t_range WITH KEY
           fieldname = 'FISCPER'.
      l_idx = sy-tabix.
      zzdate = sy-datum - 1.
      CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
        EXPORTING
          i_date               = zzdate
    *             I_MONMIT             = 00
          i_periv              = 'V3'
               IMPORTING
         e_buper              = zzbuper
         e_gjahr              = zzbdatj.
    *           EXCEPTIONS
    *             INPUT_FALSE          = 1
    *             T009_NOTFOUND        = 2
    *             T009B_NOTFOUND       = 3
    *             OTHERS               = 4
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CONCATENATE zzbdatj zzbuper INTO zzperiod.
      l_t_range-low = zzperiod.
      l_t_range-option = 'EQ'.
      l_t_range-sign = 'I'.
      MODIFY l_t_range INDEX l_idx.
      p_subrc = 0.
    *$*$ end of routine - insert your code only before this line         *-*
    endform.
    Thanks
    Reddy

  • "Error Occurred in the Data Selection" while excuting InfoPackage for DataSource(ORT_PA_TRAN_CONTROL)

    Hi,
    Can anyone help me out with the data selection error in InfoPackage, while I was trying to extract the DataSource(0RT_PA_TRAN_CONTRL) to BW./
    I've tried with "Init With Data Transfer" and without the use of Conversion Routines.
    Thanks,
    Taehoon.

    Hi,
    Why your using conversion routine at info pack level?
    Actually conversion routine already defined for info object 0MATERIAL, general tab.
    at info pack level, remove conversion routine MATN1 and don't give any selections.
    First try to run data source at source system RSA3. if it works then later you can trigger at info pack level without any selections.
    Thanks

  • I have several disks with many comedy routines;I want to select a few from each disk and combine them to one disk for my personal use.How?

    I have several disks with many comedy routines;I want to select a few from each disk to make one single disk for my personal use.How?

    Copy the routines into a new folder on your hard drive. Then burn the folder to a new blank disc using Disk Utility.

  • Include for Routine in Infopackages

    Hi All,
    i created a routine in infopackage. The extraction is working as expected.
    We have several Infopackages which should work with the same logic.  That means i have to copy the routine in all IP.
    I would like to avoid that by inserting  the routine in an include so that by changing something, the chnage should be central.
    I could i do it?
    Thanks

    Hello,
    you can write a universal routine in se38 and call it in all your IP. You can also implement OOPs concept and use a global class for your requirement. Goto tcode SE24 and declare the class with methods. Call this class in all your IP.\
    Else you can write a global routine in SE38 (INCLUDE) and call this include in all your IP. This what we are doing in our project where we need to implement the same logic in all 10 IPs. We declared a subroutine and call this subroutine every where.
    Regards,
    satyam

Maybe you are looking for