网格真的可以在生产代码中使用吗?

2020-08-21 13:16发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我有一个要求,其中...

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

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


专家您好,

我有一个要求,其中我有一个可以为其创建网格体系结构的特定文档。

我的文档结构:

标题1..n项

项目1..n项目行。

但是,我有两个问题。

1。 可以为这种情况创建网格吗?

2。 假设我在item_line表中有一条记录,但是在Item表和标题表中缺少相应的记录。 我可以使用网格路径的功能吗?

我确实有使用深度结构实现相同方法的替代解决方案。 但是我在ABAP 740中遇到了 MESH 关键字,真的很想探索它。

先谢谢了。

5条回答
悠然的二货
2020-08-21 13:54 .采纳回答

我想我了解您的情况。 您希望保持特征(标题/项目/项目行)之间的关系,并且有可能在一个级别上进行"批量"处理,而无论它是否在此级别进行。

考虑第二点 ,鉴于更深层次的实体(项目行)可能没有更高层次的实体将其绑定,因此我认为这种情况无法使用嵌套结构有效地解决。

我可能会尝试 3种平面表类型以表键的形式存储连接:

 TYPES BEGIN OF标头。
 TYPES header_id TYPE i。
 TYPES字段TYPE字符串。
 类型END OF标头。

 项目的类型开始。
 TYPES header_id TYPE i。
 TYPES item_id TYPE i。
 TYPES字段TYPE字符串。
 TYPE OF END OF项目。

 类型始于item_line。
 TYPES header_id TYPE i。
 TYPES item_id TYPE i。
 TYPES item_line_id TYPE i。
 TYPES字段TYPE字符串。
 item_line的类型结尾。

 TYPES标头TYPE SORTED TABLE OF标头具有唯一键header_id。
 TYPES项目TYPE排序的具有唯一键的项目表header_id item_id。
 TYPES item_lines使用唯一键的item_line类型排序表header_id item_id item_line_id。
 

甚至可以用来构建网格:

类型:网格的开始document_container,
          标头TYPE标头
            关联to_items TO项目ON header_id = header_id,
          项目TYPE项目
            关联to_item_lines TO item_lines开header_id = header_id
                                                   AND item_id = item_id,
          item_lines TYPE item_lines,
        网格结束document_container。

 资料:docs TYPE document_container。
 

但是与"普通"表表达式相比,导航语法没有任何真正的好处。 而且,缺少的上层实体在这里也是一个问题。

数据:docs TYPE document_container。

 docs-headers =
   VALUE#((header_id = 1字段='A')
            (header_id = 2 field ='B'))。

 docs-items =
   VALUE#((header_id = 1 item_id = 1字段='C')
            (header_id = 1 item_id = 2字段='D')
            (header_id = 2 item_id = 1字段='E')
            (header_id = 2 item_id = 2字段='F')
           )。

 docs-item_lines =
   值#((header_id = 1 item_id = 2 item_line_id = 1 field ='G')
            (header_id = 1 item_id = 2 item_line_id = 2 field ='H')
            (header_id = 1 item_id = 2 item_line_id = 3 field ='I')
            (header_id = 9 item_id = 9 item_line_id = 1字段='J')
          )。

 DATA(header)= docs-headers [1]。

 "查找字段I
 DATA(field)= docs-headers \ to_items [标头item_id = 2] \ to_item_lines [item_line_id = 3] -field。


 "尝试找到J,但由于不存在更高级别的节点而引发了异常
 DATA(field2)= docs-headers \ to_items [VALUE#(header_id = 9)item_id = 9] \ to_item_lines [item_line_id = 1]-字段。

 "即使缺少标题和项目,它也可以工作,而且看起来很干净
 DATA(field3)= docs-item_lines [header_id = 9 item_id = 9 item_line_id = 1] -field。

因此,我将使用3个具有键关系和表表达式的表。

一周热门 更多>