将日期字段从SOAP请求传递到CPI

2020-08-23 23:58发布

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

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


你好乡亲,

我正在一个简单的场景中,在该场景中,我需要通过SOAP请求将" Date"字段传递给CPI,并从SF-EC获取相应的数据,该数据应基于lastmodifieddate即最近更新的记录 在EC中。

如果SOAP请求中没有日期字段,那么我应该设置一个默认值,即从EC提取的全部负载。

我为此做了一个简单的常规脚本,这是一个。

----脚本----

def消息processData(消息消息){

def属性= message.getProperties();

def inputdate = property.get(" Fromdate");

def defaultdate =(" 1900-01-01T01:01:01");

def修改日期;

if(inputdate.length()!= 0){

modifieddate = inputdate.toString(); }/第19行

else {modifieddate = defaultdate.toString()}

}

下面的SOAP响应错误:

java.lang.Exception:org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将类'java.lang.String'的对象'2020-02-01T01:01:01'转换为类' com.sap.gateway.ip.core.customdev.util.Message'@ LastMoifiedDate.groovy

中的第19行

您能帮我吗? 我想念这个的地方。

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

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


你好乡亲,

我正在一个简单的场景中,在该场景中,我需要通过SOAP请求将" Date"字段传递给CPI,并从SF-EC获取相应的数据,该数据应基于lastmodifieddate即最近更新的记录 在EC中。

如果SOAP请求中没有日期字段,那么我应该设置一个默认值,即从EC提取的全部负载。

我为此做了一个简单的常规脚本,这是一个。

----脚本----

def消息processData(消息消息){

def属性= message.getProperties();

def inputdate = property.get(" Fromdate");

def defaultdate =(" 1900-01-01T01:01:01");

def修改日期;

if(inputdate.length()!= 0){

modifieddate = inputdate.toString(); }/第19行

else {modifieddate = defaultdate.toString()}

}

下面的SOAP响应错误:

java.lang.Exception:org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将类'java.lang.String'的对象'2020-02-01T01:01:01'转换为类' com.sap.gateway.ip.core.customdev.util.Message'@ LastMoifiedDate.groovy

中的第19行

您能帮我吗? 我想念这个的地方。

付费偷看设置
发送
7条回答
Doze时光
1楼 · 2020-08-24 00:31.采纳回答

你好Sethu,

在以下代码段中使用,那么它应该可以工作。

 message.setProperty(" modifieddate",modifieddate)

致谢,

Sri

clasier
2楼-- · 2020-08-24 00:41

非常感谢Sri,非常感谢 因为我是新来的,正在学习,所以很喜欢。 将进行测试和更新。

是否可以在不使用脚本的情况下达到相同的CPI? 在下面的截图中,我的第一个内容修饰符是通过xpath获取值,第二个是我创建了一个属性作为变量,并在查询SF-EC(startDate ge datetime'$ {property.Lastexecutedate})时调用了该属性, 它没有帮助。

我的要求是,当肥皂请求中有日期时,我需要基于该日期从EC中获取值,如果请求中没有日期,则我应该考虑默认值(例如1900-01-01) 负载提取。

您能帮我吗?

dateiflow.png

SC_Yao
3楼-- · 2020-08-24 00:44

Hello Sethuram,

从逻辑的角度来看,上面的代码看起来不错,但是由于您没有从上面的脚本中返回任何值,因此我看到了一些问题。

希望下面的代码可以工作

导入com.sap.gateway.ip.core.customdev.util.Message;为您(另外是return语句)。
 导入java.util.HashMap;
 def消息processData(消息消息){
    //身体
     def主体= message.getBody();
     def属性= message.getProperties();
     def inputdate = property.get(" Fromdate");
     def defaultdate =("" 1900-01-01T01:01:01");
     def Modifydate;

     if(inputdate.length()!= 0)
 {
       修改日期= inputdate.toString();
 }
 其他
 {
 修改日期= defaultdate.toString()
 }
     message.setBody(modifieddate)
 //下面的代码是代码之上的附加内容,您可以按原样使用其余代码
     返回消息;
 }
 

问候,

Sriprasad Shivaram Bhat

蓋茨
4楼-- · 2020-08-24 00:32

嗨,斯里普

让我看一下脚本

当我更新脚本并尝试将参数作为'startDate ge datetime'$ {property.modifieddate}''传递给我的请求

找不到参数$ {property.modifieddate}的

Header/Property值

dateiflow1.png

,之后我通过替换如下代码来更改代码

 message.setProperty(modifieddate)

我遇到错误。

无方法签名:com.sap.gateway.ip.core.customdev.processor.MessageImpl.setProperty()适用于参数类型:(java.lang.String)值:[2020-02- 01T01:01:01]可能的解决方案:getProperty(java.lang.String),setProperty(java.lang.String,java.lang.Object),hasProperty(java.lang.String),setProperties(java.util.Map) ,getProperties(),getProperties()

我是否需要将该参数传递给content修饰符,以便在请求回复中调用,或者该如何传递?您可以提出建议吗?

非常感谢Sri,自从我是新手以来,就得到了很多应用 学习的东西。 将进行测试和更新。

是否可以在不使用脚本的情况下达到相同的CPI? 在下面的截图中,我的第一个内容修饰符是通过xpath获取值,第二个是我创建了一个属性作为变量,并在查询SF-EC(startDate ge datetime'$ {property.Lastexecutedate})时调用了该属性, 它没有帮助。

我的要求是,当肥皂请求中有日期时,我需要基于该日期从EC中获取值,如果请求中没有日期,则我应该考虑默认值(例如1900-01-01) 负载提取。

您能帮我吗?

dateiflow.png

Doze时光
6楼-- · 2020-08-24 00:28

你好Sethu,

这完全取决于

如果要从输入XML中获取价值(使用content修改器中的xpath选项),则无法直接在Content Modifier中设置默认值。

如果 您已经确定了开始日期(来自外部参数的值,并且您的内容修饰符属性类型为常量,那么您可以利用默认值)。

根据我的理解,使用Script可以实现相同的目标, 如果您的客户要求您添加更多值作为"外部参数",并且在查询SF数据时需要使用/验证该值,则它会提供更大的灵活性。

如果上述问题已通过提供的解决方案解决,请关闭线程并 如有其他问题,请提出一个新问题:)

致谢,

Sriprasad Shivaram Bhat

hongfeng1314
7楼-- · 2020-08-24 00:44

非常感谢Sri工作 现在。

很好的帮助。

一周热门 更多>