Skip to Content
Author's profile photo Ravi Malpani

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

1.JPG

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

2.JPG

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 *

3.JPG

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.

5.JPG

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.

Assigned Tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Arvind Pereira
      Arvind Pereira

      Ravi. Would you say that the material that you have written is useful for SAP HR moudle?

      Author's profile photo Ravi Malpani
      Ravi Malpani
      Blog Post Author

      Sorry Arvind. I am not 100% sure about this.

      Author's profile photo Former Member
      Former Member

      Hi Ravi,

      Can we someway prevent holiday transports from Development to Quality to Production ?

      As we wanted to directly modify the existing Factory Calendar in Production system & then
      generate timestream in production system itself.

      Anyway possible ?

      Thanks in advance..

      Author's profile photo Ravi Malpani
      Ravi Malpani
      Blog Post Author

      Hi Mahesh,

      Yes. You can prevent holiday transports. You will have to edit the TR requests and delete the table entries (Eg. No. 12, 13 & 14) as mentioned in Step 1 of the blog.

      Regards,

      Ravi

      Author's profile photo Former Member
      Former Member

      Hi Ravi,

      Let's say in Development system I goto SCAL & select a Holiday Calendar, click change, select ID (Ex: 05 Germany) -> Assign Holiday -> Select Date & Save.

      It asks for TR. We wanted to prevent this TR creation & movement as frequency of holiday request is high.

      Can there be a way to directly do this in Production system (using function module or any approach) ?

      Thank you..

      Author's profile photo Ravi Malpani
      Ravi Malpani
      Blog Post Author

      Ofcourse you can do it in production system. You just need to have the required authorization. I am not aware of any FM or any other alternative appraoch to achieve this.