点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
通过使用第三方API服务(使用HTTP调用),我可以获得业务合作伙伴数据列表。
现在,有了这个BP列表,使用for-each循环抛出,我想将业务伙伴数据更新到SAP B1(OCRD)表中。
这是业务合作伙伴xform原子列表(绿色框)。
<!-xsl:value-of select =" $ length"> <!-在变量中存储值-> <!-SQL调用-> -这里UPDATE查询 例如:更新OCRD设置CardName ='XYZ'WHERE CARDCODE ='C0009'
使用SQL标记,我只能查看SQL查询(UPDATE OCRD SET CARDNAME ='XYZ'WHERE CARDCODE ='C0009'),无法执行查询。
如果我有任何遗漏,请建议我,
谢谢
Chenna。
(14.2 kB)
Chenna
有两种方法可以实现此目标:对于每个处理原子和元素。 当您可以改用XSL元素时,不建议使用foreach处理原子。
1)使用处理原子:
在我的基本场景中,我有1个具有传入XML的原子 p>
场景流程和foreach XPath表达式如下:
然后,如果我调试场景,我可以看到有4个传入的对象有4个会话:
这是非(!)推荐的方法。
2)使用XSLT foreach转换:
在这里,您可以在xform原子中准备一个复杂的对象。 处理流程将非常简单:
其中的转换方式如下:
< pre>相同的逻辑可以应用于SQL Call原子。
Sergei Travkin,
在这里,我有一点疑问,请您澄清一下。
我得到了xform atom7返回XML结果,如下所示:
下一步,我将创建B1object原子,
DOUBT IS:B1object原子,使用#Synchronous Insert和后备Update方法自动执行以上所有4条记录数据(插入/更新)? 还是我需要编写其他逻辑?
能请您澄清我的疑问吗?
谢谢
Chenna。
您好, Chenna Gadicherla ,
首先,绝对不允许在系统表上直接进行SQL更新/删除/插入。
请参阅此博客文章和SAP注意 1320484 有关修改SAP Business One数据的准则。
第二,B1iF还有其他几种方法可以使用 您将能够实现所需的功能。 例如:您可以仅在B1if中创建方案。 我建议使用官方支持的方式。
希望它会有所帮助!
亲切的问候
ANKIT CHAUHAN
SAP Business One支持
嗨,Sergei Travkin,
感谢您的及时重播,
在我的场景中,我已经使用了sqlCall原子,但是,这里的问题是如何调用sqlCall原子或B1对象原子来获取结果列表(我的意思是在for-each循环中,我希望每条记录都调用sqlCall )。
下面是PayloadRole =" C" id =" atom5" xform结果
在我的下一个原子中,我创建了sqlcall原子,但是使用此sqlcall原子,它仅执行一次。 我的场景我想明智地对每个记录执行sqlcall(如上述代码示例所示)。
请建议我,如何实现上述方案。
谢谢
Chenna
您好,Chenna,
您可以通过sqlCall原子执行所有类型的SQL指令,但是您不应该这样做。 禁止使用直接SQL更新系统对象字段。 您需要改为使用B1对象原子(或HANA的服务层对象)。 否则,您可能会破坏数据完整性并失去对此数据库的SAP支持。
Chenna
我不确定100%是否可以用这种方式进行更新,但是 键值选项肯定不正确。 如果可以通过这种方式进行更新,则必须传递多个值,请查看B1对象原子的文档。 您也可以检查多对象出站("帮助"->"文档"->"出站"->" B1"对象)。 如果您想在流程中使用它,我会考虑使用图形化的for-each原子。
嗨,
我实现了超出要求的情况。
通过以下步骤:
使用HTTPCall,我获得了公司结果列表。
现在,在我的绿色方框" xform" atom(atom7)中,我编写了for-each循环逻辑来设置SQL查询
在我的atom7中,SQL标记返回的结果如下:
下一步,我创建了" sqlCall" atom,在此窗口中,我给了sql查询原子ID(atom7)
'atom7'处理SQL语句,它将执行SQL语句。
最后将数据更新到OCRD表中。
谢谢
Chenna
一周热门 更多>