Abap 将DB表中的单个字段提取到itab中

Abap 将DB表中的单个字段提取到itab中,abap,opensql,Abap,Opensql,我想从透明表z\u accounts中获取a字段,比如excep\u point,用于公司代码和账号的组合。如何在ABAPSQL中执行此操作 假设表结构是 |company_code | account_number | excep_point | 假设您拥有完整的主键 data: gv_excep_point type zaccounts-excep_point. select single excep_point into gv_excep_point from zaccounts w

我想从透明表
z\u accounts
中获取a字段,比如
excep\u point
,用于
公司代码
账号
的组合。如何在ABAPSQL中执行此操作

假设表结构是

|company_code | account_number | excep_point |

假设您拥有完整的主键

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.

至少还有另外一种变体,但这是我最常使用的两种变体。

除了Bryan的答案之外,还有关于OpenSQL的官方在线文档。

仅供参考。在表中选择数据时,可以编写复杂的表达式来组合不同的字段。例如,您有两个字段“A”和“B”的内部表(itab)。您将从DB表(dbtab)中选择数据,它有6列——“z”、“x”、“y”、“u”、“v”、“w”。例如,每个字段都是char2类型,您的目标是在内部表的“A”字段中合并“z”、“x”、“y”、“u”,在“B”字段中合并“v”、“w”。您可以编写简单的代码:

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>.
选择z作为+0(2)
x作为A+2(2)
y为A+4(2)
u作为A+6(2)
v为B+0(2)
w为dbtab中的B+2(2)
进入表itab的相应字段
哪里
这个简单的代码使您的工作完成得非常简单

选择z作为+0(2)x作为+2(2)。。。非常好,从未见过这种狡猾的选择方法。多谢各位。