Comments 8
UFO just landed and posted this here
1. Гарантированно будет работать на SAP ERP 6.0.
2. Да, есть одно ограничение у метода create_dynamic_table: нельзя для одной программы создавать более 36 динамических таблиц. Такое же ограничение существует для оператора generate subroutine pools (нельзя сгенерировать более 36 программ).
Так как оба оператора используются в нашей программе, а пул у них общий, то, не выходя из программы, можно только 18 раз выполнить запрос (т.е. нажать «Выполнить», затем кнопку «Назад»), на 19 будет дамп. Конкретно в нашем случае эту проблему можно побороть путем автоматического перезапуска программы на 19 раз (пул очищается при этом). Примерно так:
Предварительно введенный запрос можно сохранить в ABAP Memory, а после перезапуску достать его оттуда.
3. Расскажите, пожалуйста, подробнее, что это за компонент. Пока не совсем понимаю, о чем речь.
2. Да, есть одно ограничение у метода create_dynamic_table: нельзя для одной программы создавать более 36 динамических таблиц. Такое же ограничение существует для оператора generate subroutine pools (нельзя сгенерировать более 36 программ).
Так как оба оператора используются в нашей программе, а пул у них общий, то, не выходя из программы, можно только 18 раз выполнить запрос (т.е. нажать «Выполнить», затем кнопку «Назад»), на 19 будет дамп. Конкретно в нашем случае эту проблему можно побороть путем автоматического перезапуска программы на 19 раз (пул очищается при этом). Примерно так:
try.
generate subroutine pool code name prog
message msg.
catch cx_root.
submit ZSQL.
endtry.
Предварительно введенный запрос можно сохранить в ABAP Memory, а после перезапуску достать его оттуда.
3. Расскажите, пожалуйста, подробнее, что это за компонент. Пока не совсем понимаю, о чем речь.
0
UFO just landed and posted this here
Если кратко, то операторы INSERT REPORT и GENERATE SUBROUTINE POOL отличаются между собой тем, что первый динамически создает программу и сохраняет ее в хранилище как полноценную, которую можно потом редактировать руками, а второй оператор создает временную программу, которая перестанет существовать после очистки пула (закрытия транзакции). Пост-обработку можно делать в обоих случаях, поэтому не вижу смысла для нашей задачи использовать оператор INSERT REPORT. К тому же, я не уверен, что он корректно отработает в тестовой или продуктивной системе из-за того, что они закрыты для создания/редактирования программ в хранилище.
0
UFO just landed and posted this here
Одно правило: если используется конструкция COUNT(), то после нее нужно дописывать «AS cnt», чтобы корректно сгенерировался ALV-Grid.
0
Sign up to leave a comment.
Запуск SQL запросов в SAP