cancel
Showing results for 
Search instead for 
Did you mean: 

Groovy script help to remove quotes

SG141
Active Participant
0 Kudos

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"
      }]
    }
  ]
}

 

View Entire Topic
Andrzej_Filusz
Contributor

Hi,

Please check the below code:

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)
    Reader reader = message.getBody(java.io.Reader)
    def object = new JsonSlurper().parse(reader)


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

        _PurchaseOrderItem._PurchaseOrderScheduleLineTP.each{ lineTP->
            if (lineTP.ScheduleLineOrderQuantity) {
                lineTP.ScheduleLineOrderQuantity = lineTP.ScheduleLineOrderQuantity.toDouble().intValue()
            }
        }

        _PurchaseOrderItem._PurOrdAccountAssignment.each{ assignment->
            if (assignment.ScheduleLineOrderQuantity) {
                assignment.ScheduleLineOrderQuantity = assignment.ScheduleLineOrderQuantity.toDouble().intValue()
            }
        }

    }

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

BR,

Andrzej