Ir al contenido principal

Solución de problemas: vistas CDS de SAP OData V4 faltantes en Package Studio

Utilice esta guía cuando una fuente de extracción CDS de SAP esperada a través del servicio OData V4 CDI_CDS no pueda encontrarse ni seleccionarse en Nexus Package Studio. La configuración en SAP difiere entre S/4HANA Cloud Public Edition y sistemas gestionados por el cliente (Private Edition o local), por lo que primero debe confirmar el producto SAP, edición, release y el tenant/cliente de destino. Si no sabe cuál tiene, consulte a su administrador de SAP; el launchpad de Fiori por sí solo no identifica la edición de SAP.

Esta guía cubre la extracción basada en CDS a través de CDI_CDS. Una vista CDS expuesta como una API externa distinta o a través de otro servicio OData personalizado es una fuente diferente y no aparece automáticamente listada por CDI_CDS.

Comprenda las dos capas de descubrimiento​

Considere el descubrimiento como la revisión de dos listas distintas:

  1. El catálogo de servicios OData es un directorio de los servicios OData V4 publicados. En Public Edition, la disposición SAP_COM_0181 proporciona acceso al catálogo. No concede acceso a los datos CDS.
  2. El directorio de proveedores CDI es la lista de fuentes de extracción CDS disponibles a través de CDI. Enumera proveedores, no necesariamente cada vista como un servicio de catálogo individual.

En Package Studio, Nexus organiza las fuentes OData como grupo de servicios → servicio → versión → conjunto de entidades. Un conjunto de entidades es la colección de registros que Nexus puede añadir a un paquete, y se manipula como una tabla. Para un proveedor CDI, su nombre suele ser Facts; siempre utilice el conjunto de entidades que se muestra realmente en los metadatos del proveedor.

Comience aquí​

Siga estas verificaciones en orden. Deténgase cuando una falle; eso le indica qué administrador de SAP o de Nexus debe contactar.

  1. ¿Cómo se creó la vista? ¿En la aplicación Custom CDS Views de Fiori o en ABAP Development Tools (ADT) como una vista Z* creada por un desarrollador? Inicie con las instrucciones correspondientes en Paso 2.
  2. ¿Está disponible el servicio CDI? Si Package Studio no muestra el grupo de servicios CDI, siga el Paso 1.
  3. ¿SAP lista la vista? Realice la solicitud CDI Providers del Paso 3 con el mismo usuario técnico que utiliza Nexus.
  4. ¿SAP lista la vista pero Package Studio aún no puede añadirla? Verifique el conjunto de entidades y metadatos en Paso 4, luego siga Paso 5.

Tenga esta información lista​

  • El nombre técnico del CDS/extractor exactamente como lo muestra SAP. Un nombre comercial como “Pedidos para reportes” no es suficiente. El nombre del extractor depende del tipo de vista CDS; consulte Paso 3.
  • La edición de SAP y el sistema/tenant exacto que está consultando (desarrollo, pruebas o producción).
  • La identidad técnica de comunicación configurada para Nexus. No necesariamente es su usuario personal de Fiori o SAP Logon.
  • Su versión de Nexus, visible en Configuraciones → Licencia y soporte.

No incluya contraseñas, claves privadas ni archivos de certificados en una solicitud de soporte.

1. Verifique la disponibilidad del catálogo y servicio CDI​

SAP Fiori: Public Edition​

  1. En el launchpad de Fiori, abra Communication Arrangements.
  2. Busque la disposición para SAP_COM_0181. Ábrala y verifique que esté activa, que utilice el sistema de comunicación creado para Nexus, y que muestre un servicio entrante para el catálogo OData V4. Esta disposición permite que Nexus liste los servicios disponibles; no concede permisos para leer una vista CDS.
  3. Busque la disposición separada para SAP_COM_0531. Abra Inbound Services y copie las URL CDI ahí mostradas. Esas son las URL que debe probar; no copie el host del campo Host Name del Communication System, pues este representa el lado de Nexus.
  4. En la disposición SAP_COM_0531, anote el Authorization Group ID. Lo comparará con el grupo y la allowlist en la siguiente sección.
  5. Confirme que la vista y su allowlist se encuentran desplegadas en el mismo tenant de destino que está probando. Una vista visible en un tenant de desarrollo no está disponible automáticamente en el de pruebas o de producción.

Para la configuración completa de Public Edition y allowlist, consulte Conectar a S/4HANA Cloud Public Edition mediante OData V4.

SAP Logon: sistemas gestionados por el cliente​

En sistemas SAP S/4HANA Private Edition o local donde usted administra SAP Gateway:

  1. Inicie sesión en el SAP System y cliente correctos en SAP Logon.
  2. En el campo de comandos, introduzca /n/IWFND/V4_ADMIN y pulse Enter. Se abre la pantalla de administración OData V4 de SAP Gateway.
  3. Seleccione Publish Service Groups y luego Get Service Groups. Busque /IWFND/CONFIG (el servicio de catálogo) y CDI_CDS (el grupo de servicios de extracción CDS). Si alguno no está publicado, siga el procedimiento de su administrador SAP para publicarlo y verifique el alias/rutamiento del sistema. El ejemplo de Gateway de SAP utiliza el alias LOCAL; para un Gateway local, verifique también el ajuste Local GW.
  4. Siga las instrucciones de SAP según su release para determinar si también debe publicarse el grupo CDI. Si SAP informa que el repositorio CDI_CDS no está asignado al grupo CDI_CDS, consulte SAP KBA 3339952 en SAP for Me.

No use /IWFND/V4_ADMIN para administrar tenants de Public Edition. En Public Edition, utilice las disposiciones de comunicación y URL de servicios entrantes mostrados en Fiori. Para pruebas, utilice un cliente HTTP con el usuario de comunicación y el método de autenticación configurado para ese usuario.

Prueba de acceso al catálogo​

Utilice la URL de catálogo suministrada por SAP o por la disposición de comunicación; no suponga un camino de catálogo. Por ejemplo, una URL de catálogo V4 de SAP Gateway tiene este formato:

https://<SAP-API-Host>/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002/ServiceGroups?$expand=DefaultSystem($expand=Services)&$top=5

La versión del catálogo (0002 aquí) varía según el release de SAP. En Public Edition, copie la URL exacta desde Inbound Services de SAP_COM_0181. En sistemas gestionados por el cliente, el grupo de servicios de catálogo /IWFND/CONFIG debe estar publicado para que este endpoint funcione; esto es independiente de publicar CDI_CDS.

En un sistema SAP Gateway gestionado por el cliente, pruebe con /IWFND/GW_CLIENT:

  1. Ingrese la ruta relativa de la solicitud proporcionada por SAP en el campo de solicitud.
  2. Seleccione el método HTTP GET y ejecute la solicitud (habitualmente F8).
  3. Lea el estado HTTP y cuerpo de respuesta. Pruebe primero el catálogo, luego la solicitud CDI Providers y finalmente la URL $metadata copiada de un proveedor.
  4. Repita una prueba HTTP con la identidad de integración de Nexus cuando sea posible. Una llamada exitosa como su propio usuario de SAP GUI no prueba que la identidad técnica de Nexus tenga el mismo acceso.

En Public Edition, normalmente usted no tiene acceso SAP Logon a estas transacciones de Gateway. Use las URL de las disposiciones de comunicación de Fiori en un navegador o cliente HTTP con las credenciales del Communication User.

Si el propio CDI_CDS no está disponible, resuelva el acceso al catálogo o la publicación del grupo de servicios antes de solucionar problemas de la definición CDS específica.

2. Compruebe si SAP expone la vista CDS para extracción​

SAP Fiori: verifique la vista y la autorización​

  1. En View Browser, busque por el nombre técnico de la CDS. Si está disponible, filtre por Data Extraction Enabled Views o la anotación Analytics.dataExtraction.enabled.
  2. Para una vista creada en Custom CDS Views, abra esa aplicación y confirme que su escenario sea Data Extraction, ejecute la comprobación y publique la vista. Una versión en borrador o no publicada no está lista para extracción.
  3. En el entorno de configuración de destino, busque y abra Define Allowlists for CDS View Extraction. Abra el grupo de autorización cuyo ID anotó en la disposición SAP_COM_0531. Verifique que el nombre técnico de la CDS esté listado. Por ejemplo, si la disposición indica el grupo NEXUS_READ, agregar la vista en otro grupo no concede acceso a Nexus.
  4. Compruebe el Authorization Group ID carácter por carácter. Si la configuración se transporta entre tenants, confirme que tanto el grupo como sus entradas llegaron al tenant de destino.

Si SAP muestra Authorization Group must be maintained, consulte SAP KBA 3118974 en SAP for Me. Si falta la actividad de configuración de allowlist en Public Edition, SAP indica que el ítem de alcance inactivo Data Protection and Privacy (5LE) puede ser la causa; consulte SAP KBA 3781796 en SAP for Me.

Vistas CDS Z* creadas por desarrollador​

Para una vista ABAP CDS creada por desarrollador, la anotación de extracción es:

@Analytics.dataExtraction.enabled: true

Revise la definición en ABAP Development Tools (ADT), actívela y verifique que la anotación sea permitida por la versión del lenguaje ABAP del sistema. Esta anotación significa “SAP puede exponer esta vista para extracción de datos”; no publica un servicio OData ni garantiza que Nexus pueda descubrirla.

Advertencia en Public Edition: no suponga que un desarrollador puede añadir esta anotación a cualquier objeto Z* personalizado. Las restricciones de versión de lenguaje ABAP y de API liberadas pueden rechazarla. Para vistas personalizadas por usuario clave, utilice el escenario soportado Custom CDS Views → Data Extraction. SAP documenta errores de liberación de anotaciones para vistas ABAP CDS personalizadas en KBA 3404120 en SAP for Me.

Por ejemplo, un desarrollador puede crear y activar una vista llamada ZC_ORDER_EXTRACT, pero Nexus no la encontrará solamente porque su nombre comienza con Z. La vista debe ser apta para extracción SAP, estar expuesta a través de CDI_CDS y ser accesible para la identidad de integración. En Public Edition, un key user crea la vista de extracción en la aplicación Custom CDS Views; no necesariamente edita la anotación ABAP directamente.

3. Consultar directamente el descubrimiento del proveedor CDI​

Use el endpoint CDI de la disposición o configuración del sistema SAP y autentíquese como la identidad de integración Nexus. Para Public Edition, SAP documenta este patrón de directorio de proveedores:

https://<SAP-API-Host>/sap/opu/odata4/sap/cdi/default/sap/cdi/0001/Providers

Identifique primero el nombre del extractor​

El nombre de la definición CDS, nombre de extractor ODP, URL del proveedor CDI y el conjunto de entidades OData son identificadores distintos. Busque el nombre técnico del extractor asignado por SAP, no sólo la etiqueta comercial:

  • Vista CDS clásica (DEFINE VIEW): el nombre del extractor ODP es el nombre de la vista SQL generada de @AbapCatalog.sqlViewName, más un sufijo de categoría de datos.
  • Entidad de vista CDS (DEFINE VIEW ENTITY): utilice el nombre de la entidad CDS; las entidades de vista no tienen nombre de vista SQL generado.
  • Vista CDS de key user: use el nombre técnico mostrado en la aplicación Custom CDS Views o en View Browser.

Por ejemplo, la vista SQL CMMPURORDHIST con categoría #FACT tiene el nombre de extractor ODP CMMPURORDHIST$F (datos de hechos/transacciones). Otros sufijos de categoría incluyen $P (atributos de datos maestros), $T (texto), $H (jerarquía) y $E (otras categorías de datos). SAP describe estos sufijos en CDS extraction naming guidance.

Para una entidad de vista CDS llamada ZI_OrderItem, SAP usa como nombre de extracción el nombre de la entidad, ya que no existe un nombre de vista SQL generado.

Para un ejemplo provisto por SAP, la ruta CDI ilustra otra capa de nombres:

IdentificadorEjemplo
Nombre de la vista CDS mostrado en la documentación de SAPC_BillingDocItemBasicDEX_1
Segmento de ruta del proveedor devuelto por CDIc_billingdocitembasicdex_1
Conjunto de entidades OData dentro del proveedorFacts

El segmento en minúsculas del proveedor forma parte de la URL del proveedor; Facts es el conjunto de entidades similar a una tabla que usted selecciona en Package Studio. El nombre CDS, el nombre del extractor, la ruta del proveedor y el conjunto de entidades no son intercambiables.

La $ en un sufijo de categoría ODP no guarda relación con rutas de sistema OData como $metadata u opciones de consulta como $expand.

Realice la solicitud Providers​

Utilice la URL Providers según el patrón anterior. En un sistema gestionado por el cliente, puede enviar la solicitud en /IWFND/GW_CLIENT ingresando la ruta después del host, eligiendo GET y pulsando F8. En Public Edition, use la URL completa en Postman o cualquier otro cliente HTTP aprobado:

  1. Cree una solicitud y seleccione GET.
  2. Pegue la URL Providers completa, sustituyendo <SAP-API-Host> por el host de los Inbound Services de SAP_COM_0531.
  3. En Authorization, use el método configurado para el Communication User (por ejemplo, autentificación básica con ese usuario y contraseña, o el certificado cliente asignado).
  4. Seleccione Send. Busque en la respuesta el nombre del extractor identificado previamente. Una respuesta 200 OK indica que la solicitud funcionó; no significa que todas las vistas CDS estén disponibles.

No utilice su contraseña personal de Fiori a menos que sea expresamente la credencial configurada del Communication User, y nunca incluya credenciales ni certificados en una captura de pantalla o solicitud de soporte.

Si la respuesta contiene @odata.nextLink, también solicite esa URL y repita hasta que no existan más páginas. Si el extractor no aparece en ninguna página, SAP no lo ofrece a este usuario mediante CDI; revise la elegibilidad de extracción, activación/publicación, tenant/cliente de destino, grupo de autorización/allowlist, soporte de release y disponibilidad del grupo de servicios. Cuando SAP devuelva el proveedor, utilice su URL exacta en los pasos siguientes. Ante un error ODP/proveedor de SAP, registre el error exacto y timestamp para el administrador SAP; puede tratarse de un problema en el proveedor de extracción, y no necesariamente del catálogo Nexus.

4. Observe los $metadata del proveedor​

Solicite la raíz del servicio y su $metadata usando la URL del proveedor que devuelve SAP. $metadata es el esquema del servicio: indica a Nexus qué conjuntos de entidades y campos existen y qué operaciones ofrece el servicio. Verifique que contenga la versión de servicio, campos, claves y conjunto de entidades esperados. Los proveedores de extracción CDI suelen exponer el conjunto de entidades Facts; use el nombre realmente declarado por el servicio objetivo.

Por ejemplo, si Providers devuelve esta raíz de servicio:

https://<SAP-API-Host>/sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/c_billingdocitembasicdex_1/0001/

añada /$metadata para obtener la URL de metadatos:

https://<SAP-API-Host>/sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/c_billingdocitembasicdex_1/0001/$metadata

La URL de datos de la entidad en este ejemplo es la misma raíz de servicio seguida de /Facts. $metadata devuelve el esquema; no es el proveedor ni el conjunto de datos de la entidad.

Verifique el acceso de lectura en el conjunto de entidades:

  • Org.OData.Capabilities.V1.ReadRestrictions no debe declarar Readable como false; si se omite la restricción o propiedad, OData define por defecto que es legible.

Para que Nexus identifique el conjunto de entidades como compatible con CDC, verifique Org.OData.Capabilities.V1.ChangeTracking con Supported=true. Si falta el seguimiento de cambios o es falso, la entidad aún puede ser elegible para extracción completa, pero Package Studio no la identificará como capaz para CDC.

Ejemplo esquemático de anotaciones relevantes de metadatos. No utilice literalmente el valor Target; use el nombre objetivo que muestre los $metadata del propio servicio:

<Annotations Target=".../Facts">
<Annotation Term="Org.OData.Capabilities.V1.ReadRestrictions">
<Record>
<PropertyValue Property="Readable" Bool="true" />
</Record>
</Annotation>
<Annotation Term="Org.OData.Capabilities.V1.ChangeTracking">
<Record>
<PropertyValue Property="Supported" Bool="true" />
</Record>
</Annotation>
</Annotations>

Los metadatos indican una capacidad; no prueban que una ejecución delta tenga éxito. Para validación en tiempo de ejecución, realice la solicitud/ejecución inicial y confirme que SAP devuelve un @odata.deltaLink. El escenario Data Extraction para key users en la aplicación Custom CDS Views sólo soporta extracción completa; no espere CDC para este tipo de vista.

5. Verifique errores en Package Studio y SAP Gateway​

Si el proveedor aparece en la respuesta Providers de SAP y su recurso $metadata es legible:

  1. Confirme que la conexión Nexus apunte al host SAP y la configuración de OData V4 correctos.
  2. En Package Studio, expanda el grupo de servicios, servicio y versión, y luego seleccione el conjunto de entidades. Busque por el nombre del conjunto de entidades o utilice la ruta completa proveedor/conjunto de entidades devuelta por SAP en lugar de buscar sólo la etiqueta de negocio o el nombre Z*.
  3. Confirme que la versión de Nexus desplegada soporte extracción OData SAP. El soporte de extracción OData se introdujo en Nexus 1.20.425; SAP S/4HANA Cloud Public Edition está soportado a partir de Nexus 1.21.
  4. Si SAP responde con errores, utilice /IWFND/ERROR_LOG y, si es aplicable, /IWBEP/ERROR_LOG en SAP Logon para inspeccionar errores de Gateway/backend. /IWFND/GW_CLIENT puede reproducir solicitudes de metadatos y proveedor. Estos registros son para sistemas gestionados por el cliente; los usuarios de Public Edition deben proporcionar a SAP soporte la URL de la solicitud, timestamp, respuesta, tenant y detalles del communication arrangement.

Si el servicio y los metadatos funcionan con la identidad de integración pero Package Studio aún omite el conjunto de entidades, capture la raíz exacta del servicio, la ruta del conjunto de entidades, la versión de Nexus, y los metadatos de respuesta para soporte de Nexus.

Referencias​