This tutorial describes step-by-step procedure of creating and adding a new holiday to holiday and factory calendar.
Note: It is not recommended to make any changes to the factory calendar in a production system.
All the calendar data should be maintained in a customizing system.
Updates are done via transports from the customizing system.
As a special case a customizing client in the productive system can be established.
Changes in the customizing client will then directly affect the productive system, as the calendar data is client-independent.
SAP Calendar:
SAP calendar master consists of three separate sub-objects which are inter-linked to each other:
- Public Holidays,
- Holiday Calendar and
- Factory Calendar.
Public holidays :
Public holidays can be defined and be combined into holiday calendars.
Public holidays describe the statutory holidays for a particular country or region within a country.
Types of Public holidays:
- Fixed date
- Fixed day of week from a specific date
- Specific number of days before or after Easter (Sunday)
- Easter Sunday
- Moveable holiday (with individual specification of dates during each specified year).
For holidays with fixed date (such as Christmas) and moveable holidays it is possible to specify simple rules guaranteeing the holiday if it falls on certain days of the week (Thu, Fri, Sun, Sat/Sun). For instance, Christmas day public holiday may be moved to the next working day if it falls on a Saturday or Sunday.
Holiday calendar :
Holiday calendar is assigned to each factory calendar.
Factory calendar
Factory calendar contain company specific dates such as alternate working Saturdays and holidays.
T-Code : SCAL
IMG SPRO -> Time Management -> Work Schedules
Step 1: Create Public Holidays
- Select the radio button Public holidays.
- Click Change button .
- On Change Public Holidays: Overview screen click Create button .
- A pop up window appear to select the Type of Public Holiday.
Type of Public Holidays
- with fixed date: This public holiday falls on the same date every year (e.g. Christmas Day).
- Enter the Public Holiday Definition.
- Day (e.g. 25)
- Month (e.g. 12)
- Guaranteed : specify whether the public holiday should be moved or not if it falls on a weekend.
- Not Guaranteed: Indicates that the public holiday should not be moved if it falls on a weekend.
- Thursday, Friday, Sunday, Saturday/Sunday: If the public holiday is to be "guaranteed", i.e., should be a day off in any case, you have to specify the workday to which the public holiday should be moved.
- Enter the Public Holiday Attributes:
- Sort Criterion: use this to display logically related holidays in a block, e.g. all holidays for a country.
- Religious Denomination: (e.g. Christianity).
- Public Holiday Class: this specifies the holiday type. It can be used to determine the groups of holidays and normal days. (e.g. '1' is ordinary public holiday).
- Give Long/Short Holiday Names.
- Click Create icon .
- Enter the Public Holiday Definition.
- Floating Public Holiday: This public holiday is not fixed. It must be defined explicitly each year. (e.g. Vesak Full Moon Poya Day).
- Enter the Public Holiday into relevant boxes: Year/Month/Day (e.g. 2012, 05, 05).
- Enter the Public Holiday Attributes and click Insert Date icon.
Step 2: Create Holiday Calendar
To assign public holidays in a holiday calendar, we need to maintain one or more holiday calendars to accommodate the differing holiday schedules of our company.
- Select the radio button "Holiday Calendar".
- On Change Public Holiday Calendar: Overview screen click Create button .
- Enter the Calendar ID and the Name of the calendar. A holiday calendar is identified in the system by a two-character calendar ID.
- Enter the validity of the calendar.
Assign Holidays
- Click on the Assign Holiday button to assign the holiday.
- From the Insert Public Holidays into Holiday Calendar screen, search for the respective calendar and select the holidays you want to allow.
- Click on the Assign publ.holiday Button.
- The public holiday gets added; click on save button to save the holiday calendar.
- Acknowledge all the messages.
Step 3: Define the Factory Calendar
- Select the working days and assign a holiday calendar to factory calendar.
- Select the radio button "Factory Calendar".
- Enter the Factory Calendar ID (same as the Holiday Calendar) and the Factory Calendar Name.
- Enter the Holiday Calender ID.
- Save.
Special Rules:
Special rules are used to define a date (or periods) as a holiday or as a workday, which is not maintained in the holiday calender (which is applicable for that year only).
In the Public Holiday definition you can determine if a holiday should be moved if it falls during weekends.
You can assign this special rules accessing the "Change Factory Calendar: Details" :: Special Rules button.
- Go to Factory calendar (change) --> change calendar --> Special rules.
- Enter the date and specify if it is a holiday or workday, then save.
- The Special rules have higher priority than holiday calendar holidays or workdays.
Finally, click Year Overview and check for the dates.
Final Step: Transport the Calendar
All changes made to the holiday or factory calendar must be transported manually.
Calendar Functions
Once the SAP Calendar is configured properly, you can use this data to perform various types of calculations.
SCAL function group consists of some predefined function modules that can be use to determine whether or not a given date is a working day, holiday, etc.
Function Module | Description |
---|---|
DATE_COMPUTE_DAY |
Computes the day of the week for a given date. Day values are calculated as 1 (Monday), 2 (Tuesday), and so on.
|
DATE_COMPUTE_DAY_ENHANCED |
Computes the day of the week just like DATE_COMPUTE_DAY; also returns the day value as text (e.g., TUESDAY, etc.).
|
DATE_CONVERT_TO_FACTORYDATE |
Calculates the factory date value for a given date. Also provides an indicator that confirms whether or not the given date is considered a working day according to the selected factory calendar.
|
DATE_GET_WEEK |
Determines the week of the year for the given date. For example, the date 9/13/2010 would be the 37th week of the year 2010.
|
FACTORYDATE_CONVERT_TO_DATE |
Converts a factory date value back into a date object.
|
HOLIDAY_CHECK_AND_GET_INFO |
Tests to determine whether or not a given date is a holiday based on the configured holiday calendar.
|
WEEK_GET_FIRST_DAY | Calculates the first day of a given week. |
As December comes to a close, The new year is just around the corner, and it's a good time to maintain your Factory Calendar for the coming year (if you haven't already done so); I hope this simple guide will help you.
Average User Rating
(23 ratings)
Comments
- Very thorough post, thank you! Perhaps it would make sense to tag it with SD and MM, so that it shows in those spaces too. I'm sure it'd be beneficial to all the SD/MM consultants.By the way, factory calendar may also be used in the background job scheduling (SM36), when setting up schedule exceptions for holidays/non-working days.Like (0)
- Dear this is very good documentThank you so much for sharing ....Like (0)
- Hi Rajesh,Depending on your company's policies; which department is responsible for defining the rules of company specific dates such as: alternate working Saturdays, compensating holidays (if the holiday falls on weekend), floating holidays, plant shutdown etcWhether it's SD/MM/HR, whomever decide on the company Holidays, should create the SAP Factory Calender as well.Like (1)
- Is there any way to customize the calendar? We want to keep only few days open for user to be selected from only one screen. No restrictin on calendar for other screens.Is is possible thru customization?Thanks. - D.Like (0)
- Hi D'Hari,Since your requirement is to restrict only one single selection screen, it seems you need not to modify your factory calendar. Even if you've modified the factory calendar, the user may still choose to manually type in a date rather than use the calendar search help.So, best solution is to validate the date input at selection screen using:AT SELECTION-SCREEN ON date_field.PERFORM validate_date USING date_field.See this thread also: http://scn.sap.com/thread/3263052Like (0)
- Nice Work KaushalyaU did a splendid job, I really appreciate it.. keep posting more like this..CheersPradypLike (0)
- Thanks Pradyp! I'm glad you appreciated it!!Like (0)
- hi kausalya ,nice job ....come up with more like this ......keep going .....Regards,Jwala.ESS MSS.Like (0)
- Thank you Chandra!Like (0)
- Thank you Anshu, I'm glad it was useful!!Like (0)
- As December comes to a close, 2013 is just around the corner, and it's a good time to create your Factory Calendar for the new year (if you haven't already done so); I hope this simple guide will help you.Not only in 2013 , This guide will help for all years ,Thanks For Sharing.Regards,Seshu.PLike (0)
- Thank you Seshu for your comment!!HeheAs December comes to a close, 2013 is just around the corner, and it's a good time to create your Factory Calendar for the new year (if you haven't already done so); I hope this simple guide will help you.This part is there because I wrote it last year it's high time I should update the blog!Like (1)
- Thank you Sushant!Like (0)
- Hi Kaushalya,Thank you for sharing this.I am getting into Oil & Gas and need to know what areas to learn.Thanks in advance..Like (0)
- Hi Sow Ganesan,Thank you for the comment.But, mind you; this is not the correct space to post this questionHowever, the answer to your query may vary depends on your business requirement.Basically, SAP Industry solution for Oil & Gas is divided into two streams:- Upstream- DownstreamBelow are some of the helpful links to get you started:SAP for Oil & Gas – SAP Help Portal PageJoin the SAP Oil & Gas SCN Community Network to share your knowledge:Go to training.sap.com where you can find plenty of training courses:Good Luck!Like (0)
- Thanks Wasem for your comment!Like (1)
- Kaushalya-Very good document.Thanks for sharing.Regards,IbrahimLike (0)
- Thanks Saikat! I'm glad you appreciated my work!!Like (0)
- Amazing post! It was very useful if you want to create calendar and define the labour not labour days.ThanksLike (0)
- Thanks Mario, I'm glad it was useful!Like (0)
- Good document..Very useful for the year start or at the time of implement..Nice effort..RegardsLike (0)
- Thanks Dëv! I'm glad it was useful!!Like (0)
- Thanks Jeewana for your comment!Like (1)
- Thanks Bruno for your comment!Like (0)
- It is a very helpful document, excellent work! Thanks PereraLike (0)
- Thanks Mohammad, I'm glad it was helpful!Like (1)
- Thanks for sharing
*IMG SPRO -> Time Management -> Work Schedules -> Define Public Holiday ClassesLike (0)- Thanks Ghaith for your comment!Like (0)
- Thanks Jose for your comment!Like (0)
- Thanks for your comment, I'm glad it was helpful!Like (0)
- Thanks Priyan, I'm glad it was useful!Like (0)
- Good Work Kaushalya . You've done it very clearly ..thanks.Like (0)
- Thanks dear for the comment!Like (0)
- Excellent work....Will be helpful in near future.Good luck Kaushalya...!Like (1)
- Thanks dear for the comment! I'm glad it ll helpful!Like (0)
- Greetings Kaushalya,You write that: It is not recommended to make any changes to the factory calendar in a production system.All the calendar data should be maintained in a customizing system.Updates are done via transports from the customizing system.However, there is an important consideration here, in that, as for example mentioned by Lalita Kadambala thatYou cannot transport individual public holidays or calendars. You can only transport calendar data in its entirety. When you do this, all public holidays, public holiday and factory calendars existing in the target system are deleted.Therefore it's advisable to first check whether there are any discrepancies between the settings in your Dev and Prod system, or whether there are any test settings in Dev that should be rectified prior to transport.See the threads on SCNI am wondering about what are the experiences with maintaining the Factory Calendar, whether it's more often transported (after a manual check of settings), or rather maintained directly in Production (not advised by SAP)....Like (0)
- Hi,Thanks for the document.Is there a way to define the first day of the week ?I have a specific need where each week must start on Tuesday and ends on Monday.Thank you !Like (0)
- Greetings Maxime,I believe you can use the Factory Date Start field in the Factory Calendar definition for that purpose. (I think you'll need to specify "+1" as your offset). Also define your off-work days there.Please see the thread here and the final post from Carlos Serrano:Like (1)
- Is the holidays defined using special rules will reflect while running the jobs using that particular calender id?As it is not showing in the list of holidays mentioned in that year.
Nice Blog ...!!
ReplyDeletesap fico interview questions