HANA - Cambiar de esquema a Vistas

Hola a todos,

Por favor, me podrían dar una mano para poder cambiar el esquema de mis vistas?, pasa que generé una nueva base y necesito redireccionar esas vistas a este nuevo esquema.

NOTA: (Yo no creé las vistas y no tengo lso archivos iniciales de creación de vistas)

Gracias de antemano.
Saludos
AM

Importante : La siguiente respuesta es generada por nuestro Robot de la comunidad de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No garantizamos que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información.

Si deseas aportar tus ideas para mejorar nuestros sistemas, te esperamos en este debate de la comunidad.


:arrows_counterclockwise: SAP B1 HANA – Cómo cambiar el esquema de vistas existentes sin tener los archivos originales

Hola AM, excelente pregunta y muy común en ambientes SAP B1 sobre HANA, especialmente cuando migras o clonas una base de datos y necesitas que las vistas personalizadas apunten al nuevo esquema (schema) de base.


:dart: Escenario actual

  • Tienes vistas creadas manualmente o por terceros.
  • Estas vistas apuntan a un esquema anterior (por ejemplo, SBODEMOCL).
  • Has creado una nueva base de datos (por ejemplo, SBONEGOCIO) y ahora necesitas que esas vistas apunten al nuevo esquema.
  • No tienes los scripts originales (CREATE VIEW), solo la vista ya creada en el sistema.

:white_check_mark: ¿Qué puedes hacer?

Opción 1: Extraer el código actual de la vista y reemplazar el esquema (recomendado)

En HANA puedes consultar el código fuente de una vista con la siguiente instrucción:

SELECT DEFINITION 
FROM VIEWS 
WHERE SCHEMA_NAME = 'ESQUEMA_ANTERIOR' AND VIEW_NAME = 'NOMBRE_VISTA';

O desde HANA Studio / SAP HANA Database Explorer:

  1. Conéctate a la base de datos anterior (ej. SBODEMOCL).
  2. Busca la vista en el esquema.
  3. Haz clic derecho > Open Definition o Generate CREATE Statement.
  4. Copia el CREATE OR REPLACE VIEW ... AS SELECT ... generado.

:wrench: Luego modifica el script reemplazando:

FROM SBODEMOCL.XXX

Por:

FROM SBONEGOCIO.XXX

Y vuelve a crear la vista en el nuevo esquema:

CREATE OR REPLACE VIEW "SBONEGOCIO"."NOMBRE_VISTA" AS
SELECT ...
FROM "SBONEGOCIO"."TABLA_1" ...

Opción 2: Usar REPLACE VIEW directamente en HANA

Si ya sabes cómo se llama la vista, puedes hacer:

REPLACE VIEW "SBONEGOCIO"."MI_VISTA" AS
SELECT ...
FROM "SBONEGOCIO"."OITM";

:warning: Esta opción requiere tener permisos de DROP/CREATE sobre el esquema destino.


Opción 3: Utilizar la herramienta de exportación/importación de vistas desde HANA Studio

  1. Exporta las vistas desde el esquema original (.hdbview o .sql).
  2. Reemplaza en lote el esquema viejo por el nuevo.
  3. Ejecuta el script sobre el nuevo esquema.

Este proceso es ideal si tienes muchas vistas (más de 10) y quieres evitar hacerlo manualmente.


:hammer_and_wrench: Tips técnicos importantes

  • Las vistas no se trasladan automáticamente al copiar una base de datos, a menos que uses EXPORT SCHEMA y IMPORT completo.
  • Puedes buscar todas las vistas de un esquema con:
SELECT * FROM VIEWS 
WHERE SCHEMA_NAME = 'SBODEMOCL';
  • Si el error es por permisos, asegúrate de tener el rol MODELING y acceso al nuevo esquema.
  • También puedes automatizar el reemplazo con un script que haga regex para modificar múltiples vistas.

:receipt: Resumen Consultoria-SAP

Sí puedes redireccionar tus vistas a otro esquema en SAP B1 sobre HANA, incluso sin los archivos originales. Solo necesitas:

:heavy_check_mark: Extraer el código de la vista actual
:heavy_check_mark: Reemplazar el nombre del esquema anterior por el nuevo
:heavy_check_mark: Ejecutar nuevamente el CREATE OR REPLACE VIEW en el nuevo esquema

Desde Consultoria-SAP.com, varios miembros han hecho este tipo de migraciones. En general, recomendamos mantener un repositorio Git u organizador de vistas para evitar depender de código que no se respalda.

¿Quieres que te prepare un script para migrar todas las vistas de un esquema a otro automáticamente? Puedo ayudarte con eso.

¡Estamos aquí para ayudarte! :hammer_and_wrench::bulb: