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

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: PCR ASOLL
СообщениеДобавлено: Ср, май 23 2012, 15:07 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 06 2011, 09:31
Сообщения: 48
Добрый день. При запуске расчета на апрель(для примера) рассчитывается больничный на 3 месяца вперед. В схему необходимо вставить коррекцию выплат на специальный коэффициент. В частности, надо для больничного, который в апреле рассчитывается за август, в схеме расчета считать кол-во рабочих дней в августе.
GASOLL, TASOLL, TADIVP... - все они в схеме считывают значения за апрель , хотя обрабатывается отсутствие в августе.
Помогите, плиз. Что делать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Чт, май 24 2012, 09:53 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 10 2007, 23:29
Сообщения: 453
Откуда: и куда?
Пол: Мужской
Orida
а что это за больничный, который расчитывается на 3 месяца вперед? Беременность и роды?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Чт, май 24 2012, 09:56 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 06 2011, 09:31
Сообщения: 48
Да это беременность и роды


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Чт, май 24 2012, 13:26 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Orida написал(а):
GASOLL, TASOLL, TADIVP... - все они в схеме считывают значения за апрель , хотя обрабатывается отсутствие в августе.


Эти поля заполняются для месяца расчета примерно в GENPS/PARTT. Расчет происходит в апреле, поэтому и данные там будут апреля. Частично эта информация хранится в wpbp. Естественно, что наличие отсутствия за август никак не скажется на этой информации.

Для больничных будущих месяцов задачу можно попытаться решить так. Функция PAB просчитает основные параметры отсутсвий, в том числе и для будущих периодов. Управляется это в таблице V_554C. Для самого больничного там стоит значение KT - календарные дни. Вы можете создать свой ВО и указать его в V_554C рядом с больничным, тогда у Вас появится оценка больнчичного в рабочих днях, которую можно использовать для вычисления.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Чт, май 24 2012, 14:10 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 06 2011, 09:31
Сообщения: 48
У меня есть оценка больничного в рабочих днях. Мне надо узнать сколько рабочих дней у человека всего должно быть в августе по графику.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Пт, май 25 2012, 08:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Это чуть сложнее, но тоже можно. ВО фиктивного больничного с расчетом в рабочих днях нужно довести до RUSI0. RUSI0 оценить это отсутствие. Когда RUSI0 будет выполнять правило, то в AIT-RTE будет лежать норма-времени по графику. Ну и сразу после RUSI0 в AIT эта информация тоже будет доступна для каждого месяца, на который приходится больничный.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Пт, май 25 2012, 10:36 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 06 2011, 09:31
Сообщения: 48
Спасибо за ответ, RoustR.
Доплата у нас считается в отдельной строке:

PIT =DO4 GEN

Я переделала на:

RUSI0 =DO4 GEN

Получилась дополнительная выходная таблица V0.

Не могу сообразить как мне достать AIT-RTE, ее нет в выходных таблицах.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Пт, май 25 2012, 12:50 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Orida написал(а):
Доплата у нас считается в отдельной строке:

PIT =DO4 GEN

Я переделала на:

RUSI0 =DO4 GEN

Думаю, не так нужно действовать. RUSI0 в схеме уже есть. Вам не новый вызыв RUSI0 нужно вставлять в схему, а перенести обработку в существующий RUSI0. То есть, в правило, которые вызывается в RUSI0, в начале вставляете - если ВО = ХХХХ (где ХХХХ фиктивный больничный), то, скажем, переходим к правилу =DO4.
Либо вставить свой PIT =DO4 GEN после RUSI0.

Цитата:
Получилась дополнительная выходная таблица V0.

Не могу сообразить как мне достать AIT-RTE, ее нет в выходных таблицах.

AIT - это таблица, RTE - поле в нем. Получить значение из него можно, например, с помощью операции "RTE=H *" -читает значение AIT-RTE для текущего вида оплат из таблицы AIT с учетом сплитов.

А то, что этой таблицы нет в списке выходных, то это ничего не значит. Можете отдельно это настроить в PE04 (нужны права разработчика). Либо можно в схему вставить функцию PRINT AIT после RUSI0.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Пн, май 28 2012, 09:11 
Специалист
Специалист

Зарегистрирован:
Чт, июл 09 2009, 12:22
Сообщения: 171
Привет всем!
Коллеги, подскажите пожалуйста возможность генерировать количество дней отсутствия функцией pab по НГРВ 5-ти дневной рабочей недели, если у сотрудника сменный график? т.е. сотруднику нужно сгенерить количество дней отсутствия по нормативному графику 5 дневной рабочей недели не меняя его график в 7 ИТ на нормативный.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Вт, май 29 2012, 10:48 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 06 2011, 09:31
Сообщения: 48
Вставила правило в RUSI0, но необходимого кол-ва дней так и не получила. Возможно что-то не так делала.


Решение сделали через ABAP. Вставили в правило строку &XXXXKOEF. В код оператора внесли

CASE op+6(4). " op = &XXXXKOEF
WHEN 'KOEF'.
READ TABLE ab WITH KEY abznr = ot-abznr.
IF sy-subrc EQ 0.
mbeg = ab-begda.
mend = ab-begda + ot-anzhl - 1.
Endif.
...
*МОДЕЛИРОВАНИЕ РАСЧЕТА ВРЕМЕНИ
...
CALL FUNCTION 'HR_TIME_EVALUATION'
EXPORTING
evaluation_begin = mbeg
evaluation_end = mend
selection_variant = 'CUS&TEST'
log = 'OFF'
TABLES
simulated_infotypes = infotypes
simulated_data = sr_iprelp
buffer = tbuff
buffer_directory = buffer_dir
employee_numbers = rptpernr
ppsoper = ppsoper
EXCEPTIONS
variant_not_exist = 1
program_not_exist = 2.

REFRESH time_results_tab.
CALL FUNCTION 'HR_TIME_RESULTS_IN_INTERVAL'
EXPORTING
int_pernr = pernr-pernr
int_begda = mbeg
int_endda = mend
TABLES
get_tbuff = tbuff
get_buffer_dir = buffer_dir
int_time_results = time_results_tab
EXCEPTIONS
no_period_specified = 1
wrong_cluster_version = 2
no_read_authority = 3
cluster_archived = 4
technical_error = 5
OTHERS = 6.

READ TABLE time_results_tab INTO time_results INDEX 1.
...
Результат заносим в таблицу ot. Например, ot-betrg = ...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: PCR ASOLL
СообщениеДобавлено: Чт, май 31 2012, 06:43 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Для этой задачи использование ФМ 'HR_TIME_EVALUATION' слишком тяжеловесное решение. Все равно, что при потребности в 1 кг песка, купить целый КАМАЗ песка, один кг взять, а остальное выкинуть.
Сгенерированные графики хранятся в таблице T552A. Нужно лишь считать из этой таблицы данные и подсчитать по ним число рабочих дней. Можно использовать ФМ HR_READ_552A_AUTOGEN - он считывает таблицу T552A, а при необходимости и генерирует графики.
Пример кода в общем случае
Code:
          SELECT SINGLE *
            FROM t001p
            INTO ls_t001p
            WHERE
              werks = p0001-werks AND
              btrtl = p0001-btrtl.
*
          SELECT SINGLE *
            FROM t503
            INTO ls_t503
            WHERE
              persg = p0001-persg AND
              persk = p0001-persk.
*
          PROVIDE * FROM p0007
            BETWEEN ab-begda AND ab-endda.
            EXIT.
          ENDPROVIDE.


          l_cur_date = ab-begda.
          l_month = l_cur_date+4(2).
          CALL FUNCTION 'HR_READ_552A_AUTOGEN'
            EXPORTING
              zeity        = ls_t503-zeity
              mofid        = ls_t001p-mofid
              mosid        = ls_t001p-mosid
              schkz        = p0007-schkz
              kjahr        = l_cur_date(4)
              monat        = l_month
              autogen      = 'X'
              read_first   = 'X'
            IMPORTING
              z552a        = lt_t552a
            EXCEPTIONS
              custom_error = 1
              cant_happen  = 2
              OTHERS       = 3.


          l_day = l_cur_date.
          DO 31 TIMES
              VARYING l_tpr FROM lt_t552a-tpr01 NEXT lt_t552a-tpr02
              VARYING l_ttp FROM lt_t552a-ttp01 NEXT lt_t552a-ttp02
              VARYING l_var FROM lt_t552a-var01 NEXT lt_t552a-var02.

            CHECK NOT l_tpr IS INITIAL. " день существует?
            UNPACK sy-index TO l_day+6(2).

*           подсчет нормы-времени
            IF l_ttp IS INITIAL.
                mnormatime = mnormatime + 1.
                CALL FUNCTION 'HR_DWS_RE550'
                  EXPORTING
                    motpr        = lt_t552a-mosid
                    tprog        = l_tpr
                    varia        = l_var
                    date         = l_day
                  IMPORTING
                    daygen       = l_daygen
                  EXCEPTIONS
                    error_occured.
                IF sy-subrc EQ 0.
                  mnormatime = mnormatime + l_daygen-sollz.
                ENDIF.
              ENDIF.
            ENDIF.

          ENDDO.

2 xont
Этот код можно использоввать и для посчета нормы по "чужому" графику.

Если же речь идет о получении данные в программе HRUCALC0, то можно использовать процедуру build_pws_for_genps, которая отвечает за обработку графиков.
Пример.
Code:
    DATA:  BEGIN OF t_xpsp OCCURS 33.
            INCLUDE STRUCTURE ptpsp.
    DATA:  END OF t_xpsp.

      PERFORM build_pws_for_genps
                  TABLES
                     t_xpsp
                  USING
                     aper-PBEGD
                     aper-PENDD
                     no "consider p2003
                     no "consider IT2001
                     no."consider IT2002

      CLEAR: aTime, aDay.
      LOOP AT t_xpsp WHERE stdaz GT 0.
        ADD 1 TO aDay.
        aTime = aTime + t_xpsp-stdaz.
      ENDLOOP.

Эта функция, например, используется в RUSI0 для подсчета дней в будущем.


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

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


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

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


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

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