✒️ABAP HANA / Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA Por Lucero Tapia Cruz

Selector Alummnos / Empresas

Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA

Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA

Recomendaciones generales:

Detalles a considerar en la migración y optimización de programas ABAP

- Almacenamiento por columnas VS almacenamiento por filas: cuando creamos una tabla de BD por default se crea con almacenamiento por columnas, pero se puede elegir cualquiera de los 2 tipos de almacenamiento. Se pueden analizar grandes conjuntos de datos con el almacenamiento por columnas, SAP recomienda que se configuren todas las BD con el almacenamiento columnar

Las tablas que contienen datos de aplicación se almacenan por columnas, también se debe aplicar a las tablas que se utilizan para búsquedas de texto.

Motivos para utilizar almacenamiento por fila(tablas pequeñas o volátiles) si se accede a una tabla predominantemente mediante declaración DML, update insert o delete. Las tablas técnicas de SAP son elegibles a almacenamiento por filas: ejemplo tablas para procesamiento de actualización correspondientes al paquete STSK. A estas tablas se accede con SELECT SINGLE.

* Para configurar en la se11 el tipo de almacenamiento de una tabla seleccionar el botón "Opciones Técnicas", pestaña "Propiedades especificas de la BD"

- Implementación específica de SAP HANA

1.- Implementaciones independientes de la BD: utilizando Open SQL y ABAP CDS

2.- Implementaciones que utilizan funciones específicas de SAP HANA: SQL nativo y HANA CDS.

Pautas para implementación específica

- Primero Open y luego Native: Preferiblemente debemos utilizar vistas de OPEN SQL y CDS antes de implementar SQL Nativo, vistas de SAP HANA o procedimientos de BD. El servidor de aplicación ABAP no necesita usuario adicional para la BD se SAP HANA.

- Primero ABAP CDS y luego HANA CDS: Debemos utilizar los procedimientos de la BD ABAP en lugar de los de la BD SAP HANA. Se pueden sincronizar fácilmente los procedimientos de BD ABAP con otros objetos ABAP y transportarlos.

RECOMENDACIONES PARA LA MIGRACIÓN

- Código ABAP dependiente de la BD: Debemos ajustarlo para la BD SAP HANA si es necesario. Es el caso de la utilización SQL nativo a través de la declaración EXEC SQL o los HINTS ORACLE de BD

- Conversión tablas de pool y cluster: Al convertir estas tablas en transparentes se pierde el ordenamiento, por lo que debe analizarse su acceso con respecto al ordenamiento en la migración.

* El code inspector proporciona la verificación Find select for pool/cluster Tab without ORDER BY para encontrar rápidamente estos puntos críticos.

- Comportamiento del ordenamiento: Sino especificamos ORDER BY la secuencia en la que se leen los registros de la tabla BD es impredecible. Con SAP HANA el ordenamiento implicito no está garantizado ya que no es una característica documentada de Open SQL. Por lo que se debe utilizar la adición ORDER BY. La opción BINARY SEARCH requiere de la tabla interna ordenada

Recomendaciones de performance: Velocidad de ejecución de los programas. Una compresión sólida de las pautas y técnicas para lograr un rendimiento óptimo Reglas de oro para la programación de BD:

1.- Mantener el conjunto de resultados lo más pequeño posible: El número de filas seleccionadas debe ser reducido al leer datos de la BD, para lo cual se deben utilizar varias medida:

- Cláusula WHERE: Debemos leer los registros realmente necesarios

- Cláusula HAVING: Otra opción para reducir filas seleccionadas. Se usa junto con la cláusula GROUP BY para seleccionar solo ciertos grupos haciendo restricciones a las filas agrupadas.

- Transferir sólo filas requeridas. Transferir sólo los registros necesarios, ya que no se deben eliminar del servidor de aplicaciones los datos que no se ocupan( no se debería ocupar un DELETE WHERE después del SELECT ). La sentencia CHECK o el filtrado IF-ENDIF también pueden indicar la transferencia de demasiadas filas.

*REGLA 1 para SAP HANA Menor esfuerzo de E/S, un consumo de memoria optimizado en el caché, un menor consumo de CPU y una transferencia de red optimizada para que se transfieran menos datos.

2.- Mantener el conjunto de datos transferido lo más pequeño posible. Transferir la menor cantidad de datos posible entre la base y el servidor de aplicaciones. La carga de red se puede reducir transfiriendo menos bloques.

- Usar adición UP TO n ROWS: Usar si sólo se necesitan un cierto número de filas.

- DISTINCT: Se usa para eliminar las entradas duplicadas que ya se encuentran en la BD.

- Reducir número de columnas: Seleccionar solo as columnas de una tabla de BD que sean necesarias. La selección mediante SELECT * solo se deben realizar si todas las columnas son realmente necesarias.

- Funciones de agregación: Es mejor realizar cálculos en la base de datos y transferir os resultados, en lugar de transferir los datos y realizar el cálculo en el programa. (COUNT, MIN valor mínimo, MAX valor máximo, SUM suma de los valores, AVG valor promedio). SELECT SUM( seatsocc ) FROM sflight...

- Realizar chequeos de existencia eficientemente: Para determinar si hay un registro de datos para una clave específia, no debemos usar SELECT COUNT(*) porque el número es irrelevante en este caso. El conjunto de resultados se debe restringir a una fila con UP TO n ROWS.

- Modificar sólo las columnas necesarias: Para realizar cambios con la instrucción UPDATE, solo las columnas deseadas deben cambiarse con la instrucción SET.

* Regla 2 para SAP HANA

Si los registros de datos se almacenan en el almacenamiento orientado a columnas, cada columna es una estructura de almacenamiento separada.

3.- Reducir el número de ejecuciones de consulta:

Cada declaración SQL en un programa ABAP que se envía a la BD implica un cierto grado de esfuerzo en la BD. Para reducir la carga en la BD se debe mantener e número de accesos lo más bajo posible mediante las siguientes medidas:

- Usando operaciones de conjunto en lugar de operaciones individuales: al leer con SELECT se debe usar la adición INTO TABLE en lugar de SELECT... ENDSELECT, si todos los datos caben en la memoria principal.

SELECT...ENDSELECT es útil si la memoria es insuficiente para todos los datos o si solo se accede a los datos leídos una vez.

Para insertar datos en una tabla no se debe hacer registro por registro, sino insertar el conjunto de registros en una sola operación: INSERT sbook from table lt_sbook.

- No realizar más acceso múltiples: Evitar usar un SELECT ante de un DELETE para el mismo registro de datos. Realizar una operación DELETE sin una instrucción SELECT precedente.

- No usar bucles con SELECT anidados.Para usar conjuntos de datos se recomienda usar:

Joins o uniones, Vistas, FOR ALL ENTRIES.

No usar: SELECT... SELECT.... ENDSELECT. ENDSELECT.

Usar: SELECT.. INNER JOIN.

- No ejecutar instrucciones SELECT en el LOOP a través de tablas internas: La adición FOR ALL ENTRIES es útil para reducir el número de ejecuciones. Pero debemos asegurarnos que la tabla interna nunca este vacía y no contenga duplicados.

- Utilizando buffers. Contribuyen a minimizar el número de declaraciones SQL que se envían a la BD

* Regla 3 para SAP HANA

Consumo reducido de CPU para la BD, los recursos de red también se utilizan de una mejor manera porque se puede optimizar la cantidad de bloques enviados.

4.- Minimizar el esfuerzo de búsqueda. Se puede minimizar el esfuerzo de la BD con un índice

- Índices de BD en BD clásicas: Consta de campos seleccionados de la BD que se copian en una secuencia ordenada en una estructura separada. Existen primarios y secundarios.

Primario: Contiene los campos de clave principal, el índice es único y sólo puede haber un registro para cualquier combinación. Estos se crean automáticamente en los sistemas cuando se crea una tabla

Secundarios: Pueden ser únicos o no. Se crean en el DDIC. Se usan para optimizar el rendimiento, por ejemplo, solo los valores únicos pueden estar en una columna que no forma parte de la clave principal.

* La formulación correcta de las cláusulas WHERE o HAVING y una definición de índice secundario adecuada puede minimizar el esfuerzo de búsqueda.

RECOMENDACIONES PARA CREAR ÍNDICES:

- Crear para tablas de BD donde los accesos de lectura son más críticos. en el tiempo de accesos de escritura.

- El número de índices y campos creados en el índice debe mantenerse lo más pequeño posible. De o contrario se requiere más esfuerzo para cambiar el accesos a la BD.

- Los campos en los que se crean los índices solo deben estar en un índice si es posible.

- Los campos en un índice secundario deben ser campos a través de los cuales selecciona a menudo. Los campos deben ser selectivos; el porcentaje de registros de datos seleccionados por el índice debe ser pequeño

- Los campos que tienen mayor probabilidades de ser consultados con el operador = deben estar al principio del índice.

* En el WHERE se debe usar EQ, IN, siempre que sea posible. Evitar en el WHERE las condiciones NE; incluir la sección inicial del índice en la condición WHERE.

Indices de la base de datos SAP HANA: Con SAP HANA, distinguimos entre índices invertidos y compuestos.

Los índices compuestos tienen un requisito de memoria más alto, por lo que se recomienda trabajar lo más posible con los índices invertidos. Se debe crear un índice en cada caso para la columna que tenga la condición más selectiva. Los indices compuestos deben crearse en casos excepcionales.

El mantenimiento de los índices también aumenta los costos de acceso de escritura en SAP HANA, pero son menores en los índices invertidos

Al migrar un sistema existente a SAP HANA ya no se crean todos los índices secundarios existentes para las tablas configuradas con almacenamiento por columnas.

* Regla 4 para SAP HANA:

Optimiza el consumo de memoria en el caché, reduce el consumo de cpu y optimiza la transferencia de red porque se transfieren menos datos para la BD clásica

En SAP HANA su cumplimiento tiene una prioridad más baja porque en muchos casos no se requiere ningún índice. El consumo de CPU se reduce por el índice y generalmente se crean para la columnas individuales. Los índices que abarcan varias columnas son la excepción.

5.- Reducir la carga en la BD.

Mantener la carga de operaciones repetidas en la BD lo más pequeña posible.

Medidas que contribuyen a reducir la carga en la BD

- Buffers :

están disponibles los siguientes buffers cross usuario en el servidor de aplicaciones.

  • Objetos compartidos
  • Buffer compartido
  • Memoria compartida
  • Buffer de tabla

Los buffer específicos de usuario también están disponibles dentro de una sesión de usuario:

  • Memoria SAP
  • Memoria ABAP
  • Programación específica del buffering en tablas internas

El acceso al buffer en el servidor de aplicaciones es aún más rápido (10 veces ) que acceder a la BD.

- Ordenando: Si el ordenamiento es parte del cálculo o se puede realizar de manera no muy costosa en la BD, también debe realizarse en la BD

- Evitar accesos idénticos: Reduce el número de accesos a la BD y evita cargas innecesarias en la BD.

* Regla 5

Los buffers en el servidor de aplicaciones siguen estando justificados porque ofrecen tiempos de acceso más rápidos y pueden aliviar la BD de accesos innecesarios. Si un resultado debe consultarse varias veces, debe almacenarse en un buffer


 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Lucero Miriam Tapia Cruz, en su ámbito de estudios para el Master ABAP for HANA.

SAP SemiSenior

Lucero Miriam Tapia Cruz

Profesión: Abap Sr. Ceritificado / Abap Crm - Mexico - Legajo: FD25L

✒️Autor de: 13 Publicaciones Académicas

🎓Egresado del módulo:

Disponibilidad Laboral: FullTime

Presentación:

disponibilidad laboral fulltime

Certificación Académica de Lucero Tapia

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA" de la mano de nuestros alumnos.

SAP Master


Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA. Recomendaciones generales para desarrollo ABAP en SAP HANA Se enfatizó la importancia de considerar recomendaciones generales, migración y optimización de programas. Es fundamental comprender las diferencias y cambios respecto a bases de datos tradicionales, especialmente en el contexto de grandes volúmenes de datos y acceso en tiempo real. SAP recomienda siempre usar almacenamiento por columnas salvo razones específicas; esto mejora la eficiencia y compresión de datos. Se presentaron las diferencias entre implementaciones independientes de base de datos (Open SQL, ABAP CDS) y funciones...

Acceder a esta publicación

Creado y Compartido por: Juan Ignacio Romero

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



La búsqueda de textos y el análisis de datos no estructurados en SAP HANA permiten extraer valor de grandes volúmenes de información heterogénea, como documentos, correos, registros sociales o descripciones. Estas capacidades utilizan algoritmos lingüísticos, búsqueda semántica y funciones de minería de texto para identificar patrones, clasificar información y generar conocimiento útil para la toma de decisiones. En este contexto, la programación ABAP HANA avanzada integra técnicas optimizadas que aprovechan la potencia de la base de datos in-memory. Esto incluye el uso de CDS Views, AMDP y procedimientos SQLScript para ejecutar lógica de negocio...

Acceder a esta publicación

Creado y Compartido por: David Ibarra / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

“FIND SELECT FOR POOL/CLUSTER TAB WITHOUT ORDER BY” Este mensaje significa que en tu código estás haciendo un: SELECT ... FROM [tabla pool o cluster] INTO ... ...sin usar una cláusula ORDER BY, y eso es potencialmente problemático. Pero más allá del ORDER BY, también está el tema de las tablas pool/cluster. ¿Qué son las tablas pool/cluster? Son un tipo antiguo de tablas en SAP: TipoCaracterística Pooled Tables Varias tablas lógicas almacenadas en una única tabla física. Cluster Tables Datos comprimidos de varias tablas almacenados juntos....

Acceder a esta publicación

Creado y Compartido por: Exequiel Eduardo Acevedo / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Tips Practicos importantes al desarrollar aplicaciones ABAP en SAP HANA Pautas de performance: la velocidad de ejecucion de los programas, naturalmente, desempeña un papael crucial en el contexto de SAP HANA Muchos escenarios de uso implican el acceso a grandes conjuntos de datos en tiempo real. Una comprension solida de las pauutas y tecnicas para lograr un rendimiento optimo es escencial. El Almacenamiento por columnas vs Almacenamiento por filas Cuando se crea una tabla BD poder elegir crearla con almacenamiento por columnas (columnar) o por filas. Por defecto la tabla se creará con almacenamiento por columnas (Storage Type: poder elegir entre almacenamiento por columnas, filas o indefinido, por defecto se almacena por columnas)....

Acceder a esta publicación

Creado y Compartido por: Jeferson Jos Pena Curvelo / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA 1. Almacenamiento por columnas vs Almacenamiento por filas Al crear una tabla se puede elegir crearla con almacenamiento por columnas (columnar) o por filas. Por defecto se creará por columnas Se recomienda configurar por columnas, a menos que haya una razón específica para hacerlo por filas El almacenamiento por columnas proporciona mejores propiedades de compresión, lo que aplica muy bien para tablas con gran cantidad de registros 2. Implementaciones específicas de SAP HANA En el desarrollo de ABAP en SAP HANA se tienen dos escenarios: Implementaciones independientes de la base de datos: Por ejemplo utilizando Open...

Acceder a esta publicación

Creado y Compartido por: Sergio Diaz

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

Tips prácticos importantes al desarrollar aplicaciones ABAP. Comprensión solida de las pautas y técnicas para lograr un rendimiento óptimo es esencial Recomendaciones generales: Detalles para las migraciones y optimización de los programas ABAP Creación de tablas recomendando el almacenamiento por columnas.(Podrémos analizar grandes conjuntos de datos de forma eficiente y estos así podrán ser utilizados en escenario de análisis, también tendrán más propiedades de compresión, aplica a tablas que se utilizan para búsqueda de texto) Hints de la bbdd tienen el objetivo de forzar la ejecución de un indice y dividir la carga...

Acceder a esta publicación

Creado y Compartido por: Susana Mora

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior


En cuanto a la optimización de rendimiento, hay que familiarizarse con lo que ya trae SAP, estudiarlo y ver si es viable su uso. Hay veces que en funciones estándar te ves falta de optimización, puede ser que sea código que lleva ahí desde vete tú a saber cuando. Por ejemplo, para mostrar el nombre del mes de una fecha determinada en el idioma seleccionado, es tan sencillo como acceder a la tabla T247 que tiene todos los nombres de los meses en todos los idiomas y simplemente hacer un SELECT. Con cuatro líneas lo resuelves: SELECT SINGLE ltx FROM t247 INTO (vl_mes) WHERE spras = sy-langu AND mnr = v_fecha+4(2). IF sy-subrc NE 0. vl_mes = 'XXXXXXXXXX'. ENDIF. Si lo haces mediante la funcion,...

Acceder a esta publicación

Creado y Compartido por: Fernando Morales Del Rosario / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Reglas de oro para la programación de bases de datos Existe un conjunto de 5 reglas cuyo objetivo es optimizar la programación de las bases de datos: 1. Mantener el conjunto de resultados lo más pequeño posible Podemos minimizar el número de filas seleccionadas utilizando varias medidas: Utilizando una cláusula WHERE Debemos leer solo los registros de datos que realmente necesitamos. Podemos no utilizar el WHERE solo si s requieren todos los registros para cada acceso. No utilizar WHERE es problemático para las tablas de base de datos que aumentan con el tiempo porque los volúmenes crecientes de datos se transfieren con el tiempo. Trabajando con la cláusula HAVING Se...

Acceder a esta publicación

Creado y Compartido por: Ricardo Daniel Tovar Barrera

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

Recomendaciones para desarrollar aplicaciones ABAP en SAP HANA ................................................................................................................................................................................................. Recomendaciones Generales para realizar la migración y el desarrollo en SAP HANA. Almacenamiento por columnas vs almacenamiento por filas: Las tablas de base de datos se crearán por defecto con almacenamiento por columnas (es más eficiente para analizar grandes volumentes de datos), aunque se podrá elegir que sea por fila, por columna o indefinido. Implementaciones específicas de SAP HANA: Se siguen dos esceneario: Implementaciones independientes...

Acceder a esta publicación

Creado y Compartido por: Johanna Thaina Rangel Lucero / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

Unidad 2: Lección 5 Recomendaciones para desarrollar aplicaciones ABAP en SAP HANA Recomendaciones generales Pautas de Performance Recomendaciones generales 1. Almacenamiento por columnas vs almacenamiento por filas 2. Implementaciones específicas de SAP HANA En el desarrollo de ABAP en SAP HANA, debemos distinguir dos escenarios Implementaciones independientes de la base de datos: por ejemplo Open SQL y ABAP CDS Implementaciones que utilizan funciones específicas de SAP NADA: por ejemplo SQL nativo y AHAN CDS -- Primero Open y luego Native --Primero ABAP CDS y luego HANA CDS 3. Recomendaciones para la migración Una regla básica es que las aplicaciones ABAP son totalmente compatibles...

Acceder a esta publicación

Creado y Compartido por: Alejandra Soto Guerrero

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 99.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

🔎Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!