Текущее время: Вс, июл 20 2025, 17:37

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Функция RUSI0 в 4.7
СообщениеДобавлено: Сб, май 06 2006, 04:36 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
Занялись Upgrade 4.6С на 4.7
В связи с чем пришлось переделывать оценку больничных.
Дошло дело до ф-ции RUSI0. По непонятным причинам расчет зависал на 30% и дальше не шел.
Путем отладки выяснилось, что в этой ф-ции возникает бесконечный цикл в FORM get_socgr.
Вот код:
Code:
FORM get_socgr  USING    obegd
                CHANGING socgr
                         modsg
                         p_dauer
                         p_socgr_default.

  DATA: ret_code LIKE sy-subrc.
  p_socgr_default = socgr.
  IF p_socgr_default EQ space.
    PERFORM get_default_socgr USING obegd
                           CHANGING p_socgr_default
                                    p_dauer.
  ENDIF.
*
  CLEAR p0292.
  rp-provide-from-last p0292 space obegd obegd.
  IF pnp-sw-found EQ '0'.
    socgr = p_socgr_default.
    CLEAR modsg.
  ELSE.
    socgr = p0292-socgr.
    modsg = p0292-modsg.
  ENDIF.
  IF socgr EQ space.
    socgr = p_socgr_default.
  ENDIF.
  DO.
    SELECT * FROM t7rut8 WHERE land EQ calc_land AND
                              insgr EQ socgr AND
                              modsg EQ modsg.
      IF obegd LE t7rut8-endda AND obegd GE t7rut8-begda.
        socgr = t7rut8-outsg.
        modsg = t7rut8-outmd.
        EXIT.
      ENDIF.
    ENDSELECT.
    IF sy-subrc NE 0.
      EXIT.
    ENDIF.
  ENDDO.
ENDFORM.                    " get_socgr


Ну я как правильный написал в саппорт, а меня послали на ***, точнее предложили общаться в рамках ноты 83020. И сказали, что неправильные настройки таблицы t7rut8. :?

А ведь, если "SELECT * FROM t7rut8..." находит хотя бы одну удовлетворяющую условиям выборки строку, то зацикливаение будет в любом случае, т.к. код

Code:
    ENDSELECT.
      IF sy-subrc NE 0.
        EXIT.
      ENDIF.
  ENDDO.
ENDFORM.                    " get_socgr


никогда не отработает на выход из DO-ENDDO, т.к. sy-subrc в таком случае будет равно нулю.
Или есть еще какие-то варианты работы кода?
Зачем вообще do-enddo было использовать? :?

Кто пользуется это ф-цией? Как у вас настроено?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 06:35 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
Абу,
ведь в 4.6 тоже самое делается. Я посмотрел код в своей системе и в 4.7 - логика одинаковая тока таблица разная . В 4.6 T5yt8 а для остальных T7RUT8.
процесс прост: пара П1 (группа, подгруппа ) преобразуется в другую пару - П2. Теперь для пары П2 ищется правило преобразования. Если находится то преобразуется в П3 и т.д.
Если нет преобразования то выход. А его когда должно уже и не быть. Должна быть конечная Пара для которой расчет делать

У вас скорее всего в настройка группы преобразуются сами в себя и получается зацикливание. П1->П2->П3->П1 и т.д.

Может во время upgrade настройки криво встали? Ваши наложились на поставляемые ... Проследи свою пару и ее преобразование в настройках.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 07:23 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
AlY написал:
Абу,
ведь в 4.6 тоже самое делается.... Проследи свою пару и ее преобразование в настройках.


Содержимое T7RUT8.
Code:
RU   <5   01   01.01.1903   31.12.9999   >8
RU   <5   02   01.01.1900   31.12.9999   >5<8
RU   <5   04   01.01.1903   31.12.9999   >8   03
RU   >5<8   01   01.01.1900   31.12.9999   >8
RU   >5<8   04   01.01.1900   31.12.9999   >8   03
RU   >8   03   01.01.1900   31.12.9999   >8   03


Содержание таблиц идентично что в 4.7, что в 4.6С.
Вот только в 4.6 мы RUSI0 не используем (есть модифицированнная YSI00) - нет ее. Как нет и зацикливания.

Зачем вообще так выстраивать цепочку поиска? Достаточно же найти одну строку с нужным модификатором.

Вот смотрите. Делаем выборку для следующих параметоров:
Цитата:
calc_land RU
socgr >8
modsg 03

и зацикливаемся.

И все равно, имхо, ошибку надо исправлять. Не должен расчет из-за ошибки в настройках зацикливаться.


Последний раз редактировалось Абу Сб, май 06 2006, 07:33, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 07:27 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
Вот ты сам посмотри на свою таблицу :)
У табя последняя строка сама в себя все время и преобразуется.
Code:
RU   [b]>8   03 [/b]  01.01.1900   31.12.9999   [b]>8   03[/b]

По хорошему конечно такое должно быть запрещено на уровне ведения таблицы ...


Просто удали эту строку т.к. она смысла не имеет вообще ...

А раз пользовали старую копию YSI00 то когда копировали может еще и <я не знать русский языка> циклического преобразования. Оно было позже доделано.
Вот у вас он один раз и преобразовывался.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 08:09 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
Помогло. Спасибо.

Я зачем такой поиск делать было? Чего не хватало в выборке одной строки? или это для версий в зависимости от дат сделано...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 08:12 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
На сколько я слышал есть "Клинические" случаи в нашем :wink: законодательстве, когда должно быть несколько преобразования. Т.е. при определенных модификаторах группы, как говорится в законодательстве "приравниваются" к другой группе и так несколько.
Реально я пока не сталкивался, но страна большая и льготников много :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 08:16 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
Ясно.

AlY, а случайно нет почитать про RUDUA, а то доку к ней нет (как впрочем и ко всем остальным ф-циям расчета), а в отладке ковыряться достало уже...
Вот в данный момент с подсчетом стажа разбираюсь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 08:24 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
Так она тока вызывает модель расчета стажа и обратно в правило возвращает кол-во месяцев.
RUDUASVVVV
VVVV - Имя модели подается в качестве параметра По умолчанию шла RUIL
S - что вернуть в расчет дни, месяцы или года.

А дальше все остально это в моделях расчета стажа нужно ковырятся.
На нее документация есть :)
http://help.sap.com/saphelp_470/helpdata/ru/48/35d4ad4abf11d18a0f0000e816ae6e/frameset.htm


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 08:29 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
Ну так я же отлаживаюсь, в отладке же и смотрю происходящее :)

Понятно, что вызывает. Просто по привычке не ищу доку, т.к. обычно ее нет.
В общем приятный сюрприз.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 08:33 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
Укопался значит. ... :lol:
А как без этой операции стаж оценивали в 4.6?
Вроде как эта проверка на 3 месяца аж с 2004 года ...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 10:17 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
AlY написал:
Вроде как эта проверка на 3 месяца аж с 2004 года ...

У нас иначе реализовано было - через схемы и правила расчета путем выборки ВО за период,

я чего-то опять не понимаю :oops:
возвращаемое значение должно было бы быть вычисленно путем сложения всех месяцев за период работы.
Правила подсчета также проверял путем запуска RPUSEN10. Сразу бросается в глаза, что в поле "месяцы" - 0, а в поле "Годы" - 27.

кстати, в правиле RUA4 есть коммент "WORKED MONTHES IN LAST YEARS ?" для строки с RUDUAMRUIL.
А реально за какой период вычисляются эти 3 месяца? У в 4.6 настроен подсчет месяцев за год (не календарный)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 10:25 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
Это зависит от процесса. Черт перепутал терминалогию. Вместо модели нужно процесс RUIL :evil:
В RUIL в конце процесса вызывается правило преобразования RUIL которое персчитывает годы в месяцы .... Т.к. процесс заточен под RUDUA.

Запусти RPUSEN20 для RUIL и найдешь


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 10:26 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2004, 14:23
Сообщения: 706
Откуда: Moscow
Пол: Мужской
Абу написал(а):
кстати, в правиле RUA4 есть коммент "WORKED MONTHES IN LAST YEARS ?" для строки с RUDUAMRUIL.
А реально за какой период вычисляются эти 3 месяца? У в 4.6 настроен подсчет месяцев за год (не календарный)


А за год до начала отсутствия и считается. Там внутри RUDUA это "зашито"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, май 06 2006, 11:01 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 08 2005, 09:03
Сообщения: 98
AlY написал:
А за год до начала отсутствия и считается. Там внутри RUDUA это "зашито"

Заметил уже, спасибо :)


Неправильный подсчет был следствием правила округления 0YM0.
Я его просто убрал из присвоения модели оценки. Теперь округление не работает вообще и считается правильно.


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

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


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

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


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

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