Текущее время: Вт, сен 09 2025, 20:37

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


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

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


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

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