Skip to content

GetTypeInfo returns HTTP 406 for data elements — no way to read a DTEL (Accept header, cf. #9) #153

Description

@gorynychzmey

Summary

GetTypeInfo targets the correct ADT endpoint for a data element, but the request is rejected with HTTP 406 (ExceptionResourceNotAcceptable). Combined with GetSource not supporting DTEL at all, there is currently no tool-based way to read a data element.

This looks like the same class of bug as the closed #9 ("Transport API returns 406 - Wrong Accept header for CTS endpoints"), just on a different endpoint family.

Environment

Reproduction

GetTypeInfo { "type_name": "SAEOBJECT" }

Result:

Failed to get type info: getting type info: ADT API error: status 406
at /sap/bc/adt/ddic/dataelements/SAEOBJECT:
<exc:exception xmlns:exc="http://www.sap.com/abapxml/types/communicationframework">
  <namespace id="com.sap.adt"/>
  <type id="ExceptionResourceNotAcceptable"/>
  <message lang="EN">The message content is not acceptable</message>
  <properties>
    <entry key="T100KEY-ID">SADT_RESOURCE</entry>
    <entry key="T100KEY-NO">037</entry>
  </properties>
</exc:exception>

SAEOBJECT is a standard SAP data element and definitely exists.

Why this looks like a client-side bug

The URL /sap/bc/adt/ddic/dataelements/SAEOBJECT is correct and the object exists. SAP answers ExceptionResourceNotAcceptable (SADT_RESOURCE/037) — that is content negotiation failing, i.e. the Accept header sent does not match what the endpoint offers. This is exactly the failure mode diagnosed and fixed in #9 for the CTS endpoints.

GetFunctionGroup fails the same way on namespaced groups (filed separately).

Expected

Return the data element definition — data type, length, decimals, domain and description.

Verification that the data is reachable

The same information is available through RunQuery without any problem, which confirms it is an ADT-request issue rather than missing authorization or a missing object:

SELECT a~rollname, a~domname, a~datatype, a~leng, a~decimals, b~ddtext
  FROM dd04l AS a INNER JOIN dd04t AS b
    ON b~rollname = a~rollname AND b~ddlanguage = 'D'
 WHERE a~rollname = 'SAEOBJECT'

CHAR, length 10, domain SADC10, "SAP ArchiveLink: Objekttyp".

Additional note

GetSource rejects DTEL outright:

GetSource failed: unsupported object type: DTEL
(supported: PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, VIEW, BDEF, SRVD, SRVB, MSAG)

So neither tool can currently read a data element. Supporting DTEL in GetSource would be a reasonable alternative fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions