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

如何在SAP CPI Groovy脚本中格式化Double类型薪资值

问题解决:Groovy(SAP CPI)中Double薪资值格式化

编译错误修复

首先解决你遇到的编译错误:删除代码中未使用的导入语句import java.util.text.NumberFormat;,这条导入完全多余,是导致编译失败的直接原因。

完整修正代码

以下是修复逻辑并实现薪资格式化需求的完整代码:

import com.sap.gateway.ip.core.customdev.util.Message;
import java.math.RoundingMode;
import java.text.DecimalFormat;

// 格式化薪资为带千分位、两位小数的字符串
def String salaryFormat(Object salaryValue) {
    // 定义格式:千分位分隔,强制保留两位小数
    DecimalFormat df = new DecimalFormat("#,###.00");
    // 设置四舍五入模式,保证小数精度一致性
    df.setRoundingMode(RoundingMode.HALF_UP);
    
    double salary;
    // 兼容XML读取的字符串类型和数值类型输入
    if (salaryValue instanceof String) {
        salary = Double.parseDouble(salaryValue.trim());
    } else {
        salary = (double) salaryValue;
    }
    
    return df.format(salary);
}

def Message processData(Message message) {
    def body = message.getBody(java.lang.String);    
    def root = new XmlSlurper().parseText(body);
    
    // 用StringBuilder高效构建XML内容
    StringBuilder strBody = new StringBuilder("<root>\n");
    
    // 遍历所有EmpJob节点,Groovy风格遍历更简洁
    root.EmpJob.each { empJob ->
        strBody.append("  <record>\n");
        def formattedSalary = salaryFormat(empJob.User.salary.text());
        strBody.append("    <Salary><![CDATA[").append(formattedSalary).append("]]></Salary>\n");
        strBody.append("  </record>\n");
    }
    
    strBody.append("</root>");
    
    message.setBody(strBody.toString());
    return message;
}

关键修改说明

  1. 格式化函数优化:

    • 兼容字符串(XML读取的内容)和数值类型输入,避免类型转换异常
    • 格式模式改为#,###.00,强制保留两位小数,完全匹配你需要的1,000.00格式
    • 明确设置四舍五入模式,避免默认舍入行为导致的精度偏差
    • 函数返回格式化后的字符串,而非原始数值,直接满足输出需求
  2. XML构建逻辑修复:

    • 使用StringBuilder替代重复字符串拼接,提升性能且避免循环中覆盖内容的问题
    • 改用Groovy原生的each遍历语法,简化代码结构
    • 确保所有EmpJob记录都能被正确写入输出XML
  3. 冗余代码清理:

    • 删除未使用的HashMap导入和多余变量声明
    • 简化代码逻辑,提升可读性

测试效果

输入薪资值100000,会被格式化为100,000.00;输入1234567.891,会被格式化为1,234,567.89。

内容的提问来源于stack exchange,提问作者Lloyd Albert Tongco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:41:41