Коллеги, приветствую.
Исходные данные 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 создавался?