Have you seen this note on My Oracle Support:
This Service Method Updates an existing Purchase Order document as per the data provided in the input object PurchaseOrder.
- For Update PO, DocumentNumber and OrgId, or PoHeaderId are mandatory, to identify the PO to be updated.
- When updating Lines, either provide PoLineId or LineNum to set the context. The same applies to other entities as well.
- To add new Line, either leave LineNum as null, or provide a new LineNum. The same applies to other entities as well.
- For Schedules, Pay Items and Price Breaks, use entity PoLineLocations.
- For BPA Item Attributes, use entities PoAttrVals and PoAttrValuesTLP.
- For Complex PO Pay Item, PaymentType value is mandatory for both create and update scenarios. Possible values are ADVANCE, DELIVERY, LUMPSUM, MILESTONE, RATE.
- Provide only values of attributes to be updated, along with context attributes (discussed above). If an attribute value is provided, and it is not updatable because of the entity status or some other setup, an error message will be returned back and transaction will fail. This applies even when the new value provided is same as current value in PO.
- To nullify the value of a String type of attribute, pass the literal value "WEBSERVICE_NULL_CONSTANT_STRING" or java constant PoConstants.WEBSERVICE_NULL_CONSTANT_STRING
- To nullify the value of a Number type of attribute, pass the literal value -99999999 or PoConstants.WEBSERVICE_NULL_CONSTANT_NUMBER in java.
- To nullify the value of a Date type of attribute, pass the literal value or PoConstants.WEBSERVICE_NULL_CONSTANT_DATE in java