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

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 17:42 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Коллеги, приветствую.

Исходные данные 1:
-в инфо-группе прописан ИТ0008
-в динамике, на processing type 06, для ИТ0008 была повешена подпрограмма, которая, в зависимости от определенных условий задавала или нет RP50D-FLAG1
-в динамике, если задан флаг, была прописана строчка: INSS,0014,,,(PSPAR-BEGDA),(PSPAR-ENDDA) - то есть, чтобы с теми же периодами, что и ИТ0008, создавалась запись в ИТ0014.
Итог:
-флаг заполняется, а ИТ0014 - не создаётся.

Решил пойти иным путём.

Исходные данные 2:
-в инфо-группе прописан ИТ0008
-в динамике, на processing type 06, для ИТ0008 была повешена подпрограмма, в которой, в зависимости от определенных условий, с помощью HR_INFOTYPE_OPERATION создавался ИТ0014

запуск ФМ выглядит так:

Code:
  call function 'HR_INFOTYPE_OPERATION'
    exporting
      infty                  = '0014'
      number             = ls_0014-pernr
      validityend         = ls_0014-endda
      validitybegin      = ls_0014-begda
      record               = ls_0014
      operation           = 'INS'
      dialog_mode      = '2'
      nocommit           = 'X'
    importing
      return                 = ls_ret
      key                    = ls_key.


Итог:
-Инфо-группа отрабатывает. Но, при попытке выйти из ИТ0000 - PA30 падает в DUMP. Тип ошибки - COMMIT_IN_PERFORM_ON_COMMIT.

Уточнение:
- На ИТ0014 навешена Badi, в BEFORE_OUTPUT которой, в зависимости от условий, подтягивается заданный ВО
- Пляски с бубном делал следующие:
a) снимал/ставил параметр nocommit;
b) кодил/закрывал COMMIT после вызова ФМ-ника.

Что я делаю не так? Как мне всё закодить так, чтобы ни DUMP-ов не было и ИТ0014 создавался?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 18:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 25 2011, 17:37
Сообщения: 291
а можете полностью динамику выложить?

_________________
Зачем делать просто, когда можно сделать круто?!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 18:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
0008 06 90 P T001P-MOLGA='33'
0008 06 91 P PSPAR-MASSN='01'/X
0008 06 92 P PSPAR-MASSN='03'/X
0008 06 93 P PSPAR-MASSN='04'/X
0008 06 94 P PSPAR-MASSN='02'/X
0008 06 95 P PSPAR-MASSN='05'/X
0008 06 100 F CHECK_1222(ZDIN)
0008 06 105 P RP50D-FLAG1='X'
0008 06 110 I INSS,0014,,,(PSPAR-BEGDA),(PSPAR-ENDDA)

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 18:36 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 13 2011, 22:45
Сообщения: 497
Почему то мне кажется, что так нельзя пользоваться этим ФМом. Если не путаю, то перед вызовом ФМа, нужно заблокировать табельник, а он у Вас и так заблокирован, и Вы пытаетесь сделать commit на середине мероприятия.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 18:57 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 25 2011, 17:37
Сообщения: 291
попробуйте убрать INSS и поставить INS, и указать подтип

_________________
Зачем делать просто, когда можно сделать круто?!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 19:05 
Начинающий
Начинающий

Зарегистрирован:
Ср, июл 04 2012, 18:11
Сообщения: 8
По поводу использования ФМ HR_INFOTYPE_OPERATION в динамике: там есть не совсем корректный выход, по этому необходимо запускать его через submit. В таком случае выход будет именно из вызванной Z-программы, а не из MP*, и тогда все работает.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 20:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
ZGilgelad написал(а):
попробуйте убрать INSS и поставить INS, и указать подтип

Указать подтип не могу. Я же сказал, что на этом ИТ у меня висит Badi, в которой и заполняется ВО (он же подтип).
Так же, просто INS не катит, так как он может работать и как MODIFY. А INSS - работает как безусловное добавление. Только такое и требуется. Чтобы не изменялись записи, которые уже есть на данном табельнике


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 20:42 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
oxygen87 написал(а):
По поводу использования ФМ HR_INFOTYPE_OPERATION в динамике: там есть не совсем корректный выход, по этому необходимо запускать его через submit. В таком случае выход будет именно из вызванной Z-программы, а не из MP*, и тогда все работает.

Ок. Завтра, непременно, попробую вашу рекомендацию.
Вот, почему везде в САПе такие грабли? Недавно, делал рассылку уведомлений, при создании записей по определенному ИТ. Делал это через Badi. Класс рассылочный, из Badi не работал. Пришлось делать отдельную прогу и запускать её из реализующего класса SUBMIT-ом.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Пн, мар 16 2015, 20:45 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
gomer4ik написал(а):
Почему то мне кажется, что так нельзя пользоваться этим ФМом. Если не путаю, то перед вызовом ФМа, нужно заблокировать табельник, а он у Вас и так заблокирован, и Вы пытаетесь сделать commit на середине мероприятия.

Коллега. Я писал, что экспериментировал разными методами. Делал чистый вызов ФМ-ника на добавление, без последующих коммитов и с заданным параметром nocommit. Все-равно был дамп.
Согласен, что выполнение COMMIT'а в данном месте, фактически, ломает LUW-процесс.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике  Тема решена
СообщениеДобавлено: Пн, мар 16 2015, 22:01 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Неа, коллеги все не так. Внутри PA30 нельзя вызывать этом ФМ потому что он сам же PA30 и вызывает посредством CALL DIALOG. Это даже не LUW это просто особенности работы. Если хочется динамики используйте чистую динамику-через-абап.

То что привели выше в настройках данамики тоже не сработает. после F операции ничего больше выполняться не будет тем более операция проверки P. А должна быть последней, так как это реально выполняемый ABAP код в котором можно наворотить все что угодно (хоть туже рекурсивную динамику)

Я бы в подпрограмме которая выполняется в динамике после 0008 инфотипа заполнил бы переменную DYANMEAS (это полный аналог T588Z) и вот в этом случае выполнится абсолюьно все что Вам надо. Делали не раз и не два, и тут никакие бади не помешают. Типичный пример после создания записи 22 показываем диалог-вопрос и если подтверждаем ввод, то опять показываем 22 инфоти для ввода и так до бесконечности пока пользователь сам не прервет рекурсию, причем это работает и в процессе мероприятий - как только пользователь откажется от создание очередной записи 22 инфотипа выполнение основного мероприятия продолжиться.

_________________
С уважением, Р.В. Величко


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Вт, мар 17 2015, 09:42 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Отлично. Через DYNMEAS сработало. Хвала и почёт великому гуро )))


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не создаётся ИТ0014 ни в динамике, ни через подпрограмму в динамике
СообщениеДобавлено: Вт, мар 17 2015, 19:33 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
:oops:

_________________
С уважением, Р.В. Величко


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

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


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

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


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

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