How to create calendar day ABAP CDS view with working day flag
Hi, in this brief post I would like to create new customer ABAP CDS view with calendar days and column working day flag. This flag has value 1 if a day is a working day according to factory calendar and has value 0 in opposite case.
Recently Sergey Shablykin published a post about calculation of a difference in working days between two dates, and my current post is complementing it in some respects.
- With S/4HANA we have a standard CDS view I_CalendarDate based on SCAL_TT_DATE table, but there aren’t information about working days. However it could be important to have such flag, for example, when we need to count only working days or filtering something based on working dates only.
- Information about working days in stored in SAP system in table TFACS. Besides a year we need to define factory calendar (TFACS-IDENT) to select data. So in logic we need to ‘crop’ information about working day from TFACS-MONXX columns.
1.Create new ABAP CDS view Z_I_CALDAYWD based on table function:
2. Create ABAP class and implement logic in class method:
- We are using variable p_ident to select only needed factory calendar, e.i. ‘RU’ in Russia.
- We are using column calendar day (scal_tt_date-calendarday), which is number of a day in month, to ‘crop’ work day flag from tfacs-monXX columns.
- Base tables are not client dependent that’s why we don’t have mandt column and annotate ABAP CDS view respectively.
3. In result we have for factory calendar ‘RU’ and the beggining of 2018 calendar year:
Thank you for attention!