我需要在表mara和makt上使用内部联接编写ABAP程序。我了解使用这样的数据声明的想法:
data: imatnr type mara-matnr,
ematnr type makt-matnr.
select mara~matnr makt~matnr into (imatnr, ematnr) from mara left join makt on mara~matnr = makt~matnr.
write: / imatnr, ematnr.
endselect.
在考试中,我必须编写一个没有内部表,字段符号 JUST TABLES DEKLARATIONS 的ABAP程序。 我做了几次尝试,但是没有找到答案。 我尝试过这样的事情:
tables: mara, makt.
select * from mara inner join makt on mara~matnr = makt~matnr.
write: / mara-matnr, makt-matnr.
endselect.
控制台说,如果要在select * from语句中使用JOIN,则必须使用INTO。
所以我的问题是:是否可以仅使用TABLES
建立JOIN还是仍然需要DATA:
?
答案 0 :(得分:3)
所以我的问题是:
是否可以仅使用表建立连接:mara,makt。
不。 表格是工作区,又称平面结构,关键字是 flat 。您不能仅使用TABLES选择多行,也不能加入TABLES工作区。
顺便说一句,表help guidelines清楚地说
除经典dynpros外,没有工作台区域
所以忘记这些过时的东西。
如果您的考试和学习课程只要求您使用TABLES
,则可以避开那些课程和那些学校。请逃跑。
P.S。满足嵌套需求的唯一方法是嵌套SELECT:
TABLES: mara, makt.
SELECT * FROM mara
INTO mara.
WRITE: / `MARA selected: `, mara-matnr.
SELECT *
INTO makt
FROM makt WHERE matnr = mara-matnr.
WRITE: / `MAKT selected: `, makt-matnr.
ENDSELECT.
ENDSELECT.
但这让人恶心。
答案 1 :(得分:2)
可能对您有所帮助的SQL选择查询之间几乎没有区别。
通用选择语句(没有任何特定类型)如下所示。
Select * from [table] where [field] = [value]
根据是否以及如何指定into
子句,使用特定类型的选择。
into table
into table
选择一个或多个记录进入内部表。仅当选择子句(字段列表)与内部表的结构相同时才能使用。
data: lt_ekko type table of ekko,
ls_ekko type table of ekko,
select * from ekko into table @lt_ekko.
loop at lt_ekko into ls_ekko.
write: / ls_ekko-ebeln.
endloop.
into
into
表示您正在选择一个变量(如果您选择1列)或一个结构(如果您选择了1个以上)。这很重要,因为结构只能且变量只能存储1个值或行,这意味着您必须指定要选择的single
行或使用select
/ {{ 1}}语句来执行循环选择。
endselect
OR
data: ls_ekko type ekko.
select single * from ekko into @ls_ekko where ebeln = [some number]
write: / ls_ekko-ebeln.
select * from ekko into @ls_ekko where ebeln = [some number].
write: / ls_ekko-ebeln. "will print one for each row
endselect.
into corresponding fields of (table)
(和into corresponding fields of
)以与into corresponding fields of table
和into
相同的方式选择记录。区别在于您的结构或内部表不必与所选字段列表相同。所选字段将以相同的名称存储到您的表/结构字段中。
into internal table
data: ls_ekko type ekko.
select single ebeln, bukrs from ekko into @ls_ekko where ebeln = [some number].
write: / ls_ekko-ebeln.
子句 没有into
子句类似于into
[结构],因为它只能选择1条记录。这意味着您必须指定选择into
记录。
注意:要在其中选择的表必须在程序中声明才能使用这种类型的选择。
single
由于您没有使用 select single * from ekko where ebeln = [some number].
write: / ekko-ebeln.
子句,因此使用的是最后一种类型,这意味着您必须使用into
答案 2 :(得分:-1)
请尽量不要使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
This is some text that #has #hash #tags
</p>
。从数据库表中仅获取必要的字段名称。
下面是如何联接两个表的示例。
Select *