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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
10 | |
8 | |
8 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |