2 weeks ago - last edited 2 weeks ago
Need to help identify the scheduleline array object and set the quantity field to number removing the "".
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._PurchaseOrderScheduleLineTP.each{_PurchaseOrderItem._PurchaseOrderScheduleLineTP->
_PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity = _PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity.toDouble().intValue()
}
object._PurOrdAccountAssignment.each{_PurchaseOrderItem._PurOrdAccountAssignment->
_PurOrdAccountAssignment.ScheduleLineOrderQuantity = _PurOrdAccountAssignment.ScheduleLineOrderQuantity.toDouble().intValue()
}
message.setBody(JsonOutput.toJson(object));
return message;
}
Here's the sample payload and I am trying to remove "" from ScheduleLineOrderQuantity.
{
"PurchaseOrderType": "NB",
"PurchaseOrderDate": "2024-05-14",
"Language": "EN",
"CompanyCode": "2024",
"PurchasingOrganization": "2024",
"PurchasingGroup": "001",
"Supplier": "1000000",
"DocumentCurrency": "USD",
"_PurchaseOrderItem": [
{
"PurchaseOrderItem": "10",
"PurchaseOrderCategory": "F",
"DocumentCurrency": "USD",
"MaterialGroup": "E002",
"PurchaseOrderItemText": "From CPI",
"ProductTypeCode": "1",
"CompanyCode": "2024",
"Plant": "2024",
"PurchaseOrderQuantityUnit": "EA",
"OrderPriceUnit": "EA",
"NetPriceQuantity": "1",
"PurchaseOrderItemCategory": "0",
"AccountAssignmentCategory": "P",
"NetAmount": "10",
"GrossAmount": "10",
"OrderQuantity": "10",
"NetPriceAmount": "1",
"_PurchaseOrderScheduleLineTP": [{
"ScheduleLineDeliveryDate": "2024-05-14",
"SchedLineStscDeliveryDate": "2024-05-14",
"ScheduleLineOrderQuantity": "10",
"PurchaseOrderQuantityUnit": "EA",
"Currency": "USD"
}],
"_PurOrdAccountAssignment": [{
"AccountAssignmentNumber": "1",
"OrderQuantityUnit": "EA",
"Quantity": "10",
"DocumentCurrency": "USD",
"CostCenter": "20240001",
"GLAccount": "42007000",
"Fund": "FUND1",
"CompanyCode": "2024",
"ChartOfAccounts": "XXOA",
"ControllingArea": "ABCD",
"ProfitCenter": "XXXX"
}]
}
]
}
Your script structure is off a little bit and the other problem is that your schedule line and account assignment types are not arrays in the JSON data. Here is a script that will make the data adjustments as long as the streaming is setup appropriately.
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()
_PurchaseOrderItem._PurchaseOrderScheduleLineTP.each{_PurchaseOrderScheduleLineTP->
_PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity = _PurchaseOrderScheduleLineTP.ScheduleLineOrderQuantity.toDouble().intValue()
}
_PurchaseOrderItem._PurOrdAccountAssignment.each{_PurOrdAccountAssignment->
_PurOrdAccountAssignment.Quantity = _PurOrdAccountAssignment.Quantity.toDouble().intValue()
}
}
message.setBody(JsonOutput.toJson(object))
return message
}
Regards,
Ryan Crosby
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
69 | |
7 | |
7 | |
6 | |
6 | |
6 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.