结束例程的问题来更新Masterdata 0cust_sales

2020-08-24 06:42发布

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

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


紧急:您好,Gurus,我们需要使用最新的购买组来更新0cust_sales主数据。 根据提交数量和其他一些条件确定购买组。 我们已经实现了结束例程并在DTP中启用了语义密钥。 问题是End例程不能为几个客户正确地更新购买组,但是当我调试时,我可以在result_package中看到正确的结果,但是它没有更新P表。 当我在过滤器中与单个客户一起运行完整dtp时,效果很好,但我不确定为什么它没有更新为P表。
谁能帮我。 请找到随附的代码。

(48.5 kB)

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

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


紧急:您好,Gurus,我们需要使用最新的购买组来更新0cust_sales主数据。 根据提交数量和其他一些条件确定购买组。 我们已经实现了结束例程并在DTP中启用了语义密钥。 问题是End例程不能为几个客户正确地更新购买组,但是当我调试时,我可以在result_package中看到正确的结果,但是它没有更新P表。 当我在过滤器中与单个客户一起运行完整dtp时,效果很好,但我不确定为什么它没有更新为P表。
谁能帮我。 请找到随附的代码。

(48.5 kB)
付费偷看设置
发送
3条回答
空代码
1楼 · 2020-08-24 07:41.采纳回答

您好,Koushik,

下面的建议是假设业务规则本身还可以,就像您所说的那样。

业务规则可能并不总是在更新P表, 由于代码的流动方式,特别是代码的数据块处理方式。 这些建议集中于处理内部表中的数据(循环,梯形图,排序,读取等)的方式。

操作建议1:更新 sort it_42_22 语句 是BINARY SEARCH中使用的确切四个字段。

按kunnr spart vkorg vtweg的it_42_22进行排序。

提示:此语句似乎完全多余。 排序后的订单所获得的任何好处都将立即被覆盖在其下三行的 sort it_42_22 语句覆盖/擦除/从未使用。

操作建议3:更改 继续语句是 break 语句。

注意事项4.1:内部表中有许多记录,它们具有与 read相同的主键 表格...,键为kunnr spart vkorg vtweg 。 这就是为什么使用it_sort_2242来捕获同一键的较小数据集的原因。

注意事项4.2:不能保证二进制搜索按it_42_22表的排序顺序返回第一条记录。 二进制搜索仅保证它找到了至少一个匹配的记录,而不是"已排序内部表的第一个"。

注意事项4.3:添加一个小循环以向后遍历/迭代满足条件。 .." lv_index =已排序的it_42_22表中的第一个匹配记录"。

提示:虽然可能很想忽略"匹配记录"与"第一个记录"之间的细微区别; 正是这促使您提出了一个原始问题,即为什么有时不起作用,但大多数情况下却起作用。 鉴于大多数组织在0CUST_SALES(+1百万条记录)中都有一个相当大的主数据列表,因此我强烈建议您使用嵌套梯形图保留当前的BINARY SEARCH技术(在it_42_22处循环),并添加一个新的小段代码来遍历/向后迭代以识别真正的"小子集中的第一条记录"。

这只是一般性建议; 请确保调试目标系统中应用的所有更改,以确保不会造成意外后果。

希望这会有所帮助。

亲切的问候

John Lang

我是小鹏鹏啊
2楼-- · 2020-08-24 07:45

嗨Koushik,

可以 您让我们知道,根据KD Jain的建议,DTP语义密钥设置为0CUST_SALES吗?

鉴于代码进行块处理的方式,对于DTP语义密钥也同样至关重要 不包括其他复合对象(0DIVISION,0SALES_ORG,0DISTR_CHAN)。 它确实只需为0CUST_SALES,以确保属于单个主数据值0CUST_SALES(具有其所有部门,销售组织和分销渠道的单个客户编号)的所有记录都放入相同的result_package中,以供End Routine处理。

期待您对DTP语义配置的确认。

亲切的问候,约翰·朗。

木偶小白
3楼-- · 2020-08-24 07:25

嗨,库希克,

在Full DTP中,请将语义密钥设置为Cust Sales#,在End例程代码中,将Custsales升序排列,将购买组降序,然后选择它。

如果您不编写代码,那么任何核心ABAPer都会很容易理解这一点。 您只需将Cust Sales#设置为语义键。

谢谢

KD Jain

一周热门 更多>