Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?
В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).
Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?
В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).
Кажется, средствами SAP нельзя узнать объем памяти, который потребовался для отдельного запроса. Но точно можно узнать эту информацию с помощью инструментов СУБД. Попробуйте обратиться к администратору БД.
1. Дубли, конечно, нужно удалять заранее. Но в данном примере дублей во внутренней таблице LT_BKPF не будет, т.к. выбираются ключевые поля. Будут отдельные колонки с неуникальными значениями.
2. Касаемо RANGE. У конструкции вида «SELECT… FROM… WHERE field IN RANGE» есть существенный недостаток, с которым вы, похоже, еще не столкнулись: если в RANGE будет большое число строк (2000+), то получите dump с ошибкой DBIF_RSQL_INVALID_RSQL из-за того, что размер SQL-запроса в килобайтах превысит некоторую границу. Вот в таких случаях и спасает FOR ALL ENTRIES IN.
Пробовал перейти на электробритву Panasonic ES-LF51. Полгода ей брился в режиме «почти каждый день». В итоге все равно вернулся к станку. Что не понравилось в электробритве:
1. Лицо у меня не круглое, поэтому область шеи бреет очень плохо, из-за чего приходилось несколько раз тереть одно и то же место, что доставляло дискомфорт, появлялось даже не раздражение, а натёртость кожи.
2. После ванной либо летом в жаркую влажную погоду по сухому побриться практически невозможно: бритва цепляет кожу.
3. При влажном бритье с пеной/гелем бритва бреет приятнее, чем при сухом, но во время бритья станком ты провел его по лицу и понятно где сбрил, а электробритва взбивает пену на лице и теряешь визуальный контроль над растительностью. Приходится руками щетину под взбитой пеной ощупывать.
4. Самый большой для меня недостаток — нет чувства свежести после бритья. Даже всякие лосьоны не спасали.
Сейчас пользуюсь станком Gillette Fusion. Против роста волос не бреюсь (все равно на следующий день уже щетина чувствуется), поэтому раздражений на коже нет и можно реже менять кассеты. У меня одной кассеты хватает на 2-3 месяца. Покупаю их на алиэкспрессе.
Если кратко, то операторы INSERT REPORT и GENERATE SUBROUTINE POOL отличаются между собой тем, что первый динамически создает программу и сохраняет ее в хранилище как полноценную, которую можно потом редактировать руками, а второй оператор создает временную программу, которая перестанет существовать после очистки пула (закрытия транзакции). Пост-обработку можно делать в обоих случаях, поэтому не вижу смысла для нашей задачи использовать оператор INSERT REPORT. К тому же, я не уверен, что он корректно отработает в тестовой или продуктивной системе из-за того, что они закрыты для создания/редактирования программ в хранилище.
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. Расскажите, пожалуйста, подробнее, что это за компонент. Пока не совсем понимаю, о чем речь.
В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).
Сказали «А», говорите и «Б». Где именно в этих транзакциях посмотреть объем оперативной памяти, который потребовался для выполнения одного конкретного запроса?
В ST05 отражается время выполнения запроса. В DB02 отражается общая информация по БД (индексы, размеры таблиц и т.д.).
Промахнулся.
2. Касаемо RANGE. У конструкции вида «SELECT… FROM… WHERE field IN RANGE» есть существенный недостаток, с которым вы, похоже, еще не столкнулись: если в RANGE будет большое число строк (2000+), то получите dump с ошибкой DBIF_RSQL_INVALID_RSQL из-за того, что размер SQL-запроса в килобайтах превысит некоторую границу. Вот в таких случаях и спасает FOR ALL ENTRIES IN.
1. Лицо у меня не круглое, поэтому область шеи бреет очень плохо, из-за чего приходилось несколько раз тереть одно и то же место, что доставляло дискомфорт, появлялось даже не раздражение, а натёртость кожи.
2. После ванной либо летом в жаркую влажную погоду по сухому побриться практически невозможно: бритва цепляет кожу.
3. При влажном бритье с пеной/гелем бритва бреет приятнее, чем при сухом, но во время бритья станком ты провел его по лицу и понятно где сбрил, а электробритва взбивает пену на лице и теряешь визуальный контроль над растительностью. Приходится руками щетину под взбитой пеной ощупывать.
4. Самый большой для меня недостаток — нет чувства свежести после бритья. Даже всякие лосьоны не спасали.
Сейчас пользуюсь станком Gillette Fusion. Против роста волос не бреюсь (все равно на следующий день уже щетина чувствуется), поэтому раздражений на коже нет и можно реже менять кассеты. У меня одной кассеты хватает на 2-3 месяца. Покупаю их на алиэкспрессе.
2. Да, есть одно ограничение у метода create_dynamic_table: нельзя для одной программы создавать более 36 динамических таблиц. Такое же ограничение существует для оператора generate subroutine pools (нельзя сгенерировать более 36 программ).
Так как оба оператора используются в нашей программе, а пул у них общий, то, не выходя из программы, можно только 18 раз выполнить запрос (т.е. нажать «Выполнить», затем кнопку «Назад»), на 19 будет дамп. Конкретно в нашем случае эту проблему можно побороть путем автоматического перезапуска программы на 19 раз (пул очищается при этом). Примерно так:
Предварительно введенный запрос можно сохранить в ABAP Memory, а после перезапуску достать его оттуда.
3. Расскажите, пожалуйста, подробнее, что это за компонент. Пока не совсем понимаю, о чем речь.