Demystifying Calendar Tables in SAP APO
SCAL is the transaction used for calendar maintenance in SAP APO. This transaction will introduce us to following sub-objects:
- Public Holidays
- Holiday Calendar
- Factory Calendar
Calendar configuration in APO can either be transferred from ECC to APO or a can be maintained directly in APO. If you opt for the first method then you cannot update only a single calendar, you must update all calendars in SCM which means all calendars in ECC will be transferred to APO. This kind of process is particularly risky when there are multiple ECC systems involved in the landscape. However, if you want to make limited changes then it is better to configure those changes directly in APO. Once you have performed the required holiday / calendar changes in APO (development client) and are set to create a transport request to move the changes to Production client there is an important point to be noted. The moment you click on the transport icon (in SCAL), you will get a warning message as below
So irrespective of the limited changes done, all public holidays, holiday calendars & factory calendars will be transported. To avoid this we should edit the transport request (TR) such that only specific changes are transported to Production client. Below tables should be edited within the TR no. generated to transfer the changes from development to production client.
Step 1: Decide which Tables should be retained and which ones are to be deleted.
Let us understand what each table signifies
Case 1: If changes are done only to Factory calendar (eg. Change validity dates etc.) Then edit tables 2 to 6 only. Delete rest of the table rows from the TR.
Case 2: If changes are done only to Holiday calendar (eg. Assign new public holiday etc.) Then edit tables 7 to 11 only. Delete rest of the table rows from the TR.
Case 3: If changes are done only to Public holiday (eg. Create new holiday etc.) Then edit tables 12, 13 & 14 only. Delete rest of the table rows from the TR.
Follow similar logic if changes are done to both Factory calendar as well as Holiday calendar.
Step 2: Decide which Calendars / Holidays are to be transported
Assume that we have to transport the changes to Calendar ID A1. So we have to restrict the changes by filtering in Table Key for Calendar A1 only.
Table key is:
- For Holiday Changes: Table key is same as Public hol. ID
- For Calendar Changes: Table key is the combination of primary key for respective table (i.e. Calendar ID) with <*> as either a suffix or pre-fix.
Eg.: A1, *A1, A1*, *A1*
Refer below matrix to know when to use a suffix or prefix of *
If primary key is in first column of table and there is only one entry (row) in the table then the table key is same as Primary key i.e. Calendar ID (A1)
If primary key is in first column of table and there are multiple entries (rows) in the table then the table key is same as Primary key with suffix * i.e. A1*
Below is a table wise summary of various Table Keys.
In case of changes done to more than 1 public holiday then include the public holiday key of all of them. You may also specify range. Eg. 12* will consider all public holidays with public holiday id. 120 to 129. This is applicable for tables THOL, THOLT, THOLU.