Всем доброго время суток!
Задача следующая: есть таблица TYPE ANY TABLE, нужно передать эту таблицу в память чтобы потом считать при выполнении другой программы.
Что пробовал:
1. Делать через IMPORT/EXPORT. Не получается, т.к. при импорте надо знать тип данных который мы импортируем;
2. Добавлять передачу в памяти филдкаталога, чтобы при IMPORT сначала импортировать филдкаталог, затем создавать create_dynamic_table. Не получилось в связи с тем, что неправильно обрабатываются flat structure поля при формировании филдкаталога;
3. Создал класс Shared Memory. Реализацию смотрел здесь
http://pavelgk.pbworks.com/f/shared_memory_abap.pdf. Там есть на 6ой странице сохранение данных во внутреннюю ссылку dref. То есть это возможно. Всё бы хорошо, да только там пример для полностью типизированной ссылки. А при объявлении ссылки TYPE REF TO DATA, при CREATE DATA надо ещё указывать тип. Типа в словаре данных естественно нет. А если я указываю тип через LIKE, тогда он падает в дамп "Тип \TYPE=%_T00003S00000155O0000006324 на данный момент не может быть создан в памяти совместно используемых объектов." Аналогичный дамп и при использовании созданного типа через generic types. Т.е. Shared Memory должна быть полностью инкапсулирована и не использовать никаких внешних ссылок. А как тогда задать типизацию?
В общем, я думаю SHM самый правильный путь, и вроде я где-то близко.. Но пока безуспешно.
Резюмируя пост можно сформулировать мой вопрос одним предложением: как передать через Shared Memory объект типа TYPE ANY TABLE?