Текущее время: Пт, июл 25 2025, 06:21

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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