You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAP CPI中Groovy脚本使用数组引用进行日期比较异常咨询

问题根因
  • 数组访问错误:入参status是字符串数组,所有判断条件中直接用status == "Approved"将整个数组与字符串比较,该判断永远返回false,是逻辑失效的核心原因,应改为status[i] == "Approved"取当前循环的元素判断。
  • 日期类型混用错误:第三个判断条件中dateApprovedDt是Date类型,CurrentDate是字符串类型,直接用<比较会触发类型匹配异常,需先将CurrentDate转为Date类型再比较。
  • 数组越界风险:你定义的status1数组只有2个元素,索引范围为0和1,else分支中访问status1[2]会直接抛出数组越界异常。
  • 逻辑顺序错误:第二个else if的判断条件完全包含第一个if的条件,只要第一个if成立,第二个分支永远不会被触发,需要调整判断顺序,将更严格的条件(带版本号判断的)放在前面。
  • 字符串版本号比较错误:version[i] > "1"是字符串字典序比较,若版本号存在多位数(如10)会出现判断错误,建议转为整数后再比较。
修正后可用代码
import com.sap.it.api.mapping.*;
import java.text.SimpleDateFormat;
import java.util.Date;

def void Itemstatus(String[] ApprovedDt,String[] status,String[] version,String[] propertyName, Output output,MappingContext context)
{
    String lets = context.getProperty(propertyName[0]); 
    SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd");
    Date datelets = formatter1.parse(lets);
    
    Date currentDate = new Date();
    Date parsedCurrentDate = formatter1.parse(currentDate.format("yyyy-MM-dd")); // 统一日期格式,去掉时分秒影响
    
    def status1 = ["Active","Inactive","Unknown"]; // 补充第三个状态避免越界
    
    for(int i=0; i<status.size(); i++)
    {
        Date dateApprovedDt = formatter1.parse(ApprovedDt[i]);  
        String currentStatus = status[i];
        Integer currentVersion = version[i].toInteger();
        
        // 更严格的版本判断放前面
        if (currentStatus == "Approved" && dateApprovedDt > datelets && currentVersion > 1)
        {
            output.addValue(status1[0])
        }
        else if(currentStatus == "Approved" && dateApprovedDt > datelets)
        {
            output.addValue(status1[0])
        }
        else if (currentStatus == "Approved" && dateApprovedDt < parsedCurrentDate)
        {
            output.addValue(status1[1])
        }
        else
        {
            output.addValue(status1[2])
        } 
    }
}
  • 按你提供的测试数据(基准日期2021-09-30),修正后输出结果为:id1对应Inactive、id2对应Inactive、id3对应Active,符合业务逻辑要求。

内容的提问来源于stack exchange,提问作者vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:45:01