Skip to Content

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.

You must be Logged on to comment or reply to a post.
  • 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..

    • 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.



      • 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..

        • 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.