#abap #opensql
#abap #opensql
Вопрос:
Я хочу извлечь поле a, скажем, excep_point
из прозрачной таблицы z_accounts
для комбинации company_code
и account_number
. Как я могу это сделать в ABAP SQL?
Предположим, что структура таблицы
|company_code | account_number | excep_point |
Ответ №1:
Предполагая, что у вас есть полный первичный ключ…
data: gv_excep_point type zaccounts-excep_point.
select single excep_point
into gv_excep_point
from zaccounts
where company_code = some_company_code
and account_number = some_account_number.
если у вас нет полного PK и для excep_point может быть несколько значений
data: gt_excep_points type table of zaccounts-excep_point.
select excep_point
into table gt_excep_points
from zaccounts
where company_code = some_company_code
and account_number = some_account_number.
Существует по крайней мере еще один вариант, но эти 2 я использую чаще всего.
Ответ №2:
Только для информации. Когда вы выбираете данные в таблицу, вы можете писать сложные выражения для объединения разных полей. Например, у вас есть внутренняя таблица (itab) с двумя полями «A» и «B». И вы собираетесь выбрать данные из таблицы базы данных (dbtab), в которой есть 6 столбцов — «z», «x», «y», «u», «v», «w». И, например, каждое поле имеет тип char2, вы стремитесь поместить «z», «x», «y», «u» в поле «A» внутренней таблицы и «v», «w» в поле «B». Вы можете написать простой код:
select z as A 0(2)
x as A 2(2)
y as A 4(2)
u as A 6(2)
v as B 0(2)
w as B 2(2) FROM dbtab
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE <where condition>.
Этот простой код упрощает выполнение вашей работы
Комментарии:
1. выберите z как A 0 (2) x как A 2 (2) … очень приятно, никогда не видел такого сложного метода выбора. Большое вам спасибо.
Ответ №3:
В дополнение к ответу Брайана, здесь приведена официальная онлайн-документация по Open SQL.