用FOR ALL ENTRIS IN替换 INNER JOIN

听群里大佬说,学江正军的博客就行了,看书和视频就是浪费时间,我也不好怎么评价,只能说,江正军的博客是真的牛。以下是师兄交给我的,不过我还是错付了他的好意,我要离职了,未来一片黑暗,还有一分钟就拜拜了,就不多说废话了。

FOR ALL ENTRIS IN

1、使用该选项后,对于最后得出的结果集系统会自动删除重复行。因此如果你要保留重复行记录时,记得在SELECT语句中添加足够字段

2、FOR ALL ENTRIES IN后面使用的内部表itab如果为空,将查出当前CLIENT端所有数据(即忽略整个WHERE语句,其他条件都会被忽略)

参考地址

初始代码:

ATA: BEGIN OF i_list OCCURS 0,
        ebeln LIKE ekko-ebeln,            "  订单号
        bukrs LIKE ekko-bukrs,            "  公司代码
        ebelp LIKE ekpo-ebelp,            "  行号
        matnr LIKE ekpo-matnr,            "  物料号
        menge LIKE ekpo-menge,            "  数量
        meins LIKE ekpo-meins,            "  单位
        maktx LIKE makt-maktx,            "   物料描述
        labst LIKE mard-labst,            "   库存
      END OF i_list.
*获取数据
  SELECT
    ekko~ebeln
    ekko~bukrs
    ekpo~ebelp
    ekpo~matnr
    ekpo~menge
    ekpo~meins
    makt~maktx
   mard~labst
    INTO CORRESPONDING FIELDS OF TABLE i_list
    FROM ekko
    INNER JOIN ekpo ON ekko~ebeln = ekpo~ebeln
    INNER JOIN mard ON ekpo~matnr = ma
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP中的INNER JOIN和FOR ALL ENTRIES IN都是用于连接两个或多个表的语句,但它们的使用和效果有所不同。 INNER JOIN是一种SQL语句,它用于根据连接条件将两个或多个表中的行进行匹配。INNER JOIN只返回符合连接条件的行,即连接字段在两个表中都有匹配的行。INNER JOIN的示例代码如下: ``` DATA: lt_table1 TYPE TABLE OF table1, lt_table2 TYPE TABLE OF table2, lt_result TYPE TABLE OF result. SELECT * FROM table1 INNER JOIN table2 ON table1.field = table2.field INTO TABLE lt_result. ``` FOR ALL ENTRIES IN是一种ABAP语句,它用于从一个表中选择符合条件的数据,并将这些数据作为连接条件用于另一个表。FOR ALL ENTRIES IN只返回符合条件的数据所对应的行,即连接字段在第二个表中可能没有匹配的行。FOR ALL ENTRIES IN的示例代码如下: ``` DATA: lt_table1 TYPE TABLE OF table1, lt_table2 TYPE TABLE OF table2, lt_result TYPE TABLE OF result. SELECT * FROM table1 INTO TABLE lt_table1 WHERE field = 'value'. SELECT * FROM table2 FOR ALL ENTRIES IN lt_table1 WHERE field = lt_table1-field INTO TABLE lt_table2. LOOP AT lt_table1 INTO DATA(ls_table1). LOOP AT lt_table2 INTO DATA(ls_table2). IF ls_table1-field = ls_table2-field. APPEND VALUE result( field1 = ls_table1-field1 field2 = ls_table2-field2 ) TO lt_result. ENDIF. ENDLOOP. ENDLOOP. ``` 总的来说,INNER JOIN适用于连接两个表中的行,而FOR ALL ENTRIES IN适用于将一个表中的数据作为连接条件用于另一个表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值