Groovy脚本查询中的错误

2020-08-17 01:38发布

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

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


专家们,

我正在编写一个动态查询,以从成功因素中获取角色ID和角色名称。 但是我在消息处理选项卡中收到以下错误-

您能帮我理解我的食品代码问题吗?

如果两个字段都发送为空,我想获取所有roleid和rolename,否则我想根据Roleid或Role Name提取Roleid和Rolename。

 <?xml版本=" 1.0"编码=" utf-8"?>
 
  ServerErrorException 
 服务器无法理解您的OData API请求的URI,其中包含无效的字符文本序列:[[roleId],[],[eq]]。 请检查查询语法的正确性,尤其是对于意外的空格或标点符号。 有关API语法要求,请访问https://help.sap.com/viewer/d599f15995d348a1b45ba5603e2aba9b/PRODUCTION/zh-CN 
 


 

请在下面找到groovy代码段-

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;
 def消息processData(消息消息){
    
     def属性= message.getProperties();
     字符串RoleId = properties.get(" ROLEID");
     字符串RoleName = properties.get(" ROLENAME");
     字符串query ="";
    
     if((RoleId == null || RoleId.length()== 0)&&(RoleName == null || RoleName.length()== 0))
     {
         query =" RBPRole?\ $ select = roleId,roleName";
     }
     if((RoleId == null || RoleId.length()== 0)&&(RoleName!= null || RoleName.length()> 0))
     {
         query =" RBPRole?\ $ select = roleId,roleName&\ $ filter = roleName eq" + RoleName;
     }
     if((RoleId!= null || RoleId.length()> 0)&&(RoleName == null || RoleName.length()== 0))
     {
         query =" RBPRole?\ $ select = roleId,roleName&\ $ filter = roleId eq" + RoleId;
     }
     message.setProperty(" QUERY_DYNAMIC",query);
    
        返回消息;
 }
 

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

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


专家们,

我正在编写一个动态查询,以从成功因素中获取角色ID和角色名称。 但是我在消息处理选项卡中收到以下错误-

您能帮我理解我的食品代码问题吗?

如果两个字段都发送为空,我想获取所有roleid和rolename,否则我想根据Roleid或Role Name提取Roleid和Rolename。

 <?xml版本=" 1.0"编码=" utf-8"?>
 
  ServerErrorException 
 服务器无法理解您的OData API请求的URI,其中包含无效的字符文本序列:[[roleId],[],[eq]]。 请检查查询语法的正确性,尤其是对于意外的空格或标点符号。 有关API语法要求,请访问https://help.sap.com/viewer/d599f15995d348a1b45ba5603e2aba9b/PRODUCTION/zh-CN 
 


 

请在下面找到groovy代码段-

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;
 def消息processData(消息消息){
    
     def属性= message.getProperties();
     字符串RoleId = properties.get(" ROLEID");
     字符串RoleName = properties.get(" ROLENAME");
     字符串query ="";
    
     if((RoleId == null || RoleId.length()== 0)&&(RoleName == null || RoleName.length()== 0))
     {
         query =" RBPRole?\ $ select = roleId,roleName";
     }
     if((RoleId == null || RoleId.length()== 0)&&(RoleName!= null || RoleName.length()> 0))
     {
         query =" RBPRole?\ $ select = roleId,roleName&\ $ filter = roleName eq" + RoleName;
     }
     if((RoleId!= null || RoleId.length()> 0)&&(RoleName == null || RoleName.length()== 0))
     {
         query =" RBPRole?\ $ select = roleId,roleName&\ $ filter = roleId eq" + RoleId;
     }
     message.setProperty(" QUERY_DYNAMIC",query);
    
        返回消息;
 }
 
付费偷看设置
发送
2条回答
打一壶酱油
1楼 · 2020-08-17 02:01.采纳回答

嗨,Akash

您频道中的"查询选项"字段应仅包含查询,即$ select = ....部分。

有关动态OData查询的更多信息 ,请通过 Subhojit Saha 查看此博客文章:在CPI Odata接收器适配器中创建动态查询

问候,

Morten

大道至简
2楼-- · 2020-08-17 01:54

Hello Akash,

您可以外部化整个查询部分,包括过滤器,但需要确保从脚本中选择了一条选择语句

还登录到SuccessFactors并在odata api审核日志中可以看到确切的错误。首先需要启用有效负载日志记录,然后再次发送请求以查看实际响应。

致谢

>

Sriprasad Shivaram Bhat

一周热门 更多>