ABAP新语法-带插入等的条件FOR循环

2020-08-21 04:24发布

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

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


你好,

是否可以使用for循环以新的语法编写此代码?

在mt_xyz的LOOP AT分配。

 如果 <>'C'。

 继续。

 万一。

 读表lt_abc将分配给键parent_key组件parent_key =  -key。

 如果sy-subrc <> 0。

 继续。

 万一。

 如果 -field ='z'。

 ls_key-key = -键。

 将ls_key插入表lt_keys中。

 万一。

 ENDLOOP。

亲切的问候,

帕斯卡

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

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


你好,

是否可以使用for循环以新的语法编写此代码?

在mt_xyz的LOOP AT分配。

 如果 <>'C'。

 继续。

 万一。

 读表lt_abc将分配给键parent_key组件parent_key =  -key。

 如果sy-subrc <> 0。

 继续。

 万一。

 如果 -field ='z'。

 ls_key-key = -键。

 将ls_key插入表lt_keys中。

 万一。

 ENDLOOP。

亲切的问候,

帕斯卡

付费偷看设置
发送
2条回答
半个程序猿
1楼 · 2020-08-21 04:57.采纳回答

在修改了TABLE TYPE定义(以及其他更正,例如MT_XYZ <> C的属性限制,您的编码缺少该属性)之后,这是一条适合您的语句

 DATA(lt_keys)= VALUE tty_keys(FOR wa1 IN mt_xyz WHERE(key <>'C'AND field ='z')
                                 在lt_abc中使用wa2 IN使用密钥parent_key
                                                   在哪里(parent_key = wa1-key)
                                (键= wa1-key))。

这里是一个包含示例数据和上述编码输出的测试报告:

 REPORT ZVALUESFOREXAMPLE。

 类型:开始于ty_key,
          键TYPE char1,
        END OF ty_key,
        tty_keys带有Empty KEY的ty_key类型标准表,
        开始ty_xyz,
          键TYPE char1,
          字段TYPE char1,
        结束于ty_xyz,
        带有空键的ty_xyz的tty_xyz类型标准表,
        开始ty_abc,
          键TYPE char1,
          parent_key TYPE char1,
        结束于ty_abc,
        带有空键的ty_abc的tty_abc类型标准表
             带非唯一的已排序键parent_key COMPONENTS parent_key。

 "表mt_xyz的测试数据
 DATA(mt_xyz)= VALUE tty_xyz((key ='A'field ='z')
                               (键='B'字段='y')
                               (键='C'字段='x')
                               (key ='D'field ='w'))。

 "表lt_abc的测试数据
 DATA(lt_abc)= VALUE tty_abc((键='B'parent_key ='A')
                               (key ='D'parent_key ='C'))。

 "这是您正在寻找的实际陈述
 "基于mt_xyz和lt_abc为表lt_keys创建值
 DATA(lt_keys)= VALUE tty_keys(FOR wa1 IN mt_xyz WHERE(key <>'C'AND field ='z')
                                 在lt_abc中使用wa2 IN使用密钥parent_key
                                                   在哪里(parent_key = wa1-key)
                                (key = wa1-key))。

 "示例数据的输出
 DATA(out)= cl_demo_output => new()。
 out-> write(mt_xyz)。
 out-> write(lt_abc)。
 out-> write(lt_keys)。
 out-> display()。
 

落灬小鱼
2楼-- · 2020-08-21 04:40

帕斯卡·迪茨(Pascal Ditzel),上面的编码是使用新语法的最终结构,就像您使用旧语法所做的一样。

  • 第一个where条件部分表示CONTINUE逻辑。
  • 第二个where条件表示Read Table语句。
  • 使用key语句可确保在访问第二个表的表值时使用特定的键。
  • 最后一个带括号的语句为第三个表创建新值。

尝试一下并使用它。

一周热门 更多>