Сегодня мы постараемся написать что-то более полезное. Мне, например, недавно понадобился код, который вычислял бы количество рабочих дней в определенном периоде. Стандартной функции я никакой не нашел, поэтому решил использовать функцию, которая просто выдает следующий рабочий день, если переданная в неё дата является выходным или праздником.

Получился следующий код:

*&———————————————————————*
*& Report  ZART_TEST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT  ZART_TEST.
parameters: d_start like  SCAL-DATE obligatory,
d_end   like  SCAL-DATE obligatory.
data:       loop_date  like  SCAL-DATE,
l_date     like  SCAL-DATE.

data n type n.

start-of-selection.
loop_date = d_start.
while loop_date =< d_end.
l_date = loop_date.
CALL FUNCTION ‘DATE_CONVERT_TO_FACTORYDATE’
EXPORTING
CORRECT_OPTION                     = ‘+’
DATE                               = l_date
FACTORY_CALENDAR_ID                = ‘RU’
IMPORTING
DATE                               = l_date
*   FACTORYDATE                        =
*   WORKINGDAY_INDICATOR               =
* EXCEPTIONS
*   CALENDAR_BUFFER_NOT_LOADABLE       = 1
*   CORRECT_OPTION_INVALID             = 2
*   DATE_AFTER_RANGE                   = 3
*   DATE_BEFORE_RANGE                  = 4
*   DATE_INVALID                       = 5
*   FACTORY_CALENDAR_NOT_FOUND         = 6
*   OTHERS                             = 7
.

if l_date = loop_date.
n = n + 1.
endif.
loop_date = loop_date + 1.
endwhile.

write:/ ‘Количество рабочих дней в интервале = ‘, n.

P.S. А сегодня я нашел интересную функцию HOLIDAY_GET — сразу возвращает таблицу с выходными днями.

   
© 2013 sap-blog.ru
Яндекс.Метрика