Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
Jacky_Liu
Product and Topic Expert
Product and Topic Expert

In some S4HC project , there is integration for material document creation in s4hc . S4HC has provided odata api and soap async api for this . Then question is in what kind of situation using odata, in what kind of situation using soap async api .



I want take this blog to test these 2 types of API.


First let test ODATA Api . Odata api is sync api, which means after calling finished, the result can be get from the return message .


If using odata api to create material documen , need 2 steps


1 get csrf token, it will take 2.6 s .



2 using posting to create material document , it will take 5.23 s




So if use ODATA API to create material document , it will take about 7.83 s atleast . For this material documen, it only has 1 item . But after the calling finished, the material document number is return at once .


Then let's testing SOAP async API , only 1 step , it will take only about 3 s . But the material document creation is schedule in back end . So no material document will returned after calling . But S4HC will send out soap message after the material document created successfully in backend .



The following is the message body :


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:glob="http://sap.com/xi/APPL/Global2">


<soapenv:Header/>


<soapenv:Body>


<glob:MaterialDocumentCreateRequest_Async>


<MessageHeader>


<!--Optional:-->


<ID schemeID="" schemeAgencyID="" schemeAgencySchemeAgencyID=""></ID>


<!--Optional:-->


<UUID schemeID="" schemeAgencyID=""></UUID>


<!--Optional:-->


<ReferenceID schemeID="" schemeAgencyID="" schemeAgencySchemeAgencyID=""></ReferenceID>


<!--Optional:-->


<ReferenceUUID schemeID="" schemeAgencyID=""></ReferenceUUID>


<CreationDateTime></CreationDateTime>


<!--Optional:-->


<TestDataIndicator></TestDataIndicator>


<!--Optional:-->


<ReconciliationIndicator></ReconciliationIndicator>


<!--Optional:-->


<SenderBusinessSystemID>xxxxxxx</SenderBusinessSystemID>


<!--Optional:-->


<RecipientBusinessSystemID></RecipientBusinessSystemID>


<!--Optional:-->


<SenderParty>


<!--Optional:-->


<InternalID schemeID="" schemeAgencyID=""></InternalID>


<!--Zero or more repetitions:-->


<StandardID schemeAgencyID=""></StandardID>


<!--Optional:-->


<ContactPerson>


<!--Optional:-->


<InternalID schemeID="" schemeAgencyID=""></InternalID>


<!--0 to 4 repetitions:-->


<OrganisationFormattedName></OrganisationFormattedName>


<!--0 to 4 repetitions:-->


<PersonFormattedName></PersonFormattedName>


<!--Zero or more repetitions:-->


<PhoneNumber>


<!--Optional:-->


<AreaID></AreaID>


<!--Optional:-->


<SubscriberID></SubscriberID>


<!--Optional:-->


<ExtensionID></ExtensionID>


<!--Optional:-->


<CountryCode></CountryCode>


<!--Optional:-->


<CountryDiallingCode></CountryDiallingCode>


<!--Optional:-->


<CountryName languageCode=""></CountryName>


</PhoneNumber>


<!--Zero or more repetitions:-->


<FaxNumber>


<!--Optional:-->


<AreaID></AreaID>


<!--Optional:-->


<SubscriberID></SubscriberID>


<!--Optional:-->


<ExtensionID></ExtensionID>


<!--Optional:-->


<CountryCode></CountryCode>


<!--Optional:-->


<CountryDiallingCode></CountryDiallingCode>


<!--Optional:-->


<CountryName languageCode=""></CountryName>


</FaxNumber>


<!--Zero or more repetitions:-->


<EmailURI schemeID=""></EmailURI>


</ContactPerson>


</SenderParty>


<!--Zero or more repetitions:-->


<RecipientParty>


<!--Optional:-->


<InternalID schemeID="" schemeAgencyID=""></InternalID>


<!--Zero or more repetitions:-->


<StandardID schemeAgencyID=""></StandardID>


<!--Optional:-->


<ContactPerson>


<!--Optional:-->


<InternalID schemeID="" schemeAgencyID=""></InternalID>


<!--0 to 4 repetitions:-->


<OrganisationFormattedName></OrganisationFormattedName>


<!--0 to 4 repetitions:-->


<PersonFormattedName></PersonFormattedName>


<!--Zero or more repetitions:-->


<PhoneNumber>


<!--Optional:-->


<AreaID></AreaID>


<!--Optional:-->


<SubscriberID></SubscriberID>


<!--Optional:-->


<ExtensionID></ExtensionID>


<!--Optional:-->


<CountryCode></CountryCode>


<!--Optional:-->


<CountryDiallingCode></CountryDiallingCode>


<!--Optional:-->


<CountryName languageCode=""></CountryName>


</PhoneNumber>


<!--Zero or more repetitions:-->


<FaxNumber>


<!--Optional:-->


<AreaID></AreaID>


<!--Optional:-->


<SubscriberID></SubscriberID>


<!--Optional:-->


<ExtensionID></ExtensionID>


<!--Optional:-->


<CountryCode></CountryCode>


<!--Optional:-->


<CountryDiallingCode></CountryDiallingCode>


<!--Optional:-->


<CountryName languageCode=""></CountryName>


</FaxNumber>


<!--Zero or more repetitions:-->


<EmailURI schemeID=""></EmailURI>


</ContactPerson>


</RecipientParty>


<!--Zero or more repetitions:-->


<BusinessScope>


<TypeCode listID="" listVersionID="" listAgencyID="" listAgencySchemeID="" listAgencySchemeAgencyID=""></TypeCode>


<!--Optional:-->


<InstanceID schemeID="" schemeAgencyID=""></InstanceID>


<!--Optional:-->


<ID schemeID="" schemeAgencyID=""></ID>


</BusinessScope>


</MessageHeader>


<MaterialDocument>


<GoodsMovementCode>4</GoodsMovementCode>


<PostingDate>2019-12-30</PostingDate>


<!--Optional:-->


<DocumentDate>2019-12-30</DocumentDate>


<!--Optional:-->


<BillOfLading></BillOfLading>


<!--Optional:-->


<ReferenceDocument></ReferenceDocument>


<!--Optional:-->


<Description>soap test</Description>


<!--1 or more repetitions:-->


<MaterialDocumentItem>


<GoodsMovementType>321</GoodsMovementType>


<!--Optional:-->


<GoodsRecipientName></GoodsRecipientName>


<!--Optional:-->


<MaterialDocumentLine>1</MaterialDocumentLine>


<!--Optional:-->


<ParentMaterialDocumentLine>0</ParentMaterialDocumentLine>


<!--Optional:-->


<Material>A0101010001</Material>


<!--Optional:-->


<GlobalTradeItemNumber></GlobalTradeItemNumber>


<!--Optional:-->


<Batch>201911002</Batch>


<!--Optional:-->


<SerialIDCreateAutomaticIndicator></SerialIDCreateAutomaticIndicator>


<!--Optional:-->


<Plant>WX01</Plant>


<!--Optional:-->


<StorageLocation>WX01</StorageLocation>


<!--Optional:-->


<ShelfLifeExpirationDate></ShelfLifeExpirationDate>


<!--Optional:-->


<ManufactureDate></ManufactureDate>


<!--Optional:-->


<BatchBySupplier></BatchBySupplier>


<!--Optional:-->


<StockType></StockType>


<!--Optional:-->


<InventorySpecialStockType></InventorySpecialStockType>


<!--Optional:-->


<QuantityInEntryUnit unitCode="KG">1.000</QuantityInEntryUnit>


<!--Optional:-->


<!--<QuantityInBaseUnit unitCode="KG">1.000</QuantityInBaseUnit>-->


<!--Optional:-->


<InventoryValuationType></InventoryValuationType>


<!--Optional:-->


<Customer></Customer>


<!--Optional:-->


<Supplier></Supplier>


<!--Optional:-->


<PurchaseOrder></PurchaseOrder>


<!--Optional:-->


<PurchaseOrderItem></PurchaseOrderItem>


<!--Optional:-->


<SalesOrder></SalesOrder>


<!--Optional:-->


<SalesOrderItem></SalesOrderItem>


<!--Optional:-->


<SalesOrderItemScheduleLine></SalesOrderItemScheduleLine>


<!--Optional:-->


<ManufacturingOrder></ManufacturingOrder>


<!--Optional:-->


<ManufacturingOrderItem></ManufacturingOrderItem>


<!--Optional:-->


<Delivery></Delivery>


<!--Optional:-->


<DeliveryItem></DeliveryItem>


<!--Optional:-->


<IsCompeletelyDelivered></IsCompeletelyDelivered>


<!--Optional:-->


<Reservation></Reservation>


<!--Optional:-->


<ReservationItem></ReservationItem>


<!--Optional:-->


<ReservationIsFinallyIssued></ReservationIsFinallyIssued>


<!--Optional:-->


<ProjectNetwork></ProjectNetwork>


<!--Optional:-->


<GLAccount></GLAccount>


<!--Optional:-->


<CostCenter></CostCenter>


<!--Optional:-->


<CostObject></CostObject>


<!--Optional:-->


<ProfitCenter></ProfitCenter>


<!--Optional:-->


<ProfitabilitySegment></ProfitabilitySegment>


<!--Optional:-->


<FunctionalArea></FunctionalArea>


<!--Optional:-->


<WBSElement></WBSElement>


<!--Optional:-->


<UnloadingPointName></UnloadingPointName>


<!--Optional:-->


<MaterialDocumentItemText>soaptest</MaterialDocumentItemText>


<!--Optional:-->


<GoodsMovementRefDocType></GoodsMovementRefDocType>


<!--Optional:-->


<GoodsMovementReasonCode></GoodsMovementReasonCode>


<!--Optional:-->


<IssgOrRcvgMaterial>A0101010001</IssgOrRcvgMaterial>


<!--Optional:-->


<IssgOrRcvgBatch>201911002</IssgOrRcvgBatch>


<!--Optional:-->


<IssuingOrReceivingPlant>WX01</IssuingOrReceivingPlant>


<!--Optional:-->


<IssuingOrReceivingStorageLoc>WX18</IssuingOrReceivingStorageLoc>


<!--Optional:-->


<IssuingOrReceivingValType></IssuingOrReceivingValType>


<!--Optional:-->


<MasterFixedAsset></MasterFixedAsset>


<!--Optional:-->


<FixedAsset></FixedAsset>


<!--Optional:-->


<FundsManagementCenter></FundsManagementCenter>


<!--Optional:-->


<FundsManagementFund></FundsManagementFund>


<!--Optional:-->


<CommitmentItem></CommitmentItem>


<!--Optional:-->


<Grant></Grant>


<!--Zero or more repetitions:-->


<SerialNumbers></SerialNumbers>


</MaterialDocumentItem>


</MaterialDocument>


</glob:MaterialDocumentCreateRequest_Async>


</soapenv:Body>


</soapenv:Envelope>




In S4HC message dashboard APP, we can find the material document is in the precess of creation .






So here lets come to the summary . If using odata API , it will take 7.8 s for every material document creation at least . If using soap async api , it will take about 3 s . So SOAP async api is much faster . If the interface has high concurrence for creating material document in S4HC, the better choice is SOAP async API.



Then END


Jacky Liu







4 Comments