Текущее время: Сб, июл 26 2025, 04:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Рабочие дни в месяце
СообщениеДобавлено: Вт, сен 04 2012, 13:43 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, ноя 05 2008, 16:08
Сообщения: 84
Добрый день!
Есть такая проблема.
Необходимо узнать количество рабочих дней в месяце по производственному календарю.
Лучшим вариантом найти функциональный модуль на входе дата, а на выходе рабочий или не рабочий.
Может есть какой фм анализирующий T552A?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочие дни в месяце
СообщениеДобавлено: Вт, сен 04 2012, 13:47 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Code:
FORM CALL_GENERATE_WORK_SCHEDULE                      "new  "XLXK021641
                            TABLES INT552A STRUCTURE INT552A
                            USING  PSHFT   STRUCTURE PSHFT.
  DATA ARGUMENT(20).
  DATA I552A LIKE T552A OCCURS 30 WITH HEADER LINE.
  DATA: BEGJAHR   LIKE T552A-KJAHR,
        BEGMONAT  LIKE T552A-MONAT,
        ENDJAHR   LIKE T552A-KJAHR,
        ENDMONAT  LIKE T552A-MONAT.
  BEGJAHR       =   PSHFT-PRD01+2(4).
  BEGMONAT      =   PSHFT-PRD01+0(2).
  ENDJAHR       =   PSHFT-PRD02+2(4).
  ENDMONAT      =   PSHFT-PRD02+0(2).

  CALL FUNCTION 'HR_GENERATE_WORK_SCHEDULE'
       EXPORTING
            ZEITY         =   PSHFT-ZEITY
            MOFID         =   PSHFT-MOFID
            MOSID         =   PSHFT-MOSID
            SCHKZ         =   PSHFT-SCHKZ
            BEGJAHR       =   BEGJAHR
            BEGMONAT      =   BEGMONAT
            ENDJAHR       =   ENDJAHR
            ENDMONAT      =   ENDMONAT
       TABLES
            INT552A       =   I552A
       EXCEPTIONS
            ERROR_OCCURED = 1
            OTHERS        = 2.
  IF SY-SUBRC <> 0.
    PERFORM PROCESS_MESSAGES.
  ENDIF.
  LOOP AT I552A.
    PERFORM RE552A USING I552A-ZEITY
                         I552A-MOFID
                         I552A-MOSID
                         I552A-SCHKZ
                         I552A-KJAHR
                         I552A-MONAT.
    IF SY-SUBRC EQ 0.
      CONCATENATE I552A-ZEITY I552A-MOFID I552A-MOSID I552A-SCHKZ
                  I552A-MONAT I552A-KJAHR INTO ARGUMENT
                  SEPARATED BY SPACE.
      MESSAGE W780 WITH ARGUMENT.
    ENDIF.
    INT552A = I552A.
    INT552A-OPERA = UPD.
    APPEND INT552A.
  ENDLOOP.
  SORT  INT552A BY ZEITY
                   MOFID
                   MOSID
                   SCHKZ
                   KJAHR
                   MONAT.
ENDFORM.


А дальше уже анализировать в цикле I552A и смотреть классы праздников и все что нужно для того чтобы определить рабочий день или не рабочий
Сорри что не форматированные вывод и не особо читаем в форуме

_________________
С уважением, Р.В. Величко


Последний раз редактировалось metha Вт, сен 04 2012, 17:37, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочие дни в месяце
СообщениеДобавлено: Вт, сен 04 2012, 14:10 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
Может, так?

Code:
  data: wa_t552a type t552a
      , tpr type char30.

  field-symbols: <tprmm> type t552a-tpr01.

  select single * from t552a
  into wa_t552a
  where zeity = 1           " Рабочие и служащие
    and mofid = 'RU'        " РФ
    and mosid = 1           " Подраздел
    and schkz = 'NRM8'      " Тип графика
    and kjahr = date(4)     " Год
    and monat = date+4(2).  " Месяц

  if sy-subrc = 0.

    concatenate 'WA_T552A-TPR' date+6(2) into tpr.
    assign (tpr) to <tprmm>.

    check <tprmm> is assigned.

    if <tprmm> = 'OFF'.
      is_work_day = abap_false.
    else.
      is_work_day = abap_true.
    endif.

  endif.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочие дни в месяце
СообщениеДобавлено: Вт, сен 04 2012, 14:34 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Еще есть ФМ HR_READ_552A_AUTOGEN. Он объединяет способы, которые указали Paul_80 и metha. Он считывает сгенерированный график из T552a, а если график не сгенерирован, то генерирует его на лету через ФМ HR_GENERATE_WORK_SCHEDULE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочие дни в месяце
СообщениеДобавлено: Вт, сен 04 2012, 14:54 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, ноя 05 2008, 16:08
Сообщения: 84
Спасибо, буду пробовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочие дни в месяце
СообщениеДобавлено: Вт, сен 04 2012, 14:54 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, ноя 05 2008, 16:08
Сообщения: 84
Спасибо, буду пробовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочие дни в месяце
СообщениеДобавлено: Ср, сен 05 2012, 12:23 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
посмотри еще вот здесь: viewtopic.php?f=11&t=50366


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB