Коллеги, привет!
Я не очень абапер, поэтому могу написать коряво. Простите заранее.
В учете основных средств есть группа функций SAPLGLO_FIAA_SCREENS с экранами полей национальной специфики типа параметров транспортного налога и т.п.
Обращение к полям этих экранов через конструкции типа
Code:
ASSIGN ('(SAPLGLO_FIAA_SCREENS)GLOFAAASSETDATA') TO <gs_asset>.
является достаточно популярный способом реализации проверок/замещений в ОС-ах.
У меня возникает проблема последовательного использования BAPI_FIXEDASSET_CREATE1 и BAPI_FIXEDASSET_CHANGE. Проблема, насколько я понимаю, кроется в том, что после коммита первого bapi в памяти остаются данные созданного ОСа (я вижу это по значениям структур (SAPLGLO_FIAA_SCREENS)GLOFAAASSETDATA и (SAPLGLO_FIAA_SCREENS)GLOFAATMDPNDNT). При работе BAPI_FIXEDASSET_CHANGE данные предыдущего (ранее созданного) ОС-а мешают пройти проверку заполнения обязательных полей (на вход бапи BAPI_FIXEDASSET_CHANGE подается другой объект, а не тот, который только что создали).
Вопрос: как бы мне заставить систему переинициализировать (сбросить) данные в памяти для программ (экранов) SAPLGLO_FIAA_SCREENS и SAPLAIST?
Если вдруг кто-то захочет попробовать воспроизвести, то сначала надо создать карточку ОС с помощью BAPI_FIXEDASSET_CREATE1 в классе, у которого нет обязательного заполнения специфичных для страны полей, и закоммитить его, а потом изменить через BAPI_FIXEDASSET_CHANGE объект, у которого есть обязательные специфичные для страны поля (в моем случае это новая группа амортизации из время-зависимых данных нац. специфики).