Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
SAP HANA es una plataforma de datos en memoria que se puede implementar como un dispositivo
en local, o en la nube. Se trata de una plataforma revolucionaria que mejor se adapta a la realización
de análisis en tiempo real, y en el desarrollo y despliegue de aplicaciones en tiempo real.
¿Cuál es el ingrediente secreto?
El núcleo de la plataforma SAP HANA en tiempo real, se encuentra en la base de datos de SAP HANA.
A diferencia de otros sistemas de gestión de BD del mercado, la BD del software de aplicaciones SAP
HANA procesa plenamente cargas de trabajo analíticas y transaccionales con tecnología SAP in-
memory computing.
Al consolidar las 2 infraestructuras (OLAP y OLTP) en una única base de datos, puede beneficiarse al
obtener costos totales de propiedad (TCO – Total Cost of Ownership) significativamente reducidos,
además de una velocidad asombrosa.
¿Ventajas?
A continuación hablaremos de los principios básicos de la arquitectura SAP HANA y cómo se mejora
la capa del Application Server ABAP en la actualidad para dar la bienvenida a HANA.
Primero de todo, permitirme explicar qué es lo que se pretende conseguir con SAP HANA. Como
desarrolladores de aplicaciones alguna vez, sabrás que en algunos momentos puntuales has tenido
que sacrificar la velocidad frente a la sencillez.
El gráfico muestra las 5 dimensiones de requisitos que típicamente aparecen en las aplicaciones de
negocio.
Los agregados son tratados de antemano, guardados en una tabla de BD y después usados por la
aplicación.
Otro ejemplo es que no puedes desarrollar una aplicación online capaz de analizar una gran
cantidad de información a la vez.
SAP S4/HANA es la abreviación de SAP Business Suite 4 SAP HANA. Se presenta como un cambio tan
revolucionario que hubo de SAP R/2 a SAP R/3.
S/4 pretende ser el referente para una nueva generación de aplicaciones, con una nueva interfaz de
usuario, orientado a SAP Fiori y teniendo en consideración las tendencias actuales, tales como el Big
Data, Internet de las cosas (Internet of Things – IoT) o movilidad.
Se ofrecerá bajo la modalidad on-premise (infraestructura propia), cloud e hibrida. Se podría utilizar
la capacidad Multitenant (característica que consiste en definir más una base de datos en el mismo
sistema), incluida desde la actualización SPS09 de SAP HANA.
EDICIONES DE S/4
(diapositiva 13)
Históricamente, las bases de datos estaban diseñadas para rendir correctamente en ordenadores
con una RAM limitada. Esto tenía un efecto de cuello de botella en las lecturas/escrituras a disco.
Consecuentemente, la arquitectura se diseñaba con un foco principal de optimización en el acceso a
disco minimizando el número de bloques de disco (o páginas) leídas a memoria principal cuando
procesábamos una query. Para más inri, se juntaba el que la CPU tenía un solo núcleo y la conexión
era mucho más lenta.
Actualmente, los procesadores con múltiples CPUs son un estándar, con una altísima comunicación
entre los core habilitando el procesamiento en paralelo.
Estos servidores tienen hasta 64 y 128 cores. Cuánto más alto es este número, la CPU es capaz de
procesar más datos por intervalo de tiempo. Y este hecho hace que el cuello de botella pase de las
operaciones I/O a disco a los datos transferidos entre la caché de CPU y memoria principal.
(diapositiva 20)
En SAP HANA con almacenamiento por columnas, los datos son solo parcialmente bloqueados. Esto
permite el procesamiento en paralelo. Incluso la misma columna puede ser dividida y procesada por
diferentes cores al mismo tiempo.
Para hacer uso del máximo potencial de SAP HANA, deberíamos asegurarnos que nuestro código
haga:
Optimizaciones transparentes:
El consumo de artefactos SAP HANA se ha simplificado. Se puede acceder a SAP HANA vistas de
columnas a través del diccionario ABAP.
Los chequeos estáticos de código y en análisis en tiempo de ejecución se han mejorado. Incluida la
perspectiva ABAP Profiler en ADT en Eclipse.
Los diferentes ajustes al “code-to-data” nos marcan el porcentaje de ganancia de rendimiento que
obtendremos. Pero la complejidad del código resultante aumentará a medida que movamos más
código a BD.
Las optimizaciones transparentes mejorarán el rendimiento de nuestros programas sin
ningún tipo de ajuste. Tan solo deberemos realizar algunos pequeños ajustes.
Utilizando Open SQL y la definición de vistas avanzadas podemos redefinir los modelos de
datos y consumirlos directamente en nuestras aplicaciones ABAP mejorando el performance
pero sin introducir artefactos específicos de BD.
Cada AS ABAP se conecta a un DBMS (Database Management System) que contiene el repositorio
ABAP.
(diapositiva 28)
En Open SQL a menos especifiquemos la cláusula ORDER BY los datos no podremos asegurar que se
recuperen de forma ordenada.
Otro caso sería en el acceso a BD cluster/pooled. Para estos casos deberemos adaptar nuestros
accesos después de la migración.
Para los chequeos estáticos de código tenemos las herramientas tales como Code Inspector o ABAP
Test Cockpit. En definitiva, chequeos que violen las reglas clásicas de rendimiento.
3.3 Normas y Reglas de rendimiento en SAP HANA
(diapositiva 33)
o No recuperar y luego rechazar registros con CHECK o EXIT (en LOOPs por ej)
o Cuantas más columnas recuperes, más penalización de rendimiento por el coste de
desempaquetar y reconstruir filas
(diapositiva 34)
- Una cláusula WHERE con campos no-índices no es ineficiente al ser ejecutado en SAP HANA El
full table scan en BD in-memory es rápido. Sin embargo, para reducir el consumo de memoria y
mejorar el rendimiento del INSERT, muchos de los índices secundarios en BD pueden eliminarse
- Agregaciones y cálculos en BD son eficientes. Sin embargo OJO! Que no es eficiente hacer las
mismas operaciones redundantemente
4. Code-to-Data con SAP HANA como BD secundaria
(diapositiva 35)
Hasta el momento, debíamos utilizar SQL nativo si queríamos utilizar el estándar SQL DML (Data
Manipulation Language – es decir, sentencias para leer o modificar datos en tablas de BDs) o SAP
HANA SQL.
Para versiones < ABAP 7.40 SP05 estas operaciones tan solo pueden hacerse con open SQL.
Se recomienda el usar esta API de conectividad a BDs para realizar las consultas en SQL nativo.
Soporta manejo de errores y no es muy difícil de utilizar, ya que tan sólo cuenta con 3 clases…
* openSAP_a4h1_Week_1_Unit_4_CTDPAR_Video
(diapositiva 40)
Attribute View
Son usadas para definir una entidad cuando la descripción de la entidad está contenida en varias
tablas que requieren ser vinculadas. Una vista atributo puede finalmente contener atributos
simples, atributos calculados y jerarquías. Así mismo, es posible definir filtros, atributos ocultos
para procesos o cálculos internos, atributos clave para vincular con otra tablas o habilitar la
propiedad Drill Down.
Analytic View
Las vistas analíticas son utilizadas para modelar datos que incluyen medidas como por ejemplo
cualquier proceso de ventas, los cuales implican medidas tales como cantidades e importes. La
estructura de datos (data foundation) de una vista analítica puede contener múltiples tablas, pero
sólo una de ellas deberá contener las medidas (equivalente a la tabla de hechos de un modelo de
estrella). Además de las vinculaciones entre tablas, una vista analítica puede incluir la definición
de otra vista analítica, heredando las definiciones de la vista incluida. Las Analytic Views pueden
incluir atributos simples, atributos calculados, atributos privados, medidas simples, medidas
calculadas, medidas restringidas, variables, parámetros de entrada, filtros, atributos ocultos,
atributos clave, drill down, tipos de agregación de las medidas, moneda y unidad de las medidas.
Calculation View
Este tipo de vistas, que quizás tenga un uso menos frecuente, necesarias cuando se requieran
cálculos más complejos que no pueden ser cubiertos por los tipos de vistas anteriores. Las vistas
de cálculo pueden incluir otras vistas de atributos, vistas analíticas, sentencias SQL, diferentes
niveles de agregación de datos, atributos y medidas (en ambos casos simples, calculadas y
privadas/restringidas), column views, contadores, otra jerarquías (además de las que podrían
contener las vistas de atributo), variables y parámetros.
Podríais imaginaros un “database procedure” como una función guardada y ejecutada en BD. El
lenguaje de implementación varía dependiendo del sistema de base de datos instalado.
Realizar los cálculos a nivel de Base de datos puede reducir considerablemente el tiempo de
ejecución. Especialmente cuando los cálculos pueden ser paralelizados.
5. Optimizar ABAP con SAP HANA como BD principal
Open SQL dentro del AS ABAP es el lenguaje de abstracción de la capa de BDs basado en la sintaxi
propia de SQL. El resultado de un query en Open SQL es independiente de la BDs que haya por
debajo.
- Cada “variable host” (excepto los literales) deben ir precedidos de una “@”. Si se lo ponemos a una
variable, todas deben ser declaradas de la misma forma
ADDITION
SUBTRACTION
MULTIPLICATION
ABS tipos de datos I y P con y sin dec
RIGHT OUTER JOIN, exactamente igual que la LEFT OUTER JOIN pero con los roles opuestos.
- SAP introduce una serie de DSL (Domain-specific Languages and Services) llamados CDS para
definir y consumir modelos semánticos de datos.
- Los CDS puede ser utilizado por diversas plataformas SAP.
- Son una parte integral de SAP HANA y pueden usarse en la pila ABAP.
- Los CDS en ABAP comienzan con ABAP 7.4 SP2.
Más cálculos intensivos pueden ser llevados a BDs (paradigma del Code-to-data) a través de
la funcionalidad de vistas extendidas.
Lectura de datos
o Vistas anidadas
o Asociaciones entre vistas
https://www.youtube.com/watch?v=aYRduGG_kL4
(diapositiva 56) Expresiones If-Case en vistas CDS
De la misma forma que en el nuevo Open SQL, ABAP CDS soporta también el uso de expresiones IF-
CASE.
- Debemos utilizar un alias de forma obligatoria para el resultado de cada columna a excepción de
los CASE anidados.
Por ejemplo:
- Expresiones aritméticas usando los operadores “+, -, &” o usando funciones como CEIL() y MOD().
La forma más simple de expresión es un literal.
- Expresiones de strings, incluyendo la concatenación de strings con && o algunas funciones
predefinidas como LPAD() y SUBSTRING().
- Usando expresiones de casting como CAST(), los tipos de datos pueden ser convertidos.
https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a61f29751910149f99f0300dd95cd9/c
ontent.htm?frameset=/en/20/e8341275191014a4cfdcd3c830fc98/frameset.htm¤t_toc=/en/2
e/1ef8b4f4554739959886e55d4c127b/plain.htm&node_id=18&show_children=false
(diapositiva 58) JOINS en vistas CDS
INNER JOIN
LEFT OUTER
RIGHT OUTER
- Las condiciones JOIN pueden ponerse tanto antes como después de la lista de selección
- Utilizar paréntesis para implementar JOINS complejas
- Si implementamos una JOIN no podremos utilizar un SELECT *
Con estas anotaciones podemos especificar información adicional, como por ejemplo, el número de
registros de la vista que deberían cargarse en el buffer, o si la vista es dependiente del mandante o
no.
Podemos definir vistas y fusionar los resultados de una o más queries. Estas declarativas ya estaban
en el estándar SQL.
Para recuperar datos de una vista dependiente de mandante, desde otro mandante, debemos
utilizar la sintaxis: USING CLIENT.
La pregunta básica tras esta introducción a los CDS sería cuándo utilizar Open SQL o CDS…
- Usar Open SQL incluyendo JOINS y cálculos si la query si necesita solo una vez
- Usar vistas CDS en el caso en que la query base sirva en varios puntos de código y pueda ser
aplicada en diferentes proyecciones o cláusulas WHERE
La implementación de los AMDP se consigue gracias a la codificación de los métodos de las clases
ABAP. Tanto si es un método está implementado en ABAP o SQL script se determina en la parte de
implementación de dicho método y no en la de definición.
De todos modos, para crear un método AMDP hay una serie de prerrequisitos que han de cumplirse
en la parte de definición antes de poder utilizarse. Lo vemos a continuación.
- Los métodos AMDP se identifican por la sintaxis BY DATABASE PROCEDURE. La base de datos (por
ejemplo, HDB) y el lenguaje (por ejemplo, SQLSCRIPT) deben ser también especificados.
De forma opcional, un método AMDP puede ser marcado como READ-ONLY.
Por último, en el apartado USING debemos especificar todas las tablas de diccionario ABAP, Vistas u
otros procedimientos que se usarán en el cuerpo del procedure.
- En el cuerpo del código podremos utilizar la totalidad de SQL Script a excepción de la función
CE_COLUMN_TABLE (fx. que da acceso al contenido de las columnas).
- Para añadir líneas de comentarios podemos usar “--“, aunque tb podríamos utilizar “*” si se trata
de la primera línea.
- Errores sintácticos independientes de la BD: parámetros no pasados por valor, tipos de datos
erróneos
- Errores sintácticos de HANA: mapeo del tipo de datos o valores por defecto erróneos
- Errores en SQL Script
Los chequeos de sintaxis en el código depende del sistema gestor de BDs por debajo. Podría darse el
caso que no se hicieran chequeos del código SQL Script… por ejemplo.
- El usuario ABAP (en la imagen, ABAPDEV) ejecutando la aplicación ABAP necesita de las
autorizaciones habituales a nivel de ABAP. Es decir: la autorización para ejecutar y debugar código
- El usuario HANA (HANADEBUG) el cuál puede acceder a la capa gestora de base de datos y
debugarla necesita estos permisos:
Lectura del catálogo de BD de SAP HANA dentro del esquema del sistema ABAP;
Ejecutar y debugar el procedure
Añadir el debugger a las sesiones del usuario SAP<SID>
El usuario SAP<SID> (en la imagen el SAPT85) es el usado por el sistema ABAP para acceder a BDs. Es
él quién inicia la ejecución del procedimiento por lo que es solo este usuario el que puede garantizar
los permisos a HANADEBUG.
Las sentencias SQL para garantizar permisos a nivel de SAP HANA del AMDP_NAME en el sistema
ABAP SAPT85 sería:
https://www.youtube.com/watch?v=5OEuyl_s5ME
7:57’
Con la llegada de NetWeaver 7.40 aparece un nuevo tipo de objeto en el repositorio llamado
“External View” en el Diccionario ABAP.
Una vista externa es un proxy de una vista en SAP HANA para el diccionario ABAP. Esto permite
acceder a la vista SAP HANA via Open SQL y ejecutar chequeos sintácticos de código.
Para crear una vista externa debemos usar los ADT (no soportados por el ABAP Workbench).
(diapositiva 72) Mapping entre tipos de datos de SAP HANA y ABAP Diccionario
(diapositiva 73) Cómo llamar a una vista externa en ABAP
Una vez creada y activada la vista externa podremos recuperar datos de las vistas usando las
expresiones Open SQL típicas.
- Evitar usar una vista externa como tipo de datos para campos de una interfaz de usuario
- Sincronizar la vista externa después de realizar cambios en la vista HANA
- Problemas de trazabilidad. SAP HANA Studio no te dirá cuáles Vistas externas derivan de una vista
HANA particular
Para crear un SAP HANA Transport Container debemos utilizar los ADT.
https://www.youtube.com/watch?v=MjYOGYCZAaQ
8’
Leer la diapositiva…
7.3 Llamar a SAP HANA procedures via ABAP Database Procedure Proxies
Los Database Procedure proxies son un nuevo tipo de datos en el diccionario ABAP introducidos en
ABAP 7.40. Representa, dentro de un sistema ABAP, un procedure que existe fuera y de forma
independiente al sistema ABAP.
Leer la diapositiva…
8. Temas avanzados
8.1 SAP HANA
SCORE() denota el grado de tolerancia permitida. Si omitimos el valor por defecto es un 0.8.
Los resultados son mostrados en el orden en que son recuperados de BDs, y no en el orden del
ranking que mejor se adapta.
Debemos especificar el lenguaje del registro (2 character ISO). Para convertir un código de lenguaje
a ISO Code utilizaremos la función CONVERT_SAP_LANG_TO_ISO_LANG.
8.2 ABAP List Viewer (ALV) con acceso integrado a SAP HANA
Week 1
* openSAP_a4h1_Week_1_Unit_3_AWYNTK_Video
* openSAP_a4h1_Week_1_Unit_4_CTDPAR_Video
* openSAP_a4h1_Week_1_Unit_5_YODVTO_Video
[2:41] eclipse
Week 2
* openSAP_a4h1_Week_2_Unit_1_EXCSTV_Video
* openSAP_a4h1_Week_2_Unit_2_ECOWAP_Video
* openSAP_a4h1_Week_2_Unit_3_SQLFIYPS_Video
* openSAP_a4h1_Week_2_Unit_4_GUPAAN_Video
* openSAP_a4h1_Week_2_Unit_5_QWOAOI_Video
* openSAP_a4h1_Week_3_Unit_1_ROSEP1_Video
* openSAP_a4h1_Week_3_Unit_2_ROSEP2_Video
http://scn.sap.com/community/abap/blog/2013/07/22/abap-news-for-release-740
Foro de clientes, partners y grupo de expertos para el soporte en las implementaciones de SAP HANA y
nuevas iniciativas.
https://www.sap.com/cmp/oth/crm-xu15-int-focusdm/index.html
http://scn.sap.com/community/abap/hana