2020-09-07 18:17发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我正在尝试在Work Manager中集成机器学习解决方案。 因此,我需要调用一个外部API来发送数据和接收信息。
据我了解,应该可以通过在Java层中调用API来实现。
有人实施过这样的解决方案吗? 您可以分享您的经验吗?
你好哈桑·穆萨法尔,
您的问题似乎有些悬而未决。
请让社区知道您正在努力实现什么,您目前的现状是什么以及负责调用您的机器学习代码的组件是什么?
根据您的问题和我的假设(因为您尝试使用Java调用外部API)
1)我会按照以下方式写
1.1)事务步骤将捕获需要发送到后端的值(或作为输入的相应API。将在更新步骤中为该步骤配置一个steplet。
1.2)将调用代理动作来启动传输(在这里,您可能需要决定是否将传输推迟到标准应用程序下一次同步之前进行,还是需要立即传输)
1.3)steplet java类将提供相同的值。
在这里,您可以使用"交易"会话,并且可以检索从设备发送的值
可能在单独的stephandler类中。
1.4)现在,您可以启动对机器学习"事物"所在的后端API的调用。
让它执行预期的任务。
1.5)将编写另一次提取,该提取将以Agentry提取标准对象的方式获取结果数据。
例如 您可以按需写入将根据需要启动。 相同的将调用Server Exchange步骤并调用Java类steplet(假定该类返回SAPObjects的ArrayList。)在Stephandler中,您可以调用您的API,该API应该返回您需要在客户端可用的值。 如果只有一个值(如字符串等),则可以使用填充的值来创建单个SAPObject。
如果有多个记录,则需要以某种方式调整相同的记录以将其存储在相应的SAPObject数组中。(您必须从Java的角度考虑对相同的数据结构进行适当的调整,但最后这 结果以某种方式应适合_returnData数组)。
2)另一种书写方式是(如果输入值很少)
只需执行一次上述更改即可完成上述操作,而不是使用Transaction,您也可以使用Fetch屏幕从用户那里获取详细信息。 可以使用"获取"屏幕集捕获相同的内容,并且在执行服务器交换步骤时,可以在Steplet发起的FetchSession中使用相同的内容。
也可以有其他选择,但是我们应该知道您的具体环境,因此我们可以为您提供具体的答案。
感谢与问候,
AK
嗨,AK K,
谢谢您花时间回答我的问题。
我要尝试做的是从应用程序中获取仪表的图片并将其发送给第三方API。 该API将返回一些字符串值。 然后,我需要在应用程序的同一屏幕上填写这些值。
简而言之:他将代替用户在文本框中输入值,而是拍摄照片,并自动填充所有值。
第一个问题是,是否可以将数据(在我的情况下为图像)发送给第三方API?
第二个问题是,我将图片存储在DocumentLink对象中。 如何在steplet/steplethandler中访问此图像以将其发送到API?
第三个问题是,如果我从API接收数据,如何将这些值分配回该对象?
谢谢!
关于Hasnain
嗨,
您说出问题的方式,我想说的是使用条形码扫描仪或OpenUI进行扫描。
在条形码扫描仪中,您可能必须使用启用了条形码扫描的正确设备,然后使用标准代理条形码扫描字段,其工作方式与普通应用程序中的条形码扫描相同。
在使用OpenUI的情况下,您可能必须基于目标设备的本机语言开发解决方案,然后可以捕获图像并提取String并使用在External Field中配置的类返回相同的值。 (以下链接可能有帮助)
https: //help.sap.com/doc/saphelp_smp303sdk/3.0.3/zh-CN/7c/0591b97006101489caceb9dee3539e/content.htm?no_cache=true
现在,根据您的输入,我将回答以下问题
问题1 .:
是否可以将数据(在我的情况下为图片)发送给第三方API?
->这取决于您如何调用该API。 默认情况下,Agentry不支持在"事务"屏幕上调用其他操作,因此您可能无法直接调用Agentry操作。 您可以存储该值(图像在某个驱动器文件夹中),并且可能在后台运行另一个进程。 此过程将获取此文档,然后将其发送到API进行处理。
或者您可以使用OpenUi方法。
问题2:
我将图片存储在DocumentLink对象中。 如何在steplet/steplethandler中访问此图像以将其发送到API?
->应该与在标准应用程序中完成的方式相同。 但是,等等,此时调用第三方api !!! (请确保您的要求,因为您现在正在SMP/Agentry服务器中执行此操作)是否应按要求在设备端完成?
这是不明确的步骤,请再检查一次。.
问题3:
如果我从API接收到数据,如何将这些值分配回该对象?
->如果使用OpenUI完成,则外部类中的方法会期望返回值。 像
getExtensionString(" STRING"); 以及Agentry值和外部值,您可以在其中返回数据。
如果您正在使用Agentry Java Layer进行操作,但其含义有些含糊,请再次检查。
感谢AK K。
最多设置5个标签!
你好哈桑·穆萨法尔,
您的问题似乎有些悬而未决。
请让社区知道您正在努力实现什么,您目前的现状是什么以及负责调用您的机器学习代码的组件是什么?
根据您的问题和我的假设(因为您尝试使用Java调用外部API)
1)我会按照以下方式写
1.1)事务步骤将捕获需要发送到后端的值(或作为输入的相应API。将在更新步骤中为该步骤配置一个steplet。
1.2)将调用代理动作来启动传输(在这里,您可能需要决定是否将传输推迟到标准应用程序下一次同步之前进行,还是需要立即传输)
1.3)steplet java类将提供相同的值。
在这里,您可以使用"交易"会话,并且可以检索从设备发送的值
可能在单独的stephandler类中。
1.4)现在,您可以启动对机器学习"事物"所在的后端API的调用。
让它执行预期的任务。
1.5)将编写另一次提取,该提取将以Agentry提取标准对象的方式获取结果数据。
例如 您可以按需写入将根据需要启动。 相同的将调用Server Exchange步骤并调用Java类steplet(假定该类返回SAPObjects的ArrayList。)在Stephandler中,您可以调用您的API,该API应该返回您需要在客户端可用的值。 如果只有一个值(如字符串等),则可以使用填充的值来创建单个SAPObject。
如果有多个记录,则需要以某种方式调整相同的记录以将其存储在相应的SAPObject数组中。(您必须从Java的角度考虑对相同的数据结构进行适当的调整,但最后这 结果以某种方式应适合_returnData数组)。
2)另一种书写方式是(如果输入值很少)
只需执行一次上述更改即可完成上述操作,而不是使用Transaction,您也可以使用Fetch屏幕从用户那里获取详细信息。 可以使用"获取"屏幕集捕获相同的内容,并且在执行服务器交换步骤时,可以在Steplet发起的FetchSession中使用相同的内容。
也可以有其他选择,但是我们应该知道您的具体环境,因此我们可以为您提供具体的答案。
感谢与问候,
AK
嗨,AK K,
谢谢您花时间回答我的问题。
我要尝试做的是从应用程序中获取仪表的图片并将其发送给第三方API。 该API将返回一些字符串值。 然后,我需要在应用程序的同一屏幕上填写这些值。
简而言之:他将代替用户在文本框中输入值,而是拍摄照片,并自动填充所有值。
第一个问题是,是否可以将数据(在我的情况下为图像)发送给第三方API?
第二个问题是,我将图片存储在DocumentLink对象中。 如何在steplet/steplethandler中访问此图像以将其发送到API?
第三个问题是,如果我从API接收数据,如何将这些值分配回该对象?
谢谢!
关于Hasnain
嗨,
您说出问题的方式,我想说的是使用条形码扫描仪或OpenUI进行扫描。
在条形码扫描仪中,您可能必须使用启用了条形码扫描的正确设备,然后使用标准代理条形码扫描字段,其工作方式与普通应用程序中的条形码扫描相同。
在使用OpenUI的情况下,您可能必须基于目标设备的本机语言开发解决方案,然后可以捕获图像并提取String并使用在External Field中配置的类返回相同的值。 (以下链接可能有帮助)
https: //help.sap.com/doc/saphelp_smp303sdk/3.0.3/zh-CN/7c/0591b97006101489caceb9dee3539e/content.htm?no_cache=true
现在,根据您的输入,我将回答以下问题
问题1 .:
是否可以将数据(在我的情况下为图片)发送给第三方API?
->这取决于您如何调用该API。 默认情况下,Agentry不支持在"事务"屏幕上调用其他操作,因此您可能无法直接调用Agentry操作。 您可以存储该值(图像在某个驱动器文件夹中),并且可能在后台运行另一个进程。 此过程将获取此文档,然后将其发送到API进行处理。
或者您可以使用OpenUi方法。
问题2:
我将图片存储在DocumentLink对象中。 如何在steplet/steplethandler中访问此图像以将其发送到API?
->应该与在标准应用程序中完成的方式相同。 但是,等等,此时调用第三方api !!! (请确保您的要求,因为您现在正在SMP/Agentry服务器中执行此操作)是否应按要求在设备端完成?
这是不明确的步骤,请再检查一次。.
问题3:
如果我从API接收到数据,如何将这些值分配回该对象?
->如果使用OpenUI完成,则外部类中的方法会期望返回值。 像
getExtensionString(" STRING"); 以及Agentry值和外部值,您可以在其中返回数据。
如果您正在使用Agentry Java Layer进行操作,但其含义有些含糊,请再次检查。
感谢与问候,
AK
感谢AK K。
一周热门 更多>