Está en la página 1de 31

1.

Introducción

1.1. ¿Qué es SAP HANA? (diapositiva 6)

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?

- Acelerar los principales procesos empresariales y aplicaciones personalizadas


- Eliminar la necesidad de crear estructuras de ajuste tradicionales, tales como InfoCubos
- Generar informes a partir de datos transaccionales en tiempo real y sin demoras por la réplica
de datos

1.2. Migrar la SAP Business Suite a HANA (diapositiva 7)

Comentar brevemente la evolución…

1.3. Principios básicos SAP HANA y conceptos técnicos (diapositiva 8)

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.

Deep: Complejidad e interactividad


Broad: Big data, muchos tipos de datos
Real-time: Datos actuales
High-speed: Tiempo de respuesta rápido, interactividad
Simple: No preparación de datos, no pre-agregación de los mismos
Con una base de datos tradicional, por ejemplo, debías tomar la decisión entre proporcionar una
alta velocidad de programa y desarrollar una aplicación que no requiera preparar los datos de una
forma especial antes… (Ej: reporte financiero en PUIG con carga en batch de la info).

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.

1.4. S4/HANA (diapositivas 9-10-11)

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

 SAP S/4HANA, on-premise edition


Es de similares funcionalidades, idiomas, industrias que la actual Business Suite, además
también incluye la simplificación que conlleva SAP Simple Finance.

 SAP S/4HANA, public cloud edition


Dirigido a específicos escenarios de líneas de negocio e industrias., se prevé al menos 10
escenarios básicos.

 SAP S/4HANA, managed cloud edition


Tendría un alcance similar a la edición on-Premise. La primera liberación ofrecería los
escenarios básicos de un ERP (contabilidad, controlling, gestión de materiales, planificación
y control de la producción, ventas y distribución, logística, mantenimiento, proyectos y
PLM).
2. Evolución y arquitectura

2.1. Objetivos SAP HANA (diapositiva 12)

- Enable new applications and Optimize the existing ones


SAP HANA es una plataforma de datos en memoria que es capaz de hacer el deploy en la
aplicación o en Cloud y hacer uso de la eficiencia del motor hardware para reducir el coste de
nuestras aplicaciones.

- High performance and scalability


SAP HANA diseñado para hacer un uso de los microprocesadores multi-core CPUs mediante la
ejecución en paralelo. Puede ser distribuido por múltiples servidores para asegurar la buena
escalabilidad en términos de volumen de datos y peticiones concurrentes.

- Hybrid data management system


La arquitectura SAP HANA integra distintos tipos de almacenamiento (basado en columnas,
filas).

- Compatibility and standard DBMS features


Un objetivo importante es el de conseguir reemplazar a cualquier otra BD relacional con SAP
HANA. El sistema gestor de BD de SAP HANA es una full BD relacional con interfaz SQL,
propiedades ACID (transactional isolation y recovery) y alta demanda. Por otro lado las
aplicaciones que usan Open SQL, siguen funcionando

- Support for Text analysis, Indexing and Search


Novedades como “free style search” (búsquedas sin saber el nombre de los atributos en BD),
búsqueda lingüística o “fuzzy search”.

- Cloud support and Application Isolation

- Support for Temporal tables


La actualización de tablas temporales no modifica los datos existentes sino que añadirá nuevas
versiones de los datos insertados.

- Executing application logic inside the Data layer


Con tal de beneficiarse de las capacidades de paralelismo y optimización de SAP HANA las
aplicaciones deben ejecutar las operaciones más intensas en la capa de BD.
2.2. Innovaciones en hardware & software (diapositivas 13-21)

(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.

Datos técnicos: la memoria principal ya no es un recurso limitado, ya que servidores modernos


pueden tener hasta 2TB y esto permite tener BDs enteras en memoria RAM.

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 14) 2 retos:

- Evitar CPU caché misses optimizando la carga de datos a CPU


- Evitar idling CPU cores (“cuando la máquina llega a su mínima velocidad”) haciendo uso del
paralelismo usando todos los cores de una CPU, o múltiples CPUs

(diapositiva 15) Almacenaje por filas

(diapositiva 16) Almacenaje por columnas

(diapositiva 17) ¿Cuándo utilizar almacenaje por columnas?

- Los cálculos serán ejecutados sobre una o pequeños grupos de columnas


- Gran número de filas que serán procesadas constantemente a nivel de columnas
- Las columnas tienen poca variedad de valores y se logrará un alto nivel de compresión
- Búsquedas a nivel de los valores de algunas columnas

(diapositiva 18) ¿Cuándo utilizar almacenaje por filas?

- Se necesita procesar un registro a la vez


- Las columnas tienen una amplia variedad de datos y los niveles de compresión bajos
- No se requiere agregaciones ni búsquedas rápidas
- La tabla tendrá un número reducido de filas (tablas de Customizing x ejemplo)
(diapositiva 19) Compresión a nivel de columnas

SAP HANA utiliza un diccionario por columnas:


- Opera directamente sobre los datos comprimidos (usando enteros)
- Cuanto más tenga en caché, menos acceso a 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.

(diapositiva 21) Classical approach vs Code pushdown

Para hacer uso del máximo potencial de SAP HANA, deberíamos asegurarnos que nuestro código
haga:

- Mover los cálculos más fuertes a nivel de base de datos


- Transferir solamente los resultados

Mostrar vídeo openSAP_a4h1_Week_1_Unit_4_CTDPAR_Video

(diapositiva 22) ABAP Development Guidelines

Optimizaciones transparentes:

- El algoritmo de implementación interna del FOR ALL ENTRIES ha mejorado.


- Las sentencias ABAP y OpenSQL se han extendido.
Ej: OpenSQL soporta Joins y sub-queries e incluso podemos integrar SQL Script en código ABAP

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 ALV se han extendido y optimizado para SAP HANA.

Mostrar Week3 PDF


Ver vídeos Week 3
MOSTRAR CD 261

(diapositiva 23) Mejora del rendimiento vs ajustes en el código

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.

 Usando las características nativas de BD HANA incrementaremos la complejidad


3. De ABAP a SAP HANA
3.1 SAP HANA como BD secundaria

(diapositiva 25-26) Aceleradores SAP HANA

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.

(diapositiva 31) Consideraciones pre-migración a SAP HANA

Enseñar algunas de las ABAP Development Tools: ATC – SQLM - etc.

3.2 Análisis de rendimiento

(diapositiva 32) Análisis de rendimiento

Los primeros 2 pasos pueden realizarse con diversas herramientas:

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)

- Keep the result set small


Reduce la cantidad de memoria usada en el sistema de BD y reduce también la cargabilidad
durante la transferencia de datos al AS.

WHERE y HAVING cláusulas.

- Minimize the amount of data transferred


Utilizar SELECT <lista de campos> en vez de SELECT * y transferor solamente aquellas columnas
que necesitaremos

- Minimize the number of database accesses


En todos los sistemas de BD existe una pequeña sobrecarga de rendimiento para cada petición
(request) de conexión, parseo SQL, ejecución del plan de determinación, etc. Evitarlo es muy
importante en SAP HANA.
Para ello, utilizar JOINs y sub-queries en vez de LOOPs anidados.

- Minimize the Search Overhead


Minimizar el tamaño del resultado con WHERE y HAVING. Podemos aumentar esta eficiencia
para que vayan a la par de los índices de BD.

- Reduce the Database Load


Evitar leer datos de forma redundant. Usar “table buffering” en casos en los que sea posible.

- Obtener un conjunto de datos pequeño y reducir la cantidad de datos transferidos

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

- Reducir el número de accesos a BDs

o Utilizar procesamiento masivo siempre que podamos


o No utilizar SELECTs en LOOPs, SELECT… FOR ALL ENTRIES en vez de SELECT o SELECT
SINGLES.
o INSERT, UPDATE, MODIFY y DELETE

(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

4.1 Limitaciones del openSQL clásico

(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.

4.2 ADBC – ABAP DAtabase Connectivity

(diapositiva 36) Características básicas de ADBC

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…

(diapositiva 37) Secuencia de lectura

La secuencia lógica de una llamada a un ADBC se muestra en estos 7 pasos.

(diapositiva 38) Consideraciones a tener en cuenta

Usando SQL nativo, debemos ser conscientes de las siguientes dificultades:

- El código nativo SQL no es chequeado por el compilador ABAP. No olvidarse de manejar la


excepción CX_SQL_EXCEPTION

- Sentencias SQL nativo evitan el Interface de BD ABAP. Como consecuencia:


o El buffer the tabla ABAP no se pasa. Esto puede hacer que algunas consultas SQL
nativo sean más lentas que en Open SQL (ej. Actualizar datos se hace de forma
asíncrona)
o Condiciones WHERE/JOIN deben incluir explícitamente el código de cliente

(diapositiva 39) Ejemplo

* openSAP_a4h1_Week_1_Unit_4_CTDPAR_Video

[1:15] 2 reports (comparar un report tradicional y un Code-to-Data paradigm)


ABAP Manage Database Procedures (AMDP)
4.3 Trabajando con vistas/procedimientos en SAP HANA Studio

(diapositiva 40)

Existen tres vistas de información:

 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.

(diapositiva 47) Database Procedures

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.

- En SAP HANA, el lenguaje es SQL Script, una extensión de SQL


- Pueden tener cualquier número de parámetros de entrada y salida
- Puede contener operaciones de lectura/escritura a BDs

¿Por qué debería utilizarlos?

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

5.1 Nuevo openSQL

(diapositiva 50) Nuevo open SQL

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.

De modo que, open SQL ahora es más que un subconjunto de instrucciones.

(diapositiva 51) ¿Qué hay de nuevo en open SQL?

- 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

- Open SQL soporta expresiones aritméticas y de strings, condiciones IF-case.

OJO!!! El uso de expresiones aritméticas o separación de comas, obliga a utilizar “@”

(diapositiva 52) ¿Qué hay de nuevo en open SQL?

ADDITION
SUBTRACTION
MULTIPLICATION
ABS  tipos de datos I y P con y sin dec

MOD  solo para tipos de datos I y P sin decimales


CAST  solo para tipos de datos FLOAT o host-variables
FLOOR, CEIL  pueden ser usadas para tipos de datos P sin decimales

Además de expresiones aritméticas, tenemos los concatenadores de strings y operadores “&&”.

(diapositiva 53) ¿Qué hay de nuevo en open SQL?

RIGHT OUTER JOIN, exactamente igual que la LEFT OUTER JOIN pero con los roles opuestos.

Además, en la condición ON de las JOIN se puede incluir:

- Además del operador “=” se pueden poner “BETWEEN” y “>” o “<”


- Campos de la tabla derecha se pueden utilizar en el WHERE de una LEFT OUTER JOIN
5.2 Core Data Services en ABAP

(diapositiva 54) Core Data Services en ABAP

- 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.

¿Cuáles son las ventajas que nos proporcionan?

 Más cálculos intensivos pueden ser llevados a BDs (paradigma del Code-to-data) a través de
la funcionalidad de vistas extendidas.

o CDS proporcionan soporte a queries combinadas (UNION)


o ABAP CDS están disponibles en todas las BDs

 Lectura de datos

o Vistas anidadas
o Asociaciones entre vistas

(diapositiva 55) Definición de una vista CDS

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.

- La columna resultante se deriva de las expresiones tras el THEN y el ELSE.

(diapositiva 57) Strings y literales en vistas CDS

Diversas expresiones, incluidas algunas funciones predefinidas pueden utilizarse también.

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.

API con el resumen de funciones SQL:

https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a61f29751910149f99f0300dd95cd9/c
ontent.htm?frameset=/en/20/e8341275191014a4cfdcd3c830fc98/frameset.htm&current_toc=/en/2
e/1ef8b4f4554739959886e55d4c127b/plain.htm&node_id=18&show_children=false
(diapositiva 58) JOINS en vistas CDS

- ABAP CDS soporta estos 3 tipos de JOIN:

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 *

(diapositiva 59) Anotaciones en vistas CDS

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.

(diapositiva 60) Agregaciones, agrupaciones y filtros en vistas CDS

Podemos definir vistas en las que incluyamos cálculos de agregaciones/agrupaciones de registros y


filtros de los mismo.

(diapositiva 61) Condiciones WHERE en vistas CDS

(diapositiva 62) UNIONS en vistas CDS

Podemos definir vistas y fusionar los resultados de una o más queries. Estas declarativas ya estaban
en el estándar SQL.

UNION  sin filas duplicadas


UNION ALL  no borra filas duplicadas

(diapositiva 63) Seleccionando datos en vistas CDS

Por defecto, las vistas CDS se consideran dependientes de un mandante.

Para recuperar datos de una vista dependiente de mandante, desde otro mandante, debemos
utilizar la sintaxis: USING CLIENT.

(diapositiva 64) Resumen CDS

La pregunta básica tras esta introducción a los CDS sería cuándo utilizar Open SQL o CDS…

- Open SQL no soporta UNION o path-expressions.


- CDS no soporta utilizar campos del sistema.

La buena práctica es:

- 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

5.3 Asociaciones en Core Data Services

(diapositiva 65) Asociaciones en CDS

- Estas asociaciones pueden simplificar la definición de las vistas


- Los “paths” de navegación se pueden utilizar para navegar a lo largo de las asociaciones
- ABAP CDS soporta asociaciones en SELECT, FROM, WHERE y cláusulas HAVING.
6. ABAP-managed Database Producedures
6.1 Introducción AMDP

(diapositiva 66) Creando AMDPs

Utilizando AMDP la edición, activación, transporte y todo el ciclo de desarrollo se encuentra en la


capa del AS ABAP.

- AMDP gestiona el código en SQLScript en el AS ABAP


- AMDP integra el chequeo de la sintaxis SQLScript de código
- AMDP crea y gestiona los objetos de los stored procedures en tiempo de ejecución en el AS ABAP

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.

(diapositiva 67) Prerequisitos AMDPs

- Las clases han de implementar la interfaz IF_AMDP_MARKER_HDB


- Los parámetros de los métodos AMDP pueden ser: Importing
Exporting
Changing
¡¡¡ no Returning!!!
- Respecto a la visibilidad de los métodos AMDP se pueden definir tanto la parte pública, como la
protected o privada de la clase.
- Una clase ABAP puede ser una mezcla de métodos ABAP y métodos AMDP.

(diapositiva 68) Implementación de los AMDPs

- 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.

- La ejecución de un método AMDP es como el de un método estático cualquiera.


- Cuando procesamos un AMPD el ABAP kernel llama al correspondiente stored procedures en SAP
HANA.

6.2 ¿Cómo debugar un AMDP?

(diapositiva 69) ¿Cómo debugar un AMDP?

AMDP puede detectar 3 tipos de errores sintácticos en código activo o inactivo:

- 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:

Alternativamente, para debugar cualquier AMDP en el esquema de SAPT85:


(diapositiva 70) ¿Cómo debugar un AMDP?

https://www.youtube.com/watch?v=5OEuyl_s5ME

7:57’

Vídeo YouTube Powepoint


DEVELOPER  ABAPDEV
SAPHANAABAP  SAPT85
DEBUGUSER  HANADEBUG
7. SAP HANA Proxy Objects
7.1 Acceder a las vistas de SAP HANA mediante ABAP Dictionary External Views

(diapositiva 71) Crear una vista externa

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.

Particularidades a tener en cuenta:

- 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

7.2 Transporte de objetos SAP HANA

(diapositiva 74-77) Transporte de objetos SAP HANA

Para crear un SAP HANA Transport Container debemos utilizar los ADT.

https://www.youtube.com/watch?v=MjYOGYCZAaQ

8’

(diapositiva 78) Ideas principales a recordar

Leer la diapositiva…

7.3 Llamar a SAP HANA procedures via ABAP Database Procedure Proxies

(diapositiva 79-80) Llamar a Procedures SAP HANA via…

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.

Tiene parámetros de importing/exporting que son mapeados a través del procedure.


Se debe invocar mediante la instrucción nueva ABAP: CALL DATABASE PROCEDURE.

Para crearlo, debemos utilizar también el ADT.

Cosas a tener en cuenta:

- El chequeo sintáctico tan solo se encarga de la existencia del proxy procedure


- Ciclos de mantenimiento distintos entre el ABAP proxy y el procedimiento SAP HANA
- Todos los parámetros son obligatorios

(diapositiva 81) Resumen técnicas Code-to-data

Leer la diapositiva…
8. Temas avanzados
8.1 SAP HANA

(diapositiva 82-83) Problemática actual

(diapositiva 84-85) Fuzzy search

CONTAINS(), los argumentos de esta función son:

El nombre de la columna en la que queremos buscar


El string en particular a buscar
El tipo de búsqueda FUZZY

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.

(diapositiva 86-87-88) Linguistic search

A veces es más recomendable hacer uso de una búsqueda lingüística.

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

(diapositiva 89) Problemas del ALV clásico

(diapositiva 90-91) Comparación ALV HANA


(diapositiva 92) Vídeos
9. Ejemplos y vídeos

Week 1

* openSAP_a4h1_Week_1_Unit_3_AWYNTK_Video

[5:07] - Database BUT000


Dónde se configura las filas/columnas? SE11 -> DB Specific Properties
Buffering
Índices y DB Specific Índices

* openSAP_a4h1_Week_1_Unit_4_CTDPAR_Video

[1:15] 2 reports (comparar un report tradicional y un Code-to-Data paradigm)


ABAP Manage Database Procedures (amdp)

* openSAP_a4h1_Week_1_Unit_5_YODVTO_Video

[2:41] eclipse

Week 2

* openSAP_a4h1_Week_2_Unit_1_EXCSTV_Video

[8:27] tx. SCI (Code Inspector)


Variant: FUNCTIONAL_DB

* openSAP_a4h1_Week_2_Unit_2_ECOWAP_Video

[5:58] tx. SCI (Code Inspector)


Variant: PERFORMANCE_DB

* openSAP_a4h1_Week_2_Unit_3_SQLFIYPS_Video

[5:28] tx. SQLM (SQL Monitor)

* openSAP_a4h1_Week_2_Unit_4_GUPAAN_Video

[1:21] tx. SWLT (SQL Performance Tuning Worklist)

* openSAP_a4h1_Week_2_Unit_5_QWOAOI_Video

[1:45] ALV with Integrated Data Access


[6:59] Ayudas de búsqueda
Week 3

* openSAP_a4h1_Week_3_Unit_1_ROSEP1_Video

[5:49] openSQL new declaratives

* openSAP_a4h1_Week_3_Unit_2_ROSEP2_Video

[1:43] case statements / COALESCE / USING CLIENT


10. Bibliografía recomendada

 ABAP 7.40 news

http://scn.sap.com/community/abap/blog/2013/07/22/abap-news-for-release-740

 SAP HANA iFG Community

Foro de clientes, partners y grupo de expertos para el soporte en las implementaciones de SAP HANA y
nuevas iniciativas.

Contenido: Webinars, expertos, feedback de producto, manuales de clientes de buenas prácticas,


formación e intercambios de puntos de vista

https://www.sap.com/cmp/oth/crm-xu15-int-focusdm/index.html

 Canal de YouTube de vídeos ABAP with SAP HANA

How to consume ABAP procedures in ABAP?


https://www.youtube.com/playlist?list=PLkzo92owKnVwhSUncFUrE19BLOHcvoAgL

SAP Web IDE


https://www.youtube.com/playlist?list=PLkzo92owKnVwnV5o1psI7XSA-AquO9_9g

Modeling and Design with SAP HANA Studio


https://www.youtube.com/playlist?list=PLkzo92owKnVz9hgx4CzW0Nc2ocU7riEMr

 ABAP for SAP HANA en la SAP Community Network (SCN)

http://scn.sap.com/community/abap/hana

También podría gustarte