Groovy 脚本替换嵌套循环属性

问题描述 投票:0回答:1

需要帮助识别计划线数组对象并将数量字段设置为数字并删除“”。我需要一些关于如何访问 _PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity 的指示

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.json.*
def Message processData(Message message) {

def body = message.getBody(java.lang.String);
def object = new JsonSlurper().parseText(body)



object._PurchaseOrderItem.each{_PurchaseOrderItem->
_PurchaseOrderItem.NetPriceQuantity = _PurchaseOrderItem.NetPriceQuantity.toDouble().intValue()
_PurchaseOrderItem.NetAmount = _PurchaseOrderItem.NetAmount.toDouble()
_PurchaseOrderItem.GrossAmount = _PurchaseOrderItem.GrossAmount.toDouble()
_PurchaseOrderItem.OrderQuantity = _PurchaseOrderItem.OrderQuantity.toDouble()
_PurchaseOrderItem.NetPriceAmount = _PurchaseOrderItem.NetPriceAmount.toDouble()
}

object._PurchaseOrderItem.each{_PurchaseOrderItem->
_PurchaseOrderScheduleLineTP.each{_PurchaseOrderScheduleLineTP->
_PurchaseOrderScheduleLineTP.number =_PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity.toDouble().intValue()
}
}

//object._PurchaseOrderScheduleLineTP.each{_PurchaseOrderItem._PurchaseOrderScheduleLineTP->
//_PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity = _PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity.toDouble().intValue()
//}

message.setBody(JsonOutput.toJson(object));
return message;
}

这是我的示例有效负载:

{ “采购订单类型”:“NB”, "采购订单日期": "2024-05-14", “语言”:“EN”, “公司代码”:“2024”, “采购组织”:“2024”, “采购组”:“001”, “供应商”:“1000000”, “文件货币”:“美元”, “_PurchaseOrderItem”:[ { "采购订单项目": "10", "采购订单类别": "F", “文件货币”:“美元”, “材料组”:“E002”, "PurchaseOrderItemText": "来自 CPI", “产品类型代码”:“1”, “公司代码”:“2024”, “工厂”:“2024”, "采购订单数量单位": "EA", "订单价格单位": "EA", "净价数量": "1", "采购订单商品类别": "0", "AccountAssignmentCategory": "P", "净额": "10", "总金额": "10", "订单数量": "10", "净价金额": "1", “_PurchaseOrderScheduleLineTP”:[{ "ScheduleLineDeliveryDate": "2024-05-14", "SchedLineStscDeliveryDate": "2024-05-14", "ScheduleLineOrderQuantity": "10", "采购订单数量单位": "EA", “货币:美元” }], “_PurOrdAccountAssignment”:[{ "账户分配编号": "1", "订单数量单位": "EA", “数量”:“10”, “文件货币”:“美元”, "成本中心": "20240001", "GL账户": "42007000", “基金”:“基金1”, “公司代码”:“2024”, "会计科目表": "XXOA", "控制区域": "ABCD", “利润中心”:“XXXX” }] } ] }

groovy sap-erp
1个回答
0
投票
object._PurchaseOrderItem.each{_PurchaseOrderItem->
  _PurchaseOrderItem.NetPriceQuantity = _PurchaseOrderItem.NetPriceQuantity as Integer
  ...
  _PurchaseOrderItem._PurchaseOrderScheduleLineTP.each{i->
    i.ScheduleLineOrderQuantity = i.ScheduleLineOrderQuantity as Integer
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.