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

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


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

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


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

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