How to load member for "sales same date last year"?

I need to load a member in Measures named "PriorYrSales" with "Sales" for the same date last year as today's date. Thus, retrieving "PriorYrSales" for 2/10/2002 would return the sales amount for 2/10/2001. Since days roll-up to months, quarters, years, it would be easy to determine how we're doing compared to the same time last year.Data is loaded each day for a date range from the current date and the preceding x days. Substitution variables are available for the beginning and ending date and the same dates for last year.For example: Data is loaded from beginning date of 2/01/2002 through ending date of 2/10/2002.The prior year date variables contain 2/01/2001 and 2/10/2001.The time period dimension is as follows:FY01->Jan2001-->01012001 (Alias: 1/01/2001)-->01022001 (Alias: 1/02/2001)-->all the dates in Jan->Feb2001-->02012001 (Alias: 2/01/2001)-->02022001 (Alias: 2/02/2001)-->all the dates in Febetc.FY02->Jan2002-->01012002 (Alias: 1/01/2002)-->01022002 (Alias: 1/02/2002)-->all the dates in Jan->Feb2002-->02012002 (Alias: 2/01/2002) -->02022002 (Alias: 2/01/2002)-->all the dates in Febetc.Thanks your any and all suggestions.Phil

Perhaps I wasn't clear in the first post. The intent is to easily compare sales for a current date/period to the same date/period last year. Neither Excel nor Analyzer provide a method that I'm aware of to retrieve data as follows:-------------------------------------Period Sales PriorYrSales Diff4/15/2002 1,000 900 100-------------------------------------(900 is sales for 4/15/2001)(100 is the calculated difference.)Nor can I do this:-------------------------------------Period Sales Period Sales Diff4/15/2002 1,000 4/15/2001 900 100-------------------------------------What Excel and Analyzer do allow is:-------------------------------------Period Sales 4/15/2002 1,0004/15/2001 900-------------------------------------I readily acknowledge that the data is redundant but I can't think of another option that will allow Excel and Analyzer to easily retrieve the values for comparison. If the PriorYrSales member can be loaded then the users can compare years, quarters, months and days quite easily.My challenge is knowing how use a calc script to derive prior year dates that correspond to current year dates. Something like:PriorYrSales->04152002 = Sales->04152001I've considered arrays but I've never used them and the documentation is not helpful enough for me.Thanks for your response.Phil

Similar Messages

  • Help creating a formula which returns current date last year

    I need help creating a formula which returns the current date last year. I also need it to work during leap years.
    Any ideas?

    Hi Dagros,
    I'm lucky to be a universe designer, I have to do this only once
    The easiest way would probably be to use
    =RelativeDate(CurrentDate();-365)
    So subtractiing 365 to get the same date last year,
    but you would need some extra logic for the years with a feb 29 in those 365 days.
    =If FormatDate(RelativeDate(CurrentDate();-365);"dd") = FormatDate(CurrentDate();"dd")
    Then RelativeDate(CurrentDate();-365)
    Else RelativeDate(CurrentDate();-366)
    Another question to ask is if you really want the same date last year, or if you also want a really 'same day' so monday compared to monday etc. in this case you would just subtract 364 days and get the day 52 weeks back...
    Good luck,
    Marianne

  • How to configure rescheduling for sale order quantities

    kindly explain how to configure rescheduling for sale order quantities that are created last month. kindly explain. i am in urgent.
    regards,
    g.v.shivakkumar

    Hi,
    Short text
    Rescheduling sales and stock transfer documents: by material
    Description
    The 'Rescheduling' program (SDV03V02) processes sales document items that are contained in the item directory for the material. It takes into consideration open items and schedule lines from stock transfer items, stock transfer scheduling agreements and purchase order requests (items only), referred to hereafter as stock transfer documents, for the materials.
    All sales documents for the material that are still open are selected. This means that the material index must be activated for at least all sales document types, whose items may have requirements. All stock transfer documents or items for the material that are still open are also selected. Open in this case means for example, that there is no deletion indicator, that the item from a stock transfer purchase order request cannot be labeled as completed or that the quantity delivered and posted to goods issue for the item in a stock transfer purchase order is the same as the amount ordered. An availability check can only be carried out if a checking rule is assigned to the document type - if this is not the case, the document or document item is not checked.
    Checking rule 'A' is used as a basis for rescheduling sales orders (exceptions to this are rush orders  they use checking rule B, and orders with individual customer stock; they use checking rule AE). Stock transfer documents use the checking rule that is assigned in Customizing for Purchasing. It is important that the scope of checks is consistent for both the stock transfer documents and the sales documents and that they do not exclude each other, as this can lead to incorrect test results. An example of an incorrect setting would be: The scope of check for checking rule 'A' checks delivery schedules for stock transfer purchase orders and stock transfer purchase requests, however the scope of check for the checking rule for the stock transport scheduling agreement does not.
    The items and schedule lines found in the selection are sorted according to 'Priorities' - document category, delivery priority, creation date of the item or schedule line (for stock transfer purchase orders and delivery plans) entered on the selection screen or according to the schedule line date of the earliest schedule line with order quantity, document number and item number and then transferred to the availability check. Priority 1 is highest priority and priority 5 the lowest. Stock transfer purchase order requests are sorted after stock transfer purchase orders and scheduling agreements, as they are less binding. This means that when you have identical sort criteria such as delivery dates, the stock transfer purchase order item is checked first and then the item from the stock transfer purchase order request.
    The preset option 'Unconfirmed documents required' only carries out rescheduling for materials for which there is at least one unconfirmed transaction.
    You can use the parameters 'Sorting criteria delivery date' to define whether sorting is carried out with the order quantity after the creation date of the item or the delivery date of the earliest schedule line.
    If you mark the 'Simulation' field, the checked documents are not saved. Instead a results list is generated and saved. However, the availability check for the corresponding documents continues as if saving has taken place already, that is, that the simulated list corresponds to the actual one.
    Under 'Options' on the selection screen, specify whether sales documents and/or stock transfer documents should be processed. For stock transfer documents you can enter whether stock transfer purchase orders and scheduling agreements should be processed at item or schedule line level:
    Processing at item level:
    All open schedule lines for the item are read and collected, then transferred to the availability check. To sort and prioritize documents, you do not need each individual schedule line. It is sufficient to have the item or data from the first schedule line. All open schedule lines for the item are processed and checked.
    Example of processing at item level:
    Sorting: Date (Delivery date first schedule line) - Document number - Document item
    Doc. cat. Doc. number  Doc. item  Doc. schedule line  Delivery date PO        4500000012      10               0001              26.01. PO        4500000012      10               0002              26.02. PO        4500000025      20               0001              28.01. PO        4500000025      20               0002              02.02.
    You can see that the second schedule line for document 4500000025/20 from 02.02 was processed after the second schedule line for document 4500000012/10 from 26.02. This is because all open schedule lines for an item are read and processed. The first schedule line from 4500000012/10 has the earliest delivery date, therefore it has priority.
    Processing at schedule line level:
    Each open schedule line for an item is entered in document sorting in accordance with the values entered under 'Priorities'. The availability check is carried out for each individual schedule line.
    Example for processing at schedule line level:
    Sorting: Date (delivery date first schedule line) - document number -document item
    Doc. cat.    Doc. number  Doc. item  Doc. sched. line  Del. date PO           4500000012    10             0001           26.01. PO           4500000025    20             0001           28.01. PO           4500000025    20             0002           02.02. PO           4500000012    10             0002           26.02.
    Here you can see that each schedule line was sorted according to its delivery date. Note that this type of processing requires more runtime due to the individual checks and more frequent saving.
    The results of rescheduling are saved, as long as the program was not started in simulation mode. When calling up from the 'Sales' area menu or when directly starting via the development environment, the iniator is informed via a dialog box that he has just started a process that changes data. He can then decide whether or not he wants to continue.
    Checking procedure for stock transfer documents:
    An availability check of stock transfer documents in rescheduling is carried out in accordance with the check carried out when manually creating a document. If, however, the required quantity for a schedule line is not available on a particular date and will not be ready until later, new schedule lines are created for the stock transfer purchase orders and scheduling agreements, containing the relevant data. New items are created in this case for stock transfer purchase order requirements. The total sum of schedule line quantities for a processed schedule line corresponds to the schedule line quantity of the original schedule line.
    First example: Using a stock transfer purchase order item with a schedule line:
    a) Status of item before rescheduling run:
    Del. date  PO quantity   Confirmed quant  Confirmed del. date 23.07.      50 items       0 items              -
    ==> This now affects the stock/requirement situation:
        - Goods issue is posted for the material in the delivering plant on the 23.07.
        - A purchase order of 10 items was created for the material in the delivering plant. Delivery is expected on the 29.07.
    b) Status of stock transfer purchase order item after rescheduling run:
    Del. date PO quantity   Confirmed quant   Confirmed del. date 23.07.     40 items      40 items            23.07. 29.07.     10 items      10 items            29.07.
    ==> The first schedule line was changed in accordance with the results of the rescheduling availability check. Only 40 of the 50 original items could be delivered on the 23.07. Therefore, a new schedule line is created for the rest on the 29.07. for 10 confirmed items.
    Second example: Same output situation as the above example.
    ==> There is now a change in the requirement/stock situation:
    A purchase order for 10 items is created for the material in the delivering plant. Delivery is expected on the 29.07. A further purchase shows another 40 planned items on the 30.07.
       Status of stock transfer purchase order item after rescheduling run:
    Del. date PO quantity  Confirmed quant  Confirmed del. date 29.07.     10 items       10 items          29.07. 30.07.     40 items       40 items          30.07.
    ==> The first schedule line was changed in accordance with the result of the availability check for rescheduling. The original delivery date is set to the date confirmed in the ATP check. A new schedule line is created for the remaining 40 items, that are available on the 30.07.
    Note:
    Any set fixed delivery date and quantity indicators and creation indicators for schedule lines or items are 'inherited' by newly created schedule lines. Assuming that the original schedule line was fixed in the above example (since it is created manually), this indicator is also set for the newly created schedule line.
    If shipping scheduling is activated for a stock transfer document type, this is also implemented for newly created schedule lines, with the exception of route schedule determination. This means that in the current version of the program no route schedule has been determined for a schedule line containing a route schedule for which new schedule lines may need to be created.
    The results of the run are issued in the form of a list, which is also saved, so that the results can be controlled at a later date. This is done using the function 'Evaluate rescheduling', but it is only a good idea to do this after the first rescheduling has taken place. You can restrict selection requirements but these can however affect the runtime. You can use this function to analyze the saved list until the next rescheduling run, which writes over the result. If you start rescheduling in the background, a spool file with the result list referred to will be created in the corresponding setting. You can see this in spool management.
    Output
    A list of changed documents, a list of documents in which an error occurred during processing and as a result were not changed, can be called up via the menu 'Edit - Error log'. If in a subsequent evaluation a restricted selection is carried out, a note appears at the end of the list to say that not all document items are displayed.
    You can set the scope of the list under the menu option 'List' in the list display. You can view improvements, deteriorations and the whole list. Before the documents can be included in one or either of the restricted lists, the date or quantity has to have changed so that the item can be contained in both the list of improved or deteriorated documents.
    You can use the interface for changing transactions and the order list to navigate. Use 'Back' to exit the list and 'New selection' to return to the selection screen.
    Recommendation
    You should only start this program occasionally and use very restricted selectin criteria during working hours as it requires enormous system resources.
    Note
    The columns for 'New date' and 'New confirmed qty' only contain entries if the dates or quantities have changed.
    As the system only runs the change check (dates/quantities) per line in the original list, an item whose backlog has increased in the list of improvements. This occurs, for example, if the whole quantity can be delivered at once but at a later date. In this situation, the system determines an increase for the line when it compares quantities.
    Regards,
    Amrish Purohit

  • Quota is displayed twice in 2006 for the same date

    When iam entering Leave Quota Through PA30 , PA61 ,PT_QTA00
    for a particular Employee it will display the Quota Twice
    Is there any way we can stop this ?
    is there any way we can Put cap that double Entry for the same date ?
    Quota is deducting Normally but it is Displaying Twice
    Plz Help Experts

    Thank You So much
    i changed in the info type
    SPRO>> Time Management>> Time Data Recording and Administration>> Specify System Reaction to Overlapping Time Infotypes
    Infotype 2006
    Time Cstr. Class  01
    Reaction  Indicator   : select according to The  Requirement 
    Right now Reaction  Indicator  is set to W
    Make the Reaction Indicator to E and save the Entry
    It worked for now  
    one thing iam not sure how does  V_T554Y table work
    Plz let me know
    Reaction I ndicator
    This indicator determines how the system reacts when you enter new infotype records which overlap with existing ones.
    The specifications are as follows:
    A - The old record is delimited, all collisions are displayed.
    E - The system does not allow you to create the new record, and
        displays all collisions.
    W - You can create the new record, but the old record   remains unchanged. All collisions are displayed.
    N - As for W, but collisions are not displayed.
    Edited by: jkhose on Jan 25, 2012 1:23 AM

  • Multiple MM schedule lines for the same date

    Hello All Gurus,
    I am facing a problem where the MM schedule lines are divided into various quantites for the same date. For example on 02/11/2010 the total quantity is 120, it is appearing in the below form in ME38:
    02/11/2010 - 40
    02/11/2010 - 40
    02/11/2010 - 40
    Although this is not an error, but my client is not happy with this. Can someone tell me why I am getting this error? Is it because of the rounding value that we maintain in MRP 1 view of material master record? Or is there any other setting that I am missing?
    Please let me  know. I would be very much thankful to you.
    Thanks and Regards,
    Umakanth

    Hi,
    Before changing the setup, note that sometimes it is beneficial to split one demand into multiple delivery schedules. Especially if the demand is bigger than equipment type (container/truck etc.). If you want to manage inbound transportation for such delivery schedules, it is much simpler to do this when each delivery schedule is not bigger than one equipment.
    Regards,
    Dominik Modrzejewski

  • Events cannot have multiple exceptions for the same date

    I just starting getting this message and could not sync to one of my Google calendars. I'm posting this for others who might get the same problem.
    I didn't find the answer on these forums but did find it on this thread on Google:
    http://www.google.com/support/forum/p/Calendar/thread?tid=241155f758d9e2a4&hl=en
    Here's the important excerpt:
    "I had a client, who just had this same issue, nothing to do with Google cals.
    It was apparently, in my best guess, a corruption of the subscribed cal.
    *I did a get info on the cal, copied the URL, deleted the cal, then re-subscribed to it by pasting in the URL, and now it's working fine*."

    I've been having the same problem with my iCal calendars and the "Events cannot have multiple exceptions for the same date" error. Once it gets going, it uses up a lot of the CPU and resources. After reinstalling iCal, all my calendars were missing and I could not even resubscribe to them.
    I took my MacBook Pro to the Apple Store, and they were able to solve the problem by moving some of the iCal files from their existing folders out to the desktop, and reopening the program. That got it working, however, now I'm having the same problem again. So back to square one. Anyone else having this issue and know the cause?
    My setup is my MacBook Pro uses Entourage, use that calendar in my iCal. And I subscribe to two calendars my wife publishes on her Macbook. We're both using Snow Leopard.

  • How to get the difference of two dates in years,months and days

    Hi friends,
    how to get the difference of two dates in years,months and days
    for ex 2 years 3 months 13 days
    select (sysdate-date_Start) from per_periods_of_service
    thanks

    Something like this...
    SQL> ed
    Wrote file afiedt.buf
      1  with t as (select to_date('17-nov-2006','dd-mon-yyyy') as c_start_date, to_date('21-jan-2008','dd-mon-yyyy') as c_end_date from dual union all
      2             select to_date('21-nov-2006','dd-mon-yyyy'), to_date('17-feb-2008','dd-mon-yyyy') from dual union all
      3             select to_date('21-jun-2006','dd-mon-yyyy'), to_date('17-jul-2008','dd-mon-yyyy') from dual
      4             )
      5  -- end of test data
      6  select c_start_date, c_end_date
      7        ,trunc(months_between(c_end_date, c_start_date) / 12) as yrs
      8        ,trunc(mod(months_between(c_end_date, c_start_date), 12)) as mnths
      9        ,trunc(c_end_date - add_months(c_start_date, trunc(months_between(c_end_date, c_start_date)))) as dys
    10* from t
    SQL> /
    C_START_D C_END_DAT        YRS      MNTHS        DYS
    17-NOV-06 21-JAN-08          1          2          4
    21-NOV-06 17-FEB-08          1          2         27
    21-JUN-06 17-JUL-08          2          0         26
    SQL>But, don't forget that different months have different numbers of days, and leap years can effect it too.

  • Problem with bex query listing sales "this month" and "same month last year

    Hi,
    I've created a query in BW BEx, where I have a mandatory variable for 0calmonth, and I list 0material and sales (in volume, liter). And I have a restricted key figure giving me sales (volume in liter) restricted with 0calmonth = variable - 12, to give me the sale for the same month the user select, previous year.
    This seems to be working, the sum is correct, but when adding up the number for the sales in the month previous year, the numbers does not fit the sum in the end.
    I think the report only lists materials with sales the month selected in the variable, if a material has not been sold that month, but in the same month last year, it's not listed in the reports, but it's added in the sum in the end.
    Example.
    We have three records like this:
    material - calmonth - volume
    101 - 01.2010 - 5
    101 - 01.2011 - 8
    201 - 01.2010 - 7
    The report will give the following (calmonth variable = 01.2011)
    Material - volume this month - volume same month last year
    101 - 8 - 5
    Sum 8 - 12
    Any way to solve this issue? We noticed because we run BO - Webi on top of the BEx query, and BO sum's the values per material, and in webi the report would give us the sum 8 and 5.
    Any input is appreciated.
    Regards,
    Øystein

    Hi,
    thanks for your reply.
    The error is that the report only seems to list materials that has been sold "this month", and if the same material was sold the same month last year, it will also list the volume for this.
    But if the material is only sold in the same month last year, it's not listed in the report, but it's calculated into the sum at the end.
    The report is listing material, which is why the error presents itself, as you said
    Getting 8 minus 12 is correct unless you drill down by material. In that case, it should be 8 minus 5 and 0 minus 7.
    The row with 0 - 7 is not shown, and my guess is that the report will only list materials that has sales this month (which has been selected in the variable)
    Regards,
    Øystein
    Edited by: Oystein Gundersen on Mar 21, 2011 4:36 PM

  • User exit to calculate Same period Last Year

    Dear gurus,
    can some help me to code the user exit to calculate the same period last year for bex variable
    i.e
    System date :18.05.2010
    Same period last tear : 18.05.2009
    Your help  highly appreciated
    Thank you
    BR

    Hi,
    The above code creates problem only when date is 29th of Feb.
    To find whether year -1 is leap yr or not include following code also:
    l_year = sy-datum(4)-1 .
    l_mod4 = l_year mod 4.
    l_mod100 = l_year mod 100.
    l_mod400 = l_year mod 400.
    if ( l_mod4 = 0 and l_mod100 ne 0 ) or l_mod400 eq 0.
    if( l_date = 29)
    l_date= l_date -1.
    endif.
    endif.
    Modify your code according to youe need. Hope this helps you.
    Thanks,
    Jitender.

  • SAP Mobile Sales 2.0 delta load issue for Sales Orders

    Hello,
    we have used Mobile Sales 2.0 with a Windows app for a while now. Our current issue is that sales reps won't see any historical sales order data on their devices.
    Background
    Due customer requirements, we need to make small changes to customer master data attributes and reload all customers from ERP to CRM. Then we ran delta loads (MAS_PARTNER followed by all other objects) to DOE, in which virtually all 5000+ customer accounts were compared. The delta load ran for about 3 days (some performance bottleneck we haven't located yet).
    During the delta load, data on devices was inconsistent. Accounts were missing and all transaction data disappeared. After the delta loads, all accounts and contacts are OK, save for a few. Data from activities (appointments, tasks) have reappeared, as they should. Only sales orders won't reappear. The sales orders exist in the backend and belong to active accounts and sales reps.
    Settings and troubleshooting so far
    We don't have any limitations for sales orders in CRM Sales Mobile configuration.
    We've run delta loads for all objects in transaction SDOE_LOAD.
    MAS_CUSTOMIZATION etc seem fine.
    We've re-run initial load for sales orders from CRM.
    In the test system, we've even reinitialized the whole CDS database on DOE and on the devices, then re-ran the loads.
    Checked steps suggested in discussion
    SAP CRM 2.0 initial load issue
    Historical sales orders (those created before the master data reload) exist in the backend, but don't show up on the device.
    If I change one of those historical sales orders in the backend, it gets sent to the device.
    If I create a new sales order in the backend or on the device, it is saved and replicated just fine.
    To sum it up, it seems DOE is unable to identify the sales orders relevant for replication.

    First Doubt i got clarify by my self as we can go with Unwired Runtime option .
    But i still have doubt in :
    2. How can i Modifying the Main Menu for iOS.
    i am able to customize the same for windows using files SybaseCRM.Configuration.xml file.
    Same how can i do for iphone/ipad.

  • How to retrieve the ARCHIVED Sales order data

    Hi All,
    When issuing the output for the delivery, it is giving an error saying 'Sales Order XXXX does not exist' due to which the prices in the output were displayed as '0'. Reason for this can be that 'the order might have been archived'.
    My requirement is,
    1. If Sales Order doesnu2019t exist in data base then need to check if Sales order exists in archive data base.
    2. If  yes, take needed data from archive data base tables to calculate price. The logic of price calculation should be the same as for not archived Sales Orders.
    Can anyone help me on this..?
    Please tell me how to check whether the Sales order exists in the Archived database. Please share the table names(sample logic if possible) sothat I can use them in the report logic.
    Please tell me how to pull the data from the archive database tables to calculate the price.
    Thank you in advance.
    Thanks & Regards,
    Paddu.
    Edited by: Paddu K on Feb 23, 2009 3:42 PM

    *&      Form  get_archive_data
    *       Fetch Archive Data
    FORM get_archive_data .
      CLEAR:    g_read_handle, g_commit_cnt,
                g_read_cnt, g_reload_cnt,it_rel_tab,it_bseg_a,it_bkpf_a,
                it_bset_a, gt_result.
      REFRESH: it_rel_tab[],it_bseg_a[],it_bkpf_a[],
               it_bset_a[], gt_result[].
    *Populating selection screen fields to field-symbols
      PERFORM build_fs_select_options.
    *Call FM as_api_read  FI Data
      CALL FUNCTION 'AS_API_READ'
        EXPORTING
          i_fieldcat                      = 'SAP_FI_DOC_002'
          i_selections                    = ft_selections[]
    *   I_OBLIGATORY_FIELDS             =
    *   I_MAXROWS                       =
       IMPORTING
         e_result                        = gt_result[]
    EXCEPTIONS
       parameters_invalid              = 1
       no_infostruc_found              = 2
       field_missing_in_fieldcat       = 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.
      IF NOT gt_result[] IS INITIAL.
    *Sorting by KEY and Offset
        SORT gt_result BY archivekey archiveofs.
    *To delete duplicates
        DELETE ADJACENT DUPLICATES FROM gt_result COMPARING archivekey
        archiveofs.
    *looping the internal table
        LOOP AT gt_result.
    *Get read handle for  object
          CALL FUNCTION 'ARCHIVE_READ_OBJECT'
            EXPORTING
              object         = 'FI_DOCUMNT'
              archivkey      = gt_result-archivekey
              offset         = gt_result-archiveofs
            IMPORTING
              archive_handle = g_read_handle
            EXCEPTIONS
              OTHERS         = 1.
          IF NOT sy-subrc IS INITIAL.
            MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
                    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            EXIT.
          ENDIF.
          IF sy-subrc = 0.
    *Get Acoounting Document details
            PERFORM object_read_opened
                      TABLES it_rel_tab
                             it_bseg_a
                             it_bkpf_a
    *                         it_bset_a
    *                         it_bsik_a
    *                         it_bsak_a
                             it_bsid_a
                             it_bsad_a
    *                         it_bsec_a
                      USING g_read_handle
                            l_archobj
                            g_commit_cnt
                            g_read_cnt
                            g_reload_cnt
          ENDIF.
    *close the file.
          CALL FUNCTION 'ARCHIVE_CLOSE_FILE'
            EXPORTING
              archive_handle          = g_read_handle
            EXCEPTIONS
              internal_error          = 1
              wrong_access_to_archive = 2
              OTHERS                  = 3.
          IF sy-subrc <> 0.
            MESSAGE i004." 'Unable to close archive session'.
            EXIT.
          ENDIF.
        ENDLOOP.
      ELSE.
        MESSAGE i000 WITH 'No data found for Archived data'(095).
        EXIT.
      ENDIF.
    *Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
      IF NOT it_bkpf_a[] IS INITIAL.
        SORT it_bkpf_a BY belnr.
        DELETE ADJACENT DUPLICATES FROM it_bkpf_a COMPARING belnr.
        DELETE it_bkpf_a WHERE budat GT p_budat. "#ECDK902206
      ENDIF.
    *Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
      IF it_bkpf_a[] IS INITIAL.
        MESSAGE i000 WITH 'No data found for Archived data'(095).
      ENDIF.
    *End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
      IF NOT it_bseg_a[] IS INITIAL.
        SORT it_bseg_a BY belnr gjahr buzei.
        DELETE ADJACENT DUPLICATES FROM it_bseg_a COMPARING
                                              belnr gjahr buzei.
      ENDIF.
    *End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
    ENDFORM.                    " get_archive_data
    *&      Form  build_fs_select_options
    FORM build_fs_select_options .
      REFRESH:  ft_selections.
    *Comapny code
      APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
      <fw_selections>-fieldname  = 'BUKRS'.
      APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
      MOVE p_bukrs  TO <lw_selopt>-low.
      MOVE  'I' TO <lw_selopt>-sign.
      MOVE  'EQ' TO <lw_selopt>-option.
    *Customer
      APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
      <fw_selections>-fieldname  = 'KUNNR'.
      LOOP AT s_kunnr.
        APPEND INITIAL LINE TO <fw_selections>-selopt_t
               ASSIGNING <lw_selopt>.
        MOVE-CORRESPONDING  s_kunnr TO <lw_selopt>.
      ENDLOOP.
    *Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
    **Customer Group
    *  append initial line to ft_selections assigning <fw_selections>.
    *  <fw_selections>-fieldname  = 'KTOKD'.
    *  loop at s_ktokd.
    *    append initial line to <fw_selections>-selopt_t
    *           assigning <lw_selopt>.
    *    move-corresponding  s_ktokd to <lw_selopt>.
    *  endloop.
    *End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
    *Profit Center
      APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
      <fw_selections>-fieldname  = 'PRCTR'.
      LOOP AT s_prctr.
        APPEND INITIAL LINE TO <fw_selections>-selopt_t
               ASSIGNING <lw_selopt>.
        MOVE-CORRESPONDING  s_prctr TO <lw_selopt>.
      ENDLOOP.
    *Commented #ECDK902210
    **Key Date
    *  append initial line to ft_selections assigning <fw_selections>.
    *  <fw_selections>-fieldname  = 'BUDAT'.
    *  append initial line to <fw_selections>-selopt_t assigning <lw_selopt>
    *  move p_budat  to <lw_selopt>-low.
    *  move  'I' to <lw_selopt>-sign.
    *  move  'EQ' to <lw_selopt>-option.
    *Aging Period1
      APPEND INITIAL LINE TO ft_selections ASSIGNING <fw_selections>.
      <fw_selections>-fieldname  = 'ANZTA'.
      APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
      MOVE p_ag1  TO <lw_selopt>-low.
      MOVE  'I' TO <lw_selopt>-sign.
      MOVE  'EQ' TO <lw_selopt>-option.
    *Aging Period2
    *Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
    *  append initial line to ft_selections assigning <fw_selections>.
    *  <fw_selections>-fieldname  = 'ANZTA'.
    *End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
      APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
      MOVE p_ag2  TO <lw_selopt>-low.
      MOVE  'I' TO <lw_selopt>-sign.
      MOVE  'EQ' TO <lw_selopt>-option.
    *Aging Period3
    *Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
    *  append initial line to ft_selections assigning <fw_selections>.
    *  <fw_selections>-fieldname  = 'ANZTA'.
    *End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
      APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
      MOVE p_ag3  TO <lw_selopt>-low.
      MOVE  'I' TO <lw_selopt>-sign.
      MOVE  'EQ' TO <lw_selopt>-option.
    *Aging Period4
    *Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
    *  append initial line to ft_selections assigning <fw_selections>.
    *  <fw_selections>-fieldname  = 'ANZTA'.
    *End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
      APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
      MOVE p_ag4  TO <lw_selopt>-low.
      MOVE  'I' TO <lw_selopt>-sign.
      MOVE  'EQ' TO <lw_selopt>-option.
    *Aging Period5
    *Start of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
    *  append initial line to ft_selections assigning <fw_selections>.
    *  <fw_selections>-fieldname = 'ANZTA'.
    *End of changes by GTHATIKONDA on 16/10/2008 #ECDK902192
      APPEND INITIAL LINE TO <fw_selections>-selopt_t ASSIGNING <lw_selopt>.
      MOVE p_ag5  TO <lw_selopt>-low.
      MOVE  'I' TO <lw_selopt>-sign.
      MOVE  'EQ' TO <lw_selopt>-option.
    ENDFORM.                    " build_fs_select_options
    *&      Form  object_read_opened
    *       To Fetch Arichive Data
    FORM object_read_opened TABLES   it_rel_tab
                                      it_bseg_a
                                      it_bkpf_a
    *                                  it_bset_a
    *                                  it_bsik_a
    *                                  it_bsak_a
                                      it_bsid_a
                                      it_bsad_a
    *                                 it_bsec_a
                             USING value(g_read_handle) LIKE sy-tabix
                                   value(l_archobj) LIKE arch_def-object
                             value(g_commit_cnt) LIKE arch_usr-arch_comit
                               g_read_cnt TYPE i
                               g_reload_cnt TYPE i.
      DATA: BEGIN OF table_wa ,
               table LIKE arch_stat-tabname,
            END  OF table_wa.
      DATA: lit_data(2048) TYPE c OCCURS 1 WITH HEADER LINE.
      DATA:  l_structure LIKE arch_stat-tabname,
             l_lin TYPE i.
      CLEAR: it_table_org1,lit_struc,it_table_org2,table_wa,it_rel_tab.
      REFRESH: it_table_org1[],lit_struc[],it_table_org2[],it_rel_tab[].
      CLEAR: g_duprec,g_read_cnt,g_reload_cnt,g_object_cnt.
    *Read  data from the infostructure
      DO.
        ADD 1 TO g_object_cnt.
        CLEAR l_structure.
        CALL FUNCTION 'ARCHIVE_GET_NEXT_RECORD'
          EXPORTING
            archive_handle                = g_read_handle
         IMPORTING
           record                        = lit_data
    *   RECORD_CURSOR                 =
    *   RECORD_FLAGS                  =
           record_structure              = l_structure
    *   RECORD_LENGTH                 =
    *   RECORD_REF                    =
         EXCEPTIONS
           end_of_object                 = 1
           internal_error                = 2
           wrong_access_to_archive       = 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.
          EXIT.
        ENDIF.
        IF NOT l_structure IS INITIAL.
          table_wa-table = l_structure.
          APPEND table_wa TO it_rel_tab.
        ENDIF.
        APPEND lit_data.
        CLEAR l_lin.
        FIELD-SYMBOLS: <fs_struc> TYPE c.
        CASE l_structure.
    *BKPF data
          WHEN 'BKPF'.
            ASSIGN it_bkpf_a TO <fs_struc> CASTING.
            <fs_struc> = lit_data.
            APPEND it_bkpf_a.
    *BSID data
          WHEN  'BSID'.
            ASSIGN it_bsid_a TO <fs_struc> CASTING.
            <fs_struc> = lit_data.
            APPEND it_bsid_a.
    *BSAD data
          WHEN  'BSAD'.
            ASSIGN it_bsad_a TO <fs_struc> CASTING.
            <fs_struc> = lit_data.
            APPEND it_bsad_a.
    *BSEG data
          WHEN 'BSEG'.
            ASSIGN it_bseg_a TO <fs_struc> CASTING.
            <fs_struc> = lit_data.
            APPEND it_bseg_a.
        ENDCASE.
        REFRESH lit_data.
        CLEAR g_object_cnt.
      ENDDO.
    ENDFORM.                    " object_read_opened
    *&      Form  get_bsid_bsad_archive_data
    *If Exclude Spl. GL Trnasaction is initial get BSID BSAD Archive data  *
    FORM get_bsid_bsad_archive_data .
    *Work Area
      DATA: wa_bsid TYPE type_bsid.
    *Reading BSAD Archive internal table
    *      loop at it_bsad_a   where bukrs eq p_bukrs
    *Start of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
    *Commented by GTHATIKONDA on 10/17/2008 #ECDK902204
      LOOP AT it_bkpf_a  WHERE  bukrs = p_bukrs AND
                                budat LE p_budat. "#ECDK902206
    *End of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
        LOOP AT it_bseg_a   WHERE bukrs EQ p_bukrs AND
                                  belnr EQ it_bkpf_a-belnr AND
                                  gjahr EQ it_bkpf_a-gjahr AND
                                  augdt GT p_budat AND
    *                            koart eq 'D'     and
                                  kunnr IN s_kunnr AND
                                  prctr IN s_prctr.
    *Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
    *    loop at it_bkpf_a  where budat le p_budat."#ECDK902206
    *Move corresponding fiels
          MOVE-CORRESPONDING it_bseg_a TO wa_bsid.
          wa_bsid-blart = it_bkpf_a-blart.
          wa_bsid-budat = it_bkpf_a-budat.
          wa_bsid-bldat = it_bkpf_a-bldat.
          APPEND wa_bsid TO i_bsad.
          CLEAR wa_bsid.
        ENDLOOP.
      ENDLOOP.
      IF NOT i_bsad[] IS INITIAL.
        APPEND LINES OF i_bsad TO i_bsid.
      ENDIF.
    *Start of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
      IF NOT i_bsid[] IS INITIAL.
        SORT i_bsid BY belnr.
    *Commenting this logic by GTATIKONDA on 10/31/2008 #ECDK902245
    *  delete adjacent duplicates from i_bsid comparing belnr.
      ENDIF.
    *End of Changes by GTHATIKONDA on 10/17/2008 #ECDK902206
    ENDFORM.                    " get_bsid_bsad_archive_data
    *Reading BSAD Archive internal table
    *      loop at it_bsad_a  where bukrs eq p_bukrs
    *Start of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
    *Commented by GTHATIKONDA on 10/17/2008 #ECDK902204
      LOOP AT it_bkpf_a  WHERE bukrs = p_bukrs AND  "#ECDK902206
                               budat LE p_budat.
    *End of changes by GTHATIKONDA on 10/14/2008 #ECDK902180
        LOOP AT it_bseg_a  WHERE bukrs EQ p_bukrs AND
                                 belnr EQ it_bkpf_a-belnr AND
                                 gjahr EQ it_bkpf_a-gjahr AND
                                 kunnr IN s_kunnr AND
                                 umskz EQ space AND
                                 augdt GT p_budat AND
                                 prctr IN s_prctr.
    *Changes by GTHATIKONDA on 10/17/2008 #ECDK902204
    *    loop at it_bkpf_a  where budat le p_budat. "#ECDK902206
    *Move corresponding fiels
          MOVE-CORRESPONDING it_bseg_a TO wa_bsid.
          wa_bsid-blart = it_bkpf_a-blart.
          wa_bsid-budat = it_bkpf_a-budat.
          wa_bsid-bldat = it_bkpf_a-bldat.
          APPEND wa_bsid TO i_bsad.
          CLEAR wa_bsid.
        ENDLOOP.
      ENDLOOP.
      IF NOT i_bsad[] IS INITIAL.
        APPEND LINES OF i_bsad TO i_bsid.
      ENDIF.

  • How to load stocks for the months prior to initialization ?

    Hello,
    We load a cube stock from 3 ODS for BF,BX and UM extractors.
    We are in a monthly snapshot scenario(we have read the specific how to but we must use 3 ODS one for each datasource because of data integrity (strong customer architecture contrainst).
    For opening stock and the future month the solution is ok.
    How to load the data for the 12 month prior the loading of opening stock ?
    Specific datasources, full loading ?
    Thanks to share our experiences
    Best regards
    Christophe

    your previous months closing stock becomes opening stock for current month. Try the infostructure S039,this holds the closing stock of each month. You can populate this infostructure with program rmbs039. create a generic data source on this and populate opening and closing stock for each month.

  • Different Info Packages for the same data source.

    Hi Team,
    I have a question, which i asked before that but i ended up with different solution.
    I want to load 02.2002 to till date into ODS. Data source is 0FI_AR_10.
    My boss wants in this way .
    1) one infopackage for 02.2002 to 02.2005 with init.
    2) one infopack for 03.2005 to 07.2008 with init for the same datasource.
    3) one info pack with no selection criteira.
    What will be the result ?
    My guess is, Once we do init for the time period 02.2002 to 02.2005 ,
    the system with note the timepreiod for the Datasource.
    When i try to do Init for the second, the system will say init already exits for the data source. And it will not allow me to do init for the second selection.
    Correct me if  i am wrong.
    Regards,
    -Sonti-

    Your planned InfoPackages:
    - 1) one infopackage for 02.2002 to 02.2005 with init.
    - 2) one infopack for 03.2005 to 07.2008 with init for the same datasource.
    - 3) one info pack with no selection criteira.
    As the selection criteria of package 1) & 2) do not overlap, is it possible.
    For package 3), you need to do it as delta update instead of initialisation.  Package 3) with no selection criteria overlaps with package 1) & 2).
    Refer to the Help Documentation, which explains this quite clearly.
    Link: [Maintaining InfoPackage - Tab Page: Updating|http://help.sap.com/saphelp_nw70/helpdata/en/e3/e60138fede083de10000009b38f8cf/frameset.htm]
    >For selection criteria that do not overlap, several initialization criteria are possible for initializing the delta process when scheduling InfoPackages for data from an SAP system. This gives you the option of loading the relevant data for the delta process, step by step into the Business Information Warehouse. For example, you can load the data into BI for cost center 1000 in the first step, and the data for cost center 2000 in the second step.
    >A delta requested after several initializations, contains the super set of all the successful initial selections as a selection condition. This selection condition can then no longer be changed for the delta.
    Hope this help.

  • How can we read archived sales order data?

    Hi there,
    We need information about sales orders, which are already archived (e.g. VBAK, VBAP).
    How can we read these data from archive?
    Do you know the necessary function modules?
    Thanks a lot for help.

    Hi,
    The main transactions that provide access to sales orders data are the following:
    VA03 Display Sales Order
    ALO1 Document Relationship Browser
    Other:
    KABP Controlling Documents: Plan
    KSB5 Controlling Documents: Actual
    KVBI Sales Documents: Actual Line Items
    Standard Reports:
    S3VBAKAU: Program for sequential reading of archived sales documents
    If at least one of the archiving information structures SAP_DRB_VBAK_01- SAP_DRB_VBAK_02 is active, I suggest to use the transaction ALO1.
    More info can be found at:
    http://help.sap.com/erp2005_ehp_04/helpdata/EN/19/68c149815cfa4997525e0e7d7509bf/content.htm]
    Regards,
    Andrea

  • Loading Error for an Master Data Info Object!!

    Hi all
      I am getting this error for set od records...But actually ...there is no data in that...How it reflects as duplicate records...Pls tell me wht is the solution for this??U can chk the attachment as well as there is no data for the column PE FULL NAME.....   which is the error stack in DTP..
    But  I can see the data in PSA for the particular data packet & record numbers...
    Pls help with regard to the issue.                                                                               
    Error Information:                                                                         
    Diagnosis                                                                               
    There are duplicates of the data record 2 & with the key                
        '000000000000000000000000000001E &' for characteristic ZPENAME &.                                                                               
    System Response                                                                               
    Procedure                                                                               
    If this message appears during a data load, maintain the attribute in   
        the PSA maintenance screens. If this message appears in the master data 
        maintenance screens, leave the transaction and call it again. This      
        allows you to maintain your master data.

    <i>1).If source field length is more than target field length..Is it wrong if we do mapping like this?????</i>
    Yes it is wrong, its okay the otherwise though.
    <i>2)Do u have any idea of long text which exceeds 60???I saw the blog of eugene ,but not sure how far it works..Can u guide me with regard to it as my datasource is created by function module..</i>
    I never dealt with it...sry !!

Maybe you are looking for