点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嘿大师们, 我面对...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嘿大师们, 我面对...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嘿大师们,
我面对UDF有点奇怪。 我有一个重新查询,在这里我需要调用3个存储过程,它们之间可能存在依赖关系。 例如,我需要执行第一个SP,该SP为我提供了要在第二个存储过程中使用的值,并且它的结果需要用作第三个SP中的参数,并且将发送来自最后一个SP的数据 通过邮件。
因此,为此,我正在使用一个发送方JDBC通道来调用第一个SP,一个接收方MAIL通道来发送邮件(都在同一集成流程中),以及一个JDBC接收器通道用于通过UDF调用其余的SP。
一切看起来都不错,但是我发现UDF出现了问题。
代码是下一个:
Channel channel = null; 地图rowMap = null; DataBaseAccessor访问器= null; DataBaseResult resultSet = null; 字符串查询=" CALL SP1(55)"; 尝试{ channel = LookupService.getChannel(" BS_XXX"," CC_JDBC_LOOKUP_Receiver"); 访问器= LookupService.getDataBaseAccessor(channel); resultSet = accessor.execute(Query); for(迭代器行= resultSet.getRows(); rows.hasNext();){ rowMap =(Map)rows.next(); result.addValue((String)rowMap.get(" field_name")); } } catch(特例例外){ result.addValue(ex.getMessage()); }
查询是对存储过程的调用,该存储过程收到一个值,该值是我在接口启动后从第一次调用中获得的值(例如55)。
使用此UDF,我可以获得所需的值。 但是这个" 55"在UDF中是硬编码的,所以我在UDF中添加了一个参数,以便可以从映射字段中接收值。
通过这种方式测试此UDF时,出现下一个错误:
处理有效负载期间发生异常。 使用通信通道CC_JDBC_LOOKUP_Receiver调用适配器时出错(聚会:,服务:BS_XXX,对象ID:d00c03ada97a3758oa9395ec0b41a297)XI AF API调用失败。 模块异常:(无可用信息)。 原因异常:'在sax解析器中处理请求时出错:对表/存储的proc执行语句时出错。 "表"(结构"语句"):java.sql.SQLException:发生语法错误。 com.sap.aii.mapping.lookup.LookupException:使用通信通道CC_JDBC_LOOKUP_Receiver调用适配器时发生错误(参与方:,服务:BS_XXX,对象ID:d00c03ada97a3758ba9395ec0b41a297)XI AF API调用失败。 模块异常:(无可用信息)。 原因异常:'在sax解析器中处理请求时出错:对表/存储的proc执行语句时出错。 "表"(结构"语句"):java.sql.SQLException:发生语法错误。"。
这对我来说真的很奇怪,因为调用UDF的字符串与我进行硬编码时完全相同(我检查了这个,并且是相同的)。
因此在UDF中对SP参数进行硬编码是可行的,但是将值(作为字符串)传递给了我该异常。
有什么想法吗? 可能是某种错误吗?
感谢进阶!
edit:当我接收到作为参数的值时,UDF代码是下一个:
字符串查询=" CALL SP1("; Query = Query.concat(mapping_field_value +")");
我生成了一个新的UDF,并且似乎正在运行。 该UDF不能解决问题,但是我现在可以做我需要的事情。
为了让任何人都有用,我会保留代码:
一周热门 更多>