Skip to Content

What is Master Data Partition?

     Master data partition is division of the data using specific key. This can be done either using logical partition or physical partition at database level.

     Logical partition is done, where numbers of attributes are huge and can be grouped together as single entity, whereas database partition is required to be done, when volume is too large. Typically database partition is done on specific set of tables.

Why Use Master Data Partition?

  1. When data volume is over million records, partition helps in data loading / retrieval.
  2. This improves data loading time

   c.  Improves query performance

How to do Master data partition?

There are various steps involve in partition of master data. Below steps are to be done in each system in landscape individually. These are not transportable!!!


Step 1 – Identify the tables for partition

     Typically master data has P, X, S tables. If there is text, then there is T table. If object is time dependent master data, then Q and Y table will be required.

  1. Check the volume is each table
  2. If table volume is over million records, it should be partition.
  3. While selecting SID table – S table, consider the points mention in below sections.
  4. If you have higher version of DB6CONV utility (above 4.10), use program RSDB6PARTGEN to get more details.

Step 2 – Have a data class defined for partition

  1. This is Basis activity. Separate data class is required to be created.
  2. A data class is the counterpart of a table-space in the SAP system. It combines a data table-space with an index table-space and defines a logical name for this combination. This logical name is referenced in the ABAP Dictionary and in the BW metadata.
  3. Basis team has to create a data class.
  4. This data class can be then assigned to master data object.
  5. To assign data class – edit the info object in RSD1. Go to Extras > Maintain DB parameters

IO setting.JPG

Step 3 – Partition the table (P / X / T / Q / Y)

  1. This activity can be done by Basis team or BW consultant.
  2. Before starting this activity, ensure that there are no data loads / roll up going on for this object. Try to do this activity during non-peak hours, to reduce the impact. Also this is best done when there is no data in the tables.  (Typically plan this activity if new object is sent to production. Do these activities on existing object with data will take time and that object is not available during that period for reporting).
  3. Use SAP standard program – DB6CONV in SE38
  4. Click on New Conversion > Use Data class.
  5. Enter the table name and data class.DB06.JPG
  6. Additional option – online conversion / Offline conversion. These depend on volume of data and current usage. In case, the object is not used – offline conversion is ok. But if object is used, go for online conversion.
  7. Ensure “Update Statistics after Conversion” is checked.
  8. Schedule the job in back ground.
  9. The main screen of DB6CONV shows the status of job running and details about each step can be seen under “Display Log File”.
  10. Once job status is finished, partition of the table is done.
  11. Quick way to check if the table is partition or not. Go to SE14.
  12. View table and then “Storage Parameters”

SE14.JPG

Step 4 – Partition the SID table (S)

  1. SID table partition is not recommended, but if done, it improves the performance a lot.
  2. SID table alone cannot be partition as is. For partition of SID table, additional index is required to be created on the info object.
  3. Go to SE11 > view SID table to the object.
  4. Click Indexes. Application will show the existing index on info object.
  5. Edit the index.
  6. Add the info object as part of the index field.
  7. Once index is created, follow same steps as in step 3 of this document.

You should have authorization to do this activity. Else basis person is required to do these steps. Also, many times the index does not get created in database, but only exist on application layer. Basis person will have to create it manually in DB.

SE11 SID.JPG

SID 2nd Index.JPG

Transport for Master Data Partition

In each system in landscape, partition has to be done manually. This activity is not transportable.

For P / X / T table

  1. 1st time when object is moved across landscape, perform the activity for partition manually (step 2 & 3).
  2. Next time onwards (any change – added attributes / made then navigational etc) – system will take care of the object.
  3. Only issue is time taken to move the object. Say X table is partition, when new object is added to this main master data, navigational attributes get generated. Hence transport of this will run for long time during import and chance of import job getting cancel is high.
  4. Work around for this — manual method – Not support by SAP neither recommended by me!
    1. Copy the data from X / P / T table.
    2. Truncate table data.
    3. Import transport
    4. Reload the data from back up.

  This all activity can be done by basis team. It is risky and all depends on way back up is taken.

For Q / Y table

  1. If you are adding time dependent attribute, then you can follow same steps as for table P / X.
  2. If you are making non-time dependent attribute as time dependent, then you can follow same steps as for table P / X.
  3. If you are making time-dependent attribute as non-time dependent, follow below steps:
    1. Identify the object that is required to be made non-time dependent. Remove this object from master data.
    2. Send the transport to next system in landscape and let the main master data object get activated (without your time-dependent attribute).
    3. Now add back the time-dependent attribute as non-time dependent in main master data object and send new transport.

  If step a and c are done in same transport, transport will fail and your object will be inactive. Follow each step one by one.

For S SID Table

  1. If SID table is already partition in landscape, transport with changes will always fail.
  2. Reason for this – the additional index added as part of step 4 (in this doc) is not transportable.
  3. When transport gets imported to another system, it tries to over write SID table. In doing so, it delete the existing index and create new one. Since table is already partition, it fails, as new index don’t have modified structure (as per step 4).

       Below are error messages when transport fails.

error.JPG

error2.JPG

  1. If SID table is partition and new changes have to be moved, there is only 1 way around.
  2. Follow below steps:               
    1. Take backup of SID table
    2. Undo the partition – this is very critical step. To undo a partition please refer below part.
    3. Import the transport
    4. Redo partition and Restore data from back up.


Converting a Partitioned Table Back to a Normal Table

You can use the following procedure to convert a partitioned table back to a non-partitioned table:

  1. Go to SAP transaction SE14 and enter the table name.
  2. Click on Storage Parameters
  3. Click on “For new Creation”
  4. Select Computed from technical Settings
  5. If necessary adapt the storage parameters, e.g. add COMPRESS for row compression.
  6. Save the storage parameters.
  7.   Perform a normal table conversion with DB6CONV

All above are based on my learning and method used in my project. Few things may be done differently / may not work in other environments.

To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

  1. Sefan Linders

    Hi Gaurav,

    Good read, thanks for the article. I see that you mention the benefit of SID table partitioning that greatly improves performance, but that there is also the downside of going through a lot of work when transporting. Currently I’m loading a BW system with SID tables that go from 5 – 100 million records, and when loading the cube the reading of the SID tables (to check if SID value exists) takes a lot of time. We alraedy turned number range buffering on which greatly improved the creation of new SID’s, but reading the SID’s still takes a long time. Would you know if partitioning the SID tables would improve the performance here as well?

    (0) 
    1. G Desh Post author

      Yes performance will improve. But do take into consideration the downside, in case you are making a SID partition. Any new enhancement to the object will have to be manually handle. Its risky and tricky.

      (0) 

Leave a Reply