Разберём конструкцию SELECT ABAP и с чего начать её изучение. Варианты считывания данных из таблиц ABAP словаря. Так же в сравнении покажу запросы в новом и в старом синтаксисе.
SELECT SINGLE. Считывание одной строки из ABAP таблицы.
Часто возникает необходимость считать только одну строку из таблицы. Для этого в основном используется конструкция SELECT SINGLE ABAP. Подробно разберём каждый из операторов из которых состоит запрос ABAP:
- SELECT SINGLE. После этого оператора указываются поля, которые мы хотим извлечь из таблицы ABAP. Есть несколько вариантов указания полей
- SELECT SINGLE * – Считать все поля. Важно! В этом случае считается и поле мандант если оно есть в таблице. Не стоит злоупотреблять этим способом. Подробней в видео про оптимизацию ABAP кода в видео на канале YouCoder.
- SELECT SINGLE price currency planetype – Перечисление полей
- SELECT SINGLE price, currency, planetype – Перечисление полей в новом синтаксисе. Подробнее в видео про новый синтаксис в запросах ABAP.
- INTO. После этого оператора указываем куда поместить считанные данные. В этом случае есть тоже несколько вариантов указания:
- lNTO ls_sflight – помешаем данные в переменную с типом структуры.
- INTO lv_price – помещаем данные в переменную с простым типом.
- INTO ( lv_price, lv_currency, lv_planetype ) – помещаем каждое отдельное поле в отдельную переменную.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
PARAMETERS: p_date TYPE s_date DEFAULT '20160527'. DATA: ls_sflight TYPE sflight. " Старый синтаксис SELECT SINGLE * INTO ls_sflight FROM sflight WHERE carrid = 'AA' AND connid = '0064' AND fldate = p_date. " Новый синтаксис SELECT SINGLE * INTO @DATA(ls_sflight_inl) FROM sflight WHERE carrid = 'AA' AND connid = '0064' AND fldate = @p_date. cl_demo_output=>display( ls_sflight ). |
SELECT INTO TABLE. Одновременное считывание нескольких строк из таблицы SAP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
PARAMETERS: p_date TYPE s_date DEFAULT '20160527'. DATA: lt_sflight TYPE STANDARD TABLE OF sflight. " Старый синтаксис SELECT * INTO TABLE lt_sflight FROM sflight WHERE fldate = p_date. " Новый синтаксис SELECT * INTO TABLE @DATA(lt_sflight_inl) FROM sflight WHERE fldate = @p_date. cl_demo_output=>display( lt_sflight ). |
SELECT … ENDSELECT. Построчное считывание записей с обработкой в цикле.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
PARAMETERS: p_date TYPE s_date DEFAULT '20160527'. DATA: ls_sflight TYPE sflight. " Старый синтаксис SELECT * INTO ls_sflight FROM sflight WHERE fldate = p_date. BREAK-POINT. ENDSELECT. " Новый синтаксис SELECT * INTO @ls_sflight_inl FROM sflight WHERE fldate = @p_date. ENDSELECT. |
Примеры использования SELECT в задачах:
- Декларация внутренних таблиц ABAP. Внутренняя таблица ABAP это переменная в которую очень часто помещают результат запроса. В этой статье подробно разбираю варианты её определения используя и запросы в статье.
- Инлайновая декларация ABAP. Определение переменной непосредственно в месте использования.