SAP CPI中的天日期差异

2020-08-26 15:24发布

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

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


如何实现与源不同的日子就要结束,开始日期和差异我需要发送给目标。

例如:结束日期= 2006年1月1日-开始日期= 2005年1月1日

目标:365

致谢,
桑迪亚

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

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


如何实现与源不同的日子就要结束,开始日期和差异我需要发送给目标。

例如:结束日期= 2006年1月1日-开始日期= 2005年1月1日

目标:365

致谢,
桑迪亚

付费偷看设置
发送
8条回答
shere_lin
1楼 · 2020-08-26 16:14.采纳回答

Hello Sandya,

您可以稍微调整一下代码以获取相同的代码。

导入com.sap.it.api.mapping。*;
 导入java.text.SimpleDateFormat;
 导入java.util.Date;
 导入java.io. *
 导入java.lang。*;
 导入java.util。*;
 def字符串customFunc1(String P1,String P2){
          字符串inpStartDate = P1.toString();
          字符串inpEndDate = P2.toString();
         
          SimpleDateFormat sdf = new SimpleDateFormat(" dd-MM-yyyy");
          日期EmpStartDate = sdf.parse(inpStartDate);
          日期EmpEndDate = sdf.parse(inpEndDate);


         //使用dateDiffInDays获得天数差异
          def dateDiffInDays = EmpEndDate-EmpStartDate
          dateDiffInDays = dateDiffInDays + 1
          返回dateDiffInDays.toString();
 } 

问候,

Sriprasad Shivaram Bhat

clasier
2楼-- · 2020-08-26 16:23

嗨,Sirprasad,

Am从动态的源系统中获取数据 格式为dd-mm-yyyy,所以我应该改个头,用日期格式更改日期,并在消息映射中使用它吗?

此致,
Sandya

haha101010
3楼-- · 2020-08-26 16:13

Hello Sandhya

下面的代码将完成上述操作。由于您没有提到是否要在Script中使用它, 步骤或作为MessageMapping中的customFunction我正在传递以下代码,您可以根据需要对其进行调整。

 import java.text.SimpleDateFormat;
 导入java.util.Date;
 导入java.io. *
 导入java.lang。*;
 导入java.util。*;


//通过脚本或自定义函数获取startDate和endDate的PassYourinputDates
 ef startDate =" 01.01.2006"
 def endDate =" 31.12.2006"
 SimpleDateFormat sdf = new SimpleDateFormat(" dd.MM.yyyy");
 日期EmpStartDate = sdf.parse(startDate);
 日期EmpEndDate = sdf.parse(endDate);

//使用dateDiffInDays获得天数差异
 def dateDiffInDays = EmpEndDate-EmpStartDate
//println dateDiffInDays
 

问候,

Sriprasad Shivaram Bhat

大道至简
4楼-- · 2020-08-26 16:26

嗨,Sirprasad,

感谢您的回复!

在源xsd中提取数据时,没有获取数据。我更改了上下文,但是数据没有到达结构中。我能知道为什么会这样。

源端的有效载荷。

<?xml版本=" 1.0"编码=" UTF-8"?> <行> TEST USER TEST GCA 默认 C1 CC CC1 337F 87 默认 SAR 印度 2019-09-18 2020-01-18 2020-01- 18 现金 1700.00 1700.00 1700.00 GC 2019-09-18 3 会议 Q AW 0.00 Y 旅行 < FIELD89> 96 允许

此致

Sandya

代楠1984
5楼-- · 2020-08-26 16:29

您好 Sandhya ravi

I 建议使用Groovy映射来解决此任务。 您可以使用类似这样的方法:

 def dateEnd = new Date()。parse(" dd.MM.yyyy"," 01.01.2006")
 def dateStart = new Date()。parse(" dd.MM.yyyy"," 01.01.2005")
 def daysDifference = dateEnd.minus(dateStart)
 

致谢,
Raffael

梦想连接
6楼-- · 2020-08-26 16:02

你好,Sri Prasad,

感谢您的答复,我已经整理出上下文的问题,最后 我需要为输出添加+1的东西,我可以继续进行add函数,并在输出中将值1传递为映射函数中的常量,就像我们在PI中所做的那样,还是应该在Groovy中进行更改。

关于,
Sandya

暮风yp
7楼-- · 2020-08-26 16:14

Hello Sandhya,

如果您想使用下面的消息映射,则是一种方法。

创建 一个自定义函数(类似于SAP PI/PO的UDF概念),并以2个日期作为输入,并将输出映射到所需字段。

自定义功能脚本:

 import com.sap.it.api.mapping。*;
 导入java.text.SimpleDateFormat;
 导入java.util.Date;
 导入java.io. *
 导入java.lang。*;
 导入java.util。*;


 def字符串customFunc1(String P1,String P2){
          字符串inpStartDate = P1.toString();
          字符串inpEndDate = P2.toString();
         
          SimpleDateFormat sdf = new SimpleDateFormat(" dd-MM-yyyy");
          日期EmpStartDate = sdf.parse(inpStartDate);
          日期EmpEndDate = sdf.parse(inpEndDate);


         //使用dateDiffInDays获得天数差异
          def dateDiffInDays = EmpEndDate-EmpStartDate
       
          返回dateDiffInDays.toString();
 }
 


致谢

Sriprasad Shivaram Bhat

一周热门 更多>