Symptom
When posting data using the API Business Partner - Replicate from Client to SAP S/4HANA Cloud, you receive the below error:
Data loss on copying of MDG_BP_BPSUITERPLCT_REQ_BK_DET- COLLECTION_AUTHORISATION_IND to BUS_EI_STRUC_BANKDETAIL-COLL_AUTH: Source True
(Or)
Data loss on copying of MDG_BP_BPSUITERPLCT_REQ_BK_DET- COLLECTION_AUTHORISATION_IND to BUS_EI_STRUC_BANKDETAIL-COLL_AUTH: Source False
Environment
SAP S/4HANA Cloud
Reproducing the Issue
To perform the POST call:
- Login to the third-party tool
- Perform a POST operation for the API Business Partner - Replicate from Client to SAP S/4HANA Cloud
- Example of the query:
- https://myxxxxxx-adm.s4hana.ondemand.com/sap/bc/srt/scs_ext/sap/businesspartnersuitebulkreplic?MessageId=${=java.util.UUID.randomUUID()}
where xxxxxx represents the tenant URL of the S/4HANA cloud system
Sample Request Payload as below:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:glob="http://sap.com/xi/SAPGlobal20/Global">
<soapenv:Body>
<glob:BusinessPartnerSUITEBulkReplicateRequest>
<MessageHeader>
.
.
.
</MessageHeader>
<BusinessPartnerSUITEReplicateRequestMessage>
.
.
.
<BusinessPartner actionCode="04" bankDetailsListCompleteTransmissionIndicator="false">
.
.
.
<BankDetails actionCode="04">
.
.
<CollectionAuthorisationIndicator>True</CollectionAuthorisationIndicator>
</BankDetails>
.
.
.
</BusinessPartner>
</BusinessPartnerSUITEReplicateRequestMessage>
</glob:BusinessPartnerSUITEBulkReplicateRequest>
</soapenv:Body>
</soapenv:Envelope>
System throws the error:
Data loss on copying of MDG_BP_BPSUITERPLCT_REQ_BK_DET- COLLECTION_AUTHORISATION_IND to BUS_EI_STRUC_BANKDETAIL-COLL_AUTH: Source True
(if we fill <CollectionAuthorisationIndicator>True</CollectionAuthorisationIndicator>)
(Or)
Data loss on copying of MDG_BP_BPSUITERPLCT_REQ_BK_DET- COLLECTION_AUTHORISATION_IND to BUS_EI_STRUC_BANKDETAIL-COLL_AUTH: Source False
(if we fill <CollectionAuthorisationIndicator>False</CollectionAuthorisationIndicator>)
Cause
In the Request payload, for the CollectionAuthorisationIndicator a Boolean value (False or True) is used. The CollectionAuthorisationIndicator is in the SOAP proxy an Indicator field with length 5. Internally this is mapped to the ABAP Boolean field with length 1 (true = 'X', false = ' '), but without conversion. Therefore, the error of data loss comes up as from True only T is mapped, which is not a correct value.
Resolution
Send the CollectionAuthorisationIndicator with an X or empty value instead of True or False.
<CollectionAuthorisationIndicator>X</CollectionAuthorisationIndicator>
(Or)
<CollectionAuthorisationIndicator> </CollectionAuthorisationIndicator>
For compatibility reasons it is not possible to change the accepted values from X to True since the outbound fills the value automatically with X. The API_Business_Partner documentation will be updated accordingly in one of the future releases.
Note:
All the other indicator fields have to be marked with a Boolean value (False or True). Only the field CollectionAuthorisationIndicator behaves differently due to the cause outlined above.
Keywords
CollectionAuthorisationIndicator, data loss, POST, Business Partner, API, Bank Details, BankDetails, BANKDETAIL , KBA , LO-MD-BP-WS , Web Service for Business Partner , Problem