从两个Itab中进行一次选择查询

2020-08-16 22:47发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我有两个内部表:保存BKPF数据的itab1和保存RSEG数据的itab2。

BELNR是两者的共同字段。

现在,我需要使用一个基于itab1和itab2中基于BELNR的选择查询从BSEG获取数据。

我该怎么做?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我有两个内部表:保存BKPF数据的itab1和保存RSEG数据的itab2。

BELNR是两者的共同字段。

现在,我需要使用一个基于itab1和itab2中基于BELNR的选择查询从BSEG获取数据。

我该怎么做?

付费偷看设置
发送
6条回答
打一壶酱油
1楼-- · 2020-08-16 22:56

您好 Ricky Shaw
如果您想在一个SELECT语句中使用它,建议您创建一个临时 由键字段(BELNR,GJAHR,BUKRS)组成的表(即LT_BSEG_PARTIAL_KEY),并根据您先前从BKPF和RSEG获取的条目进行填充。 我还建议对表进行排序,并从表中删除相邻的重复项。 正如 Mateusz Adamus 所述,请始终先检查您的表是否为空,然后再将其与FOR ALL ENTRIES语句一起使用。
关于,
Bartosz

粗暴的香蕉
2楼-- · 2020-08-16 23:16

您运行的是S/4HANA还是旧版本的SAP ERP? BSEG是S/4HANA中的透明表,但是在旧版本中是集群表,它将提供两个完全不同的答案。 (并最终告诉我们您的ABAP版本,以便获得更准确的答案)

Nir深蓝
3楼-- · 2020-08-16 23:20

Ricky Shaw

您可以尝试以下代码:

排序:IT_BKPF,IT_RSEG。
 *还可以通过比较必填字段,尝试在排序后从上述两个表中删除相邻重复项

 如果it_bkpf []不是INITIAL。
   选择 *
   从bseg
   插入表@DATA(it_bseg)
   对于@it_bkpf中的所有条目
   在哪里belnr = @ it_bkpf-belnr和
         BUKRS = @ it_bkpf-bukrs和*希望该字段位于it_bkpf中
         GJAHR = @ it_bkbf-bukrs。  *希望该字段位于it_bkpf中
   如果sy-subrc EQ 0。
     通过belnr排序it_bseg。
   万一。
 万一。

 如果it_rseg []不是INITIAL。
   选择 *
   从bseg
   附表@it_bseg
   对于@it_rseg中的所有条目
   在哪里belnr = @ it_rseg-belnr和
         BUKRS = @ it_rseg-bukrs和*希望该字段位于it_rseg中
         GJAHR = @ it_rseg-bukrs。  *希望该字段位于it_rseg中
   如果sy-subrc EQ 0。
     通过belnr排序it_bseg。
   万一。
 ENDIF。

致谢!

哎,真难
4楼-- · 2020-08-16 23:01

正如Bartosz所述,不能仅基于BELNR来完成对BSEG的访问,而必须基于以下三个主要条件来进行: 键列BELNR,GJAHR,BUKRS,否则您可以从BSEG中检索几条不相关的行。

大简至美
5楼-- · 2020-08-16 23:14

try,

两个内部表都包含相同的结构,意味着可以使用 将it_rseg添加到it_bkpf或

从bseg选择*到表it_bseg中,用于it_bkpf

从bseg选择*将表it_bseg附加到it_rseg中的所有条目。

RAmesh

蓋茨
6楼-- · 2020-08-16 22:57
BartoszZiólkowski,是的,添加了代码 但仅在问题中提到BELNR是公共字段。

一周热门 更多>