两个表之间的左连接

2020-08-14 14:52发布

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

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


要仅从左表中获取数据,我必须使用右左联接?

这是代码:

选择*

来自马克

marc上的左外部连接mseg〜matnr = mseg〜matnr和marc〜werks = mseg〜werks

进入表it_marc的对应字段

其中s_plant中的marc〜WERKS和mseg中的〜CPUTM_MKPF> = sy-uzeit。

给我这个错误:

如果使用新的Open SQL语法,则必须使用@对所有主机变量进行转义。 变量S_PLANT不会转义。

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

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


要仅从左表中获取数据,我必须使用右左联接?

这是代码:

选择*

来自马克

marc上的左外部连接mseg〜matnr = mseg〜matnr和marc〜werks = mseg〜werks

进入表it_marc的对应字段

其中s_plant中的marc〜WERKS和mseg中的〜CPUTM_MKPF> = sy-uzeit。

给我这个错误:

如果使用新的Open SQL语法,则必须使用@对所有主机变量进行转义。 变量S_PLANT不会转义。

付费偷看设置
发送
3条回答
闻人可可
1楼-- · 2020-08-14 15:49

您要查找的内容并不意味着JOIN,而是表明存在:

 DATA dummy_plant TYPE marc-werks。
 SELECT_OPTIONS s_plant用于dummy_plant。
 数据it_marc马克类型表。
 选择*从马克
   在哪里marc〜werks在@s_plant
     和存在(
       选择*从mseg
       哪里marc〜matnr = mseg〜matnr
         AND marc〜werks = mseg〜werks
         和mseg〜cputm_mkpf> = @ sy-uzeit)
  进入表@it_marc。  

在我看来,您似乎应该同时测试CPUTM_MKPF和CPUDT_MKPF:

 AND(mseg〜CPUDT_MKPF> @ sy-datum
    或(mseg〜CPUDT_MKPF = @ sy-datum
     AND mseg〜cputm_mkpf> = @ sy-uzeit))

注意:由于目标数据对象与数据库表具有相同的结构,因此删除了CORRESPONDING FIELDS。

当学会了学习
2楼-- · 2020-08-14 15:44

< rel =" nofollow" hraf=" https://people.sap.com/sandra.rossi"> Sandra Rossi

it_marc表与marc表相同。 我只对marc表的值感兴趣,因为例如在marc中使用se16中的过滤器,只有一个对应的行(我希望我的内部表只有该行),而在mseg中有36个 行。 在选择中,当我只想要一个马克表时,它会带给我全部36行

SKY徐
3楼-- · 2020-08-14 15:27

你好尼克·鲁茹

您只需要使用内部联接,默认情况下该内部联接为内部联接。 错误是由于使用的所有变量上缺少@符号引起的,这是使用开放SQL语句时的原理。 下面的代码供您参考,

选择*
 从马克
 内部加入mseg
 在marc〜matnr = mseg〜matnr和marc〜werks = mseg〜werks
 进入表的对应字段@it_marc
 @s_plant中的marc〜WERKS和mseg〜CPUTM_MKPF> = @ sy-uzeit。  。
 

致谢!

一周热门 更多>