Текущее время: Вс, июл 06 2025, 07:05

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Чт, окт 01 2009, 13:21 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Имеется инфонабор на основе логической базы PNP или PNPCE. Среди стандартно определенных полей есть, для примера, поле «Дата поступления на работы» - SYHR_A_P0000_AF_HIREDATE («прицеплено» к ИТ0000). Проблема с этим полем в том, что оно работает только если мероприятие приема попадает в период анализа отчета. То есть, если период анализа будет стоять, например, «сегодня», это поле останется пустым.
Это происходит из-за того, что отчет отбрасывает все записи загруженных ИТ, которые не попадают в период анализа. В данном случае в итоговом отчете встречается следующая строчка

Code:
* **************************************************************
* process only valid datasets
* **************************************************************
  DELETE P0000 WHERE BEGDA > syhr_evaluation_endda OR
         ENDDA < syhr_evaluation_begda.

Там правда ниже работает ФМ для определения даты приема, который повторно зачитывает ИТ0000 за все периоды, но в итоге все равно удаляет нужную запись.

Мне, конечно, не сложно определить собственное поле «Дата поступления на работы» с собственной обработкой, которая бы не зависела от периода анализа отчета. Но хотелось бы знать, может быть есть какой-нибудь способ управления работой подобных полей?
Или у нас просто что-то не так работает? Не хочу писать лишний код из-за того, что у нас где-то что-то неправильно настроено.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Чт, окт 01 2009, 13:24 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
В данном конкретном случае советую забить. Т.к. эта штука всё равно будет косячить на увольнениях/приемах след.днем без изменения статуса.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Чт, окт 01 2009, 14:22 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Стал лазить отладчиком. Вообще хрень какая-то получается, если честно.
Отчет вызывает ФМ RPAQ_GET_AF_0000. В этом ФМ есть отдельная секция для определения даты приема. Первым делом идут такие строчки:
Code:
        if begda_sel = endda_sel.                           "VLDN561514
          enter_begda = begda_sel.                          "VLDN561514
          enter_endda = begda_sel.                          "VLDN561514
        else.                                               "VLDN561514

то есть, обрабатывается вариант, когда анализируемый период равен одному дню. Видно, что значение переменных enter_begda и enter_endda становятся равным.
Далее вызывается ФМ HR_ENTRY_DATE с параметрами даты enter_begda - enter_endda.
Code:
        CALL FUNCTION 'HR_ENTRY_DATE'
             EXPORTING
                  PERSNR               = C_IT0000-PERNR
*                 BEGDA                = C_IT0000-BEGDA     "XWSN327157
*                 ENDDA                = C_IT0000-ENDDA     "XWSN327157
                                                    "VLDN561514 begin
*                 ENDDA                = C_IT0000-ENDDA     "XWSN376062
                  begda                = enter_begda
                  endda                = enter_endda

который по сути является обертышем для ФМ HR_ENTRY_DATE_CALC.
В ФМ HR_ENTRY_DATE_CALC зачитываются и обрабатываются периоды из ИТ 0000,0001,0041, при этом формируются две таблицы date и entry_dates, в которые попадают периоды работы. В этих таблицах только одно поле даты – начала периода. Для самого простого случая (сотрудник принят и работает) там будет одна запись с даты приема.
Далее идут 4 интересные строки
Code:
* Berќcksichtigung des (optionalen) Auswertungszeitraums bei der
* Ermittlung des Eintrittsdatums.
  DELETE date WHERE begda LT begda.
  DELETE date WHERE begda GT endda.

* Berќcksichtigung des (optionalen) Auswertungszeitraums bei der
* Ermittlung der Ausgabetabelle.
  DELETE entry_dates WHERE begda LT begda.
  DELETE entry_dates WHERE begda GT endda.

begda и endda, напомню, равны. Значит эти строки просто очистят таблицы, если только период анализа не равен дате приема сотрудника. Ну а дальше
Code:
  READ TABLE date INDEX 1.
  IF sy-subrc NE 0.
    RAISE entry_date_not_found.
  ENDIF.

Приехали, называется.
В se37 запускаю HR_ENTRY_DATE_CALC на тестирование для любого ТН с равными begda-ennda, естественно всегда получаю entry_date_not_found.
Что еще удивляет, вроде простое действие - определить дату према, а там весь код в исправления. САП долго и упорно переписывает этот кусок, а он все равно не работает :(


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Чт, окт 01 2009, 19:54 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
Ну и не будет он работать в наших условиях. У нас есть FM
HR_RU_HIRE_DATE
HR_RU_HIRE_FIRE
HR_RU_HIRE_FIRE_DATES
на их основе и сделайте свое поле. А стандартные вычисляемые лучше вообще выкинуть, проку от них чуть, только юзеров смущать :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Пт, окт 02 2009, 09:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
Ну и не будет он работать в наших условиях.

Просто ради интереса - а что, в дальнем забугорье какие-то особые условия? Ведение даты приема как-то приципиально отличается?

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Пт, окт 02 2009, 09:56 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
calm написал(а):
Цитата:
Ну и не будет он работать в наших условиях.

Просто ради интереса - а что, в дальнем забугорье какие-то особые условия? Ведение даты приема как-то приципиально отличается?

T7RU530 тогда для чего? ) Насколько я помню, больше нигде нет увольнения без изменения статуса занятости


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Пн, окт 05 2009, 22:38 
Специалист
Специалист

Зарегистрирован:
Пн, мар 06 2006, 15:21
Сообщения: 249
Откуда: Город падонкофф
проблема увольнения и приема следующим днем легко лечится в FMах HR_ENTRY/LEAVE_DATES глобально через бади парой сточек кода.
причем работает это практически врезде в отличии от русского стандарта.

проводил сравнительное тестирования стандартные:
HR_RU_HIRE_DATE
HR_RU_FIRE_DATE
HR_RU_HIRE_FIRE_DATES

жутко медлено работают по сравнению с той же группой модулей 99ой, просто кошмар, это будет заметно например в квери когда FM будет вызываться много раз...

теперь немного по теме
если стандартном поле действительно используются даты выбора(хотя я насколько помню там только проблема если запускать отчет на 1 дату, если хотя бы на интервале в 2 дня то уже все нормально, системы нет под рукой завтра гляну если не забуду), то, просто создайте поле свое которое будет возвращать ближайшую к ключевой дате дату приема или увольнения, можно использовать стандартные функции по типу HR_RU_HIRE/FIRE_DATE или HR_ENTRY/LEAVE_DATES передавая в них BEGDA = 18000101 и ENDDA = концу периода сбора данных/табельных, например

_________________
PAPARU Personalwesesen Stammdaten: Russland und mehr...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.  Тема решена
СообщениеДобавлено: Вт, окт 06 2009, 08:35 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
Я сделал запрос с SAP с описанием этой проблемы. Как ни странно, в их ответе нашлось и решение. Нота 562031 исправляет ситуацию – просто удаляется белиберда, которая была внесена предыдущими нотами.
Если внимательно «курить» исходники и ноты, которые вносили исправления в них, то видна история. Сначала была проблема с вычислением датой увольнения, по этому поводу была одна или две ноты. За одно аналогичные изменения внесли в секцию вычисления даты приема, тем самым внеся ошибку. Нота 562031 отменяет эти изменения.

Я принципиально не стал делать свое вычисляемое поле. У нас несколько рабочих инфонаборов, не факт, что не появятся новые, за всеми не уследишь. Потом я посмотрел журнал использования, эти ФМ используется и в других отчетах и программах. Лучше уж badi написать. Но сейчас я в случае явных косяков со стороны САПа делаю Report Error. Даже если косяк легко обходиться.

А работают медленно эти ФМ из-за того, что они полностью считывают ИТ 0000, 0001, 0016 и 0041.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вычисляемые стандартные поля в инфонаборе.
СообщениеДобавлено: Вт, окт 06 2009, 11:10 
Специалист
Специалист

Зарегистрирован:
Пн, мар 06 2006, 15:21
Сообщения: 249
Откуда: Город падонкофф
RoustR написал(а):

А работают медленно эти ФМ из-за того, что они полностью считывают ИТ 0000, 0001, 0016 и 0041.


Медлено работают именно HR_RU* по сравнению с HR_ENTRY/LEAVING_DATE

к HR_ENTRY/LEAVING_DATE нет нареканий, хоть и считывают все (там идет буферизация все равно)

_________________
PAPARU Personalwesesen Stammdaten: Russland und mehr...


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

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


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

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


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

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