Skip to main content

Actions

The ballerinax/sap.s4hana.ce_salesorder_0001 package exposes the following clients:

ClientPurpose
ClientProvides full CRUD access to SAP S/4HANA sales orders and all related entities via the OData v4 Sales Order API.

Client

Provides full CRUD access to SAP S/4HANA sales orders and all related entities via the OData v4 Sales Order API.

Configuration

FieldTypeDefaultDescription
authhttp:BearerTokenConfig|OAuth2RefreshTokenGrantConfig|http:CredentialsConfigRequiredAuthentication configuration; use basic credentials (http:CredentialsConfig with username/password), a bearer token, or OAuth 2.0 refresh token.
httpVersionhttp:HttpVersionHTTP_2_0HTTP protocol version to use.
http1SettingsClientHttp1Settings()HTTP/1.1 client settings (keep-alive, chunking).
timeoutdecimal60Request timeout in seconds.
retryConfighttp:RetryConfig()Retry configuration for failed requests.
secureSockethttp:ClientSecureSocket()SSL/TLS configuration.
proxyhttp:ProxyConfig()Proxy server configuration.
validationbooleantrueEnable constraint validation on request and response payloads.

Initializing the client

import ballerinax/sap.s4hana.ce_salesorder_0001;

configurable string hostname = ?;
configurable string username = ?;
configurable string password = ?;

ce_salesorder_0001:Client salesOrderClient = check new (
{auth: {username, password}},
hostname
);

Operations

Sales order management

createSalesOrder

Creates a new sales order in SAP S/4HANA, optionally with nested items, partners, pricing elements, and texts in a single deep-insert request.

Parameters:

NameTypeRequiredDescription
payloadCreateSalesOrderYesSales order data including type, sales organization, distribution channel, and optional nested entities.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: SalesOrder|error

Sample code:

ce_salesorder_0001:SalesOrder newOrder = check salesOrderClient->createSalesOrder({
SalesOrderType: "OR",
SalesOrganization: "1710",
DistributionChannel: "10",
OrganizationDivision: "00",
SoldToParty: "CUST-001",
PurchaseOrderByCustomer: "PO-2024-001"
});

Sample response:

{
"SalesOrder": "1234567890",
"SalesOrderType": "OR",
"SalesOrganization": "1710",
"DistributionChannel": "10",
"OrganizationDivision": "00",
"SoldToParty": "CUST-001",
"PurchaseOrderByCustomer": "PO-2024-001",
"TotalNetAmount": "0.00",
"TransactionCurrency": "USD",
"SalesOrderDate": "2024-01-15T00:00:00Z",
"OverallSDProcessStatus": "A"
}
listSalesOrders

Retrieves a collection of sales orders, with support for OData v4 filtering, sorting, pagination, and field selection.

Parameters:

NameTypeRequiredDescription
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesListSalesOrdersQueriesNoOData query options including $filter, $orderby, $top, $skip, $select, and $expand.

Returns: CollectionOfSalesOrder|error

Sample code:

ce_salesorder_0001:CollectionOfSalesOrder result = check salesOrderClient->listSalesOrders(
queries = {
"\$filter": "SalesOrganization eq '1710'",
"\$top": 10,
"\$select": "SalesOrder,SalesOrderType,SoldToParty,TotalNetAmount,TransactionCurrency"
}
);

Sample response:

{
"@odata.count": 2,
"value": [
{
"SalesOrder": "1234567890",
"SalesOrderType": "OR",
"SoldToParty": "CUST-001",
"TotalNetAmount": "5000.00",
"TransactionCurrency": "USD"
},
{
"SalesOrder": "1234567891",
"SalesOrderType": "OR",
"SoldToParty": "CUST-002",
"TotalNetAmount": "3200.00",
"TransactionCurrency": "USD"
}
]
}
getSalesOrder

Retrieves a single sales order by its identifier, with optional field selection and expansion of related entities.

Parameters:

NameTypeRequiredDescription
salesOrderstringYesThe sales order number (e.g., "1234567890").
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesGetSalesOrderQueriesNoOData query options including $select and $expand.

Returns: SalesOrder|error

Sample code:

ce_salesorder_0001:SalesOrder order = check salesOrderClient->getSalesOrder(
"1234567890",
queries = {"\$expand": "_Item,_Partner"}
);

Sample response:

{
"SalesOrder": "1234567890",
"SalesOrderType": "OR",
"SalesOrganization": "1710",
"DistributionChannel": "10",
"OrganizationDivision": "00",
"SoldToParty": "CUST-001",
"PurchaseOrderByCustomer": "PO-2024-001",
"TotalNetAmount": "5000.00",
"TransactionCurrency": "USD",
"OverallSDProcessStatus": "B",
"_Item": {"value": [{"SalesOrderItem": "000010", "Material": "MAT-001", "RequestedQuantity": "10"}]},
"_Partner": {"value": [{"PartnerFunction": "AG", "Customer": "CUST-001"}]}
}
patchSalesOrder

Updates selected fields on an existing sales order header using a partial update (PATCH).

Parameters:

NameTypeRequiredDescription
salesOrderstringYesThe sales order number to update.
payloadUpdateSalesOrderYesFields to update; only supplied fields are modified.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Response _ = check salesOrderClient->patchSalesOrder(
"1234567890",
{PurchaseOrderByCustomer: "PO-2024-002"}
);

Sales order item management

createItemOfSalesOrder

Adds a new item to an existing sales order, specifying material, quantity, and optional sub-entities.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe parent sales order number.
payloadCreateSalesOrderItemYesItem data including item number, material, quantity, and unit.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: SalesOrderItem|error

Sample code:

ce_salesorder_0001:SalesOrderItem newItem = check salesOrderClient->createItemOfSalesOrder(
"1234567890",
{
SalesOrderItem: "000010",
Material: "MAT-001",
RequestedQuantity: "10",
RequestedQuantityUnit: "EA"
}
);

Sample response:

{
"SalesOrder": "1234567890",
"SalesOrderItem": "000010",
"Material": "MAT-001",
"SalesOrderItemText": "Product A",
"RequestedQuantity": "10",
"RequestedQuantityUnit": "EA",
"ItemNetAmount": "1000.00",
"TransactionCurrency": "USD",
"StorageLocation": "0001"
}
listItemsOfSalesOrder

Retrieves all items belonging to a specific sales order.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesListItemsOfSalesOrderQueriesNoOData query options.

Returns: CollectionOfSalesOrderItem|error

Sample code:

ce_salesorder_0001:CollectionOfSalesOrderItem items = check salesOrderClient->listItemsOfSalesOrder("1234567890");

Sample response:

{
"value": [
{
"SalesOrder": "1234567890",
"SalesOrderItem": "000010",
"Material": "MAT-001",
"SalesOrderItemText": "Product A",
"RequestedQuantity": "10",
"RequestedQuantityUnit": "EA",
"ItemNetAmount": "1000.00",
"TransactionCurrency": "USD"
},
{
"SalesOrder": "1234567890",
"SalesOrderItem": "000020",
"Material": "MAT-002",
"SalesOrderItemText": "Product B",
"RequestedQuantity": "5",
"RequestedQuantityUnit": "EA",
"ItemNetAmount": "500.00",
"TransactionCurrency": "USD"
}
]
}
getSalesOrderItem

Retrieves a single sales order item by order number and item number.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
salesOrderItemstringYesThe item number (e.g., "000010").
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesGetSalesOrderItemQueriesNoOData query options including $select and $expand.

Returns: SalesOrderItem|error

Sample code:

ce_salesorder_0001:SalesOrderItem item = check salesOrderClient->getSalesOrderItem("1234567890", "000010");

Sample response:

{
"SalesOrder": "1234567890",
"SalesOrderItem": "000010",
"Material": "MAT-001",
"SalesOrderItemText": "Product A",
"RequestedQuantity": "10",
"RequestedQuantityUnit": "EA",
"ItemNetAmount": "1000.00",
"TransactionCurrency": "USD",
"StorageLocation": "0001",
"DeliveryGroup": "0",
"ItemBillingBlockReason": ""
}
patchSalesOrderItem

Updates selected fields on an existing sales order item using a partial update (PATCH).

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
salesOrderItemstringYesThe item number to update.
payloadUpdateSalesOrderItemYesFields to update on the item; only supplied fields are modified.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Response _ = check salesOrderClient->patchSalesOrderItem(
"1234567890",
"000010",
{RequestedQuantity: "15"}
);
deleteSalesOrderItem

Removes an item from a sales order.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
salesOrderItemstringYesThe item number to delete.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Response _ = check salesOrderClient->deleteSalesOrderItem("1234567890", "000010");

Partner management

createPartnerOfSalesOrder

Assigns a partner function (e.g., ship-to party, bill-to party) to a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
payloadCreateSalesOrderPartnerYesPartner data including the function code and the customer or supplier ID.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: SalesOrderPartner|error

Sample code:

ce_salesorder_0001:SalesOrderPartner partner = check salesOrderClient->createPartnerOfSalesOrder(
"1234567890",
{PartnerFunction: "WE", Customer: "SHIP-001"}
);

Sample response:

{
"SalesOrder": "1234567890",
"PartnerFunction": "WE",
"Customer": "SHIP-001",
"Supplier": "",
"Personnel": "",
"ContactPerson": ""
}
listPartnersOfSalesOrder

Retrieves all partner function assignments for a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesListPartnersOfSalesOrderQueriesNoOData query options.

Returns: CollectionOfSalesOrderPartner|error

Sample code:

ce_salesorder_0001:CollectionOfSalesOrderPartner partners = check salesOrderClient->listPartnersOfSalesOrder("1234567890");

Sample response:

{
"value": [
{"SalesOrder": "1234567890", "PartnerFunction": "AG", "Customer": "CUST-001"},
{"SalesOrder": "1234567890", "PartnerFunction": "WE", "Customer": "SHIP-001"},
{"SalesOrder": "1234567890", "PartnerFunction": "RE", "Customer": "BILL-001"}
]
}
getSalesOrderPartner

Retrieves a specific partner function entry from a sales order.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
PartnerFunctionstringYesThe partner function code (e.g., "WE" for ship-to party, "AG" for sold-to party).
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesGetSalesOrderPartnerQueriesNoOData query options.

Returns: SalesOrderPartner|error

Sample code:

ce_salesorder_0001:SalesOrderPartner partner = check salesOrderClient->getSalesOrderPartner("1234567890", "WE");

Sample response:

{
"SalesOrder": "1234567890",
"PartnerFunction": "WE",
"Customer": "SHIP-001",
"Supplier": "",
"Personnel": "",
"ContactPerson": ""
}
deleteSalesOrderPartner

Removes a partner function assignment from a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
PartnerFunctionstringYesThe partner function code to remove.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Response _ = check salesOrderClient->deleteSalesOrderPartner("1234567890", "WE");

Pricing element management

createPricingElementOfSalesOrder

Adds a pricing condition element to a sales order header, specifying condition type and rate.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
payloadCreateSalesOrderPricingElementYesPricing element data including procedure step, counter, condition type, and rate.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: SalesOrderPricingElement|error

Sample code:

ce_salesorder_0001:SalesOrderPricingElement pricingEl = check salesOrderClient->createPricingElementOfSalesOrder(
"1234567890",
{
PricingProcedureStep: "010",
PricingProcedureCounter: "01",
ConditionType: "PR00",
ConditionRateValue: "500.00",
ConditionCurrency: "USD"
}
);

Sample response:

{
"SalesOrder": "1234567890",
"PricingProcedureStep": "010",
"PricingProcedureCounter": "01",
"ConditionType": "PR00",
"ConditionRateValue": "500.00",
"ConditionCurrency": "USD",
"ConditionAmount": "5000.00",
"ConditionApplication": "V"
}
listPricingElementsOfSalesOrder

Retrieves all pricing condition elements associated with a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesListPricingElementsOfSalesOrderQueriesNoOData query options.

Returns: CollectionOfSalesOrderPricingElement|error

Sample code:

ce_salesorder_0001:CollectionOfSalesOrderPricingElement elements = check salesOrderClient->listPricingElementsOfSalesOrder("1234567890");

Sample response:

{
"value": [
{
"SalesOrder": "1234567890",
"PricingProcedureStep": "010",
"PricingProcedureCounter": "01",
"ConditionType": "PR00",
"ConditionRateValue": "500.00",
"ConditionAmount": "5000.00",
"ConditionCurrency": "USD"
},
{
"SalesOrder": "1234567890",
"PricingProcedureStep": "920",
"PricingProcedureCounter": "01",
"ConditionType": "MWST",
"ConditionRateValue": "10.00",
"ConditionAmount": "500.00",
"ConditionCurrency": "USD"
}
]
}
getSalesOrderPricingElement

Retrieves a specific pricing condition element from a sales order by step and counter.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
PricingProcedureStepstringYesThe pricing procedure step number.
PricingProcedureCounterstringYesThe pricing procedure counter.
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesGetSalesOrderPricingElementQueriesNoOData query options.

Returns: SalesOrderPricingElement|error

Sample code:

ce_salesorder_0001:SalesOrderPricingElement element = check salesOrderClient->getSalesOrderPricingElement(
"1234567890", "010", "01"
);

Sample response:

{
"SalesOrder": "1234567890",
"PricingProcedureStep": "010",
"PricingProcedureCounter": "01",
"ConditionType": "PR00",
"ConditionRateValue": "500.00",
"ConditionAmount": "5000.00",
"ConditionCurrency": "USD",
"ConditionApplication": "V",
"ConditionQuantity": "1",
"ConditionQuantityUnit": "EA"
}
deleteSalesOrderPricingElement

Removes a pricing condition element from a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
PricingProcedureStepstringYesThe pricing procedure step to delete.
PricingProcedureCounterstringYesThe pricing procedure counter to delete.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Response _ = check salesOrderClient->deleteSalesOrderPricingElement("1234567890", "010", "01");

Schedule line management

listScheduleLinesOfSalesOrderItem

Retrieves all schedule lines for a sales order item, showing planned delivery quantities and dates.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
SalesOrderItemstringYesThe item number.
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesListScheduleLinesOfSalesOrderItemQueriesNoOData query options.

Returns: CollectionOfSalesOrderScheduleLine|error

Sample code:

ce_salesorder_0001:CollectionOfSalesOrderScheduleLine scheduleLines = check salesOrderClient->listScheduleLinesOfSalesOrderItem(
"1234567890", "000010"
);

Sample response:

{
"value": [
{
"SalesOrder": "1234567890",
"SalesOrderItem": "000010",
"ScheduleLine": "0001",
"RequestedDeliveryDate": "2024-12-31T00:00:00Z",
"ScheduleLineOrderQuantity": "10",
"ScheduleLineOrderQuantityUnit": "EA",
"ConfdDelivQtyInOrderQtyUnit": "10",
"DeliveredQtyInOrderQtyUnit": "0"
}
]
}
getSalesOrderScheduleLine

Retrieves a specific schedule line for a sales order item.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
SalesOrderItemstringYesThe item number.
ScheduleLinestringYesThe schedule line identifier (e.g., "0001").
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesGetSalesOrderScheduleLineQueriesNoOData query options.

Returns: SalesOrderScheduleLine|error

Sample code:

ce_salesorder_0001:SalesOrderScheduleLine line = check salesOrderClient->getSalesOrderScheduleLine(
"1234567890", "000010", "0001"
);

Sample response:

{
"SalesOrder": "1234567890",
"SalesOrderItem": "000010",
"ScheduleLine": "0001",
"RequestedDeliveryDate": "2024-12-31T00:00:00Z",
"ScheduleLineOrderQuantity": "10",
"ScheduleLineOrderQuantityUnit": "EA",
"ConfdDelivQtyInOrderQtyUnit": "10",
"DeliveredQtyInOrderQtyUnit": "0",
"OpenConfdDelivQtyInOrdQtyUnit": "10"
}

Text management

createTextOfSalesOrder

Adds a long-text entry to a sales order header for a specified language and text ID.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
payloadCreateSalesOrderTextYesText data including language code, text ID, and the text content.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: SalesOrderText|error

Sample code:

ce_salesorder_0001:SalesOrderText text = check salesOrderClient->createTextOfSalesOrder(
"1234567890",
{
Language: "EN",
LongTextID: "0001",
LongText: "Special delivery instructions: handle with care."
}
);

Sample response:

{
"SalesOrder": "1234567890",
"Language": "EN",
"LongTextID": "0001",
"LongText": "Special delivery instructions: handle with care."
}
listTextsOfSalesOrder

Retrieves all text entries associated with a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
headersmap<string|string[]>NoAdditional HTTP request headers.
queriesListTextsOfSalesOrderQueriesNoOData query options.

Returns: CollectionOfSalesOrderText|error

Sample code:

ce_salesorder_0001:CollectionOfSalesOrderText texts = check salesOrderClient->listTextsOfSalesOrder("1234567890");

Sample response:

{
"value": [
{
"SalesOrder": "1234567890",
"Language": "EN",
"LongTextID": "0001",
"LongText": "Special delivery instructions: handle with care."
},
{
"SalesOrder": "1234567890",
"Language": "DE",
"LongTextID": "0001",
"LongText": "Besondere Lieferhinweise: mit Vorsicht behandeln."
}
]
}
deleteSalesOrderText

Removes a text entry from a sales order header.

Parameters:

NameTypeRequiredDescription
SalesOrderstringYesThe sales order number.
LanguagestringYesThe language code of the text to remove (e.g., "EN").
LongTextIDstringYesThe text ID to remove.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Response _ = check salesOrderClient->deleteSalesOrderText("1234567890", "EN", "0001");

Batch operations

performBatchOperation

Executes multiple OData read or change requests in a single HTTP call using the OData v4 batch protocol, reducing network round-trips.

Parameters:

NameTypeRequiredDescription
requesthttp:RequestYesAn HTTP request with multipart/mixed content type containing the individual OData batch requests.
headersmap<string|string[]>NoAdditional HTTP request headers.

Returns: http:Response|error

Sample code:

http:Request batchRequest = new;
string boundary = "batch_abc123";
batchRequest.setHeader("Content-Type", string `multipart/mixed;boundary=${boundary}`);
batchRequest.setPayload(
string `--${boundary}\r\nContent-Type: application/http\r\n\r\nGET SalesOrder('1234567890') HTTP/1.1\r\n\r\n--${boundary}--`
);
http:Response batchResponse = check salesOrderClient->performBatchOperation(batchRequest);