Skip to Content
avatar image
Former Member

Only value true is permitted as telephoneListCompleteTransmissionIndicator

Hello,

I am using the ManageCustomerIn web service to create an account with SAP.

My request works (a company is created) as long as I do not add the AddressInformation node.

When I do, my request goes through but I get in the answer: "Only value true is permitted as telephoneListCompleteTransmissionIndicator" and the company is not created.

Yet, in my XML request, I do have

"telephoneListCompleteTransmissionIndicator": "true"

I even added

telephoneListCompleteTransmissionIndicatorSpecified": "true" and "CustomerIndicatorSpecified": "true"

as indicated in this thread: https://archive.sap.com/discussions/thread/3596128

As this point, I don't really know what else to do. Would anyone be able to help?

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

4 Answers

  • Oct 10, 2017 at 08:59 AM

    Hi Jonathan,

    in general the "List Complete Transmission Indicator" (LCTI) is part of the Web Service API delta handling concept and provides you with a possibility to define if your list of node instances is complete or if you only provide a part of the list.

    "telephoneListCompleteTransmissionIndicator = true" means you provide a complete list of phone number that shall replace all existing phone numbers in the system.

    "telephoneListCompleteTransmissionIndicator = false" means you provide only those phone numbers that shall be changed. This request requires that you can uniquely identify a phone number (by a unique key), which is not possible, because the number itself can be changed. Therefore we only support "telephoneListCompleteTransmissionIndicator = true" for phone numbers.

    You can use the following xml snippets work to update phone numbers:

    Replace the existing list of phone numbers for a specific address:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:glob="http://sap.com/xi/SAPGlobal20/Global" xmlns:glob1="http://sap.com/xi/AP/Globalization">
       <soapenv:Header/>
       <soapenv:Body>
          <glob:CustomerBundleMaintainRequest_sync_V1>
             <BasicMessageHeader>
                <UUID></UUID>
             </BasicMessageHeader>
             <Customer actionCode="06" addressInformationListCompleteTransmissionIndicator="false">
                <ObjectNodeSenderTechnicalID>C1</ObjectNodeSenderTechnicalID>
                <InternalID>KH_B01</InternalID>
                <AddressInformation actionCode="06" addressUsageListCompleteTransmissionIndicator="false">
                   <ObjectNodeSenderTechnicalID>C1-AI1</ObjectNodeSenderTechnicalID>
                   <!-- The UUID is the key for address updates -->
                   <UUID>00163e2a-114d-1ed7-91ee-09d13a9ee036</UUID> 
                   <Address actionCode="04" telephoneListCompleteTransmissionIndicator="true">
                      <Telephone>
                         <ObjectNodeSenderTechnicalID>C1-AI1-T1</ObjectNodeSenderTechnicalID>
                         <FormattedNumberDescription>+1 (123) 456-789</FormattedNumberDescription>
                         <MobilePhoneNumberIndicator>false</MobilePhoneNumberIndicator>
                      </Telephone>
                      <Telephone>
                         <ObjectNodeSenderTechnicalID>C1-AI1-T2</ObjectNodeSenderTechnicalID>
                         <FormattedNumberDescription>+1 (987) 654-321</FormattedNumberDescription>
                         <MobilePhoneNumberIndicator>true</MobilePhoneNumberIndicator>
                      </Telephone>
                   </Address>
                </AddressInformation>
             </Customer>
          </glob:CustomerBundleMaintainRequest_sync_V1>
       </soapenv:Body>
    </soapenv:Envelope>
    

    Delete all phone numbers (replace by an empty list):

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:glob="http://sap.com/xi/SAPGlobal20/Global" xmlns:glob1="http://sap.com/xi/AP/Globalization">
       <soapenv:Header/>
       <soapenv:Body>
          <glob:CustomerBundleMaintainRequest_sync_V1>
             <BasicMessageHeader>
                <UUID></UUID>
             </BasicMessageHeader>
             <!-- Update privat account phone numbers -->
             <Customer actionCode="06" addressInformationListCompleteTransmissionIndicator="false">
                <ObjectNodeSenderTechnicalID>C1</ObjectNodeSenderTechnicalID>
                <InternalID>KH_B01</InternalID>
                <AddressInformation actionCode="06" addressUsageListCompleteTransmissionIndicator="false">
                   <ObjectNodeSenderTechnicalID>C1-AI1</ObjectNodeSenderTechnicalID>
                   <!-- The UUID is the key for address updates -->
                   <UUID>00163e2a-114d-1ed7-91ee-09d13a9ee036</UUID> 
                   <Address actionCode="04" telephoneListCompleteTransmissionIndicator="true">
                   </Address>
                </AddressInformation>
             </Customer>
          </glob:CustomerBundleMaintainRequest_sync_V1>
       </soapenv:Body>
    </soapenv:Envelope>
    

    You can change a phone number by first reading the business partner address data (QueryCustomerIn) and updating the complete list of phone numbers.

    If you are building a UI-like application that only changes single phone numbers, I would suggest to consider ByD OData services as well.

    Best regards,
    Knut

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hello Knut,

      Thank you for your answer. Unfortunately, I am still unable to make it work.

      I added the address UUID in the addressinformation node (see below code in json as I develop in Ruby and use Savon to pass the Soap request)

      "AddressInformation" => {
                  "actionCode" => "02",
                  "addressUsageListCompleteTransmissionIndicator" => "false",
                  "ObjectNodeSenderTechnicalID" => "002",
                  "UUID" => "00163e10-f32a-1ed7-ab9f-9f0aecb6d6b5",
                  # "AddressUsage" => [
                  #   {
                  #     "actionCode" => "04",
                  #     "ObjectNodeSenderTechnicalID" => "003",
                  #     "AddressUsageCode" => "XXDEFAULT",
                  #     "DefaultIndicator" => "false"
                  #   },
                  #   {
                  #     "actionCode" => "04",
                  #     "ObjectNodeSenderTechnicalID" => "004",
                  #     "AddressUsageCode" => "SHIP_TO",
                  #     "DefaultIndicator" => "true"
                  #   },
                  #   {
                  #     "actionCode" => "04",
                  #     "ObjectNodeSenderTechnicalID" => "005",
                  #     "AddressUsageCode" => "BILL_TO",
                  #     "DefaultIndicator" => "true"
                  #   }
                  # ],
                  "Address" => {
                    "actionCode" => "04",
                    "telephoneListCompleteTransmissionIndicator" => "true",
                    "CorrespondenceLanguageCode" => "EN",
                    "PreferredCommunicationMediumTypeCode" => "LET",
                    "EmailURI" => "customer01@bydmail.com",
                    "FacsimileFormattedNumberDescription" => "+1 7164824867",
                    "PostalAddress" => {
                      "CountryCode" => "US",
                      "CityName" => "Buffalo",
                      "StreetPostalCode" => "14204",
                      "StreetName" => "Seneca Street"
                    },
                    "Telephone" => [
                      {
                        "ObjectNodeSenderTechnicalID" => "006",
                        "FormattedNumberDescription" => "+1 7164824863",
                        "MobilePhoneNumberIndicator" => "false"
                      },
                      {
                        "ObjectNodeSenderTechnicalID" => "007",
                        "FormattedNumberDescription" => "+12 34567890",
                        "MobilePhoneNumberIndicator" => "true"
                      }
                    ],
                    "WebURI" => "http://www.company.com"
                  }
                },
       

      Furthermore, even if this was working, how I am supposed to add the UUID when I create a company? By definition, the company doesn't exist yet, hence there is no address UUID.

      Thank you in advance

      Jonathan

  • avatar image
    Former Member
    Oct 16, 2017 at 08:04 AM

    Hello Knut,


    Thank you for your answer. Unfortunately, I am still unable to make it work.

    I added the address UUID in the addressinformation node (see below code in json as I develop in Ruby and use Savon to pass the Soap request)

    "AddressInformation" => {
                "actionCode" => "02",
                "addressUsageListCompleteTransmissionIndicator" => "false",
                "ObjectNodeSenderTechnicalID" => "002",
                "UUID" => "00163e10-f32a-1ed7-ab9f-9f0aecb6d6b5",
                # "AddressUsage" => [
                #   {
                #     "actionCode" => "04",
                #     "ObjectNodeSenderTechnicalID" => "003",
                #     "AddressUsageCode" => "XXDEFAULT",
                #     "DefaultIndicator" => "false"
                #   },
                #   {
                #     "actionCode" => "04",
                #     "ObjectNodeSenderTechnicalID" => "004",
                #     "AddressUsageCode" => "SHIP_TO",
                #     "DefaultIndicator" => "true"
                #   },
                #   {
                #     "actionCode" => "04",
                #     "ObjectNodeSenderTechnicalID" => "005",
                #     "AddressUsageCode" => "BILL_TO",
                #     "DefaultIndicator" => "true"
                #   }
                # ],
                "Address" => {
                  "actionCode" => "04",
                  "telephoneListCompleteTransmissionIndicator" => "true",
                  "CorrespondenceLanguageCode" => "EN",
                  "PreferredCommunicationMediumTypeCode" => "LET",
                  "EmailURI" => "customer01@bydmail.com",
                  "FacsimileFormattedNumberDescription" => "+1 7164824867",
                  "PostalAddress" => {
                    "CountryCode" => "US",
                    "CityName" => "Buffalo",
                    "StreetPostalCode" => "14204",
                    "StreetName" => "Seneca Street"
                  },
                  "Telephone" => [
                    {
                      "ObjectNodeSenderTechnicalID" => "006",
                      "FormattedNumberDescription" => "+1 7164824863",
                      "MobilePhoneNumberIndicator" => "false"
                    },
                    {
                      "ObjectNodeSenderTechnicalID" => "007",
                      "FormattedNumberDescription" => "+12 34567890",
                      "MobilePhoneNumberIndicator" => "true"
                    }
                  ],
                  "WebURI" => "http://www.company.com"
                }
              },
     

    Furthermore, even if this was working, how I am supposed to add the UUID when I create a company? By definition, the company doesn't exist yet, hence there is no address UUID.

    Thank you in advance

    Jonathan

    Add comment
    10|10000 characters needed characters exceeded

  • Oct 20, 2017 at 08:37 AM

    Hi Jonathan,

    If you create a customer, then the address UUID is optional:

    • If you provide the UUID, it will be used to create the address (if unique). This can make sense if you want to create a contact person with a workplace address that refers to the account address.
    • If you don't provide the UUID, then the system creates the address and generates a new address UUID.
    Please think about the action codes that you are using as well:
    • 01 means "create", i.e. the system always creates a new record. If this is not possible (e.g. if the key is not unique), then it returns an error.
    • 02 means "update", i.e. the system checks if the record exists and performs an update. if the record does not exist or if the key is not provided (e.g. the address UUID is missing), then the system returns an error message.
    • 04 means "save", I.e. if a key is provided and the record exists, then the system executes an update, otherwise it creates a new record.
    What error message do you get in your example above?BR, Knut
    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Knut,

      Sorry, but this is not very helpful. I understand how to use the actions codes. My requests work as long as I don't try to add the addressInformation node.

      I thought I described the problem well above but I am going to try to be more specific:

      Whether I try to create (without providing an address UUID) or update (providing an address UUID), my request goes through (ie doesn't return an error) but returns "Only value true is permitted as telephoneListCompleteTransmissionIndicator" within the answer, and the creation or update didn't happen.

      The code above was for an update, for a create, see my code below:

      "AddressInformation" => {
                  "actionCode" => "01",
                  "addressUsageListCompleteTransmissionIndicator" => "true", #false
                  "ObjectNodeSenderTechnicalID" => "02", #C1-AI1
                  "AddressUsage" => {
                    "actionCode" => "01",
                    "ObjectNodeSenderTechnicalID" => "03",
                    "AddressUsageCode" => "XXDEFAULT",
                    "DefaultIndicator" => "false"
                  }, #not necessary?
                  "Address" => {
                    "actionCode" => "01",
                    "telephoneListCompleteTransmissionIndicator" => "true",
                    # "telephoneListCompleteTransmissionIndicatorSpecified" => "true", # I added this field because of: https://archive.sap.com/discussions/message/15258895?tstart=0#15258895
                    # "CorrespondenceLanguageCode" => "EN",
                    # "PreferredCommunicationMediumTypeCode" => "LET",
                    "EmailURI" => params[:operand][:email],
                    # "FacsimileFormattedNumberDescription" => "+1 7164824867",
                    "PostalAddress" => {
                      "CountryCode" => params[:operand][:address][:country_code],
                      "CityName" => params[:operand][:address][:city],
                      "StreetPostalCode" => params[:operand][:address][:postal_code],
                      "StreetName" => params[:operand][:address][:street],
                      "HouseID" => params[:operand][:address][:street_number]
                    },
                    "Telephone" => [
                      {
                        "ObjectNodeSenderTechnicalID" => "04", #C1-AI1-T1
                        "FormattedNumberDescription" => params[:operand][:phone_number],
                        "MobilePhoneNumberIndicator" => "true"
                      },
                      {
                        "ObjectNodeSenderTechnicalID" => "05",
                        "FormattedNumberDescription" => "+1 7164824863",
                        "MobilePhoneNumberIndicator" => "false"
                      }
                    ],
                    "WebURI" => params[:operand][:web_uri]
                  }
                },
      


      This is really a big blocking issue for us, would it be possible to have a faster answer than this?

      Thank you

  • avatar image
    Former Member
    Nov 13, 2017 at 04:41 PM

    Hello Knut,

    Would it be possible to have an answer please?

    I was able to intercept the XML query we do through Savon, here is it below, I don't understand why it's not working:

    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:n3="http://sap.com/xi/SAPGlobal20/Global" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soap:Body>
          <n3:CustomerBundleMaintainRequest_sync_V1>
             <BasicMessageHeader />
             <Customer>
                <CategoryCode>2</CategoryCode>
                <CustomerIndicator>true</CustomerIndicator>
                <Organisation>
                   <FirstLineName>Foo 3110_1836</FirstLineName>
                   <SecondLineName>KOBA</SecondLineName>
                </Organisation>
                <AddressInformation actionCode="01" addressUsageListCompleteTransmissionIndicator="true">
                   <Address actionCode="01" telephoneListCompleteTransmissionIndicatorSpecified="true">
                      <CorrespondenceLanguageCode>FR</CorrespondenceLanguageCode>
                      <EmailURI>jparisot@visibleo.fr</EmailURI>
                      <PostalAddress>
                         <CountryCode>FR</CountryCode>
                         <CityName>Paris</CityName>
                         <StreetPostalCode>75010</StreetPostalCode>
                         <StreetName>rue du vent</StreetName>
                         <HouseID>14</HouseID>
                      </PostalAddress>
                      <Telephone>
                         <FormattedNumberDescription>0606060606</FormattedNumberDescription>
                         <MobilePhoneNumberIndicator>false</MobilePhoneNumberIndicator>
                      </Telephone>
                      <WebURI>http://actiondesk.io/</WebURI>
                   </Address>
                </AddressInformation>
             </Customer>
          </n3:CustomerBundleMaintainRequest_sync_V1>
       </soap:Body>
    </soap:Envelope>
    Add comment
    10|10000 characters needed characters exceeded

    • Hi Jonathan,

      in your request xml the xml attribute "telephoneListCompleteTransmissionIndicatorSpecified" is wrong: The correct attribute name is "telephoneListCompleteTransmissionIndicator".

      "Unknown" xml elements or xml attributes are ignored by the ByD xml parser. As result the ByD system applies the default ListCompleteTransmissionIndicator which is "false". Therefore the error message.

      The log item in the response

      <Log>
        <MaximumLogItemSeverityCode>3</MaximumLogItemSeverityCode>
        <Item>
          <TypeID>001(/MANAGE_CUST_IN_V1/)</TypeID>
          <SeverityCode>3</SeverityCode>
          <Note>Only value true is permitted as telephoneListCompleteTransmissionIndicator</Note>
        </Item>
      </Log><br>

      refers to the severity code 3, which means nothing is saved in ByD.

      Severity codes: 1 = information, 2 = warning (data is still be saved), 3 = error (nothing saved)

      Best regards,
      Knut