如何使用MDR插入自定义业务对象字段

2020-09-04 00:25发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我试图将在标准BO...

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

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


专家您好,

我试图将在标准BO SupplierInvoice中找到的数据插入到新的自定义业务对象中。 目的是将在每个"供应商发票"上找到的值更改为状态(在我的情况1中,假设"已付款"为一个数字)。 带值(1)的新值将它们存储到自定义BO中。

换句话说:

发票ID-ActualPagado

" SupplierIn-1004" 1//已付款

" SupplierIn-1005" 2//未付款或其他任何状态

我的自定义BO如下所示:

阅读文档后,我希望可以通过某种方式使用Mass data运行。

这是QueryStatus.qry文件:

脚本文件对话框:

我应该如何进行呢?

提前谢谢!

bo.jpg (44.6 kB)
付费偷看设置
发送
4条回答
亦是此间程序员
1楼 · 2020-09-04 01:03.采纳回答

你好多明哥,

我不确定我是否正确理解您的要求,但是您正尝试将日期(根据某些状态(ActualPagado))复制到您的自定义BO中。

为此,您可以创建海量数据运行(MDR),以查询(使用标准QueryByElements)日期范围的供应商发票(此日期范围将从MDR实例传递),并针对某些状态对其进行进一步过滤, 然后使用MDR中的操作在自定义业务对象中创建新实例。

这符合您的要求吗?


谢谢

Piotr。

四川大学会员
2楼-- · 2020-09-04 01:03

感谢您的回答Piotr,是的,要求是您在答案中上面所说的。 我正在尝试从供应商发票对象中复制状态属性->"已付款",并在新对象" actualPagado"中将其作为十进制值-> 1,并且在所有其他情况下("未付款","正在处理",等等) ->数字2。

下面是我尝试在action方法中运行的代码的图片:

我知道使用固定日期并不是最佳做法,但我正在尝试使其具有一定的效果,并且在研究答案的同时,一点一点地增加了更好的做法。

有些担忧:

1。 如何通过MDR实例传递日期范围? //我没有检查批量分配。

2。 我正在尝试在自定义BO中插入新记录...是否有更好的方法来实现这一目标?

3。 供应商状态码" 12" || "付费"我下载了该对象的代码列表,但是不确定是否可以正确访问它? 你能启发我吗?

对不起,我想对所有问题进行疯狂的回答,是的,如果您对我的每一个问题都有读物,那很好。

在此先感谢您:D

Nir深蓝
3楼-- · 2020-09-04 01:07

您好,

在第一种方法中,它开始尝试向SAP Business Object(BO)添加和扩展字段,然后以我想要的方式用信息更新新的BO。 您还记得吗?...这是将与" SupplierInvoice"的"状态"有关的所有"已支付"值都更改为1,将所有其他情况更改为数字2。

从那时起创建的发票可以使用此逻辑。 在此新逻辑之前创建的所有其他发票将显示为空或以cero作为值。

一个同事告诉我尝试使用MDR(大量数据运行)...我尝试过,但是遇到将MDR与@SAP BO一起使用...整个BO是"只读的",即使我的扩展字段是" read" 唯一"。 然后开始注意到,大多数示例都将MDR与自定义BO一起使用,另一方面,当使用MDR时,它打算使用日期范围或模式来更新自定义BO *。 (仍然需要对此假设进行更多的测试)。 无论如何,如果我发现其他行为,都会更新答案。

因此,最后,我决定能够为其动态地在自定义BO中插入2已经创建了两个BO 1和BO2,最后一个具有一种操作方法,该操作方法触发逻辑以动态方式插入到BO1中而不使用UIform 。

这里有一些图片:

BO1:

BO2:

用于动态插入的简单逻辑:

SAP文档:
https://help。 sap.com/viewer/cbcebe3cfb1647a8b0322c18dbb0b481/2019.05/zh-CN/7273082073e21014a051a8a2ddb91cda.html

使用这种方法,可以查询另一个对象(SAP BO)并提供自定义BO。 唯一让我担心的是....在此基本脚本中,我们只创建了一个BO的实例,但是如果要查询一个SAP BO来提供另一个BO,则将创建许多对象,但不确定如何 SAP处理对象实例化。 希望SAP有办法在foreach的迭代中销毁它们。

如果您有更好的方法,请告诉我一些有关如何实现的图片。

提前感谢

N-Moskvin
4楼-- · 2020-09-04 00:49

嗨多明哥,

如果您在处理完实例后不需要任何实例,则可以使用创建它们的相同方式简单地删除它们,即使用.Delete()操作。

关于MDR,是的,它们主要用于自定义BO,以反映和收集来自标准和自定义BO的数据以进行进一步处理,但是您也可以根据业务对象及其状态大规模处理更新的标准BO。 它将被读/写。

但是,如果您的方法适合您的目的,那是完全可以的。

谢谢

Piottr。

一周热门 更多>