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

2020-08-21 13:16发布

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

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


专家您好,

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

我的文档结构:

标题1..n项

项目1..n项目行。

但是,我有两个问题。

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

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

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

先谢谢了。

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

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


专家您好,

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

我的文档结构:

标题1..n项

项目1..n项目行。

但是,我有两个问题。

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

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

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

先谢谢了。

付费偷看设置
发送
5条回答
悠然的二货
1楼 · 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个具有键关系和表表达式的表。

黑丝骑士
2楼-- · 2020-08-21 13:53

Sandra Rossi

我的关注点是第二点。

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

xfwsx85
3楼-- · 2020-08-21 13:29

您的问题中缺少两件事:

  • 给定标题1..n 项目
  • 和项目1..n项目行。
  • 何时? (对网格物体做些什么)
  • 然后呢? (期望)
N-Moskvin
4楼-- · 2020-08-21 13:36

嗨, Sandra Rossi

结构如下:
标题->项->项行

关联b/w每个节点均为
Header:Item = 1:n和
Item:Itemslines = 1:n

假定以下值
标题:
Field1 = 100
Field2 = ABC

Item1:
Field1 = 100
Field3 = 10
Field4 =项目1

Item2:
Field1 = 100
Field3 = 20
Field4 =项目2

Item_line1:
Field1 = 100
Field3 = 10
Field5 = 1
Field6 =项目行1

Item_line2:
Field1 = 100
Field3 = 20
Field5 = 1
Field6 =项目行1

Item_line3:
Field1 = 200
Field3 = 30
Field5 = 1
Field6 =项目行1

如果出现这种情况 目前,我可以使用标题中的网格路径访问Item_line3值吗? 从技术上讲似乎是不可能的,但是还有其他方法可以解决这种要求。 因为我还需要处理那些不在给定标头中的item_lines。

使用网格或仅实现深层结构会更好?

lukcy2020
5楼-- · 2020-08-21 13:53

Tamit Kumar Das Sharma

我不知道有任何语句允许您将其中一项删除 走。 恐怕您必须分别从每个表中删除。

一周热门 更多>