Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

Introduction

Even though a lot of information is available with regard to setting up and initializing Material Stocks/Movements using the 2LIS_03_XX-datasources, I often found myself in the position that, for some reason, a re-initialization was required in a productive environment where the complete dataflow was already available. No need for information on how to install the business content or on how to check if the existing movement types are marked as 'relevant to statistics'. What I needed was a step-by-step guide to make sure the stock information was available to the end-users as quickly as possible. That is why I decided to write this document: To explain the steps that have to be performed in order to successfully complete the re-initialization of the Material Stocks/Movements cube (0IC_C03) using the datasources 2LIS_03_BF, 2LIS_03_BX and 2LIS_03_UM.

Audience

This document explains how to re-initialize the Material Stocks/Movements in a productive environment using BI 7.x.

Table of Contents

Introduction

Audience 

Table of Contents

1. Pre-requisites

2. Process Summary 

     2.1 Stock Initializations for Inventory Management (2LIS_03_BX)

     2.2 Goods Movements From Inventory Management (2LIS_03_BF)

     2.3 Revaluations (2LIS_03_UM)

     2.4 The Marker update

3. Initialization: Preparation steps outside goods movements block time-window

     3.1 Make sure to have sufficient authorization in the productive source system

     3.2 Determine the time-window for re-initialization

     3.3 Delete PSA-requests

     3.4 Change the number range buffering for DIM ID's

     3.5 Determine the amount of historical data that is required by the business

4. Initialization: Preparation steps inside goods movements block time-window

     4.1 Close the system

     4.2 Stop the update program to the delta-queue.

     4.3 Delete the existing queues

5. Initialization of the 2LIS_03_BX (Stock Initialization for Inventory Management)

6. Initialization of the 2LIS_03_BF (Goods Movements From Inventory Management)

7. Initialization of the 2LIS_03_UM (Revaluations)

8. Final check source system initialization

9. Extraction to BI: Preparation steps

     9.1 Delete the contents of the Material Stocks/Movements (0IC_C03) cube

     9.2 Delete index on the Material Stocks/Movements (0IC_C03) cube

     9.3 Delete PSA-requests

10. Extraction to BI: Initialization 2LIS_03_BX (Opening Balance)

11. Extraction to BI: Initialization 2LIS_03_BF

12. Extraction to BI: Initialization 2LIS_03_UM 

13. Extraction to BI: Post-processing steps

 

1. Pre-requisites

To successfully perform the steps that are described hereafter, it is required that the following (7.x) datasources are available and active:

  • 2LIS_03_BX (Stock Initialization for Inventory Management) (Sap Help)
  • 2LIS_03_BF (Goods Movements From Inventory Management) (Sap Help)
  • 2LIS_03_UM (Revaluations) (Sap Help)

Furthermore, this document assumes that you have the 7.x business content installed with regard to DTP's, transformations and the Material Stocks/Movements cube (0IC_C03).

2. Process Summary

It might be your first time, or you might have done it a long time ago. However, here is an explanation on the background of the three datasources just to refresh your memory.

2.1 Stock Initializations for Inventory Management (2LIS_03_BX)

The information contained in the stock initialization consists of a snap-shot of the current stock (see picture below). This information is generated in the source system by executing a specific transaction at a point in time where no material movements are taking place. When this data is loaded to BI, you would see only the stock positions for that particular point in time in any report. You would not see any (historical) goods movements because these are being generated using the 2LIS_03_BF (for quantities) and the 2LIS_03_UM (for values) datasources. The datasource 2LIS_03_BX is only used once.

2.2 Goods Movements From Inventory Management (2LIS_03_BF)

In order to see the various movements that have led to the stock positions from the 2LIS_03_BX load, you need to add these (historical) movements using the 2LIS_03_BF initialization. Similar to the 2LIS_03_BX, the initialization table for the goods movements is generated in the source system by executing a transaction that captures all the movements as of a user-defined date in the past. When the initial data load is executed in BI, this table is read and the non-cumulative values are added to the cube. Using this information, you would now be able to see yesterday's stock positions as well by taking the information from the current snap-shot that is available through the 2LIS_03_BX data and deducting the goods movements that took place as of yesterday using the information from 2LIS_03_BF. Setting up the initialization table for the goods movements (2LIS_03_BF) will have to take place right after the initialization of the stock initialization (2LIS_03_BX) where no material movements are still allowed to preserve data consistency. Future goods movements will be picked up by the delta-load for this datasource. The delta-queue is filled by scheduling a job in the source system that transfers all the goods movements from the various tables in the source system to the delta-queue. The initial set-up table for the 2LIS_03_BF is no longer used.

2.3 Revaluations (2LIS_03_UM)

The initialization of the revaluations (2LIS_03_UM) is executed similar to the goods movements and follows the same principles.

After the initialization tables have been filled, material movements are allowed in the source system again. Any movements that take place after this point in time are captured in the delta-queue by means of job scheduling and can be transferred to BI with the next delta-load. In BI, the initialization tables are read by executing the initialization info-packages in BI. From that moment on, the initialization tables are no longer used (unless you want more historical data with regard to material movements that can be added to these tables and read to BI using the 'full repair option'). The delta-load following the initialization-load in BI will read the delta queue.

2.4 The Marker update

Then there is this thing called "the marker". The marker is used when the Material Stocks/Movements (0IC_C03) cube is being loaded and compressed. Remember that you start loading the cube with the initial stock status? You would then have to compress this first load using the marker update. Then you would load any historical goods movements that lead to the current stock (without updating the marker).With this information available, you would be able to see last month’s stock. This would be calculated by deducting all material movements that took place in the last month from the current stock (marker). Any future delta-loads would preferably be compressed using the marker update again. In this case, the current stock would always be available in the fastest way. This is because the marker is up-to-date and does not need to do any goods movement calculations anymore. In short, when I want to see today's stock overview, the marker allows me to open a snap-shot of the current situation immediately. What would happen if I would not compress at all and do nothing about the marker update? Over time, the performance of the info-provider would deteriorate. The initial marker would still point to time X in the past, and as time passed by, it would lie further and further in the past and more goods movements would have taken place after X. Now if I would like to see today's stock overview, the system would take point X in the past and add all the movements that have taken place afterwards until today to calculate today's stock.

3. Initialization: Preparation steps outside goods movements block time-window

Since re-initializing the Material Stocks/Movements datasources in a productive environment requires that no goods movements are taking place, it is important that the time-window required for re-initialization is as short as possible. When well prepared, every task that can be executed outside the time-window will save time.

3.1 Make sure to have sufficient authorization in the productive source system

Too often does it happen that a dry-run in a sandbox or development system is successful but the re-initialization in production has to be postponed because, in the middle of the night, when the time-window was there, the person responsible for the re-initialization did not have sufficient authorization in the productive system.

3.2 Determine the time-window for re-initialization

Various options exist to determine the time-window for re-initialization in a productive environment. Overall, it is recommended to keep a one hour interval between the last goods movement posting and the execution of the actual re-initialization. This is because of the fact that some processes might not have finished yet and might trigger a goods movement after all.

Option 1: Create a time-window by closing the source system for all users

The first (and safest) option is to close the system for all users for a pre-defined time. Do not forget any EDI-interface users that might trigger a goods movement. And of course, make sure not to lock the users that will be involved in the re-initialization. This option requires collaboration with other functional teams and the business to make sure everybody is aware of the system not being available.

Option 2: Search for a time-window by analyzing the delta-queue update run

When a current extraction is already in place, you can use the job details of the program that transfers the goods movements to the delta-queue to determine a proper time window. However, this option requires the job to be scheduled every hour. If the job is scheduled only once a day, option 2 will not work for you. The following steps describe how to analyze the job log.

Step 1: Log on to the source system (R/3 or ECC) in which the initialization will take place.

Step 2: Execute transaction <LBWE>.

Step 3: Click <Job Control> for the logistics application "03 : Inventory Controlling".

Step 4: Click <Job Overview>.

Step 5: Double-click the entries one by one to show the details of the jobs.

Step 6: Add the details of the jobs in Microsoft Excel (or any other spreadsheet you might use). Make sure to have data for at least two weeks to rely on.

With this information available, you can see at what hours zero LUW's are being processed. Check to make sure that for every single day in your file zero LUW's are being processed in the same time-window. If no time-window with zero LUW's is consistently available, you will have to return to option 1.

In my case, when checking the job details for two consecutive weeks, I found that between 01:00 AM and 07:00 AM no material movements were taking place. As described in paragraph 5.2, a one hour safety limit should be taken into account between the last goods movement and the re-initialization. Thus, I would have to set the alarm to wake up at 02:00 AM to start the re-initialization.

3.3 Delete PSA-requests

Since you will be re-initializing the Material Stocks/Movements, you need to make sure that all the current existing PSA-entries in the 2LIS_03_BF, 2LIS_03_BX and 2LIS_03_UM datasources in BI are deleted. Even though you might need to repeat this step because between the preparation and the actual re-initialization another load might take place, it will still save you a lot of time if you only have to delete a single request instead of a couple of thousand requests from the PSA-tables during the time-window that you have available for re-initialization.

3.4 Change the number range buffering for DIM ID's

The next task may be less obvious, but is still important. A while ago, when re-initializing the Material Stocks/Movements I felt happy about the fact that all went well; the initialization in the source system had finished successfully, the stock initialization (2LIS_03_BX) was available in the cube and I was just looking at the monitor to see the progress on the goods movements (2LIS_03_BF) datasource load to the cube. Unfortunately, it didn't go. The job was running, no errors were showing in the system log, no short-dumps, all seemed okay. But no green requests. All requests remained yellow. The reason for this turned out to be the fact that no range buffering for DIM ID's and SID's was used. By default the database provides a SID (master-data) or DIM ID (cube) for every record that is loaded. If you buffer a range of these numbers so that not every single record retrieves its ID from the database, it might save you a lot of time.

The following steps describe how find the number ranges that are relevant for the Material Stocks/Movements cube (0IC_C03). After that, it is described how to enable the number range buffering.

Find the relevant number ranges:

Step 1: Log on to the BI-system.

Step 2: Execute transaction <SE37>, fill <RSD_CUBE_GET> and press <F8>.

Step 3: Enter the values as shown in the picture below and execute.

Step 4: Double-click the <E_T_DIME> to find the number ranges that are applicable to the Material Stocks/Movements cube (0IC_C03).

Step 5: Note down the values for the columns "Dimension" and "NOBJECT". Remove the entry for the package dimension (0IC_C03P). This number range should not be buffered.

Buffer the relevant number ranges:

Step 6: Execute transaction <SNRO>.

Step 7: Fill out the first NOBJECT value from the list and click <Change>.

Step 8: Go to the tab <Customizing> and change the buffering from "No Buffering" to "Main Memory Buffering".

Step 9: Save the changes.

Step 10: Repeat step 7 to 9 for the remaining buffer ranges (NOBJECT values).

3.5 Determine the amount of historical data that is required by the business

In some cases, the business requires much historical information on goods movement due to some KPI-reporting. In other cases, the business is only looking at current stock levels. It is a good thing to determine the amount of historical goods movements that should be initialized since the collection of this data takes more time when more historical information is required. Being backed-up by an official decision prior to starting the load will avoid nasty surprises afterwards.

4. Initialization: Preparation steps inside goods movements block time-window

The following steps describe how to re-initialize the datasources in the source system inside the goods movements blocked time-window.

4.1 Close the system

Step 1: If you make use of the option to close the source system for all users, do this now. If you have used the other option, go to step 2.

Step 2: If possible, wait for an hour to make sure the system has finished any post-processing of jobs that might lead to a goods movement.

4.2 Stop the update program to the delta-queue.

Step 3: Execute transaction <LBWE>

Step 4: Click <Job Control> for the logistics application "03 : Inventory Controlling".

Step 4: Click <Job Overview> and copy the name of the job (which is most likely LIS-BW-VB_APPLICATION_03_101).

Step 5: Execute transaction <SM37> and find the job that is scheduled for the update of the queue.

Step 6: Delete the job.

4.3 Delete the existing queue's

Step 7: Execute transaction <SMQ1> and delete the entry for "MCEX03".

Step 8: Execute transaction <RSA7> and delete the 2LIS_03_XX-delta queues.

Step 9: Execute transaction <LBWG> and delete the setup data for application '03'.

Result: The system is now ready for the re-initialization of the Material Stocks/Movements.

Important: Continuously check that no entry for MCEX03 is created using transaction <SMQ1> during the initialization. This would mean that goods movements have taken place and this should not be possible.

5. Initialization of the 2LIS_03_BX (Stock Initialization for Inventory Management)

Step 10: Execute transaction <MCNB> and fill out the various fields. Make sure the termination data is in the future.

Note: You can make restrictions to materials or plant, providing not all balances are relevant. This provides also the possibility to schedule the report several times. In such cases the data is added to the setup table MC03BX0SETUP.This run is not very time-intensive because the system does not read the individual documents from the very large MSEG table. Instead, it accesses the substantially smaller tables MARC, MARD and so on. Only if you use the option "Zero stock to be transferred" runtime increases rapidly. So use this option only if really necessary (see OSS notes 655798 and 728360 for this).

Step 11: Press <F9> to schedule the job in the background.

Step 12: Execute transaction <SM37> to check the status of job <RMCBINIT_BW>. Wait until status 'complete'.

6. Initialization of the 2LIS_03_BF (Goods Movements From Inventory Management)

Step 13: Execute transaction <OLI1BW> and fill out the various fields. Make sure the end date is set to 31.12.2099. Also, make sure the termination data is in the future.

NOTE: This is where you can make use of the information that was gathered from the business in paragraph 5.5. Fill out the start-date  for posting date according to this value. (Make sure it is still feasible. Collecting various years of goods movement is most likely not going to succeed in a single run.)

Step 14: Execute transaction <SM37> to check the status of the job <RMCBNEUA>. Wait until status 'complete'.

NOTE: If this job fails for some reason, you do not need to use transaction <LBWG> to empty the complete set up data for both 2LIS_03_BX and 2LIS_03_BF and start all over again. You can empty the records from the table MC03BF0SETUP using transaction <se11><Utilities><Database utility> as shown in the picture below and start with step 13 again (see picture below).

7. Initialization of the 2LIS_03_UM (Revaluations)

Step 15: Execute transaction <OLIZBW> and fill out the various fields. Make sure the end date is set to 31.12.2099. Also, make sure the termination data is in the future. You will have to execute the transaction once for every company code.

NOTE: You can run the initialization of the 2LIS_03_BF and the 2LIS_03_UM in parallel.

Step 16: Execute transaction <SM37> to check the status of the jobs <RMCBNERP>. Wait until status 'complete'.

8. Final check source system initialization

Step 17: Execute transaction <SMQ1> to make sure that no queue exists for "MCEX03" and thus no entries have been posted during your initialization.

If everything has been successful, you have finished the setup and the system is allowed to process goods movements again.

9. Extraction to BI: Preparation steps

The following steps describe how te prepare the BI-system for the initial loads of the various datasources.

9.1 Delete the contents of the Material Stocks/Movements (0IC_C03) cube

Step 1: Log on to the BI-system.

Step 2: Execute transaction <RSA11> and locate the Material Stocks/Movements (0IC_C03) cube.

Step 3: Right-click on the cube and select <Delete data>.

9.2 Delete index on the Material Stocks/Movements (0IC_C03) cube

Step 4: Right-click on the cube and select the tab <Performance>.

Step 5: Click <Delete DB Indexes (Now)>.

9.3 Delete PSA-requests

Since you will be re-initializing the Material Stocks/Movements, you need to make sure that all the current existing PSA-entries in the 2LIS_03_BF, 2LIS_03_BX and 2LIS_03_UM datasources in BI are deleted.

10. Extraction to BI: Initialization 2LIS_03_BX (Opening Balance)

Step 6: Execute an info-package for datasource 2LIS_03_BX for the initialization of the stock positions. The initialization reads table “MC03BX0SETUP”.

Step 7:  Execute the Initialization DTP for the datasource 2LIS_03_BX. Make sure to use the “Initial Non-Cumulative for Non-Cumulative”-Extraction Mode.

Step 8: Compress (collapse) the request without using the "No Marker Update" (checkbox is empty).

11. Extraction to BI: Initialization 2LIS_03_BF

Step 9: Execute an info-package for datasource 2LIS_03_BF for the initialization of the stock movements. The initialization reads table “MC03BF0SETUP”.

Step 10: Execute the Initialization DTP for the datasource 2LIS_03_BF.

Step 11: Compress (collapse) the request using the "No Marker Update" (checkbox is checked).

 

12. Extraction to BI: Initialization 2LIS_03_UM 

Step 12: Execute an info-package for datasource 2LIS_03_UM for the initialization of the stock revaluations.

Step 13: Execute the Initialization DTP for the datasource 2LIS_03_UM.

Step 14: Compress (collapse) the request using the "No Marker Update" (checkbox is checked).

13. Extraction to BI: Post-processing steps

Step 15: Schedule the update again which was stopped in paragraph 4.2 using transaction <LBWE> in the source system.

Step 16: Undo any changes to the buffer-ranges that was done in paragraph 3.4 using transaction <SNRO> in the BI system.

Step 17: Clear the marker <No Marker Update> in the tab “collapse” for the cube 0IC_C03. This check-box is not used anymore from now on.

Step 18: Schedule the delta-packages for the datasources 2LIS_03_BF and 2LIS_03_UM.

28 Comments
Labels in this area