云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云主机_网站虚拟服务器_怎么样

小七 141 0

在最近的一次活动中,一位客户请求帮助改进其S/4HANA Cloud Multi-Tennant Edition(本博客其余部分为S4HC)的销售订单工作流。客户发现S4HC内置工作流存在一些局限性,正在寻找更灵活的选项—类似于SCP工作流服务提供的功能。对于S4HC和SCP工作流的一些可扩展性选项来说,这是一个很好的展示。因此,我决定创建一个小型PoC来说明这方面的可能性。

我想到的架构如下

设置此功能有以下几个部分

设置S4HC以阻止每个销售订单审批(配置和应用内扩展)配置S4HC以触发SCP中的企业消息传递系统(EMS)消息使用Webhook在SCP中配置EMS创建节点.js具有用于EMS触发工作流的端点的服务创建工作流

让我们一个一个地完成步骤

S4HC提供配置选项来触发文档类别报价和标准销售订单的内部或外部批准–不幸的是,自S4HC版本1905起,只有这两个类别受支持–希望我们在将来能获得更多选项!为了配置这些,我去了"管理您的解决方案"应用程序中的"销售文档审批"SSCUI.

第一步是设置审批请求的原因

我只需要外部原因,但也创建了一个内部原因,因为我正在滚动…

接下来我必须将审批请求原因分配给文档类别。我为标准订单(C类)提供了外部批准理由,还添加了内部批准理由(同样,只是为了好玩)

正如您可以看到的,从1905版开始,系统提供了以下令人印象深刻的文档类别选择列表

这就是批准配置。为了实际触发批准/设置批准块,如何获得大数据,我还必须在应用程序中实现以下BAdI"自定义字段和逻辑"

我输入了以下代码:

将创建或更改的每个SO(类型或)置于批准状态。

快速测试-我对销售订单进行更改,保存,然后尝试进入更改模式–系统抛出硬错误:

在显示模式下检查订单,我可以看到批准状态设置了我之前配置的原因文本–因此配置和BAdI工作。这是很简单的一部分,现在我必须处理实际的批准。

有趣的事实:最初我希望我可以避免使用EMS,直接触发工作流形成应用程序内扩展(S4HC BAdI中的"ABAP灯"支持HTTP调用毕竟通过cl\ ble\ U HTTP\ U客户端)。这在更改销售订单时非常有效,但是在创建销售订单时,大数据网,调用BAdI时,在BAdI的输入参数中不会设置销售订单ID。好吧,在做所有枯燥的编码之前,我也可以从文档中得到这个小事实——但是这些天谁在看文档呢……至少我可以把编码放在这个博客中,展示S4HC应用内扩展中Webservice调用的一些很好的例子(它实际上对改变SOs起到了作用!)。为了使这种编码工作,我还必须创建两个通信场景。

在发现应用程序内的Webcall无法工作后,我幸运地发现一个同事在另一个PoC上为销售订单设置了EMS,所以我只需将我的一个小寄生Webhook添加到他的EMS队列中,并免费使用其余的Webhook。有一些关于如何设置EMS的好博客/文档,因此,我将不在这里进行详细介绍—例如,查看联机帮助

我们在SCP Cloud Foundry(CF)中使用EMS消息有两种方式—您可以创建一个Java应用程序并将其链接到您的EMS实例(我的同事为其PoC做了这项工作,看起来相当麻烦)或使用Webhook,每当新消息进入队列时,EMS就会调用它。我选择了后者。为了使用Webhook,我必须确保SCP CF中的EMS实例是使用以下JSON选项创建的——幸运的是它是!

要创建Webhook,我转到EMS实例,打开仪表板,然后导航到Webhook订阅并单击"创建"–我使用了以下设置–Webhook上有一个很好的联机帮助

如帮助中所述,Webhook需要对Webhook URL进行成功的握手调用,在它激活之前。基本上,它用一个HTTP"OPTIONS"调用来调用Webhook URL(是的,有这样一个东西)–Webhook端点需要用一个响应头Webhook Allowed Origin来回复,该响应头与请求头Webhook Allowed Origin匹配,或者是"*"。我将在下一节展示我是如何在节点.js应用程序。为了触发握手,我们使用小握手图标,如果Webhook端点的行为正常,它会将"握手状态"更改为Completed。从现在起,EMS为每个队列条目向端点发送通知。

要使用EMS Webhook,我需要创建一个端点来触发工作流。我决定创建一个节点.js应用程序。我在WebIDE中创建了一个MTA项目节点.js模块并将其部署到云铸造租户。下面模块的编码(这是一个PoC,所以采用一些快捷方式,如硬编码url、无错误处理等)

以上编码回答了来自EMS的两种请求:

OPTIONS请求初始握手来设置Webhook队列条目触发的通知请求

如果收到EMS队列条目请求(这意味着用户在S4HC系统中创建或更改了销售订单),则会发生以下情况