В ходе расширения отчета HRULPAY2, возникла необходимость вставить запись в Z инфо-тип. Для этого был использован ФМ HR_INFOTYPE_OPERATION. Но программа упорно падала в дамп в классе CL_HRPA_MASTERDATA_FACTORY, а именно при атрибуте a_is_initialized = true. Данный флаг взводился при заполнении DAQ поля стандартным ФМ HR_RU_DAQ_PAY2_ADR, и возможности его убрать не было.
Быстрое гугление показало, что данная ошибка была из-за проблем с PS буфером, и его надо просто инициализировать заново. Для этого можно было использовать подпрограмму do_nothing (sapfp50p) . Однако, дамповать стала уже после нее.
Выяснилось, что в системе активирована CE, но как-то странно. И нельзя в одном сеансе программы использовать ИТ обычные и CE-шные.
В данный момент решил проблемы, вызвав HR_INFOTYPE_OPERATION в отдельном LUW.
Проверить активацию CE можно в таблице T77S0. Записи CCURE MAINS и CCURE PC_UI должны содержать в "X" в поле GSVAL. (У меня как раз только в записи CCURE PC_UI содержит GSVAL = "X" ).
А ИТ в таблице T582ITVCLAS должен быть допустим для новой архитектуры NITF_ADM. (Хотя мне то не помогло, возможно как раз из-за частичной активации CE.)
Если кто-то знает как решить эту проблему раз и навсегда, пишите в комментариях.
Нота:
1796396 - Short dump: SYSTEM_LOAD_OF_PROGRAM_FAILED (CX_HRPA_VIOLATED_PRECONDITION)
Symptom
The system raises a dump in: Class: CL_HRPA_INFOTYPE_FACTORY Method: SET_CONTEXT
The dump shows the following coding:
1 METHOD set_context. 2 3 IF a_context IS INITIAL. 4 CASE context. 5 WHEN context_default OR 6 context_legacy. 7 a_context = context. 8 9 WHEN OTHERS. 10 RAISE EXCEPTION TYPE cx_hrpa_invalid_parameter 11 EXPORTING 12 parameter = 'CONTEXT'. 13 ENDCASE. 14 ELSE. 15 * context must never be set twice >>>>> RAISE EXCEPTION TYPE cx_hrpa_violated_precondition. 17 ENDIF. 18 ENDMETHOD.
Environment
SAP ERP HCM
Reproducing the Issue
This dump may occur in many different areas (described in Cause).
Cause
The exception is raised in case the 'new' infotype framework (based on the buffer IF_HRPA_MASTERDATA_BUFFER) and the 'old' infotype framework (based on the 'PS' buffer of SAPFP50P) are both initialized within the same application. Both infotype frameworks are working, but it is not possible to use them in the same application.
Resolution
To resolve this, it need to be determined why both frameworks are used in parallel. Deactivate SAP standard function modules used in customer exits, as these may initialize the other framework.
Depending which one of the frameworks is initialized first, either this dump or the dump from 2285706 will show up.
В названии таблицы опечатка: T77SO. Правильное название T77S0.