Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
1
Manual de estudios Curso Programador ABAP Nivel Inicial
Presentación módulo:
Programador ABAP Nivel Inicial CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
1 2
Manual de estudios Curso Programador ABAP Nivel Inicial
MÓDULO: PROGRAMADOR ABAP NIVEL INICIAL
Domina el lenguaje de programación mejor pago del mercado Aprende de una manera fácil y rápida desde tu casa Adquiere un conocimiento que te proporcione una inserción laboral rápida y efectiva Trabaja en empresas de primer nivel Prepárate para rendir la Certificación SAP ABAP C_TAW12_70
1.1 | Objetivos El objetivo del módulo de estudios es que el alumno adquiera todos los conocimientos iniciales necesarios para el desarrollo de aplicaciones ABAP dentro de un entorno de trabajo SAP.
1.2 | Requisitos Conocimientos básicos sobre manejo de PC y muchas ganas de aprender.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
2 3
Manual de estudios Curso Programador ABAP Nivel Inicial
1.3 | Unidades del Plan de estudio Unidad 1: Introducción a ABAP y a SAP Unidad 2: Declaración y Procesamiento de datos Unidad 3: Diccionario de datos Unidad 4: Subrutinas, Funciones y Batch Unidad 5: Reportes Unidad 6: Tratamiento de Archivos y Field Symbols Unidad 7: Batch Input vs Bapis y Temas avanzados Unidad 8: Entrega de Materiales y Bibliografía
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
3 4
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
4 5
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 1: Introducción a SAP y a ABAP Introducción a SAP y ABAP Curso: Programador ABAP Nivel Inicial
CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
6
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
MODULO: Programador ABAP Nivel Inicial UNIDAD: Introducción a SAP y ABAP Presentación e Inicio de Unidad Introducción a SAP y a ABAP
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
7
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
8
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
9
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
10
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
11
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Instalación de SAPNetWeaver Analizaremos detalladamente cada uno de los pasos necesarios para realizar la instalación de SAPNETWEAVER en nuestro equipo. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP
CVOSOFT IT Academy - Formación en Sistemas.
SAPNetWeaver es una versión reducida de SAP que es perfecta para empezar a aprender la programación en ABAP, entre otros temas. La licencia inicial de SAPNetWeaver es por 30 días pero puede extenderse. Esto lo explicaremos más adelante en el curso.
Vamos a descargar el SAPNetWeaver de la SDN, pero previamente a la descarga debemos registrarnos como usuarios.
Una vez registrados, se nos enviará a nuestro correo personal un mail con el usuario y password. La password podemos cambiarla una vez logueados a la SDN. Ahora sí, estamos listos para descargar el SAPNetweaver y lo haremos desde el link que mostramos a continuación. Aquí descargaremos dos archivos de más de 3GB de tamaño entre los dos, que deberemos descargar en una misma carpeta en nuestro disco rígido.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
12
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - Distintas versiones de SAPNetWeaver
Será necesario instalar la JRE en caso de no estar instalada en la máquina. Para esto, accederemos al sitio oficial de Sun Microsystems, seleccionaremos la plataforma que en nuestro caso será Windows y el lenguaje que será Multilenguaje. Finalmente, descargaremos el programa en nuestra maquina y luego lo ejecutamos.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
13
Manual de estudios Curso Programador ABAP Nivel Inicial
Para descomprimir los archivos de instalación de SAPNetWeaver necesitaremos del programa Winrar.
Los requerimientos de la PC para realizar la instalación de SAPNetweaver son: Tener instalada la JRE 1.4.2.x Windows XP Profesional Service Pack 2, Windows Server 2003 o Windows Vista.
El Hostname no debe tener más de 13 caracteres
Imagen 3.1 - Hostname del equipo donde instalaremos SAPNetWeaver
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
14
Manual de estudios Curso Programador ABAP Nivel Inicial
El Filesystem debe ser NTFS
Imagen 3.2 - FileSystem del equipo donde instalaremos SAPNetWeaver
En caso de no tener un sistema NTFS será necesario convertirlo utilizando el procedimiento que se puede descargar del área de descargas de la lección. Internet Explorer 5.5 o superior o Firefox 1.0 o superior Mínimo 2GB de memoria RAM Mínimo Procesador Intel Pentium III 1.1 GHz o superior (o procesador compatible) Mínimo 30 GB de espacio libre en el disco rígido (24GB permanentes libres) Resolución del monitor (1024*768 o superior a 256 colores) Estar seguro que no existan otros sistemas SAP instalados en la máquina
El sistema SAP requiere de muchos puertos para servicios de comunicación. Por lo tanto, previamente a la instalación chequear que el archivo Windows/System32/drivers/etc/services no tenga entradas para los puertos 3200, 3600 y 8000. Si existen deben comentarse colocando un # delante de la línea. Para instalar y utilizar el sistema, hay que estar logueado como administrador Si se utiliza un servidor DHCP para asignar dinámicamente la dirección IP de la máquina, no será necesario instalar ningún agregado. Caso contrario, o si la máquina no se conecta a internet, se deberá instalar el Ms LoopBack Adapter. El procedimiento de instalación del Ms LoopBack Adapter
está documentado dentro de la
documentación de la instalación y lo comentamos en los siguientes puntos de la lección.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
15
Manual de estudios Curso Programador ABAP Nivel Inicial
Desactivar el firewall de windows y el antivirus que tengamos instalado Es recomendable desactivar el firewall de windows y des-instalar el antivirus que tenemos instalado.
Servicio “Servidor” de nombre lanmanserver funcionando Asegurarse que este servicio está activo y funcionando ya que sino la instalación falla. Debe estar fijado en modo de inicio automático.
Imagen 4.1 - Servicio lanmanserver activo y funcionando
Aumentar el tamaño de la memoria virtual del equipo Para ello utilizar el Procedimiento para aumentar la memoria virtual del equipo que está disponible en la sección de descargas de la lección.
Usuario del sistema como Administrador y con password El usuario con el que accedemos a Windows debe tener permisos de administrador y contraseña. Es importante ya que la consola de SAP trabajará con este usuario y con su contraseña. Si no la fijamos la consola fallará.
Generar un punto de restauración en Windows previo a la realización de la instalación para realizar la vuelva atrás en caso de error. Este procedimiento lo explicamos en la sección de descargas de la lección.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
16
Manual de estudios Curso Programador ABAP Nivel Inicial
Antes de comenzar con el procedimiento formal de la instalación del sistema consultaremos la documentación oficial que viene con los archivos que previamente descargamos en nuestra máquina. Lo primero que haremos será ejecutar el primero de los dos archivos de instalación, y dentro de los archivos que se descomprimen, haremos doble clic en el archivo START.htm.
Imagen 5.1 - Archivos que componen los ejecutables de SAPNetWeaver
Luego de unos minutos, veremos la siguiente pantalla de bienvenida:
Imagen 5.2 - Bienvenido a la Instalación de SAPNetWeaver
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
17
Manual de estudios Curso Programador ABAP Nivel Inicial
Presionamos Next y vemos la siguiente pantalla What to expect:
Imagen 5.3 - Qué esperar acerca del producto
Presionamos Next y vemos la pantalla de requisitos para que el sistema funcione. En el último punto de esta pantalla figura el paso a paso para la instalación del MS LoopBack Adapter sólo en caso de tener configurada una IP fija en la computadora.
Imagen 5.4 - Requisitos para que el sistema funcione
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
18
Manual de estudios Curso Programador ABAP Nivel Inicial
Presionamos Next y vemos la siguiente pantalla donde figura la dirección web para renovar la licencia.
Imagen 5.5 - Donde renovar la licencia de SAPNetWeaver
Presionamos Next y veremos la pantalla con la explicación del procedimiento de instalación.
Imagen 5.6 - Pasos a llevar acabo la instalación de SAPNetweaver
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
19
Manual de estudios Curso Programador ABAP Nivel Inicial
La instalación del SAPNetWeaver consiste en la instalación del servidor de aplicaciones y del SAPGUI que es la interfase gráfica que nos va a permitir acceder al sistema SAP.
Los pasos para la instalación son los siguientes: Debemos colocar, si no lo hemos hecho antes, los dos archivos ejecutables dentro de una misma carpeta.
Instalación del servidor de aplicación:
Imagen 6.1 - Archivos que componen el ejecutable del servidor de aplicación
Veremos la siguiente pantalla donde seleccionaremos la opción SAP Netweaver 7.0 SR1 including Enhacement Package 1/SAP Application Server ABAP/MaxDB/Central System/Central System y presionamos Next.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
20
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.2 - Elegimos el escenario a instalar
Luego leemos y aceptamos la licencia del producto.
Imagen 6.3 - Acuerdo de licencia para la instalación de SAPNetWeaver
En caso de no tener instalada la JRE veremos la siguiente pantalla. Aquí tendremos que utilizar el browser para colocar la ruta donde se encuentra la carpeta de la JRE.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
21
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.4 - Instalación de la JRE
Luego debo elegir un nombre para el SAPSID y presiono Next.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
22
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.5 - Elegimos un nombre para el sistema SAP
En la siguiente pantalla, simplemente presionamos el botón Next sin ingresar datos.
Imagen 6.6 - Sistema DNS de SAP
Ahora ingresamos la password master para todos los usuarios. Si presionamos F1 sobre el campo veremos las condiciones que debe cumplir la password.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
23
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.7 - Ingresamos la password master
En la siguiente pantalla, el programa de instalación evaluará si la configuración de nuestra computadora cumple con los pre-requisitos para la instalación. Seguramente habrá alguno o más puntos que no cumplamos. Igual así, seguiremos adelante con la instalación presionando el botón Cancel.
Imagen 6.8 - Pre-requisitos que no cumple nuestro equipo ©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
24
Manual de estudios Curso Programador ABAP Nivel Inicial
Luego veremos la siguiente pantalla para la instalación del SAP CRYPTOGRAPHIC SOFTWARE. Simplemente presionamos el botón Next.
Imagen 6.9 - Instalación del software Criptográfico de SAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
25
Manual de estudios Curso Programador ABAP Nivel Inicial
En la siguiente pantalla vemos un resumen de las configuraciones previamente realizadas. Presionamos Next.
Imagen 6.10 - Resumen de las configuraciones seleccionadas
Ahora sí, la instalación del servidor de aplicaciones ha comenzado.
Imagen 6.11 - Comenzó la instalación del servidor de aplicaciones
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
26
Manual de estudios Curso Programador ABAP Nivel Inicial
Luego de cuatro horas aproximadamente, dependiendo del equipo, si la instalación finalizó correctamente, veremos la siguiente ventana.
Imagen 6.12 - Finalizó correctamente la instalación del servidor de aplicaciones
Luego de finalizada la instalación del servidor de aplicación, veremos en nuestro escritorio el ícono del SAP Management Console.
Imagen 6.13 - Ícono del SAP Management Console
Instalación del SAP GUI Ahora vamos a instalar el SAP GUI. Para esto, tendremos que ejecutar el archivo
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
27
Manual de estudios Curso Programador ABAP Nivel Inicial
y veremos la siguiente pantalla.
Imagen 6.14 - Comenzamos la instalación del SAP GUI
Luego, en la siguiente pantalla, tildaremos a la izquierda del texto SAP GUI 7.10 C3 Trial y presionamos el botón Next.
Imagen 6.15 - Elegimos la versión a instalar del SAP GUI
Finalizada la instalación del SAP GUI, veremos en el escritorio de nuestra PC dos íconos nuevos, uno es el
TWEAK
SAP GUI el cual nos permitirá configurar ciertos aspectos no obligatorios de visualización de la pantalla y el otro es el SAP Logon el cual nos permitirá loguearnos al sistema SAP.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
28
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.16 - Íconos que se generan en el escritorio luego de la instalación del SAP GUI
Antes de poder tener acceso al sistema SAP, se tiene configurar una nueva entrada en el SAPLogon. Para
esto,
hacemos doble clic en el SAP Logon y veremos la siguiente pantalla.
Imagen 7.1 - SAP Logon
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
29
Manual de estudios Curso Programador ABAP Nivel Inicial
Presionamos el botón Nueva entrada y luego continuar y en la siguiente pantalla completamos los campos con los siguientes datos y después presionamos el botón Terminar.
Imagen 7.2 - Configurando el SAP Logon
Una vez que hayamos terminado la instalación del servidor de aplicaciones y el SAPGUI reiniciaremos nuestro equipo y al iniciarse veremos dos usuarios: uno es el del administrador que comúnmente utilizamos y el otro es el NSPADMIN que crea la instalación.
Para poder trabajar con el sistema SAP, cada vez que encendamos nuestra PC, debemos levantar el servidor de aplicaciones. Para ello, hacemos doble clic en el ícono SAP Management Console. Una vez abierta la aplicación, abrimos el menú NSP/Todas las tareas y presionamos Start.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
30
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 8.1 - Levantamos el servidor de aplicaciones cada vez que iniciamos la PC
Luego en la siguiente pantalla, se nos pedirá que ingresemos la password del usuario Administrador de Windows con el que instalamos la aplicación.
Imagen 8.2 - Ingresamos la password de administrador de Windows
Finalmente, si todo resulto bien, al cabo de un minuto o menos veremos en verde los procesos.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
31
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 8.3 - Servidor de aplicaciones activado
Es importante tener en cuenta las siguientes recomendaciones luego de realizada correctamente la instalación: No debemos actualizar la versión de la JRE a pesar de las recomendaciones de Windows.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
32
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
¿Qué es un sistema ERP? Aprenderemos que es un ERP, cuales son sus características, el mercado de los ERPs, cuales son los beneficios de utilizarlos, razones para que una empresa los implemente y las desventajas que presentan. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP
CVOSOFT IT Academy - Formación en Sistemas.
Las empresas cuentan con diferentes recursos: humanos, tecnológicos, materiales, financieros e información. A medida que estas crecen, el proceso de control de dichos recursos se hace complicado. Ante esta circunstancia, la tecnología de la información (TI) ofrece como solución la implementación de los sistemas ERP (Enterprise Resource Planning o Planeación de Recursos de la Empresa) .
Imagen 1.1 - Áreas que componen un sistema ERP
El propósito fundamental de un ERP es otorgar apoyo a los clientes del negocio, tiempos rápidos de respuesta a sus problemas, disminución de los costos totales de operación así como un eficiente manejo de información, la cual es unificada y ordenada en un solo lugar de modo de permitir la toma oportuna de decisiones y acortando los ciclos productivos.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
33
Manual de estudios Curso Programador ABAP Nivel Inicial
Los sistemas ERP no solo sirven para integrar varios departamentos de una empresa. Para verdaderamente ser considerado ERP, el sistema debe poseer algunas de las siguientes características fundamentales: Flexibilidad: un sistema ERP es flexible de tal manera que responde a las constantes transformaciones de las empresas. La tecnología cliente-servidor permite al sistema ERP operar sobre diferentes bases de datos por las conexiones de bases de datos abiertas, pues es muy probable que el mismo producto migre de un área de producción para otra durante el ciclo total de producción.
Modularidad: el sistema ERP es un sistema de arquitectura abierta, es decir, puede usar un módulo libremente sin que este afecte los restantes. El sistema soporta plataformas múltiples de hardware pues muchas empresas poseen sistemas heterogéneos. Debe también facilitar la expansión y/o adaptabilidad de otros módulos posteriormente.
Comprensivo: el sistema debe estar apto a soportar las diferentes estructuras organizacionales de las empresas, así como una vasta área de negocios.
Conectividad: el sistema no se debe confinar al espacio físico de la empresa y permitir la conexión con otras entidades pertenecientes al mismo grupo empresarial.
Selección de diferentes formas de negocio: debe contener una selección de las mejores prácticas de negocios en todo el planeta.
Simulación de la realidad: debe permitir la simulación de la realidad de la empresa en el computadora. De forma alguna el control del sistema debe estar fuera del proceso y debe ser posible la elaboración de informes para los usuarios que controlan el sistema.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
34
Manual de estudios Curso Programador ABAP Nivel Inicial
El mercado ofrece a las empresas opciones que varían no sólo en precio sino en integración, plataformas soportadas y funcionalidad. Antes de iniciar el proceso de selección es muy importante que la empresa tenga muy claro el objetivo por el cual está implantando un ERP y responda las siguientes preguntas: ¿Cuál es el resultado que se espera? ¿De cuánto tiempo dispone la empresa para alcanzar dicho objetivo? ¿Quiénes en la empresa conocen más a fondo los procesos? ¿Quiénes poseen la autoridad para modificar los procesos de uno u otro departamento?
En el siguiente gráfico podemos apreciar cuales son los tipos de industrias que más y menos implementan sistemas ERP:
Imagen 3.1 - Industrias que más implementan sistemas ERP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
35
Manual de estudios Curso Programador ABAP Nivel Inicial
Entre los ERP más conocidos se encuentran:
JD Edwards (Estados Unidos)
Oracle PeopleSoft (Estados Unidos)
Baan (Holanda)
R/3 (Alemania)
A continuación podemos ver una escala de la presencia en el mercado de los ERP mencionados anteriormente:
Imagen 3.2 - El mercado mundial de los sistemas ERP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
36
Manual de estudios Curso Programador ABAP Nivel Inicial
Varios son los puntos de vista en cuanto a los diferentes beneficios que se esperan en una implementación de un ERP, así como los impactos que este tendrá en la organización. Es importante mencionar que las diferentes marcas creadoras de software ERP tienen sus beneficios característicos. Sin embargo la mayoría de los ERP tienen en común varios beneficios. Algunos de ellos son: Solo un sistema para manejar muchos de sus procesos comerciales. Permiten la integración entre las funciones de las aplicaciones. Reducen los costos de la gerencia. Incrementan el retorno de inversión ROI. Son una fuente de Infraestructura abierta.
Imagen 5.1 - Razones por las cuales se implementa un sistema ERP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
37
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen cinco razones por las cuales las empresas desean implementar un sistema ERP:
Integración de la información financiera: el CEO (Chief Executive Officer) siempre busca tener información financiera. En su búsqueda puede encontrarse con muchas versiones diferentes a la real. Cada departamento tiene por lo general sus propios números financieros, finanzas tiene su propio juego de números, el área de ventas tiene otra versión y las diferentes unidades comerciales de la empresa pueden tener sus números propios referente a cuanto están contribuyendo para la empresa. Con la implementación de los ERP todos tendrán solo una versión de los números, con esto no habrá vuelta de hojas, todo estará unificado.
Integración de la información de los pedidos de los clientes: con los sistemas ERP es posible centralizar y darle un seguimiento a los pedidos de los clientes, desde que se recibe el pedido hasta que se entrega la mercancía. Esto en lugar de tener varios sistemas los cuales se encarguen del seguimiento de los pedidos, ya que por lo regular se srcinan problemas de comunicación entre los sistemas. Con los ERPs esta tarea será más fácil.
Estandarizar y agilizar los procesos de manufacturación: los sistemas ERP vienen con los métodos estándares para automatizar algunos de los pasos de un proceso de fabricación. Estandarizar esos procesos y usar un solo sistema informático, integrado puede ahorrar tiempo, aumentar la productividad y reducir los costos.
Minimizar el inventario: los ERPs agilizan el flujo del proceso industrial más fácilmente, y mejoran la visibilidad del proceso de cumplimiento de orden por parte de la empresa. Eso puede srcinar que los inventarios sean reducidos y ayudar también a los usuarios para que desarrollen mejores planes de entrega con respecto a los pedidos de los clientes. Claro está, que para mejorar realmente el flujo de la cadena de suministro, sería necesario implementar un sistema que administre a la misma, sin embargo los ERPs ayudan en gran parte.
Estandarización de la información de RH (Recursos Humanos): especialmente en compañías con múltiples unidades de negocios, RH puede no tener un simple método unificado, para seguir el tiempo de los empleados y comunicarse con ellos sobre beneficios y servicios. Un ERP puede encargarse de eso.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
38
Manual de estudios Curso Programador ABAP Nivel Inicial
Definitivamente no todo lo que rodea a un ERP es bueno, también tienen sus desventajas: Son caros. Requieren cambios en la compañía y en los procesos para su instalación. Son complejos y muchas compañías no pueden ajustarse a ellos. Hay pocos expertos en el mercado en ERPs.
Cuando hablamos de sistemas ERPs se nos viene a la mente que estos se utilizan unicamente en mega empresas, pero desde unos años que las principales empresas desarrolladoras de sistemas ERP orientaron su mirada hacia las pequeñas y medianas empresas PYMES. Para poder satisfacer esta amplia brecha del mercado tuvieron que adaptar sus precios a los que una pequeña y mediana empresa puede pagar.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
39
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
¿Qué es SAP? Definimos que es SAP, que soluciones ofrece, conocemos el SAP ECC y otros productos de la empresa. También definimos su arquitectura, los módulos funcionales que lo componen y las soluciones de SAP para Pymes. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP
CVOSOFT IT Academy - Formación en Sistemas.
Imagen 1.1 - Casa central de SAP en Alemania
SAP proporciona una completa gama de aplicaciones de software empresarial y soluciones empresariales para fortalecer cada aspecto del negocio de una empresa.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
40
Manual de estudios Curso Programador ABAP Nivel Inicial
SAP BUSINESS SUITE es una completa familia de aplicaciones empresariales que permite a las empresas administrar toda su cadena de valores y los procesos empresariales más importantes. Ofrece una solución de software flexible para empresas con muchos usuarios y procesos en constante evolución.
Imagen 2.1 - Componentes del SAP Business Suite según el tamaño de la empresa
Finanzas, recursos humanos y logística son el núcleo de toda empresa. SAP ERP combina todos estos procesos empresariales cruciales de una empresa y proporciona funciones tanto para la central de la misma como para las subsidiarias más pequeñas. Todas las empresas pueden beneficiarse del uso de SAP ERP. Todo el software debe adaptarse a cada empresa. Una empresa pequeña con pocos empleados y unos procesos relativamente estables pueden utilizar sistemas SAP preconfigurados. SAP Business All-in-One es el nombre de la marca de soluciones verticales (específicas del ramo o del país) basadas en la tecnología de SAP Business Suite. SAP Business ByDesign es la solución empresarial más completa y adaptable del mundo diseñada para liberar a las empresas medianas de las restricciones de TI tradicional.
SAP Business One es una aplicación ERP integrada y de gran alcance con una interfase parecida a la de Microsoft Windows.
A partir del año 2004 SAP ofrece una nueva plataforma tecnológica denominada SAPNETWEAVER. Esta plataforma tecnológica convierte a SAP en un programa Web enabled, lo que significa que está totalmente preparado para trabajar con él mediante la web. Se puede trabajar con SAP mediante cualquier navegador de internet si se tienen los componentes apropiados de SAP NetWeaver.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
41
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.2 - Estructura general de SAPNetWeaver
Netweaver es una plataforma de integración y aplicación que reduce el costo total de adquisición en toda la infraestructura de TI y soporta la evolución de SAP Business Suite hacia una arquitectura orientada hacia los servicios.
SAP R/3 ha pasado por varios ciclos de release o nuevas versiones del sistema. En cada nueva versión, las funciones se han ampliado, las aplicaciones se han optimizado y las interfases con otros componentes de software se han ampliado.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
42
Manual de estudios Curso Programador ABAP Nivel Inicial
SAP ERP Central Component (SAP ECC) es el sucesor de SAP R/3.
El sistema SAP está compuesto por una serie de áreas funcionales o módulos que responden de forma completa y en tiempo real a los procesos operativos de las compañías. Aunque pueden ser agrupados en cuatro grandes áreas (financiera, logística, recursos humanos y funciones multiaplicaciones), funcionan de un modo integrado, dado que existen conexiones naturales entre los distintos procesos.
Imagen 3.1 - Módulos que componen SAP ERP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
43
Manual de estudios Curso Programador ABAP Nivel Inicial
Los principales módulos de la solución son: SD (Comercial) MM (Gestión de Materiales) PP (Planificación de Producto) QM (Gestión de Calidad) PM (Mantenimiento) HR (Gestión de Recursos Humanos) FI (Gestión Financiera) CO (Controlling) TR (Tesoreria) PS (Sistema de Proyectos) WF (Workflow) IS (Soluciones Sectoriales)
Las funciones y soluciones principales de SAP ERP se ven reforzadas y ampliadas con las siguientes aplicaciones de SAP Business Suite: APO (Advanced Planner and Optimizer) BW (Business Information Warehouse) BI (Business Intelligence) PORTAL (Portal de SAP) CRM (Customer Relationship Management)
SRM (Supplier Relationship Management) EHRMS (Human Resource Management Systems) PLM (Product Lifecycle Management) KW (Knowledge Warehouse)
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
44
Manual de estudios Curso Programador ABAP Nivel Inicial
SAP también ofrece aplicaciones específicas de sector. Muchos sectores requieren soluciones que se agrupan y enriquecen de manera especial con funciones y procesos específicos. SAP satisface esta necesidad con portafolios de soluciones para sectores. Hoy en día existen ofertas disponibles para más de 20 sectores. Entre ellas se incluyen soluciones para: Banca ( SAP Banking ) Empresas de servicios ( SAP ISU-Utilities ) Industria Química SAP For Chemicals Sanidad SAP For HealthCare
Petróleo y gas SAP for Oil and Gas Administración Pública SAP for Public Sector Comercio al por menor SAP Retail
SAP se configura como una arquitectura cliente-servidor de tres capas, con un reparto claro de las funciones. Las bases de datos están instaladas en un servidor y componen la capa de datos, el sistema es instalado en otro servidor y compone la capa de aplicación y la capa de presentación está formada por el SAP GUI que es la interfase gráfica del usuario de SAP.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
45
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.1 - Arquitectura de capas de SAP
Aunque sus principales aplicaciones están destinadas a grandes empresas, SAP también se dirige a la pequeña y mediana empresa PYMES con productos como SAP Business One y mySAP All-in-one. Estas son soluciones SAP desarrolladas para responder a las necesidades de las PyMEs, preparadas para acompañar el crecimiento futuro de las empresas. Hoy, más que nunca, las empresas, cualquiera sea su tamaño, deben competir en una perspectiva global, disponer de las tecnologías de información más modernas y poder aplicarlas de forma eficaz y rentable. Las empresas pueden tener distintos tamaños, pero todas ellas desarrollan actividades similares (comprar, vender, relacionarse con sus clientes, organizar la contabilidad, gestionar los recursos humanos y adaptarse a las modificaciones de las normas legales y financieras).
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
46
Manual de estudios Curso Programador ABAP Nivel Inicial
Por este motivo, también las pequeñas y medianas empresas deben adoptar software para PyMEs que den soporte total a sus requerimientos y que les permitan reaccionar de forma rápida y flexible a los acontecimientos externos, interviniendo en la organización comercial, en la logística de la producción y en la toma de decisiones financieras. SAP dispone de una estrategia de negocio, adecuando el alcance y los costos de sus soluciones a la dimensión y estructura de las pequeñas y medianas empresas. Para ellas, SAP dispone de las siguientes soluciones:
7.1 | Para empresas medianas: SAP Business All-in-One: es la solución pre-configurada para los requerimientos específicos de los distintos sectores de actividad y para garantizar una rápida implementación. Adicionalmente, pueden ser personalizado para que se adapte totalmente a los requerimientos individuales de cada empresa. SAP Business All-in-One entiende los problemas reales del cliente, respondiendo directamente a sus problemas, requisitos y necesidades.
Imagen 7.1 - SAP Business-All-in-One
7.2 | Para pequeñas empresas: SAP Business One: es un software empresarial simple, pero poderoso, que sale al encuentro de las necesidades únicas de las pequeñas y medianas empresas. Con una vasta gama de funciones, incluyendo contabilidad, elaboración de informes, logística y gestión de oportunidades de ventas, entre otras. Disponible en un paquete de fácil utilización y de rápida implementación, este software para empresas abarca todas las necesidades y continuará haciéndolo, acompañando el crecimiento de cada negocio.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
47
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 7.2 - SAP Business One
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
48
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
¿Qué es ABAP? Definimos que es ABAP y cuales son sus principales fortalezas, características y herramientas. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP
CVOSOFT IT Academy - Formación en Sistemas.
Aunque la cantidad de aplicaciones desarrolladas por SAP es enorme, siempre existe la posibilidad que el cliente que adquiera el sistema, tenga alguna necesidad tan específica de su negocio que no esté contemplada en el estándar. También puede darse el caso que la funcionalidad que ofrece el estándar no se ajuste completamente a las necesidades del cliente. Para resolver estas situaciones existe un entorno completo de desarrollo de nuevas aplicaciones integradas en el sistema SAP. Este entorno, que SAP denomina ABAP Development Workbench, se compone de una serie de herramientas integradas que permiten crear desarrollos nuevos en poco tiempo.
El lenguaje de programación ABAP se caracteriza por su total integración en el sistema SAP. No en vano todo el software de aplicación, que se calcula en más de treinta millones de líneas de código, que el cliente recibe cuando adquiere SAP, está escrito en ABAP. Mediante ABAP se desarrollan nuevas aplicaciones como complemento a las ya existentes, en la versión de SAP instalada o como apoyo a la configuración del sistema, lo que es llamado en SAP como Z y permite a los usuarios cumplimentar los requerimientos no satisfechos por la versión estándar del sistema.
Podemos decir que la programación ABAP es estructurada ya que en su mayoría, los programas tendrán la típica estructura TOP-DOWN.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
49
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.1 - Secuencia de ejecución de eventos de un programa ABAP
También podemos afirmar que la programación ABAP es Orientada a Eventos ya que si el usuario no realiza alguna acción, tal como presionar un botón de la pantalla, nada sucederá. En una de las últimas versiones del lenguaje ABAP se introduce la programación Orientada a Objetos de modo de estar a tono con las últimas tendencias del mercado mundial.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
50
Manual de estudios Curso Programador ABAP Nivel Inicial
Las principales fortalezas del lenguaje son: Utiliza sentencias de OPEN SQL para conectarse con prácticamente cualquier base de datos.
Es un lenguaje estructurado que puede ser también programado orientado a objetos. Cuenta con miles de funciones para el manejo de archivos, bases de datos, fechas, etc. Permite conexiones RFC para conectar a los sistemas SAP con cualquier otro sistema o lenguaje de programación. Permite la creación de aplicaciones multi-idioma. Posee una ayuda muy potente sobre la sintaxis y la semántica del lenguaje. Permite la realización de reportes en forma rápida y sencilla.
ABAP posee determinadas herramientas que son propias del lenguaje y no están presentes en otros entornos de desarrollo. Ellas son: Diccionario de Datos (Transacción SE11): es el punto de referencia para los programadores ya que permite aislarles del sistema de gestión de base de datos que se utilice por debajo. Desde un misma pantalla se puede crear, modificar y borrar los objetos de base de datos, entre los que se incluyen: tablas bases de datos, estructuras, vistas, elementos de datos y dominios. Las definiciones de las tablas, por ejemplo, pueden ser referenciadas directamente en los programas permitiéndonos modificar posteriormente las tablas sin tener que cambiar los programas. Tenemos la posibilidad de gestionar otros objetos del Diccionario de datos como las ayudas de búsqueda, los objetos de bloqueo o los objetos de autorización.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
51
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - Diccionario de Datos ABAP
Editor de programas (Transacciones SE38 y SE80): el editor ABAP, aparte de proveer de las funciones básicas para la edición de texto, tiene múltiples características que facilitan la programación enormemente. Nos permite efectuar una verificación de sintaxis y aceptar las sugerencias del dispositivo de corrección automática que tiene incluido. También nos permite resaltar las palabras clave y tener una vista en forma de estructura jerárquica que ofrece la posibilidad de ocultar o desglosar bloques sintácticos. De esta manera, el programador obtiene una buena visión de conjunto de la estructura general del programa.
Imagen 3.2 - Editor ABAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
52
Manual de estudios Curso Programador ABAP Nivel Inicial
Screen Painter (Transacción SE51): con esta herramienta crearemos rápidamente interfases gráficas de usuario incluyendo una amplia gama de elementos de control, como botones de pulsación, botones de radio, checkboxes, etiquetas, campos de entrada, listas de base de datos, etc. Las pantallas que se crean se denominan dynpros y en ellas se incluye la definición de la pantalla y sus campos y la lógica de proceso de la misma. Esta lógica de proceso está dirigida por eventos, como los lenguajes visuales modernos, aunque la variedad de eventos posibles esta bastante limitada.
Imagen 3.3 - Screen Painter
Entorno de depuración (Dentro de la transacción SE38): el modo debugging de ABAP es posiblemente la herramienta más alabada por los programadores habituales de este lenguaje. Tiene todas las ventajas de este tipo de ayudas a la programación (creación de breakpoints, watchpoints, ejecución paso a paso, ejecución por bloques...) pero además nos permite hacer todo esto viendo el código fuente del programa, por lo que la localización del lugar del error es exacta.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
53
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.4 - Entorno de depuración ABAP
Otras herramientas: existen una gran variedad de herramientas adicionales cuyo uso no es tan frecuente como el Menu Painter, el análisis del tiempo de ejecución, el Object Browser, el sistema de test asistido por ordenador, etc.
A continuación vamos a explicar cuales son las tareas que realizan los Consultores Técnicos ABAP, como es su interacción con los Consultores Funcionales de SAP y como es la metodología de trabajo más comúnmente utilizada en el ciclo de vida de desarrollo de SAP. Cada empresa posee su propia metodología de trabajo, esta metodología afecta directamente la manera en que la información fluye entre los distintos niveles jerárquicos de la empresa. Si se encuentra bien implementada, mejora el control de los costos de las peticiones o requerimientos de los usuarios antes de llevarlas a cabo, aunque en primera instancia pudiera parecer un tanto burocrática, la misma garantiza la calidad del producto final y la organización del trabajo a realizar, ya que "en teoría" los tiempos han sido calculados con antelación, no teniendo que trabajar a las apuradas o con demasiado tiempo ocioso improductivo.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
54
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.1 - El ciclo de vida de un requerimiento en SAP
Veamos un ejemplo para comprender en detalle este concepto.
1º La Petición del Cliente al Consultor Funcional Es muy raro que un gerente de ventas contacte a un consultor Abap o Abaper directamente ante un requerimiento o petición de trabajo. Lo que habitualmente sucede (y es correcto que pase) es que el gerente de ventas cita a un Consultor Funcional SAP, para este ejemplo, por tratarse de un requerimiento del sector/módulo de Ventas, tendría que tomar esta petición un Consultor Funcional SAP SD, al cual el gerente le comentará sus necesidades de información. Por ejemplo: necesitamos un reporte de ventas que nos sirva para poder medir la productividad de nuestros vendedores a lo largo del mes. Luego el Consultor Funcional analizará el pedido del cliente y evaluará si ese trabajo se puede realizar "parametrizando" el sistema SAP, es decir configurando el sistema a través de las transacciones existentes. Para el caso de nuestro reporte de ventas, existe la posibilidad que SAP ya nos proporcione un reporte estándar de ventas para medir la productividad de los vendedores de la empresa. Si se puede realizar la adaptación mediante una "parametrización", o si SAP ya nos brinda dicho reporte y el mismo satisface las necesidades de información del cliente entonces será cuestión de utilizarlo y nuestro trabajo habrá terminado. Lo que suele suceder en cambio, es que el requisito del cliente excede a una parametrización o un reporte ya existente y es allí cuando el "Consultor Funcional" y el "Consultor Técnico" (el abaper para nuestro caso) se ponen a trabajar en equipo.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
55
Manual de estudios Curso Programador ABAP Nivel Inicial
2º La elaboración del Diseño Funcional: La forma más básica de realizar este trabajo Funcional y Técnico en conjunto, es que el Consultor Funcional, lo inicie elaborando una documentación llamada "Diseño Funcional", en este documento se le indica al Consultor Técnico entre otras cosas lo siguiente: Si se trata de hacer un programa Nuevo o modificar un programa existente. La funcionalidad del programa a realizar. El detalle de la interfaz gráfica de selección de datos que debe tener el programa o bien la modificación/es. Las tablas bases de datos que se accederán para obtener la información del programa. Las pruebas básicas a realizar luego que el programa esté terminado. Demás documentación que crea necesaria o útil al Consultor ABAP.
Una vez que el Consultor Funcional elaboró el "Diseño Funcional", en base a la metodología con la que trabaje la empresa, se le pedirá al Consultor Técnico, que en base al Diseño Funcional elabore y entregue un "Diseño Técnico", el cual es un documento en donde se especifica el trabajo que deberá realizar desde el punto de vista técnico, es decir se detalla: El nombre del programa a crear. Los campos que componen lo que se denomina en ABAP la pantalla de selección. La forma de acceder a las tablas de la base de datos para obtener información. Las validaciones que se realizarán en el programa. Si se imprimirán datos en pantalla. Si se generará un archivo de salida y muchas cuestiones más.
Normalmente aquí también se incluirá la estimación de las horas que se presume insumirá realizar o modificar el programa. Esta estimación por la general se elabora de común acuerdo entre el Consultor Funcional y el Consultor Técnico ABAP en base a: La dificultad de la tarea a realizar. La experiencia que posee el Consultor ABAP como programador.
3º La elaboración del Diseño Técnico y la Programación Una vez finalizado el Diseño Técnico, el Consultor ABAP comenzará el desarrollo del programa o modificación a realizar. Al terminarlo lo probará, realizando lo que se conoce como "Pruebas Unitarias", es decir pruebas básicas para asegurarnos que el programa cumple con los requisitos que nos solicitaron y avisa al consultor funcional. El Consultor Funcional a su vez realizará sus propias pruebas, las cuales se conocen como "Pruebas integrales", en donde se probará el programa rigurosamente y si está todo en orden, avisará al cliente, cerrando de esta manera el requerimiento establecido en un principio.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
56
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
57
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Ambientes, Mandantes y Clases de desarrollo o Paquetes Definimos en que consisten los Ambientes, los Mandantes y las Clases de desarrollo o Paquetes. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP
CVOSOFT IT Academy - Formación en Sistemas.
Como en todos los ámbitos de desarrollo de software, se configuran en SAP tres ambientes, uno de desarrollo, uno de pruebas y otro de producción, que es donde se utilizan las aplicaciones desarrolladas y probadas satisfactoriamente.
Los programadores tendremos acceso para desarrollar nuestros programas en el ambiente de desarrollo. Accederemos al ambiente de testing o pruebas para probar en forma integral y con datos actualizados nuestros programas y muy ocasionalmente ingresaremos al ambiente de producción, en caso de que se haya reportado alguna incidencia o error, que requiere de nosotros para ser detectado y solucionado. A su vez, en cada ambiente, existen distintos mandantes, siendo independientes los datos que se visualizan en cada mandante dentro del mismo ambiente. Por ejemplo, puede existir el mandante 100, que se utiliza para la configuración del sistema, el mandante 200 que se utiliza para el desarrollo de las aplicaciones y el mandante 300, que se utiliza para las pruebas unitarias dentro del ambiente de desarrollo.
Por último, existen dentro de cada mandante, dos tipos de objetos, los que son independientes de mandante y los que son dependientes de mandante. Por ejemplo, un programa es independiente de mandante ya que si lo creamos en el mandante 200, el programa también va a existir en los mandantes 100 y 300.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
58
Manual de estudios Curso Programador ABAP Nivel Inicial
Los datos de una tabla son dependientes del mandante ya que si a esta tabla le ingresamos registros en el mandante 200, estos registros no van a existir en los restantes mandantes dentro del mismo ambiente.
En el gráfico que vemos a continuación, tenemos una posible distribución de los mandantes y los ambientes dentro de una instalación SAP.
Imagen 1.1 - Estructura de Ambientes y Mandantes típica de una implementación SAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
59
Manual de estudios Curso Programador ABAP Nivel Inicial
Cualquier sistema SAP se instala inicialmente con tres mandantes estándar.
Imagen 2.1 - Mandantes estándar de SAP
Las funciones de los mandantes estándar son las siguientes: Mandante 000: es el mandante de referencia. No contiene datos de parametrización empresarial y por lo tanto las
creaciones de mandante propios se deben hacer como copias de este para asegurarnos que empezamos la parametrización desde cero. Durante un cambio de versión de SAP los datos dependientes de mandante se actualizan automáticamente en el 000 y los cambios al resto de mandantes se deben hacer desde aquí.
Mandante 001: es el mandante de ejemplo. Inicialmente es idéntico al 000 y salvo que lo cambiemos nosotros,
ninguna actualización de SAP lo va a modificar, al contrario de lo que ocurre con el 000. Siempre lo podemos tener como ejemplo de la instalación inicial aunque SAP no impone ninguna prohibición de cambiarlo o borrarlo. Mandante 066: es el mandante del servicio EarlyWatch, cuyo objetivo es garantizar la confidencialidad de nuestros
datos reales en productivo. Este mandante está aislado y es al cual se conecta SAP cuando le pedimos que nos realice un servicio de detección de problemas de rendimiento. Los usuarios de este mandante tiene las autorizaciones mínimas para poder ejecutar el informe de rendimiento. Este mandante tampoco debe ser borrado ni modificado nunca.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
60
Manual de estudios Curso Programador ABAP Nivel Inicial
A partir del mandante de referencia 000 podemos crear tantos mandantes como queramos (siempre que el tamaño de nuestra base de datos nos lo permita). En el ambiente de desarrollo se suelen crear varios mandantes, en integración o testing algunos menos y en el ambiente de producción solo debe existir un mandante propio. A continuación vamos a describir los mandantes que se crean habitualmente y cuales son sus funciones. Aunque vemos que tienen un número asignado, esto se ha hecho para facilitar la diferenciación entre ellos.
Imagen 3.1 - Mandantes propios de SAP
Es posible implementar SAP con más o menos mandantes de los indicados pero hay que buscar el equilibrio entre muchos y pocos. Con pocos mandantes podemos tener conflictos durante la parametrización, el desarrollo de programas o las pruebas, pero con muchos mandantes estaremos aumentando el tamaño de la base de datos y empeorando el rendimiento además de requerir un mayor esfuerzo en los procedimientos de administración de sistemas.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
61
Manual de estudios Curso Programador ABAP Nivel Inicial
Las funciones de los mandantes propios son las siguientes: Mandante 200: Desarrollo y parametrización en el sistema de desarrollo. Aquí iniciamos nuestro prototipo de empresa
y creamos los primeros desarrollos a medida que sean necesarios. Los programadores y consultores de aplicación trabajan en este sistema. No tendremos datos maestros ni transaccionales de manera que la pruebas las realizaremos en el mandante 220 después de pasar todos los cambios hechos aquí.
Mandante 210: se lo conoce como Sandbox. Las pruebas inusuales de parametrización las realizaremos en el 210
de manera que no interrumpamos el trabajo normal del mandante 200. Los cambios que hagamos aquí no se registran en ningún sitio de manera que si probamos algo en lo que nos va bien debemos repetirlo a mano en el 200 para que quede grabado en una orden de transporte (concepto que veremos más adelante) y se pueda pasar al mandante de pruebas unitarias. Periódicamente y para mantener el mandante limpio se hará una copia de refresco desde el 220.
Mandante 220: Pruebas unitarias en desarrollo. Los responsables de desarrollo y parametrización efectuarán aquí las
pruebas unitarias del prototipo que se está creando. Aquí si que tendremos datos maestros y transaccionales aunque no serán muy fiables debido a que la parametrización puede cambiarse.
Mandante 300: Pruebas integradas y control de calidad en integración. La función de este mandante es similar a la
del 220 pero con la diferencia de que las pruebas incluyen la interacción entre los diferentes módulos, rendimiento y aprobación del usuario. También se comprueba que el paso de las órdenes de transporte desde el ambiente de desarrollo sea correcto como garantía de que el paso de esas mismas órdenes a producción también lo sea.
Mandante 310: Formación a usuarios finales. Una vez superadas las pruebas correspondientes al mandante 300,
pasamos el prototipo aquí para que los usuarios finales reciban los cursos de formación y tengan un sitio donde poder seguir practicando después. De esta manera, los datos maestros y transaccionales que crean no nos interfieren en nuestro trabajo habitual.
Mandante 320: Maestro de parametrización. Este mandante se usa únicamente como referencia para poder consultar
la parametrización que tenemos en productivo sin tener que acceder a la máquina de productivo, no obligándonos a dar acceso a la misma a personal no autorizado. Para que cumpla su función se deben transportar los cambios al mandante 400 y al 320 al mismo tiempo y mantenerlos siempre sincronizados.
Mandante 400: Mandante productivo. Aquí es donde se lleva a cabo la explotación real del software. Este es el único
mandante propio que debe existir en el ambiente productivo. Antes del arranque en productivo realizaremos aquí las cargas iniciales de datos maestros, movimientos e históricos.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
62
Manual de estudios Curso Programador ABAP Nivel Inicial
Poniendo un ejemplo, un objeto sería un archivo y la clase de desarrollo sería la carpeta donde guardamos el archivo. Existe la Clase de Desarrollo $ TMP, que se utiliza para los objetos temporales que no se van a transportar entre ambientes, es decir para pruebas. Al momento de crear un nuevo objeto en el sistema, SAP nos proporcionará la pantalla que vemos a continuación para que le asignemos el Paquete al que pertenece. En este caso, el paquete es Z_WEB_SERVICE.
Imagen 4.1 - Asignación del paquete o clase de desarrollo
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
63
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Login al sistema SAP, ayuda en ABAP y el concepto de transacción Mostramos como loguearnos al sistema SAP, las diferentes formas de buscar ayuda en ABAP y explicamos detalladamente el concepto de transacción en SAP. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP CVOSOFT IT Academy - Formación en Sistemas.
Como dijimos anteriormente, la arquitectura que utiliza SAP es Cliente-servidor de tres capas, donde el sistema y las bases de datos están instaladas en el servidor y los usuarios se conectan a éste a través del SAP Logon.
Imagen 1.1 - SAPLogon
Si hacemos doble clic en el SAP Logon podremos visualizar en pantalla todas los sistemas configurados en el. Para ingresar a estos sistemas basta con marcar la entrada y presionar el botón
Acceder al sistema .
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
64
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Sistemas configurados en el SAPLogon
En la pantalla que visualizamos a continuación introducimos los siguiente datos: El mandante o cliente al que nos vamos a loguear. Nuestro usuario de acceso a SAP. La password de dicho usuario.
Imagen 1.3 - Completamos nuestro usuario y password de SAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
65
Manual de estudios Curso Programador ABAP Nivel Inicial
Y finalmente presionamos enter. Inmediatamente luego visualizamos el modo SAP con el menú correspondiente al usuario logueado.
Imagen 1.4 - Menú inicial de SAP
Desde este sector, podemos acceder a todas las transacciones permitidas para el usuario logueado. Otra forma de hacer lo mismo es escribir la transacción a la que deseamos ir en el campo de comandos.
Imagen 1.5 - Campo de comandos
Por ejemplo, más adelante veremos que la transacción SE38 nos lleva al Editor ABAP.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
66
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen cuatro sistemas de ayuda para aprender y desarrollar en ABAP. Es muy importante tenerlos en cuenta para resolver rápido cualquier inquietud que nos surja. Ellos son: Desde el entorno de trabajo, presionando F1 sobre cualquier sentencia, el sistema nos proporcionará ayuda con ejemplos que generalmente son muy útiles.
Imagen 2.1 - Ayuda presionando F1 sobre una sentencia de ABAP
Usando la ayuda extendida de SAP. En todas las pantallas de SAP tenemos la opción Ayuda desde la que podemos buscar información.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
67
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.2 - Ayuda extendida por aplicación
SDN en donde vamos a encontrar una enorme cantidad de información y ayuda sobre cualquier tema dentro del mundo SAP.
Imagen 2.3 - Ayuda a través de la SDN
Internet en general. Aparte de la SDN, existen muchas otras páginas, foros y blogs donde encontraremos información muy útil. ©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
68
Manual de estudios Curso Programador ABAP Nivel Inicial
Una transacción comercial es un intercambio entre una parte del sistema y otra. La planta de producción, por ejemplo, quiere un suministro desde el almacén a cambio de un recibo. El almacén sabrá utilizar este recibo para conciliar el saldo de esta pieza en el inventario de las mismas. Mientras tanto, el departamento de contabilidad habrá anotado que el material ha pasado de la cuenta del almacén a la de la planta de producción y definirá una transacción financiera para registrar el intercambio de valor por el material. Cuando un usuario está trabajando en una terminal, por ejemplo un cajero automático, una transacción con el sistema no queda terminada hasta que éste verifica que las entradas de información son correctas. El sistema registrará automáticamente la transacción como un documento que queda en el sistema en prueba de quién hizo la transacción y cuándo ésta ocurrió exactamente. Llevando esta visión al sistema SAP:
Tras completar toda la información obligatoria y parte de los campos opcionales, el usuario tiene la opción de grabar la transacción (en el caso de que hablemos de una transacción de creación o modificación) o de desechar toda la operación. Este es el punto clave de una transacción; si se graba, entonces todos los datos quedarán registrados, si se cancela, entonces ningún dato se grabará.
El concepto de transacción implica que no pueden grabarse sólo una parte de los datos, porque esto provocaría una inconsistencia en el sistema. En el ejemplo anterior, si sólo se registrará el movimiento de mercancías entre la planta y el almacén y no se grabará la anotación contable correspondiente, no podríamos, en un momento dado, sacar un balance contable correcto. ©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
69
Manual de estudios Curso Programador ABAP Nivel Inicial
En SAP accedemos a las transacciones generalmente a través del menú, pero también podemos acceder directamente utilizando su código de transacción. Los usuarios novatos o principiantes no suelen utilizar este último método descrito, pero a medida que se acostumbran al sistema y se dan cuenta que suelen ejecutar siempre la misma decena de transacciones, aprenden el código y lo utilizan.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
70
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Mi primer programa ABAP Creamos nuestro primer programa ABAP y vemos que son las Órdenes de Transporte, cuales son sus tipos y cuales sus estados. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 1: Introducción a SAP y a ABAP
CVOSOFT IT Academy - Formación en Sistemas.
Vamos a crear nuestro primer programa en ABAP. Para esto nos logueamos a SAP como lo vimos anteriormente, escribimos en el campo de comandos la transacción SE38 y presionamos enter.
Visualizaremos el Editor ABAP, allí escribimos el nombre del programa que vamos a crear, el cual debe comenzar con Z y presionamos el botón
Imagen 1.1 - Ingresamos el nombre del programa a crear en el Editor ABAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
71
Manual de estudios Curso Programador ABAP Nivel Inicial
A continuación veremos una ventana en la cual el sistema SAP advierte que nuestro usuario no está registrado como desarrollador del sistema, por lo que nos solicita la clave de acceso. Para registrarnos como desarrollador debemos introducir por única vez el código de 20 dígitos que corresponde a nuestra clave de desarrollador en la pantalla.
Imagen 1.2 - Clave de desarrollador ABAP
Luego de introducir el número de 20 dígitos presionamos el botón Continuar. En la próxima pantalla el sistema nos solicitará para que ingresemos los siguientes datos relacionados con el nuevo programa: Título: debe ser lo más descriptivo posible. En este caso será "Mi primer programa Abap". Tipo: se refiere al tipo de objeto que estamos creando. Generalmente será "Programa ejecutable".
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
72
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.3 - Introducimos el título y el tipo del programa
Luego presionamos Grabar y el sistema, en una nueva ventana, nos solicitará que ingresemos el paquete o clase de desarrollo, a lo que presionaremos el botón Objeto local que es lo mismo que escribir $ TMP y presionar Grabar.
Imagen 1.4 - Introducimos el paquete o clase de desarrollo local
En el editor escribiremos el siguiente código:
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
73
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.5 - Escribimos nuestras primeras líneas de código ABAP
Y luego activamos el programa presionando el botón "Activar"
. Para ello tendremos que seleccionar el objeto que
deseamos activar de la pantalla de activación que vemos en el siguiente gráfico y presionamos el botón
.
Imagen 1.6 - Activamos el programa ABAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
74
Manual de estudios Curso Programador ABAP Nivel Inicial
Una vez activado sin errores, lo ejecutaremos con el botón ejecutar
o presionando la tecla F8.
La pantalla de salida que visualizaremos será la siguiente:
Imagen 1.7 - Salida por pantalla luego de la ejecución
Felicitaciones! acabas de crear tu primer programa ABAP.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
75
Manual de estudios Curso Programador ABAP Nivel Inicial
En el ejemplo anterior, creamos un objeto que como es de prueba, lo asignamos a la clase de desarrollo $ TMP. Pero si quisiéramos transportarlo a otro ambiente tenemos que asignarlo a una clase de desarrollo o paquete que no sea de prueba. Supongamos que volvemos a crear el programa ZPRUEBA_ABAP desde el principio y en la ventana de diálogo que visualizamos a continuación introducimos la clase de desarrollo o paquete Z_WEB_SERVICE o cualquier otra disponible en el sistema y presionamos el botón Grabar
.
Imagen 2.1 - Asignamos una clase de desarrollo o paquete Z
En la siguiente ventana de diálogo podemos elegir entre Crear una nueva órden de transporte exista en el sistema presionando el botón Órdenes propias
o utilizar una que
.
Imagen 2.2 - Creación de una nueva orden de transporte
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
76
Manual de estudios Curso Programador ABAP Nivel Inicial
En este caso presionamos el botón para crear una nueva orden de transporte
.
En la siguiente pantalla completaremos una Descripción breve para nuestra orden de transporte y presionamos el botón Grabar
.
Imagen 2.3 - Introducimos una descripción breve
Luego SAP nos propondrá asociar el objeto que acabamos de crear a un número de orden de transporte único en el sistema.
Imagen 2.4 - Asociamos el objeto creado a una orden de transporte
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
77
Manual de estudios Curso Programador ABAP Nivel Inicial
Por último, activamos el programa presionando el botón Activar
.
Una orden de transporte puede ser de dos tipos:
Customizing: cuando se utiliza para la configuración del sistema. Workbench: cuando se utiliza para el desarrollo de programas.
Una orden de transporte puede tener dos estados:
Modificable: cuando la orden puede ser modificada, es decir se le pueden agregar o quitar objetos.
Liberada: cuando la orden no puede ser modificada, está lista para ser transportada a otro ambiente.
Para liberar una orden, basta con presionar el botón para transportar
sobre la tarea que compone la orden y
también sobre la orden misma.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
78
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - Liberación de una orden de transporte
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
79
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
80
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 2: Declaración y Procesamiento de datos Declaración y Procesamiento de datos Curso: Programador ABAP Nivel Inicial CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
81
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
MÓDULO: PROGRAMADOR ABAP INICIAL UNIDAD: Declaración y Procesamiento de datos
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
82
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
83
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
84
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
85
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
86
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Características de los programas ABAP Analizamos las distintas aplicaciones o objetos que se pueden crear con ABAP, los Eventos de un programa ABAP y aprendemos a utilizar el debugger. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 2: Declaración y Procesamiento de datos
CVOSOFT IT Academy - Formación en Sistemas.
Dentro del mundo ABAP se pueden crear distintos tipos de objetos. Los más comunes de ellos son: Reporte, Reporte interactivo y Reporte ALV Programa de Dialogo Formularios Batch Input User exits Field exits Funciones y RFC
A medida que avanza el curso vamos a ir viendo en detalle cada uno de ellos. Ahora nos vamos a ocupar de los llamados Reportes Clásicos o simplemente Reportes.
Existen cuatro tipos de palabras claves: Declarativas: se utilizan para declarar datos que vamos a usar dentro del programa. Ej.: DATA, TABLES y CONSTANT. Eventos: que ocurren en el programa. Ej.: START-OF-SELECTION, TOP-OF-PAGE, etc. Control: sentencias de control de flujo de programa. Ej.: IF, WHILE, DO, etc. Operativas: realizan funciones según la palabra clave. Ej.: WRITE, MOVE, etc.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
87
Manual de estudios Curso Programador ABAP Nivel Inicial
Generalmente la estructura de un reporte va a ser de la siguiente manera:
Imagen 1.1 - Estructura de un reporte o programa ABAP
Existen dos formas de utilizar los comentarios en un programa ABAP: Con un asterisco en la primera columna de la fila. Con comillas dobles en cualquier posición de la línea.
Imagen 1.2 - Comentarios en un programa ABAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
88
Manual de estudios Curso Programador ABAP Nivel Inicial
Como dijimos anteriormente, la programación ABAP es orientada a eventos.
Los principales eventos que pueden ocurrir dentro de un programa son:
INITIALIZATION Es el primer evento que se ejecuta. Nos permite inicializar los campos de la pantalla de selección de un programa o cualquier otra variable.
AT SELECTION-SCREEN Este evento se utiliza para validar los datos introducidos en los parámetros que conforman a la pantalla de selección.
START-OF SELECTION Este evento se lanza cuando se procesa la instrucción REPORT. En ese momento se empieza a ejecutar el código que se encuentra entre REPORT y la palabra reservada START-OFSELECTION. Inmediatamente después se procesa el bloque contenido dentro de este evento. El evento START-OF-SELECTION se utiliza para realizar el procesamiento central del programa, tal como puede ser realizar la selección de los datos, procesar un archivo, realizar operaciones aritméticas, etc. Es el evento por defecto, es decir si escribimos sentencias ejecutables sin etiqueta de evento, estas se adjudican por defecto a START-OF-SELECTION.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
89
Manual de estudios Curso Programador ABAP Nivel Inicial
END-OF-SELECTION El código de este evento se procesa cuando se termina el procesamiento central del programa, es decir luego del evento START-OF-SELECTION. Contiene las últimas sentencias que se ejecutarán en el programa. En general se lo utiliza para realizar la impresión de listados.
AT LINE-SELECTION Permite al usuario seleccionar una línea de un listado y realizar alguna acción. Se utiliza en los llamados reportes interactivos.
AT USER-COMMAND Se ejecuta cuando el usuario presiona un botón del menú en un reporte.
TOP-OF-PAGE Este evento se procesa antes de que el primer dato aparezca en cada página. Se suele utilizar para colocar títulos o cabeceras.
END-OF-PAGE Este evento se lanza cuando se crea automáticamente una nueva página. Esto ocurrirá cuando el número de líneas procesado sobrepase el número de líneas fijado para la página en la sentencia REPORT.
Veamos un ejemplo de como usaríamos los eventos en un programa ABAP. Para ello, nos logueamos a SAP, ingresamos a la transacción SE38 y creamos el programa Z_PRUEBA_EVENTOS que lo grabamos como programa ejecutable y como objeto local con el siguiente código:
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
90
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - Eventos en un programa ABAP
Si ejecutamos este programa produciríamos la siguiente salida:
Imagen 2.2 - Salida de un programa ABAP
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
91
Manual de estudios Curso Programador ABAP Nivel Inicial
Es muy importante saber utilizar el debugger o depurador ya que en programación las cosas solo funcionan si y solo si son perfectas, es decir sin errores. Algunos errores se detectan a simple vista pero para resolver otros vamos a necesitar ejecutar nuestro programa y saber exactamente cuales son los valores que van tomando las variables internas del mismo. Para esto existe el debugger. Veamos como debaguear el programa Z_PRUEBA_EVENTOS que acabamos de crear. Para ello, visualizamos el programa a través de la transacción presionando el botón
SE38 y colocamos un breakpoint luego de la declaración de las variables
para breakpoints de sesión que durarán mientras la sesión este abierta o
para
breakpoints externos.
Imagen 3.1 - Colocamos un breakpoint
Luego ejecutaremos el programa y veremos en debugger en acción.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
92
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.2 - El debugger ABAP en acción
Presionando el botón Single step Presionando el botón Execute
o la
o la
tecla F5, ejecutaremos paso a paso es decir sentencia a sentencia.
tecla F6, ejecutaremos subrutina a subrutina sin entrar en el contenido de cada
una. Más adelante veremos el concepto de subrutina en detalle. Presionando el botón Return
o la
tecla F7, retornaremos a la rutina de nivel superior de la rutina actual en
ejecución. Presionando el botón Run
o la
tecla F8, continuaremos la ejecución hasta el final del programa.
En la parte inferior de la pantalla del debugger podemos ingresar el nombre de cualquiera de las variables del programa para saber cual es su contenido en cualquier momento del mismo. También podemos modificar el contenido de una variable para saber cual sería el resultado del programa con esta modificación.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
93
Manual de estudios Curso Programador ABAP Nivel Inicial
Configuramos el nuevo debug seleccionando la opción F.debugging nueva tal como vemos a continuación:
Imagen 3.3 - Configuración del nuevo debugger
Y al ejecutar nuevamente el debugger visualizaremos la siguiente pantalla:
Imagen 3.4 - Visualizamos el contenido almacenado en las variables
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
94
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Declaración de datos Analizamos los Tipos de datos existentes en ABAP, que son las Estructuras de datos, que son las Constantes y los Includes de datos. Finalmente aprendemos para que se utilizan las Variables del sistema. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 2: Declaración y Procesamiento de datos
CVOSOFT IT Academy - Formación en Sistemas.
Los principales tipos de datos que se utilizan en ABAP son:
Imagen 1.1 - Principales tipos de datos existentes en ABAP
También existen los Tipos STRING que se utilizan para cadenas de longitud variable y XSTRING que se utilizan como un string hexadecimal para cadenas de caracteres muy grandes. Para declarar una variable utilizaremos la palabra clave DATA y TYPE tal como vemos en el siguiente ejemplo.
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
95
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Ejemplos de declaración de variables
Con el agregado de VALUE, inicializamos con un valor determinado a una variable.
También podemos declarar variables que sean de igual tipo que otras ya creadas en el sistema. Para esto utilizamos la sentencia LIKE. En el siguiente caso, creamos la variable V_CARRID que es del mismo tipo que el campo CARRID de la tabla SFLIGHT de Vuelos de SAP.
Imagen 1.3 - Declaración de la variable V_CARRID
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
96
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen tres formas de definir una estructura: La primera es utilizando la palabra clave DATA. En el siguiente ejemplo creamos una estructura de vuelos que tendrá los mismos campos que la tabla de vuelos SFLIGHT.
Imagen 2.1 - Declaración de una estructura del mismo tipo que SFLIGHT
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
97
Manual de estudios Curso Programador ABAP Nivel Inicial
En la segunda forma también utilizamos la palabra clave DATA pero vamos a crear una estructura de vuelos solo con ciertos campos.
Imagen 2.2 - Declaración de una estructura con ciertos campos particulares
La tercera forma es utilizando TIPOS, que son formatos de estructuras que pueden ser utilizados por cualquier otra estructura sin necesidad de reescribir el código. Para esto se utiliza la palabra reservada TYPES.
Imagen 2.3 - Utilización de tipos en declaraciones de estructuras
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
98
Manual de estudios Curso Programador ABAP Nivel Inicial
Para su declaración se utiliza la palabra reservada CONSTANTS.
Imagen 3.1 - Ejemplo de declaración de constantes
©CVOSOFTITACADEMY| ISBN978-987-27549-2-1|
[email protected]|w ww.cvosoft.com
99
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen dos tipos de INCLUDES. Ellos son: INCLUDE de datos: se utiliza para agrupar declaraciones de datos. INCLUDE de subrutinas: se utiliza para agrupar declaraciones de subrutinas, concepto que veremos en detalle más adelante.
En este momento nos concentraremos en los Include de datos. Para su creación se utiliza la palabra clave INCLUDE seguida del nombre del include.
Imagen 4.1 - Declaración de un include de datos
Al hacer doble clic sobre z_prueba_abap_datos veremos la siguiente ventana de diálogo donde se nos consulta si deseamos crear el objeto, a la cual responderemos que sí.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
100
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.2 - Ventana de diálogo de consulta
Luego veremos la ventana de diálogo que nos muestra el objeto que será creado. Aquí simplemente presionamos el botón Grabar.
Imagen 4.3 - Presionamos grabar para crear el include
Finalmente habremos creado el INCLUDE Z_PRUEBA_ABAP_DATOS.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
101
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.4 - Include de datos creado
A parte de las variables que define el programador, existen otras que han sido definidas por el sistema y que son de gran utilidad dentro de los programas ABAP. Estas se encuentran en la tabla base de datos SYST y contienen información que va desde la hora del sistema, a saber si se ejecuto correctamente una sentencia ABAP o una actualización a una base de datos. Su contenido no puede ser modificado en los programas sino que cambia simplemente con la ejecución de los mismos.
Las más comúnmente utilizadas son: SY-SUBRC: código de retorno posterior a la ejecución de una sentencia ABAP. Si el resultado de la ejecución fue
exitoso, entonces es 0, sino es distinto de cero.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
102
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 5.1 - La variable SY-SUBRC
SY-DATUM: contiene la fecha del sistema.
Imagen 5.2 - La variable SY-DATUM
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
103
Manual de estudios Curso Programador ABAP Nivel Inicial
SY-UZEIT: contiene la hora del sistema.
Imagen 5.3 - La variable SY-UZEIT
SY-TABIX: contiene el índice de una tabla interna.
Imagen 5.4 - La variable SY-TABIX
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
104
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Procesamiento de los datos Aprenderemos a asignar valores e inicializar variables. También analizamos las operaciones con caracteres y operaciones aritméticas más importantes y comúnmente utilizadas. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 2: Declaración y Procesamiento de datos
CVOSOFT IT Academy - Formación en Sistemas.
Existen dos formas básicas para asignar un valor a una variable. La primera consiste en la asignación simple.
Imagen 1.1 - Asignación simple de variables
La segunda forma es mediante la sentencia MOVE.
Imagen 1.2 - Asignación de variables mediante MOVE
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
105
Manual de estudios Curso Programador ABAP Nivel Inicial
Para la inicialización o borrado del contenido de las variables utilizamos la sentencia CLEAR.
Imagen 2.1 - Inicialización de variables mediante CLEAR
Si inicializamos las variables que declaramos a continuación:
Imagen 2.2 - Declaración de variables a inicializar
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
106
Manual de estudios Curso Programador ABAP Nivel Inicial
El contenido de los campos sería el siguiente:
Imagen 2.3 - Variables inicializadas
Una sentencia muy importante a la hora de consultar el contenido de las variables que declaramos en nuestros programas es IS INITIAL. En la siguiente imagen vemos un ejemplo de su utilización.
Imagen 2.4 - Utilización de la sentencia IS INITIAL
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
107
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen algunas funciones que se utilizan para tratar caracteres que son muy útiles en el trabajo diario de un programador ABAP. Ellas son: CONCATENATE: se
utiliza para concatenar varios campos alfanuméricos en uno solo.
Imagen 3.1 - Utilización de la sentencia CONCATENATE
Esta sentencia concatena los campos V_CAMPO1, V_CAMPO2 y V_CAMPO3 en la variable V_CAMPO. Todos estos campos son de tipo caracter. Con la cláusula SEPARATED BY se puede especificar un campo alfanumérico que se utilizará como separador entre los campos V_CAMPO1, V_CAMPO2 y V_CAMPO3.
TRANSLATE:
se utiliza para convertir caracteres de mayúscula a minúscula o viceversa, o para realizar sustituciones
de caracteres a través de ciertas reglas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
108
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.2 - Utilización de la sentencia TRANSLATE
La sentencia anterior convierte a mayúsculas el contenido de la variable V_TEXTO, siendo V_TEXTO de tipo caracter.
REPLACE:
reemplaza cierta parte de una cadena de caracteres por otra cadena de caracteres o caracter.
Imagen 3.3 - Utilización de la sentencia REPLACE
La sentencia anterior reemplaza el contenido de la variable V_TEXTO que es 'Hola' por el texto 'Casa'.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
109
Manual de estudios Curso Programador ABAP Nivel Inicial
SPLIT:
divide a un campo alfanumérico en varios campos por un separador.
Imagen 3.4 - Utilización de la sentencia SPLIT
La sentencia anterior utiliza el separador ',' para dividir el contenido del campo V_TEXTO_LARGO en las variables V_CAMPO1, V_CAMPO2, V_CAMPO3 y V_CAMPO4 que son de tipo caracter (TYPE c). Si todos los campos destino son lo suficientemente grandes para almacenar las partes del campo V_TEXTO_LARGO, SY-SUBRC valdrá 0, caso contrario valdrá 4.
SHIFT:
se utiliza para desplazar el contenido de un campo alfanumérico. Realiza el desplazamiento del contenido de
un campo hasta un string dado.
Imagen 3.5 - Utilización de la sentencia SHIFT ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
110
Manual de estudios Curso Programador ABAP Nivel Inicial
La sentencia anterior realiza el desplazamiento del campo V_ALFABETO hasta la quinta posición, quedando el resto de los caracteres que componen a V_ALFABETO en la variable y eliminando los cinco primeros.
SEARCH:
se utiliza para buscar una cadena de caracteres dentro de un campo alfanumérico.
Imagen 3.6 - Utilización de la sentencia SEARCH
La sentencia anterior busca en el campo V_ALFABETO la secuencia de caracteres 'ABC'. Como la secuencia existe, devolverá SY-SUBRC igual a 0. Caso contrario, si no existiera, sería distinto igual a 4.
CONDENSE:
se utiliza para borrar espacios en blanco en campos alfanuméricos. Borra cualquier secuencia de
espacios en blanco, dejando solo uno que exista entre palabras existentes en el campo. Los espacios en blanco por la izquierda también desaparecen.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
111
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.7 - Utilización de la sentencia CONDENSE
La salida en pantalla de la sentencia anterior sería 'Dr. Rafael Castro'. Con el agregado de la cláusula NO-GAPS al final de la sentencia, se eliminarán todos los espacios en blanco, es decir que también se eliminan los espacios existentes entre las palabras.
En ABAP las cuatro operaciones básicas ( suma , resta, multiplicación y división ) se pueden implementar de dos maneras obteniendo el mismo resultado.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
112
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.1 - Dos formas de implementar las operaciones artiméticas básicas
Siendo el resultado el mismo de ambas formas. También se utilizan las siguientes sentencias para operar aritméticamente con datos:
Imagen 4.2 - Operaciones aritméticas básicas
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
113
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Control del Flujo de Datos Aprenderemos a trabajar con condiciones, bucles y sentencias de control. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 2: Declaración y Procesamiento de datos
CVOSOFT IT Academy - Formación en Sistemas.
Las condiciones en ABAP se pueden representar de dos formas. Una es utilizando la palabra clave IF-ENDIF.
Imagen 1.1 - Condiciones utilizando IF-ENDIF
Si ninguna de las condiciones es valida, el sistema ejecutará las declaraciones que estén debajo del ELSE. La otra forma es mediante CASE-ENDCASE.
Imagen 1.2 - Condiciones utilizando CASE-ENDCASE
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
114
Manual de estudios Curso Programador ABAP Nivel Inicial
Si ninguna de las condiciones es valida, el sistema ejecutará las declaraciones que estén debajo del WHEN OTHERS. En ambas formas se utilizan los siguientes operadores lógicos.
Imagen 1.3 - Operadores lógicos
Los bucles en ABAP se puede pueden representar de varias formas. La primera es mediante la palabra clave LOOPENDLOOP.
Imagen 2.1 - Bucles utilizando LOOP-ENDLOOP
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
115
Manual de estudios Curso Programador ABAP Nivel Inicial
En el ejemplo anterior, Tabla es una tabla interna (Concepto que veremos en detalle más adelante). Con el agregado de la cláusula WHERE se puede restringir el número de líneas a leer, ya que se producirá la iteración siempre y cuando se cumpla la condición. Para más información presionar F1 sobre la sentencia.
Imagen 2.2 - Agregado de la cláusula WHERE
Otra forma es mediante la palabra clave DO-ENDDO.
Imagen 2.3 - Bucles utilizando DO-ENDDO
La iteración se ejecutará solo si la condición es verdadera.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
116
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.4 - Ejemplo de la utilización de DO-ENDDO
Las sentencias de control se utilizan para terminar el procesamiento de un bucle, de un proceso o de un programa. Ellas son:
CHECK : verifica
si la condición es verdadera. Si la condición es falsa, y la sentencia está dentro de un bucle, se
saltearán todas las sentencias siguientes que estén dentro del bucle y se continuará con la siguiente iteración. Fuera de un bucle, se saltearán todas las sentencias hasta el final del evento o del programa en proceso.
Imagen 3.1 - Utilización de la sentencia CHECK
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
117
Manual de estudios Curso Programador ABAP Nivel Inicial
EXIT: dentro
de un bucle saldrá del bucle, dentro de una subrutina saldrá de la misma y fuera de un bucle saldrá del
programa.
Imagen 3.2 - Utilización de la sentencia EXIT
CONTINUE:
se utiliza solo dentro de bucle. Luego de la ejecución de la sentencia el sistema continua con la
siguiente iteración.
Imagen 3.3 - Utilización de la sentencia CONTINUE
STOP:
se finaliza el programa en ejecución pero antes se ejecuta el evento END-OF-SELECTION.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
118
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.4 - Utilización de la sentencia STOP
LEAVE:
se finaliza el programa en ejecución pero no se ejecutará el evento END-OF-SELECTION.
Imagen 3.5 - Utilización de la sentencia LEAVE
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
119
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Formateando un Listado Aprenderemos a formatear la salida de los datos y a trabajar los formatos de página. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 2: Declaración y Procesamiento de datos
CVOSOFT IT Academy - Formación en Sistemas.
ABAP ofrece una serie de instrucciones especialmente diseñadas para generar reportes de manera sencilla. Una de ellas es la sentencia WRITE.
Imagen 1.1 - La sentencia WRITE
Donde offset indica la columna donde empezará la impresión y long indica la longitud de los valores a visualizar. Veamos un ejemplo:
Imagen 1.2 - Ejemplo de utilización de La sentencia WRITE
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
120
Manual de estudios Curso Programador ABAP Nivel Inicial
Y la salida por pantalla es:
Imagen 1.3 - Salida por pantalla de la sentencia WRITE
Existen muchos comandos adicionales a WRITE que se utilizan para producir una salida por pantalla determinada. Algunos de ellos son:
Tabla 1.1 - Comandos Adicionales a Write
Veamos un ejemplo de como centrar un texto con el comando CENTERED:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
121
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.4 - Centrado de un texto con CENTERED
Y la salida por pantalla será la siguiente:
Imagen 1.5 - Salida por pantalla centrada
Para dejar una línea en blanco se utiliza la sentencia SKIP y para escribir una línea horizontal se utiliza la sentencia ULINE.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
122
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.6 - Las sentencias SKIP y ULINE
Existen instrucciones especialmente destinadas a darle formato a la salida de un reporte ya sea por pantalla o por impresora. El evento TOP-OF-PAGE se utiliza para cambiar la cabecera de una página. Este evento ocurre tan pronto como el sistema empieza a procesar una nueva página. Por ejemplo, si queremos escribir un título particular al comienzo de cada página pondremos:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
123
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - El evento TOP-OF-PAGE
El evento END-OF-SELECTION se utiliza para realizar la impresión por pantalla de los datos, de modo que se separe esto del procesamiento de los mismos. Este evento se ejecuta luego del evento START-OF-SELECTION.
Imagen 2.2 - El evento END-OF-SELECTION
Para modificar la cantidad de líneas o columnas que se visualizan en la pantalla se utiliza la sentencia NO STANDARD PAGE HEADING.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
124
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - La sentencia NO STANDARD PAGE HEADING
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
125
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Pantalla de selección Aprenderemos a crear las pantallas de selección de nuestros programas y a crear clases de mensajes. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 2: Declaración y Procesamiento de datos CVOSOFT IT Academy - Formación en Sistemas.
Si queremos introducir algunas delimitaciones a nuestro programa de modo que nuestro reporte solo se ejecute para ciertos datos que el usuario deberá introducir en la pantalla entonces deberemos crear una pantalla de selección.
Dentro de una pantalla de selección se pueden declarar dos tipos de objetos: PARAMETER en los cuales el usuario podrá ingresar valores individuales y SELECT-OPTIONS en donde el usuario podrá ingresar rangos de valores. En el siguiente ejemplo declaramos los parámetros P_FECHA y P_NOMBRE.
Imagen 1.1 - Declaración de parámetros en la pantalla de selección
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
126
Manual de estudios Curso Programador ABAP Nivel Inicial
El agregado de la cláusula OBLIGATORY hace que el parámetro sea obligatorio. El agregado de la cláusula DEFAULT asigna un valor por defecto al parámetro. Si ejecutamos nuestro reporte veremos lo siguiente:
Imagen 1.2 - Las cláusulas OBLIGATORY y DEFAULT
Lo que vemos es que al ejecutar nuestro reporte nos aparece la pantalla de selección que acabamos de crear. Vemos que a la derecha de la fecha nos aparece el icono
.
Si presionamos sobre el ícono o presionamos F4 dentro del campo fecha, se abrirá la siguiente ventana:
Imagen 1.3 - Ayuda de búsqueda del calendario para campos de fecha
Aquí estamos viendo la ayuda de búsqueda asociada al campo SY-DATUM el cual es el tipo de nuestro parámetro. El tema de las ayudas de búsqueda lo veremos en detalle en la próxima unidad. ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
127
Manual de estudios Curso Programador ABAP Nivel Inicial
Ahora vamos a cambiar las descripciones de los parámetros que aparecen en pantalla. Para esto vamos a ir a:
Imagen 1.4 - Opción del menú para modificar los textos de selección
Y ingresamos las descripciones que mejor se adapten a nuestro propósito.
Imagen 1.5 - Modificamos los textos de selección
También se pueden crear parámetros tipo Checkbox en donde el usuario puede tildar las opciones que prefiera o tipo Radiobutton donde el usuario selecciona una de las opciones entre todas las existentes. Veamos un ejemplo de estos dos tipos de parámetros:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
128
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.6 - Declaración de parámetros checkbox y radiobutton
Los cuales se visualizarán de la siguiente manera en pantalla:
Imagen 1.7 - Visualización en pantalla de checkbox y radiobutton
Los SELECT-OPTIONS son iguales a los PARAMETER salvo que en ellos se puede ingresar rangos de valores, es decir un valor desde y un valor hasta, a parte de valores individuales. En el siguiente ejemplo, declaramos el SELECT-OPTIONS S_CLAVEP.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
129
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.8 - Declaración de select-options
De nuevo, si ejecutamos el reporte, a la derecha del campo Clave de país nos aparece el icono
, si lo presionamos
vemos la ayuda de búsqueda correspondiente al tipo LAND1_GP que es un tipo de la tabla KNA1.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
130
Manual de estudios Curso Programador ABAP Nivel Inicial
Una vez que ingresamos todos los parámetros de nuestro reporte y ejecutamos el programa, lo que vamos a querer es que dependiendo de los parámetros introducidos se produzcan determinadas acciones. Para analizar el contenido de los parámetros existe el evento AT SELECTION-SCREEN. En este evento es donde se validan los valores ingresados en la pantalla de selección. Supongamos que queremos que la fecha ingresada por pantalla sea mayor o igual a la fecha actual y que si no es así se emita un mensaje en la pantalla advirtiendo que el valor introducido es incorrecto. Para esto, vamos a tener que crear una Clase de mensajes a través de la transacción SE91 tal como vemos a continuación:
Imagen 2.1 - Creación de clases de mensajes a través de la transacción SE91
Le asignamos una descripción y grabamos.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
131
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.2 - Asignamos un texto breve a la clase de mensajes
Y creamos nuestro primer mensaje.
Imagen 2.3 - Creamos nuestro primer mensaje
Luego en nuestro programa, escribiremos el código correspondiente en el evento AT SELECTION-SCREEN para hacer cumplir con esta validación.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
132
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.4 - Escribimos el mensaje en el evento AT SELECTION-SCREEN
Por último, ejecutamos nuestro reporte con una fecha de la pantalla de selección anterior a la fecha actual y vemos el siguiente mensaje en el extremo inferior izquierdo de la pantalla.
Imagen 2.5 - Visualizamos el mensaje en pantalla
El mensaje que mostramos es un mensaje de error. Esto está determinado por la letra e que se antecede al número del mensaje y la clase de mensajes entre paréntesis.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
133
Manual de estudios Curso Programador ABAP Nivel Inicial
Los tipos de mensajes existentes son:
Tabla 2.1 - Tipos de mensaje
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
134
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
135
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 3: Diccionario de datos Diccionario de datos Curso: Programador ABAP Nivel Inicial
CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
136
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
MÓDULO: PROGRAMADOR ABAP INICIAL UNIDAD: Diccionario de datos
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
137
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
138
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
139
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
140
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
141
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Tablas internas Aprenderemos que son las tablas internas y todo lo relativo a su utilización en ABAP. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 3: Diccionario de datos
CVOSOFT IT Academy - Formación en Sistemas.
Si queremos guardar una colección de registros de datos de la misma estructura en memoria, sin necesidad de acceder continuamente a las bases de datos y poder realizar diversas operaciones con este conjunto de información, entonces utilizaremos tablas internas.
El uso típico que se le da a una tabla interna es: Para almacenar temporalmente los datos de las bases de datos para un procesamiento futuro. Para estructurar y formatear datos que se mostrarán como salida del programa. Para formatear datos para ser utilizados por otros servicios.
La sintaxis para su declaración es la siguiente:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
142
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - Sintaxis para la declaración de una tabla interna
De esta manera definiremos una tabla interna con n líneas en memoria más una línea de cabecera o área de trabajo. La cantidad de líneas que se especifican en OCCURS no limitan el tamaño de la tabla sino la cantidad de registros que se guardarán en memoria simultáneamente.
En el próximo ejemplo declaramos la tabla interna TI_PROVEEDORES.
Imagen 2.2 - Ejemplo de declaración de una tabla interna
Otra forma de declarar la misma tabla sería:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
143
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - Otra forma de declarar la misma tabla interna
Para llenar con datos una tabla interna utilizamos: APPEND TO :
se añade un registro a la tabla interna en la última posición con los valores que tengamos en el área
de trabajo. Veamos un ejemplo:
Imagen 3.3 - Agregado de registros a una tabla interna
Llenamos la tabla interna con el contenido de una base de datos. Esto lo haremos con la sentencia SELECT que veremos en detalle en la próxima lección.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
144
Manual de estudios Curso Programador ABAP Nivel Inicial
Para ordenar una tabla interna utilizamos la sentencia SORT.
Imagen 4.1 - Ordenamiento de una tabla interna
En el ejemplo anterior ordenamos la tabla TI_PROVEEDORES de forma descendente por DNI lo cual invertirá el orden en el que fueron cargados srcinalmente los registros. Para ordenar de menor a mayor hay que utilizar la cláusula ASCENDING.
Para recorrer una tabla interna y procesar registro a registro utilizaremos la sentencia LOOP-ENDLOOP.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
145
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 5.1 - Recorremos una tabla interna
Si no existe ningún registro que cumpla la condición especificada en la cláusula WHERE, el SY-SUBRC será distinto de cero.
Para leer un registro concreto de una tabla interna sin necesidad de recorrerla utilizamos la sentencia READ TABLE.
Imagen 6.1 - Lectura de una tabla interna
Si se encuentra el registro buscado, el SY-SUBRC será cero, caso contrario, será distinto de cero. Si se desea leer los datos que se encuentran en una posición particular de la tabla se utilizará la cláusula INDEX tal como vemos en el siguiente ejemplo. ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
146
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 6.2 - Lectura de una tabla interna por índice
Para modificar el contenido de un registro de una tabla interna utilizamos la sentencia MODIFY. En el siguiente ejemplo modificamos el campo DNI correspondiente al primer registro de la tabla interna.
Imagen 7.1 - Modificación de una tabla interna
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
147
Manual de estudios Curso Programador ABAP Nivel Inicial
Para insertar un registro en una posición determinada de una tabla interna utilizamos la sentencia INSERT. En el siguiente ejemplo insertamos un registro en la posición 2.
Imagen 7.2 - Inserción de registros en una tabla interna
Para borrar el contenido de un registro de una tabla interna utilizamos la sentencia DELETE. En el siguiente ejemplo borramos el registro de la tabla interna de proveedores con DNI igual a 20857492.
Imagen 7.3 - Borrado de un registro de una tabla interna
Para borrar todo el contenido de una tabla interna utilizamos la sentencia REFRESH. En el siguiente ejemplo inicializamos la tabla interna TI_PROVEEDORES.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
148
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 7.4 - Borrado del contenido completo de una tabla interna
Para saber cuantos registros tiene una tabla interna utilizamos la sentencia DESCRIBE TABLE. En el siguiente ejemplo declaramos V_LINEAS que es la variable que va a contener la cantidad de filas de la tabla interna TI_PROVEEDORES luego de ejecutar la sentencia DESCRIBE TABLE.
Imagen 7.5 - Cantidad de registros de una tabla interna
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
149
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Tablas Bases de datos, elementos de datos y dominios Analizaremos los distintos datos existentes en el sistema SAP, que es el diccionario de datos y como crear una tabla base de datos, un elemento de datos y un dominio. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 3: Diccionario de datos CVOSOFT IT Academy - Formación en Sistemas.
Podemos clasificar los datos del sistema SAP en tres tipos: datos maestros, datos de movimientos y datos del sistema o de control. Datos maestros: son datos que no se modifican muy a menudo. Por ejemplo: datos de materiales, cuentas, bancos, clientes, etc. Datos de movimientos: son datos muy volátiles y con gran volumen de generación. Por ejemplo: datos de facturas, pedidos, etc. Datos del sistema o de control: son datos que tienen que ver con la configuración del sistema.
El diccionario de datos permite la administración de todas las definiciones de datos usadas en el sistema SAP. Se accede a él a través de la transacción SE11 tal como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
150
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - El diccionario de datos ABAP
Aquí, podemos crear, modificar y visualizar tablas base de datos, Vistas, Estructuras, Elementos de datos, Grupos de tipos, Dominios, Ayudas para búsqueda y Objetos de bloqueo.
Vamos a crear la tabla ZTABLA_USUARIOS. Para esto ingresamos el nombre de la nueva tabla a la derecha del texto "Tabla base datos" y presionamos el botón Crear.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
151
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - Creación de una tabla base de datos
Luego veremos la siguiente pantalla:
Imagen 3.2 - Solapa Entrega y Actualización
Completamos la Descripción breve de la nueva tabla con el texto "Tabla de usuarios". En la solapa Entrega y actualización completamos la Clase de entrega con "A" que significa que la tabla es de aplicación y que tiene datos maestros y de movimientos. Existen otras opciones que podremos ver si presionamos el botón
que aparece al posicionar el cursor en el cuadro de texto.
En Browser datos/Actual. vista tabla elegiremos la opción "Visual./Actuali.permitida" esto significa que se podrá actualizar el contenido de la tabla mediante la transacción SM30.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
152
Manual de estudios Curso Programador ABAP Nivel Inicial
En la solapa "Campos" vamos a ingresar los campos que va a tener nuestra tabla. Estos van a ser: DNI, NOMBRE_APE, ESTADO_USU y el MANDANTE que no debe faltar en ninguna tabla.
Imagen 3.3 - Campos de una tabla base de datos
A cada campo de la tabla se le puede asignar un tipo instalado seleccionando la línea del campo y presionando el botón Tipo Instalado cada campo.
, como podría ser CHAR de 30 posiciones o crear un elemento de datos para
En nuestra tabla, crearemos los elementos de datos Z_DNI, Z_NOMBRE_APE y Z_ESTADO_USU. También es posible utilizar elementos de datos que ya existen en el sistema, como es el caso del MANDT. Para crear el elemento de datos Z_DNI haremos doble clic sobre el elemento, el sistema nos ofrecerá guardar la tabla, diremos que sí y le asignaremos como paquete objeto local. Luego nos aparecerá la siguiente ventana de dialogo:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
153
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.4 - Ventana de diálogo de creación de elementos de datos
Presionaremos la opción "Si" y nos aparecerá la siguiente pantalla:
Imagen 3.5 - Definición del tipo de datos del elemento de datos
En la Descripción breve completaremos una descripción del contenido del campo. Luego podemos elegir entre crear un dominio para este campo, utilizar un tipo instalado o predefined type ya existente en el sistema o utilizar un tipo referencia o Reference type. En este caso utilizaremos un tipo instalado y le asignaremos el tipo de datos NUMC de 8 posiciones. Luego iremos a la solapa Denom.campo (Field Label) y actualizaremos los denominadores de campo que son los títulos con los que se verá el campo cuando se visualice en una transacción o reporte.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
154
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.6 - Denominadores de campo
En este caso los denominadores de campo son todos iguales pero la idea es dar una descripción más detallada del breve a la cabecera. Por último, activaremos el elemento de datos mediante el botón
y nos aparecerá una nueva ventana de diálogo
donde confirmaremos la activación seleccionando el elemento a activar y presionando el botón
.
Para el campo NOMBRE_APE crearemos el elemento de datos Z_NOMBRE_APE tal como hicimos con Z_DNI.
Imagen 3.7 - Elemento de datos para el campo Nombre y Apellido
Para el campo ESTADO_USU, crearemos el elemento de datos Z_ESTADO_USU tal como hicimos con Z_DNI y también crearemos el dominio ZZ_ESTADO_USU para asociarle el ámbito de valores: A=Activo, I=Inactivo y N=Anulado.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
155
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.8 - Creación de un dominio para el campo Estado del Usuario
Si hacemos doble clic sobre ZZ_ESTADO_USU el sistema nos preguntará en una ventana de diálogo si deseamos crear el dominio. Contestaremos que sí y veremos la siguiente pantalla:
Imagen 3.9 -Definición del tipo de datos para el dominio
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
156
Manual de estudios Curso Programador ABAP Nivel Inicial
Completamos la Descripción breve del dominio con "Estado del usuario". El tipo de datos será CHAR de 1 posición. Luego en la solapa Value Range o Ámbito de valores completaremos el ámbito de los valores del dominio.
Imagen 3.10 -Definición del ámbito de valores para el dominio
Por último, activamos el dominio ZZ_ESTADO_USU, luego activamos el elemento de datos Z_ESTADO_USU y finalmente lo que nos queda antes de activar la tabla ZTABLA_USUARIOS es configurar las opciones técnicas de la tabla presionando el botón Opciones Técnicas (Technical Settings)
.
Aquí completaremos la Clase de datos con "APPL0" que es la correspondiente a "Datos maestros, tablas
transparentes" y la Categ.tamaño con "3" que es el valor correspondiente a una tabla de 78.000 a 310.000 registros de datos (Estos valores dependerán de la instalación).
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
157
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.11 -Configuración de las opciones técnicas
Luego activamos la tabla ZTABLA_USUARIOS y veremos la siguiente ventana de diálogo donde el sistema nos informa que existen mensajes de advertencia. Aquí se nos presentan dos opciones: si presionamos No la tabla se activará sin importar los mensajes de advertencia, si presionamos Sí el sistema nos dirá cuales son las advertencias para que las corrijamos previamente a la activación de la tabla. Dado que nuestro objetivo como desarrolladores ABAP siempre será priorizar la calidad presionaremos Sí.
Imagen 3.12 -Mensajes de advertencia en activación
En la siguiente pantalla el sistema nos informa que falta definir la Categoría de Ampliación de la tabla base de datos que acabamos de construir.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
158
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.13 -Mensajes de advertencia relativos a la categoría de ampliación
Para definir la Categoría de ampliación seleccionamos la opción del menú Detalles / Categoría de ampliación tal como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
159
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.14 - Definición de la categoría de ampliación
Luego visualizaremos la siguiente ventana de diálogo donde el sistema nos informa que la categoría de ampliación de la tabla no se encuentra clasificada. Presionamos el botón
.
Imagen 3.15 - Tabla base de datos no clasificada
Finalmente seleccionamos la opción Ampliable de cualquier manera y presionamos el botón Tomar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
160
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.16 - Seleccionamos la opción Ampliable de cualquier manera
Ahora sí podremos activar nuestra tabla base de datos sin ninguna advertencia.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
161
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Actualización y visualización de registros, Estructuras y Ayudas de búsqueda Analizaremos como crear una superficie de actualización para una tabla, como visualizar los registros de una tabla, como crear una estructura y una ayuda de búsqueda para parámetros. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 3: Diccionario de datos CVOSOFT IT Academy - Formación en Sistemas.
Una vez que creamos la tabla ZTABLA_USUARIOS vamos a crearle una superficie de actualización para poder ingresarle registros. Para esto vamos a ingresar a la transacción SE11 con el nombre de la tabla y vamos a ir a la siguiente opción del menú:
Imagen 1.1 - Creación de la superficie de actualización a través del menú
Aquí veremos la siguiente pantalla en donde completaremos los campos:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
162
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Completamos los campos necesarios
Grupo de autorizaciones (Authorization group): con &NC& que significa que no estamos asociando la superficie a ningún grupo en particular. Grupo de Funciones (Function group): aquí colocaremos el mismo nombre de la tabla. Este tema lo veremos en detalle en la unidad de Funciones y Subrutinas. Tipo actualización (Maintenance type): seleccionaremos un nivel es decir one step.
Luego presionaremos el botón Buscar N°Imágenes
y el sistema nos ofrecerá números de imágenes.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
163
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.3 - Seleccionamos la opción Proponer números de imagen
Presionaremos el botón presionamos el botón
y se completará con números, el campo de la pantalla "Imágen resumen". Finalmente y guardamos los cambios como "Objeto local".
Ahora vamos a probar de ingresar registros en la tabla ZTABLA_USUARIOS, para ello vamos a ir a la transacción SM30, escribiendo el nombre de nuestra tabla y presionamos el botón Actualizar
.
Imagen 1.4 - Actualización de la tabla base de datos a través de la transacción SM30
Aquí presionamos el botón Nuevas Entradas
y comenzamos a cargar registros en nuestra tabla.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
164
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.5 - Introducimos las nuevas entradas en la tabla
Al finalizar la carga presionamos el botón Grabar
.
Para visualizar los datos que acabamos de crear vamos a utilizar la transacción SE16. Allí vamos a escribir el nombre de nuestra tabla y presionamos enter.
Imagen 2.1 - Imagen inicial de la transacción SE16
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
165
Manual de estudios Curso Programador ABAP Nivel Inicial
Inmediatamente después, veremos la siguiente pantalla en donde podremos filtrar los datos a mostrar por cualquiera de los campos que componen nuestra tabla. También podremos saber la cantidad de registros de nuestra tabla con el botón Cantidad de entradas .
Imagen 2.2 - Visualizamos los campos para filtrar la visualización de los registros
Aquí presionamos F8 y visualizaremos el contenido de la tabla ZTABLA_USUARIOS tal como vemos:
Imagen 2.3 - Visualización de los registros almacenados en la tabla
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
166
Manual de estudios Curso Programador ABAP Nivel Inicial
Vamos a crear una estructura, para ello accedemos a la transacción SE11, en Tipo de datos colocamos el nombre de nuestra estructura que será ZUSUARIOS y presionamos el botón Crear.
Imagen 3.1 - Creación de una estructura a través de la transacción SE11
Luego aparecerá en la pantalla la siguiente ventana de diálogo, seleccionamos la opción Estructura y presionamos el botón continuar de la tilde verde.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
167
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.2 - Seleccionamos la opción Estructura
Luego ingresamos la Descripción breve que será "Estructura de usuarios" y los campos que tendrá la estructura, que en este caso serán los mismos de la tabla ZTABLA_USUARIOS como vemos a continuación:
Imagen 3.3 - Introducimos la descripción breve y los campos de la estructura
Finalmente activamos
.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
168
Manual de estudios Curso Programador ABAP Nivel Inicial
Supongamos que tenemos un reporte ABAP con la siguiente pantalla de selección:
Imagen 4.1 - Pantalla de selección de un reporte
Y queremos que al presionar F4 sobre el campo de entrada de la pantalla se muestren los nombre y apellidos de los usuarios. Para ello, tenemos que crear la ayuda de búsqueda Z_AYUDA_USUARIOS en la transacción SE11. Ingresamos el nombre Z_AYUDA_USUARIOS o la derecha del texto Ayuda de búsqueda (Search help) y presionamos el botón Crear.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
169
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.2 - Creación de una ayuda de búsqueda a través de la transacción SE11
Luego veremos la siguiente ventana de diálogo:
Imagen 4.3 - Seleccionamos ayuda de búsqueda elemental
Aquí seleccionaremos la opción Ayuda p.búsqueda elemental (Elementary search help) y completamos la pantalla con los siguientes datos:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
170
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.4 - Configuramos la ayuda de búsqueda
El método de selección será el nombre de la tabla de donde se obtienen los datos. Los campos NOMBRE_APE, DNI y ESTADO_USU son los que se mostrarán por pantalla al utilizar la ayuda y el campo NOMBRE_APE en particular será el que se exporte a la pantalla del reporte por eso tiene tildada la columna EXP. Para finalizar activamos la ayuda.
Luego, modificaremos la declaración del parámetro de la pantalla de selección de nuestro reporte con la sentencia MATCHCODE OBJECT seguida del nombre de la ayuda de búsqueda que acabamos de crear.
Imagen 4.5 - Modificamos la declaración del parámetro en la pantalla de selección
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
171
Manual de estudios Curso Programador ABAP Nivel Inicial
Vemos que al ejecutar el reporte aparece el icono
a la derecha del campo Usuario. Finalmente, si lo presionamos
veremos el siguiente listado de opciones de selección:
Imagen 4.6 - Visualizamos la ayuda de búsqueda en pantalla
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
172
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Instrucciones SQL: La sentencia SELECT Aprenderemos a utilizar la sentencia SELECT. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 3: Diccionario de datos
CVOSOFT IT Academy - Formación en Sistemas.
Existen en ABAP un conjunto de sentencias que se utilizan para acceder a las bases de datos. La principal sentencia es SELECT, cuya sintaxis es la siguiente:
Imagen 1.1 - La sentencia SELECT
Si quisiéramos obtener todos los registros de la tabla ZTABLA_USUARIOS usaríamos el siguiente código:
Imagen 1.2 - La sentencia SELECT *
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
173
Manual de estudios Curso Programador ABAP Nivel Inicial
Donde TI_USUARIOS es una tabla interna del mismo tipo de la tabla ZTABLA_USUARIOS. El asterisco indica que se obtendrán todos los campos de la tabla. La cláusula INTO TABLE se utiliza cuando el resultado de la consulta se guarda en una tabla interna.
En la sentencia anterior, en caso de existir registros en la tabla ZTABLA_USUARIOS, estos pisarán el contenido de la tabla interna TI_USUARIOS. Podría ocurrir que queramos conservar el contenido de la tabla interna TI_USUARIOS luego de reiteradas selecciones. En este caso tendríamos que usar la cláusula APPENDING TABLE en lugar de INTO TABLE.
Si quisiéramos obtener de todos los campos de la tabla ZTABLA_USUARIOS el campo DNI deberíamos crear una tabla auxiliar solo con el campo DNI para alojar el resultado de la consulta.
Imagen 1.3 - SELECT de un solo campo almacenado en una estructura
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
174
Manual de estudios Curso Programador ABAP Nivel Inicial
Si quisiéramos obtener la primera ocurrencia de la tabla ZTABLA_USUARIOS donde se cumpla determinada condición debemos usar la cláusula SINGLE como vemos a continuación:
Imagen 1.4 - La sentencia SELECT SINGLE
El resultado de esta consulta será guardado en la estructura WA_USUARIOS que es del mismo tipo que la tabla ZTABLA_USUARIOS. Si quisiéramos hacer la misma consulta anterior pero necesitamos obtener solo el campo DNI entonces ya no sería necesaria la estructura WA_USUARIOS sino que guardaríamos el resultado en la variable V_DNI tal como vemos en el siguiente ejemplo:
Imagen 1.5 - SELECT de un solo campo almacenado en una variable
Si quisiéramos obtener de una tabla los registros que cumplan una condición pero queremos guardarlos en una tabla interna que no tiene la misma estructura que la tabla, entonces tenemos que usar la cláusula INTO CORRESPONDING FIELDS OF TABLE.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
175
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.6 - La sentencia SELECT INTO CORRESPONDING FIELDS OF TABLE
En el ejemplo anterior, la tabla interna TI_USUARIOS2 está compuesta por los campos NOMBRE_APE y ESTADO_USU. Supongamos que tenemos un reporte que tiene la pantalla de selección:
Imagen 1.7 - Pantalla de selección de un reporte
Donde Nombre y Apellido es el parameter P_NOMAPE y Estado Usuario es el select-options S_ESTADO. Si quisiéramos hacer una selección a la tabla ZTABLA_USUARIOS en base a lo que los usuarios ingresan por pantalla haríamos lo siguiente:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
176
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.8 - Selección utilizando los parámetros de la pantalla de selección
La cláusula IN se utiliza para los select-options en las condiciones de un select. Ahora, si quisiéramos obtener el usuario activo con DNI más alto tendríamos que usar la cláusula MAX de la siguiente forma:
Imagen 1.9 - La sentencia SELECT SINGLE MAX
Si quisiéramos saber la cantidad de usuarios con estado = "activo", debemos usar la cláusula COUNT de la siguiente manera:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
177
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.10 - La sentencia SELECT SINGLE COUNT
Si quisiéramos obtener de una tabla todos los registros que existan en una tabla interna cargada con datos, entonces debemos utilizar la sentencia FOR ALL ENTRIES IN que nos permite especificar condiciones en tiempo de ejecución. Veamos un ejemplo:
Imagen 1.11 - La sentencia FOR ALL ENTRIES
Si quisiéramos obtener todos los registros que cumplan con un patrón de texto en alguno de sus campos, debemos utilizar la sentencia LIKE como vemos en el siguiente ejemplo:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
178
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.12 - La sentencia LIKE
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
179
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
INSERT, UPDATE, MODIFY, DELETE y actualización y recuperación de la BD Aprenderemos a utilizar las sentencias INSERT, UPDATE, MODIFY, DELETE y como realizar la actualización y recuperación de la base de datos. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 3: Diccionario de datos
CVOSOFT IT Academy - Formación en Sistemas.
La sentencia INSERT permite introducir nuevos registros a una base de datos. Por ejemplo, si quisiéramos introducir un nuevo registro en la tabla ZTABLA_USUARIOS haríamos lo siguiente:
Imagen 1.1 - INSERT de un registro en una tabla base de datos
Si quisiéramos introducir todos los registros de una tabla interna haríamos lo siguiente:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
180
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - INSERT de una tabla interna en una tabla base de datos
Si existe algún registro en la base de datos con igual clave que un registro en la tabla interna se producirá un error (SY-SUBRC distinto de cero).
La sentencia UPDATE permite actualizar el contenido de uno o varios registros de una tabla base de datos registros de una tabla base de datos. Por ejemplo, si quisiéramos actualizar un registro de una tabla base de datos haríamos lo siguiente:
Imagen 2.1 - Actualización de un registro de la tabla base de datos
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
181
Manual de estudios Curso Programador ABAP Nivel Inicial
Si quisiéramos actualizar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condición, haríamos lo siguiente:
Imagen 2.2 - Actualizamos los registros que cumplen la condición
Si quisiéramos actualizar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
Imagen 2.3 - Actualización de una tabla base de datos a partir de una tabla interna
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
182
Manual de estudios Curso Programador ABAP Nivel Inicial
La sentencia MODIFY permite modificar el contenido de uno o varios registros de una tabla base de datos. Por ejemplo, si quisiéramos modificar un registro de una tabla base de datos haríamos lo siguiente:
Imagen 3.1 - Modificación de un registro de la tabla base de datos
Si quisiéramos modificar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
Imagen 3.2 - Modificación de una tabla base de datos a partir de una tabla interna
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
183
Manual de estudios Curso Programador ABAP Nivel Inicial
La sentencia DELETE permite borrar el contenido de uno o varios registros de una tabla base de datos. Por ejemplo, si quisiéramos borrar un registro de una tabla base de datos haríamos lo siguiente:
Imagen 4.1 - Borrado de un registro de la tabla base de datos
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
184
Manual de estudios Curso Programador ABAP Nivel Inicial
Si quisiéramos borrar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condición, haríamos lo siguiente:
Imagen 4.2 - Borrado de los registros que cumplan la condición
Si quisiéramos borrar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
Imagen 4.3 - Borrado de los registros que existan en la tabla interna
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
185
Manual de estudios Curso Programador ABAP Nivel Inicial
Para finalizar una unidad de procesamiento lógico LUW de base de datos se utiliza un COMMIT WORK, que realiza un update físico en la base de datos, haciendo irrevocable cualquier modificación en la base de datos. Si deseamos deshacer todas las operaciones realizadas sobre la base de datos desde el último COMMIT WORK, realizaremos un ROLLBACK WORK. Veamos un ejemplo al insertar registros en la base de datos ZTABLA_USUARIOS:
Imagen 5.1 - Las sentencias COMMIT y ROLLBACK
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
186
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
187
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 4: Subrutinas, Funciones y Batch Subrutinas, Funciones y Batch Curso: Programador ABAP Nivel Inicial
CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
188
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
· MÓDULO: PROGRAMADOR ABAP INICIAL · UNIDAD: Subrutinas, Funciones y Batch
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
189
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
190
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
191
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
192
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
193
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Subrutinas Aprenderemos que son las subrutinas y que tipos de subrutinas existen, analizaremos en detalle cada uno de ellos. También analizaremos las distintas formas de pasar parámetros a subrutinas. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 4: Subrutinas, Funciones y Batch
CVOSOFT IT Academy - Formación en Sistemas.
La idea de pasar el código de los programas a subrutinas, es para que los programas sean más fáciles de leer y de mantener.
La modularización ayuda a encontrar más fácilmente los errores en los programas. Esto se debe a que al debaguear un programa solo me preocupo que el resultado de una subrutina sea el esperado sin entrar en detalle de como se llega a ese resultado. Una subrutina se declara con la palabra reservada PERFORM seguida del nombre de la subrutina. Veamos un ejemplo:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
194
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.1 - Declaración de una subrutina
Aquí creamos una subrutina para modularizar la selección de los datos. Si hacemos doble clic en el nombre de la subrutina, el sistema nos propondrá crear la subrutina en la siguiente ventana de diálogo:
Imagen 1.2 - Ventana de diálogo de creación de una subrutina
Contestaremos que sí y el sistema nos preguntará donde queremos generar la subrutina, las opciones son: crear un nuevo include de datos o crearlas en el mismo programa de control. En este caso, las crearemos en el programa de control. Luego el sistema generará el siguiente bloque de código en nuestro programa para que lo completemos con el código que corresponda:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
195
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.3 - Generación de la subrutina
Existen dos tipos de subrutinas: Internas: cuando la subrutina está dentro del mismo programa que la llama. Externas: cuando la subrutina está en un programa distinto al que las llama. Como puede ser el caso de un include de subrutinas o otro programa.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
196
Manual de estudios Curso Programador ABAP Nivel Inicial
Como vimos en el ejemplo del punto 1, para crear una subrutina interna usamos la palabra clave PERFORM seguida del nombre de la subrutina. Esto crea un bloque FORM-ENDFORM donde colocamos nuestro código. Se pueden pasar datos entre los programas principales y una subrutina a través de parámetros. A los parámetros definidos en el programa principal, a la derecha de la palabra PERFORM se los llama parámetros actuales. A los parámetros definidos en la subrutina, a la derecha de la palabra FORM, se los llama parámetros formales.
Los parámetros pueden ser de tres tipos: De entrada: cuando se utilizan para pasar datos del programa principal a la subrutina. De salida: cuando se utilizan para pasar datos de la subrutina al programa principal. De entrada y salida: cuando se utilizan para pasar datos de la subrutina al programa principal y también viceversa.
Para pasar los parámetros utilizaremos tres opciones: USING, CHANGING y TABLES. Estas opciones se deben escribir en el orden que mostramos a continuación en el siguiente gráfico:
Imagen 4.1 - Utilización de USING, CHANGING y TABLES
En el bloque FORM-ENDFORM debemos especificar el tipo de los parámetros formales. De esta forma nos aseguramos que solo se pasen parámetros del tipo que corresponde a la subrutina. Veamos un ejemplo donde pasamos una tabla interna, una estructura y una variable de tipo carácter.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
197
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.2 - Ejemplo de paso de parámetros
Existen tres formas de pasar parámetros: Paso por valor: durante la llamada a la subrutina, los parámetros formales son creados como copias de los parámetros actuales. Los cambios en los parámetros formales no afectan a los parámetros actuales. Veamos un ejemplo:
Imagen 4.3 - Paso de parámetros por valor
Y la salida será B.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
198
Manual de estudios Curso Programador ABAP Nivel Inicial
Paso por referencia: durante la llamada a la subrutina, solo la dirección de los parámetros actuales se transfieren a los parámetros formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si cambiamos los parámetros formales, el contenido del campo del programa que hace la llamada también cambia.
Imagen 4.4 - Paso de parámetros por referencia
Y la salida será A B y X X.
Paso por valor y resultado: durante la llamada a la subrutina, los parámetros formales son creados como copias de los parámetros actuales. Los cambios en los parámetros formales son copiados a los parámetros actuales al final de la subrutina.
Imagen 4.5 - Paso de parámetros por valor y resultado
Y la salida será H1 es: B.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
199
Manual de estudios Curso Programador ABAP Nivel Inicial
Si quisiéramos llamar a una subrutina que está en un programa distinto al que estamos procesando, debemos utilizar la siguiente sintaxis:
Imagen 5.1 - Sintaxis para la llamada de una subrutina externa
También podemos agregar includes de subrutinas a nuestro programa de la siguiente manera:
Imagen 5.2 - Declaración de includes de subrutinas
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
200
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Módulos de Función Aprenderemos que son los módulos de función y cuales son los pasos necesarios para crear un módulo de función. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 4: Subrutinas, Funciones y Batch CVOSOFT IT Academy - Formación en Sistemas.
Para acceder a estas funciones, utilizaremos la transacción SE37 como vemos a continuación:
Imagen 1.1 - Biblioteca de funciones transacción SE37
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
201
Manual de estudios Curso Programador ABAP Nivel Inicial
Tienen una interfaz definida, ya que su diseño facilita el paso de parámetros tanto de entrada como de salida.
Imagen 1.2 - Estructura de un módulo de funciones
Veamos un ejemplo de como utilizar un módulo de función ya existente.
Vamos a crear un nuevo programa ABAP,
donde vamos a ejecutar la función POPUP_TO_CONFIRM que se utiliza para pedir confirmación al usuario antes de tomar una acción determinada.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
202
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.3 - Ejemplo de declaración de POPUP_TO_CONFIRM
La ejecución de este programa dará como resultado la siguiente salida:
Imagen 1.4 - Ejecución de la función POPUP_TO_CONFIRM
Para crear un módulo de función accedemos a la transacción SE37. Allí escribiremos el nombre de nuestra función que será Z_TEST_CLIENTES y presionaremos el botón Crear, como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
203
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - Creamos el módulo de funciones
Inmediatamente después veremos la siguiente ventana de diálogo en donde debemos escribir el nombre del grupo de funciones al que pertenece la función y una descripción breve de la función que queremos crear.
Imagen 2.2 - Introducimos el grupo de funciones y una descripción
Al presionar el botón Grabar el sistema nos informa que previamente a la creación del módulo de funciones debemos crear el Grupo de funciones asociado:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
204
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - El grupo de funciones no existe por lo que lo creamos
Para crear un grupo de funciones, debemos seleccionar en el menú de la transacción SE37 la ruta Pasar a / Gestión gr.funciones / Crear grupo (Goto/Functions Groups/Create Group) tal como vemos a continuación:
Imagen 2.4 - Opción del menú para crear el grupo de funciones
Aquí ingresaremos el nombre de nuestro grupo de función y presionamos el botón Grabar como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
205
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.5 - Introducimos el nombre del grupo de funciones y grabamos
Luego veremos en la parte inferior de la pantalla el siguiente mensaje que nos indica que el grupo de funciones ha sido creado correctamente:
Imagen 2.6 - El grupo de funciones ha sido creado
Si quisiéramos definir variables que se puedan utilizar en todas las funciones pertenecientes a nuestro grupo de funciones, debemos dirigirnos en el menú de la transacción SE37 a Pasar a / Datos Globales (Goto/GlobalData) y veríamos la siguiente pantalla donde definiremos las variables globales.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
206
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.7 - Declaración de datos globales de un grupo de funciones
Si quisiéramos declarar subrutinas que puedan ser utilizadas por todas las funciones del grupo, debemos en el menú de la transacción SE37, ir a Pasar a / Programa de Control (Goto/MainProgram).
Imagen 2.8 - Visualizamos el menú Pasar a / Programa de control
Allí descomentamos el primero de los include que está especificado para Subprogramas, le cambiamos el nombre para que comience con Z, lo creamos haciendo doble clic sobre él y luego colocamos las subrutinas en él.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
207
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.9 - Declaración de subrutinas globales de un grupo de funciones
Finalmente, volvemos a la transacción SE37 con nuestro grupo de funciones creado, presionamos Crear, ingresamos el grupo de función y la descripción de la función, grabamos y veremos la función Z_TEST_CLIENTES creada tal como muestra el siguiente gráfico:
Imagen 2.10 - Módulo de funciones creado
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
208
Manual de estudios Curso Programador ABAP Nivel Inicial
Veamos la utilidad de cada una de las solapas que se visualizan: Atributos (Attributes): aquí especificamos la descripción de la función y el tipo de función que puede ser Normal, RFC o Update module.
Import: aquí especificamos los parámetros de entrada de la función.
Export: aquí especificamos los parámetros de salida de la función.
Modificaciones (Changing): aquí especificamos los parámetros de salida que cambiarán de valor con la ejecución de la función.
Tablas (Tables): aquí especificamos las tablas que se utilizan en la función.
Excepciones (Exceptions): aquí especificamos las excepciones de la función. Una excepción es un error que se produce al ejecutar la función y que ha sido catalogado cuando se creo el módulo de función de modo de poder identificar rápidamente el motivo del error.
Código Fuente (Source Code): aquí pondremos el código ABAP de la función.
Ahora, volviendo a nuestra función Z_TEST_CLIENTES, vamos a agregarle como parámetro de entrada el DNI.
Imagen 2.11 - Agregamos los parámetros de entrada
Y como parámetro de salida, en la solapa Modificaciones definimos la estructura de usuarios de la tabla que creamos en la unidad 2 ZTABLA_USUARIOS.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
209
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.12 - Agregamos los parámetros de salida
Si quisiéramos pasar como parámetro una tabla interna en lugar de una estructura, entonces debemos crear un Tipo Tabla a través de la transacción SE11, por ejemplo ZTT_USUARIOS, el cual va a tener la estructura de la tabla ZTABLA_USUARIOS.
Imagen 2.13 - Como pasar tablas internas como parámetros
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
210
Manual de estudios Curso Programador ABAP Nivel Inicial
Luego pondremos código en la solapa Código Fuente para recuperar de la tabla ZTABLA_USUARIOS, los datos del usuario al que pertenezca el DNI de entrada.
Imagen 2.14 - Introducimos el código fuente de nuestro módulo de funciones
Finalmente activamos.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
211
Manual de estudios Curso Programador ABAP Nivel Inicial
Y podremos probar nuestra función ejecutándola.
Imagen 2.15 - Ejecutamos el módulo de funciones desde la transacción SE37
Y veremos los resultados de la ejecución de la misma:
Imagen 2.16 - Salida del módulo de funciones luego de su ejecución
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
212
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Módulos de función RFC Aprenderemos que es un módulo de función RFC, como se crea una RFC y cuales son los tipos de RFCs existentes. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 4: Subrutinas, Funciones y Batch CVOSOFT IT Academy - Formación en Sistemas.
El objetivo principal de las RFC es acceder a otros ambientes para obtener datos. La comunicación puede darse entre sistemas SAP o entre un sistema SAP y otro sistema que no sea SAP. Para llamar a una función RFC se debe agregar la cláusula DESTINATION al momento de declarar la función, como vemos en el siguiente ejemplo.
Veamos un ejemplo simple de cuando utilizaríamos una RFC: Si quisiéramos leer un registro de un cliente del sistema o ambiente DCR, a través de un programa ABAP existente en el ambiente DTR, crearíamos una RFC en DCR que devuelva los registros de los clientes. Luego llamaríamos a esta función en el ambiente DTR, utilizando un destino que previamente hemos creado a través de la transacción SM59 como veremos más adelante.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
213
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.1 - Ejemplo de utilización de una función RFC
Una función RFC se crea de la misma manera que se crea una función. Se accede a la transacción SE37 y se completan los mismos parámetros que completamos para crear una función a excepción de que se debe seleccionar en la solapa de Atributos la opción Módulo de acceso remoto (Remote Enabled Module) .
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
214
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - Marcamos módulo de acceso remoto
A su vez , las funciones creadas como RFC, pueden ser utilizadas como módulos de función Normales. Esto se logra de dos maneras diferentes: Utilizando la declaración CALL FUNCTION DESTINATION 'NONE' . Utilizando la declaración de un módulo de función normal, sin el agregado de la cláusula DESTINATION.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
215
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen tres tipos de RFC: Sincrónicas: ambos sistemas deben estar disponibles al momento de la llamada de la función. Estas RFC están basadas en una comunicación sincrónica.
Transaccionales: los sistemas no necesitan estar disponibles al momento de la llamada a la función. Un único ID de transacción es generado y los programas llamados son almacenados en el sistema junto con los datos. Para crear una RFC transaccional debo utilizar el sufijo IN BACKGROUND TASK como mostramos en el siguiente gráfico:
Imagen 3.1 - Estructura de una RFC transaccional
En las RFC transaccionales, el sistema deja un log con el pedido de la llamada remota en las tablas estándar de SAP ARFCSSTATE y ARFCSDATA con todos los valores de los parámetros pasados en la ejecución.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
216
Manual de estudios Curso Programador ABAP Nivel Inicial
Para visualizar este log, utilizaremos la transacción SM58.
Imagen 3.2 - Visualizamos el log de ejecución con la transacción SM58
Cuando el programa que ejecuta la RFC ejecuta la sentencia COMMIT WORK, entonces es cuando la llamada remota es enviada al sistema remoto para su ejecución.
Asincrónicas: el programa llamador, llama a la función RFC y inmediatamente después termina su procesamiento. Luego la función RFC se ejecuta independientemente del programa llamador. Para crear una RFC asincrónica debo utilizar el sufijo STARTING NEW TASK como mostramos en el siguiente gráfico:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
217
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.3 - Estructura de una RFC asincrónica
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
218
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Destinos RFC Aprenderemos que es un destino RFC, cuales son los tipos de destinos RFC existentes y como crear, visualizar, actualizar y testear destinos RFC. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 4: Subrutinas, Funciones y Batch
CVOSOFT IT Academy - Formación en Sistemas.
Los destinos de las RFC son creados en la tabla estándar SAP RFCDES a través de la transacción SM59.
Imagen 1.1 - Transacción estándar SM59
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
219
Manual de estudios Curso Programador ABAP Nivel Inicial
Los Tipos de destinos RFC que se pueden crear en SAP son los siguientes: Conexiones ABAP Conexiones HTTP a servidor externo Conexiones internas Conexiones lógicas (SNA o CPI-C) Conexiones TCP/IP Conexiones con ABAP driver
En la transacción SM59 se pueden crear, visualizar, actualizar y testear destinos RFC.
Creación de un destino Para crear un nuevo destino RFC basta con presionar el botón Crear.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
220
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - Creación de un destino RFC
Y luego ingresamos ciertos parámetros que dependerán del tipo de conexión a crear.
Imagen 3.2 - Parámetros propios de la conexión
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
221
Manual de estudios Curso Programador ABAP Nivel Inicial
Visualización/Modificación de un destino Para Visualizar o modificar un destino RFC basta con presionar el botón de visualización o modificación dependiendo de la acción deseada.
Imagen 3.3 - Modificación y visualización de un destino RFC
Testeo de un destino Podemos chequear si un destino funciona correctamente. Para ello, hacemos doble clic sobre el destino y en la pantalla que nos aparece presionamos el botón Test de conexión.
Imagen 3.4 - Prueba de un destino RFC
Si la conexión funciona correctamente, veremos la siguiente pantalla:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
222
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.5 - Test de conexión exitoso
Entrada al sistema Remoto Podemos ingresar al sistema remoto a donde apunta la conexión RFC presionando el botón Entrada al sistema Remota que vemos a continuación:
Imagen 3.6 - Entrada al sistema remoto
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
223
Manual de estudios Curso Programador ABAP Nivel Inicial
Al ejecutar esta opción veremos la pantalla de conexión de SAP en donde deberemos introducir nuestros datos de acceso del sistema destino.
Imagen 3.7 - Introducimos los datos de acceso al sistema
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
224
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Batch Aprenderemos que es la ejecución de fondo de un programa ABAP y como realizarla. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 4: Subrutinas, Funciones y Batch
CVOSOFT IT Academy - Formación en Sistemas.
Existen dos formas de ejecutar un programa en ABAP: Online y Batch. En la ejecución Online el programa se ejecuta al momento de presionar F8 y los resultados de la ejecución se producen de manera inmediata. Esta forma de ejecución es conveniente para los programas donde se requiere interacción con el usuario o cuando el tiempo de ejecución es muy poco. Pero en ciertos otros casos, especialmente hablando en un ambiente real de trabajo, el tiempo de procesamiento de un programa podría ser muy alto. Esto se puede deber a que el programa tiene muchos accesos a base de datos, que tienen millones de registros, a la ejecución de múltiples transacciones o a otras varias razones. Para estos casos que acabamos de mencionar, va a ser conveniente la ejecución Batch o de fondo. Veamos un ejemplo paso a paso de como ejecutar un programa de fondo.
Supongamos que tenemos el programa ABAP ZPRUEBA_FONDO_B que obtiene los registros de la tabla ZTABLA_USUARIOS y los imprime por pantalla.
Imagen 1.1 - Código del programa ZPRUEBA_FONDO_B
Ahora vamos a crear el nuevo programa ABAP ZPRUEBA_FONDO el cual cumplirá el rol de programa padre del programa ZPRUEBA_FONDO_B. Lo primero que debemos hacer es crear un Job. Para esto le asignamos un nombre a la variable V_JOBNAME y luego ejecutamos la función JOB_OPEN. Para modularizar vamos a crear la subrutina ABRIR_JOB que tendrá el siguiente código. ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
225
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Apertura del job mediante la función JOB_OPEN
Lo que sigue es lanzar el Job. Para esto vamos a crear la subrutina LANZAR_JOB, que ejecutará la sentencia SUBMIT, la cual se utiliza para ejecutar un programa dentro de otro programa y con el agregado de la cláusula VIA JOB NUMBER la ejecución del programa se realizará de fondo.
Imagen 1.3 - Lanzamos el job mediante la sentencia SUBMIT ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
226
Manual de estudios Curso Programador ABAP Nivel Inicial
Con el agregado de la cláusula AND RETURN el programa llamador permanece en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina, se devuelve el control al programa llamador. Luego debemos cerrar el Job mediante la función JOB_CLOSE. Para esto vamos a crear la subrutina CERRAR_JOB como vemos a continuación.
Imagen 1.4 - Cerramos el job mediante la función JOB_CLOSE
Por último, después de cerrar el Job, imprimimos por pantalla el mensaje "Se lanzo el Job, para visualizarlo ir a la Trx SM37". Ahora vamos a ejecutar Online el programa ZPRUEBA_FONDO presionando F8. Veremos en la pantalla el mensaje "Se lanzo el Job, para visualizarlo ir a la Trx SM37", por lo tanto vamos a ir a buscar el resultado a la transacción SM37. Allí presionamos F8 o Ejecutar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
227
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.5 - Buscamos el job en la transacción SM37
Identificamos nuestro proceso, lo tildamos y presionamos el botón Spool.
Imagen 1.6 - Seleccionamos nuestro job y presionamos el botón Spool
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
228
Manual de estudios Curso Programador ABAP Nivel Inicial
Ahora vemos el pedido del Job correspondiente a nuestro programa.
Imagen 1.7 - Visualizamos la orden de spool correspondiente a nuestro job
Finalmente, presionamos el botón de visualización
y vemos el resultado del procesamiento.
Imagen 1.8 - Visualizamos la salida del job en pantalla
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
229
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Uso de la memoria en ABAP Aprenderemos a utilizar la memoria en ABAP. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 4: Subrutinas, Funciones y Batch
CVOSOFT IT Academy - Formación en Sistemas.
En ciertas oportunidades, podría pasar que mientras ejecutamos un programa o objeto ABAP, necesitemos de datos que se obtengan en otro programa ABAP que se ejecuto previamente. Existen varias formas de solucionar esto, una de ellas es pasando parámetros de un programa a otro, si es que ambos objetos son programas. Otra opción es utilizar la memoria para pasar los datos. En ABAP existen sentencias que nos permiten manipular fácilmente los datos que subimos y bajamos de memoria. Para subir datos a memoria vamos a utilizar la sentencia EXPORT tal como mostramos a continuación.
Imagen 1.1 - Sintaxis de la sentencia EXPORT
El ID que se utiliza debe ser único. Veamos un ejemplo de como levantar o subir datos a memoria.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
230
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Ejemplo de exportación de datos a memoria
Para bajar o descargar los datos de memoria utilizamos la sentencia IMPORT tal como mostramos a continuación.
Imagen 1.3 - Sintaxis de la sentencia IMPORT
Veamos un ejemplo de como bajar o descargar datos de memoria.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
231
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.4 - Ejemplo de importación de datos desde memoria
Luego de bajar los datos de memoria, es conveniente liberar el área de memoria utilizada. Esto lo hacemos con la sentencia FREE MEMORY tal como vemos a continuación.
Imagen 1.5 - Liberamos la memoria luego de utilizada
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
232
Manual de estudios Curso Programador ABAP Nivel Inicial
Utilizaremos la sentencia SUBMIT para poder llamar a un programa dentro de la ejecución de otro programa. Veamos un ejemplo de un programa que exporta datos:
Imagen 1.6 - Ejemplo de programa que exporta datos a memoria
Luego en el programa que importa los datos haremos lo siguiente:
Imagen 1.7 - Ejemplo de programa que importa datos de memoria
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
233
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
234
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 5: Reportes Reportes Curso: Programador ABAP Nivel Inicial
CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
235
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
MÓDULO: PROGRAMADOR ABAP INICIAL UNIDAD: Reportes
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
236
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
237
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
238
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
239
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
240
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Conceptos importantes de reportes Aprenderemos a crear una variante de ejecución, a crear una transacción asociada a un reporte. Analizaremos el navegador de objetos y la Utilización de colores en reportes. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 5: Reportes
CVOSOFT IT Academy - Formación en Sistemas.
Supongamos que tenemos un queremos
ejecutar
nuestro
reporte que tiene una pantalla de selección con 20 parámetros. Si cada vez que reporte,
tenemos
que
introducir
en
la
pantalla
el
contenido
de
los
20
parámetros perderíamos mucho tiempo. Para solucionar este inconveniente, SAP creo el concepto de variante, que es aplicable tanto a reportes como a cualquier objeto que se pueda ejecutar y que permite guardar los parámetros ingresados por pantalla, para no tener que volver a cargarlos.
Para probar este nuevo concepto, vamos a crear el reporte ZPRUEBA_USUARIOS y le vamos a ingresar los siguientes datos en la pantalla de selección que vemos a continuación.
Imagen 1.1 - Primer paso para crear una variante de ejecución
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
241
Manual de estudios Curso Programador ABAP Nivel Inicial
Luego, presionamos en el menú el botón
Guardar
y veremos la siguiente pantalla donde asignaremos un nombre y
una descripción a la variante.
Imagen 1.2 - Asignamos un nombre y descripción a la variante
Finalmente presionamos guardar de nuevo y quedará guardada la variante ZPRUEBA.
Imagen 1.3 - La variante se crea correctamente ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
242
Manual de estudios Curso Programador ABAP Nivel Inicial
Si ejecutamos otra vez el reporte, veremos en el menú, el botón
obtener variante.
Imagen 1.4 - El botón obtener variantes
Si hacemos clic, podremos ver las variantes disponibles para el reporte.
Imagen 1.5 - Visualizamos las variantes disponibles para el reporte
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
243
Manual de estudios Curso Programador ABAP Nivel Inicial
Para que los usuarios finales puedan utilizar los programas que nosotros desarrollamos, debemos crear transacciones asociadas a los programas, ya que ellos no tienen acceso a la transacción SE38, ni a ninguna otra transacción de desarrollo. Mediante la transacción estándar SE93, podemos crear transacciones asociadas a reportes.
Veamos un ejemplo. Vamos a ejecutar la transacción SE93, completamos el nuevo nombre de la transacción, que será ZTRX_USUARIOS y hacemos clic en el botón
Crear.
Imagen 2.1 - Creación de una transacción en la transacción SE93
Luego veremos una ventana de diálogo donde completamos la descripción breve y seleccionamos el tipo de transacción, que en nuestro caso será transacción de reporte y hacemos clic en continuar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
244
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.2 - Completamos la descripción y seleccionamos el tipo
En la siguiente pantalla, ingresamos el nombre del programa (el cual debe existir previamente), la pantalla de selección inicial, que por default (defecto) es la 1000, podemos agregar una variante para que se ejecute con la transacción y finalmente grabamos.
Imagen 2.3 - Introducimos los datos del programa
Luego para ejecutar nuestra transacción la escribimos en el campo de comandos y presionamos enter como con cualquier otra transacción estándar de SAP.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
245
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.4 - Ejecutamos nuestra transacción desde el campo de comandos
Mediante la transacción SE80 podemos crear, modificar y visualizar todo tipo de objetos. Algunos de ellos son: Paquetes, Programas, Módulos de función, Clases, Aplicaciones WebDynpro, etc.
Al momento de crear un programa de cierta complejidad, esta transacción resulta mucho más útil que la SE38, ya que permite crear directamente desde aquí, todos los objetos componentes de dicho programa.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
246
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - El navegador de objetos correspondiente a la transacción SE80
Se pueden utilizar colores a la hora de hacer impresiones por pantalla, tanto en un reporte interactivo como en un reporte clásico. Para esto, vamos a ejecutar la sentencia FORMAT COLOR antes de hacer un WRITE tal como mostramos a continuación.
Imagen 4.1 - La sentencia FORMAT COLOR
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
247
Manual de estudios Curso Programador ABAP Nivel Inicial
Y la salida de esta sentencia en un reporte será:
Imagen 4.2 - Salida por pantalla utilizando la sentencia FORMAT COLOR
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
248
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Status GUI y Títulos Aprenderemos a crear los Status GUI y los títulos de nuestros reportes. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 5: Reportes
CVOSOFT IT Academy - Formación en Sistemas.
Está compuesto por barras de menú, barras de herramientas estándar, barras de herramientas de aplicaciones y la configuración de teclas de función. En el siguiente gráfico, identificamos cada uno de los componentes en la pantalla de salida de un reporte ABAP.
Imagen 1.1 - Componentes existentes en un STATUS GUI
Vamos a crear un Status GUI para el reporte ZPRUEBA_EST_USUARIOS, que mostrará los usuarios activos y los inactivos dependiendo de que botón de la barra de herramientas de la aplicación ha sido presionado. Para esto, accedemos a la transacción SE80, ingresamos el nombre del programa, presionamos enter y lo creamos tal como lo hacíamos a través de la transacción SE38.
Luego, vamos a crearle un Status GUI, para ello sobre el nombre del programa, hacemos botón derecho Crear / Status GUI tal como vemos en la siguiente imagen:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
249
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Ruta del menú para crear un STATUS GUI
En la siguiente ventana, ingresamos el nombre del Status GUI, que será 0100, una descripción que podría ser "Status del reporte de usuarios" y presionamos continuar.
Imagen 1.3 - Introducimos un nombre y una descripción para el STATUS GUI
Luego veremos a la derecha de la pantalla, los componentes del Status GUI como vemos a continuación.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
250
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.4 - Visualizamos los componentes del STATUS GUI
Luego, desplegamos la lista que está en la Barra de pulsadores y en el primer ítem en blanco, escribimos el código de función correspondiente a la ejecución del botón de usuarios activos, que será USU_ACTI y presionamos enter.
Imagen 1.5 - Creamos un botón en la barra de pulsadores
Aquí veremos una ventana de diálogo que nos indicará que no existe texto asignado a esa función y presionaremos continuar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
251
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.6 - El código de función asignado no se ha utilizado para otro botón
Luego veremos otra ventana donde completamos los datos referentes al nuevo botón.
Imagen 1.7 - Completamos la información requerida para el nuevo botón
Código de Función: se utiliza para darle un nombre al botón.
Texto función: se corresponde al texto que se muestra a la derecha del ícono del botón.
Nombre ícono: será el ícono que se visualice por pantalla dentro del botón. Este se puede elegir dentro de un gran variedad de íconos que se visualizan presionando F4.
Texto Info: es el nombre de ayuda del botón. Este se visualizará cuando dejemos quieto unos segundos el puntero del mouse sobre el botón.
Luego presionamos continuar y en la siguiente ventana de diálogo asignaremos una tecla de función al botón, que tendrá el mismo efecto que cuando hacemos clic con el puntero del mouse el botón. Por ejemplo, seleccionamos ShiftF1 y presionamos continuar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
252
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.8 - Seleccionamos una tecla de función
Finalmente con el botón creado veremos el primer ítem de la siguiente manera.
Imagen 1.9 - Visualizamos el botón creado en la barra de pulsadores
Aquí presionamos enter sobre el código USU_ACTI y completamos en la siguiente ventana, el campo Icon text. que será el texto que se visualice dentro del botón en la pantalla de salida.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
253
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.10 - Completamos más información del botón
Luego haremos lo mismo con el botón de usuarios inactivos, cuyo código será USU_INACTI y finalmente grabamos los cambios realizados y activamos.
Imagen 1.11 - Creamos el botón de usuarios inactivos
Ahora vamos a introducir código en el reporte para poder utilizar el nuevo Status GUI. Lo primero que debemos hacer es declarar la utilización del status. Esto lo haremos mediante la sentencia SET PF-STATUS, tal como vemos a continuación.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
254
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.12 - Declaramos el STATUS mediante la sentencia SET PF-STATUS
Luego para capturar cual botón presiono el usuario, utilizaremos el evento AT USER-COMMAND junto con la variable del sistema SY-UCOMM que contendrá el código de función correspondiente al botón presionado. Las
subrutinas
USUARIOS_ACTIVOS
y
USUARIOS_INACTIVOS
realizan
la
selección
e
impresión
de
los
correspondientes registros de la tabla ZTABLA_USUARIOS.
Imagen 1.13 - Analizamos que botón presionó el usuario
Finalmente activamos y al ejecutar el reporte veremos:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
255
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.14 - Visualización de los botones al ejecutar el programa
Si presionamos el botón "Reporte de usuarios activos" vemos un listado de los usuarios activos. Si no existen registros de usuarios activos, visualizaremos un mensaje de error. Lo mismo sucederá con los usuarios inactivos.
Imagen 1.15 - Salida por pantalla al presionar el botón reporte de usuarios activos
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
256
Manual de estudios Curso Programador ABAP Nivel Inicial
Vamos a crear títulos para nuestro reporte. Para ello, en la transacción SE80, sobre el nombre del programa, hacemos botón derecho Crear/Títulos GUI, tal como vemos en la imagen siguiente.
Imagen 2.1 - Ruta utilizada para la creación de títulos
En la siguiente ventana asignaremos un nombre al título y su descripción, que será la que se visualice en pantalla.
Imagen 2.2 - Asignamos un nombre y una descripción al título
Luego crearemos el título 0200 para los usuarios inactivos y el título 0300 para la primer pantalla del reporte. Finalmente, presionamos el botón "Títulos (todos)" y veremos en pantalla los tres títulos creados. Lo último que nos queda es activarlos.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
257
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - Activamos todos los títulos creados
Para declarar la utilización de los títulos en el reporte, usamos la sentencia SET TITLE tal como vemos en el siguiente gráfico.
Imagen 2.4 - Declaramos los títulos mediante la sentencia SET TITLE
Finalmente al ejecutar el reporte, visualizaremos los títulos, según los botones presionados de la pantalla.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
258
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.5 - Visualizamos los títulos creados al presionar los botones correspondientes
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
259
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Reportes Interactivos Aprenderemos que es un Reporte interactivo, cuales son los Eventos y las variables del sistema que debemos tener en cuenta en un reporte interactivo y crearemos nuestro primer reporte interactivo. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 5: Reportes
CVOSOFT IT Academy - Formación en Sistemas.
A diferencia del Reporte clásico, que puede ser ejecutado tanto Online como Batch, el reporte interactivo es ejecutado solo en forma Online, ya que requiere de la interacción con el usuario.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
260
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.1 - Lógica de procesamiento de los reportes interactivos
Veamos un ejemplo para el cual nos convendría crear un reporte interactivo: Supongamos que tenemos un primer listado que muestra los usuarios con sus nombres y luego cuando hacemos doble clic sobre un usuario en particular, vemos datos detallados del usuario, como pueden ser el país, código postal, región, etc. En este caso, bastaría con crear un reporte interactivo para cumplir con este requerimiento.
Cuando hacemos clic en alguna posición de la lista principal que se muestra por pantalla, se ejecutará el evento AT LINE-SELECTION. Este evento debemos ubicarlo luego del evento START-OF-SELECTION. En este momento, ciertas variables del sistema se completan con información muy útil. Ellas son:
SY-LSIND:
contiene el indice de la lista de detalle.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
261
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - La variable del sistema SY-LSIND
SY-LISEL:
tiene el contenido de la línea seleccionada.
Imagen 2.2 - La variable del sistema SY-LISEL
SY-LILLI:
contiene la línea seleccionada de la lista.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
262
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - La variable del sistema SY-LILLI
SY-CUROW:
contiene la posición del cursor vertical en la pantalla.
Imagen 2.4 - La variable del sistema SY-CUROW
Utilizaremos el evento TOP-OF-PAGE DURING LINE-SELECTION para imprimir por pantalla los textos de las cabeceras de las listas de detalle.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
263
Manual de estudios Curso Programador ABAP Nivel Inicial
Vamos a crear el reporte interactivo del ejemplo que dimos en el punto 1. Para esto, vamos a agregar en nuestra tabla de usuarios ZTABLA_USUARIOS los campos: DIRECCION que será CHAR de 30 posiciones, CODIGO_POSTAL que será CHAR de 4 posiciones, F_NACIMIENTO que será DATS de 8 posiciones y ESTADO_CIVIL que tendrá un dominio, que será CHAR de 1 posición y admitirá los valores S(Soltero) y C (Casado).
Después debemos volver a generar la superficie de actualización, que creamos en la unidad 3 y finalmente ingresamos datos en la tabla a través de la transacción SM30. Luego creamos el programa ABAP ZREPORTE_INT_USUARIOS. Dentro del evento START-OF-SELECTION realizamos la selección del DNI y Nombre y Apellido de los usuarios. Después imprimimos por pantalla el resultado de la selección realizada.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
264
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - Creamos nuestro primer reporte interactivo
La salida por pantalla de nuestro programa se verá de la siguiente manera:
Imagen 3.2 - Salida por pantalla del reporte
Ahora vamos a agregar el evento AT LINE-SELECTION. El código que este dentro de este evento se ejecutará cuando hagamos doble clic en algún lugar de la pantalla, donde se visualiza el primer listado. Utilizaremos la variable del sistema SY-LISEL para obtener el DNI correspondiente a la línea de la pantalla a la cual le realizamos clic.
Luego crearemos la subrutina GENERAR_REPORTE_NIVEL2, la cual seleccionará de la tabla ZTABLA_USUARIOS los datos de detalle correspondientes al usuario, cuyo DNI fue capturado anteriormente y los imprimirá por pantalla.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
265
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.3 - Declaramos la subrutina que crea el reporte de nivel 2
Utilizaremos el evento TOP-OF-PAGE DURING LINE-SELECTION para imprimir por pantalla la cabecera de cada nivel de listados de detalle.
Imagen 3.4 - Imprimimos el encabezado de cada nivel
Finalmente ejecutamos el reporte, hacemos clic en la línea correspondiente al DNI 23547312 y veremos el siguiente detalle.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
266
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.5 - Al presionar una línea del listado principal visualizamos el listado de nivel 2
Otra posibilidad, es mostrar la pantalla del nivel de detalle como una ventana de dialogo o subscreen. Para esto usamos la sentencia WINDOWS STARTING AT tal como mostramos a continuación.
Imagen 3.6 - La sentencia WINDOWS STARTING AT
Y se visualizará la ventana de la siguiente manera:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
267
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.7 - Visualizamos el listado de nivel 2 en una ventana de diálogo
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
268
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Reportes ALV: Grillas y Listas Aprenderemos que es un ALV y crearemos nuestro primer reporte ALV. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 5: Reportes
CVOSOFT IT Academy - Formación en Sistemas.
Las principales ventajas de los reportes ALV son:
Simplifican el desarrollo de reportes, por lo tanto se reducen los tiempos de programación
Proporcionan a nuestros reportes un montón de funcionalidad estándar
Proporcionan una salida por pantalla estandarizada e uniforme
Imagen 1.1 - Ejemplo de un reporte ALV en donde identificamos sus principales componentes
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
269
Manual de estudios Curso Programador ABAP Nivel Inicial
La creación de un Reporte ALV, se basa en la utilización de funciones. Los tipos de ALV más comúnmente usados son tres: Grillas, Listas y Jerárquico. Las Grillas y las Listas pueden utilizarse en cualquier reporte, pero el Jerárquico se utiliza sólo en los casos donde se muestran datos de cabecera y de detalle, como por ejemplo números de factura y detalles o Aerolíneas y vuelos. A cada tipo de ALV le corresponde una función diferente. Ellas son:
Grillas -> REUSE_ALV_GRID_DISPLAY
Imagen 1.2 - Reporte ALV Grilla
Listas -> REUSE_ALV_LIST_DISPLAY
Imagen 1.3 - Reporte ALV Lista
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
270
Manual de estudios Curso Programador ABAP Nivel Inicial
Jerárquico -> REUSE_ALV_HIERSEQ_LIST_DISPLAY
Imagen 1.4 - Reporte ALV Jerárquico
Vamos a crear nuestro primer reporte ALV. Para esto seguiremos los siguientes pasos:
PASO 1ero. : Declaraciones de tipos, estructuras y tablas propias del ALV Dentro de este paso, declaramos el tipo SLIS, que es necesario para la utilización de reportes ALV.
Imagen 2.1 - El TYPE-POOLs slis
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
271
Manual de estudios Curso Programador ABAP Nivel Inicial
También declaramos una tabla y una estructura para el catálogo del ALV que son del tipo SLIS_T_FIELDCAT_ALV y SLIS_FIELDCAT_ALV, otra estructura para la configuración de la salida que es del tipo SLIS_LAYOUT_ALV y una variable del tipo SY-REPID, para almacenar el nombre del programa.
Imagen 2.2 - Declaramos el catálogo del ALV
PASO 2do. : Declaración de la tabla de salida del ALV Vamos a declarar la tabla de salida TI_USUARIOS que se mostrará en el ALV.
Imagen 2.3 - La tabla de salida del ALV
PASO 3ero. : Selección de los datos que se mostrarán en el ALV Ahora seleccionamos los datos de la tabla ZTABLA_USUARIOS, que mostraremos en el listado de salida y los guardamos en la tabla interna TI_USUARIOS.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
272
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.4 - Seleccionamos los datos a mostrar en el ALV
PASO 4to. : Armado del catálogo del ALV Armamos el catálogo del ALV con los campos que serán las columnas de nuestro reporte. Para ello, completaremos para cada columna del listado, los siguientes campos pertenecientes a la tabla del catálogo.
Imagen 2.5 - Completamos el catálogo del ALV
PASO 5to. : Configuración de la salida del ALV Vamos a cargar con valores la estructura ST_LAYOUT para configurar ciertos aspectos de la salida del ALV.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
273
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.6 - Configuración del layout del ALV
PASO 6to. : Ejecución de la función del ALV Por último, lo que nos queda es la ejecución de la función del ALV. Si queremos un reporte tipo grilla, ejecutaremos la función
REUSE_ALV_GRID_DISPLAY.
Si
queremos
un
reporte
tipo
lista,
ejecutaremos
la
función
REUSE_ALV_LIST_DISPLAY. Ambas funciones se completan de la misma manera. Como dijimos anteriormente, los ALV jerárquicos se utilizan para cuando tenemos que mostrar datos de cabecera y detalle, por lo tanto no es aplicable para este ejemplo. Si es grilla:
Imagen 2.7 - La función REUSE_ALV_GRID_DISPLAY
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
274
Manual de estudios Curso Programador ABAP Nivel Inicial
Si es lista:
Imagen 2.8 - La función REUSE_ALV_LIST_DISPLAY
Finalmente si ejecutamos el reporte veremos, si usamos la función para grillas:
Imagen 2.9 - Salida por pantalla del ALV GRID
Y si usamos la función para listas:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
275
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.10 - Salida por pantalla del ALV LIST
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
276
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Catálogo ALV automático, logos, encabezados y status Aprenderemos a crear el catálogo de un reporte ALV en forma automática. Analizaremos como incluir Logos, encabezados y Status GUIs. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 5: Reportes
CVOSOFT IT Academy - Formación en Sistemas.
Existen dos formas de crear el catálogo del ALV, la primera es en forma manual, ingresando campo por campo, tal como hicimos en el ejemplo de la lección anterior. La segunda, es crear el catálogo en forma automática con la función REUSE_ALV_FIELDCATALOG_MERGE. Si tomamos el ejemplo de la lección anterior, el código para la creación automática sería el siguiente:
Imagen 1.1 - Creación automática del catálogo del ALV
Pero para poder hacer esto vamos a tener que modificar dos puntos del programa. El primero es la forma como se declara la tabla interna del ALV. Si creamos el catálogo en forma automática debemos declarar la tabla interna utilizando LIKE y haciendo referencia a campos de una tabla base de datos existente.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
277
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Declaración de la tabla interna del ALV
Lo otro que debemos hacer es configurar el editor, para que se restrinja la cantidad de caracteres de ancho de la pantalla a 72.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
278
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.3 - Configuración del editor para 72 columnas de ancho
En los ALV Grilla podemos agregar logos y encabezados en los listados. Para ello, debemos declarar una tabla del tipo SLIS_T_LISTHEADER y una estructura del tipo SLIS_LISTHEADER.
Imagen 2.1 - Declaración de la tabla y estructura para el encabezado
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
279
Manual de estudios Curso Programador ABAP Nivel Inicial
Antes de completar el catálogo, vamos a llenar la tabla TI_HEADER con el encabezado del Reporte, el tipo de reporte y la fecha del sistema.
Imagen 2.2 - Llenamos la tabla interna del encabezado
Luego, agregamos en la llamada a la función del ALV, el parámetro exporting I_CALL_TOP_PAGE con el literal 'TOP_OF_PAGE', que será el nombre de la subrutina que cargue el contenido del encabezado y el logo.
Imagen 2.3 - El parámetro EXPORTING I_CALL_TOP_PAGE
Ahora creamos la subrutina TOP_OF_PAGE, con la llamada a la función REUSE_ALV_COMMENTARY_WRITE, que carga el encabezado que definimos en la tabla interna TI_HEADER, junto con el logo 'ENJOYSAP_LOGO'.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
280
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.4 - La función REUSE_ALV_COMMENTARY_WRITE
Finalmente ejecutamos el programa y vemos:
Imagen 2.5 - Visualizamos el encabezado con toda la información correpondiente
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
281
Manual de estudios Curso Programador ABAP Nivel Inicial
Para poder utilizar un Status GUI en un reporte ALV, vamos a agregar en la llamada a la función del ALV el parámetro exporting I_CALLBACK_PF_STATUS_SET con el literal 'PF_STATUS', que será el nombre de la subrutina que declare la
utilización
del
Status
GUI
y
el
parámetro
exporting
I_CALLBACK_USER_COMMAND
con
el
literal
'USER_COMMAND', que será el nombre de la subrutina que se ejecute para capturar la acción realizada por el usuario.
Imagen 3.1 - Lo s pa rámetros I_CALLBACK_PF_STATUS_SET y I_CALLBACK_USER_COMMAND
Ahora definimos la subrutina PF_STATUS que setea el status.
Imagen 3.2 - Subrutina que declara el STATUS
Vamos a crear en el status, un botón con la descripción "Usuarios activos" y el código USU_ACTI. También en las Teclas de función (Function Keys) del status, agregamos los códigos para poder navegar para atrás, volver a la pantalla principal o salir del programa. Cuando creamos estos botones, debemos acordarnos de setearlos con Tipo de función (Function Type) igual a ''E' ', sino no funcionarán como esperamos.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
282
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.3 - Teclas de función de navegación
Imagen 3.4 - El tipo de función debe ser Comando Exit
Por último agregamos la subrutina que capturará las acciones realizadas por el usuario.
Imagen 3.5 - Escribimos el código que procesará la acción deseada
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
283
Manual de estudios Curso Programador ABAP Nivel Inicial
Finalmente si ejecutamos el reporte, veremos en el Status GUI, el botón de usuarios activos y si lo ejecutamos, se procesará el código existente en la subrutina USER_COMMAND.
Imagen 3.6 - Visualizamos el STATUS GUI en la salida del reporte
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
284
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
ALV Jerárquico y Agrupamiento Aprenderemos a agrupar los datos de un reporte ALV y analizaremos el tipo de reporte ALV Jerárquico. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 5: Reportes
CVOSOFT IT Academy - Formación en Sistemas.
Podemos
agrupar
los
registros
que
mostramos
en
un
ALV.
Para
ello,
declaramos
una
tabla
del
tipo
SLIS_T_SORTINFO_ALV y una estructura del tipo SLIS_SORTINFO_ALV.
Imagen 1.1 - Tabla y estructura necesarias para agrupar el ALV
Luego antes de llamar a la función del ALV, vamos a cargar la tabla TI_SORT con los registros en el orden en el que deseamos agrupar.
Imagen 1.2 - Cargamos la tabla interna de agrupamiento del ALV
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
285
Manual de estudios Curso Programador ABAP Nivel Inicial
Ahora debemos completar el parámetro exporting IT_SORT con nuestra tabla interna TI_SORT.
Imagen 1.3 - Completamos el parámetro exporting IT_SORT
Finalmente, si ejecutamos el reporte, veremos la agrupación por Estado Civil.
Imagen 1.4 - Al ejecutar el reporte visualizamos la agrupación
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
286
Manual de estudios Curso Programador ABAP Nivel Inicial
Como dijimos anteriormente, los ALV Jerárquicos se utilizan cuando tenemos que mostrar en un reporte, datos de cabecera y de posición. En las declaraciones de las tablas internas de cabecera y posiciones, debe haber como mínimo un campo en común. En el caso que mostramos a continuación, el campo común es el CARRID, que es la compañía aérea.
Imagen 2.1 - Tablas internas que vamos a utilizar en el ALV Jerárquico
Debemos declarar una estructura del tipo SLIS_KEYINFO_ALV, que será ST_KEYINFO y contendrá el campo clave que une a las dos tablas internas.
Imagen 2.2 - Estructura que almacena el campo clave de unión
Ahora vamos a cargar las tablas internas de cabecera y detalle con un juego de datos para la compañía aérea ARG. En el programa de ejemplo de la lección, también cargamos un juego de datos para la compañía aérea LAN.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
287
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - Cargamos las tablas internas del ALV Jerárquico
Luego crearemos el catálogo del ALV para ambas tablas internas, sumando los campos de ambas tablas en la tabla del catálogo TI_CATALOGO.
Imagen 2.4 - Completamos el catálogo en forma automática para ambas tablas internas
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
288
Manual de estudios Curso Programador ABAP Nivel Inicial
Ahora tenemos que completar la estructura ST_KEYINFO. En los campos HEADER01 y ITEM01 va a ir el campo de la tabla de cabecera que hace de vínculo con la tabla de detalles.
Imagen 2.5 - Completamos el campo clave de unión
Por último, ejecutamos la función REUSE_ALV_HIERSEQ_LIST_DISPLAY.
Imagen 2.6 - La función REUSE_ALV_HIERSEQ_LIST_DISPLAY
Y veremos el siguiente reporte ALV:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
289
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.7 - Salida por pantalla del reporte ALV Jerárquico
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
290
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
291
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 6: Tratamiento de Archivos y Field Symbols Tratamiento de Archivos y Field Symbols Curso: Programador ABAP Nivel Inicial
CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
292
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
· MÓDULO: PROGRAMADOR ABAP INICIAL · UNIDAD: Tratamiento de Archivos y Field Symbols
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
293
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
294
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
295
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
296
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
297
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Archivos Locales: Upload de datos Aprenderemos a trabajar con archivos locales. También analizaremos búsqueda de archivos locales en la PC y como realizar la lectura de datos de los archivos locales. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 6: Tratamiento de Archivos y Field Symbols
CVOSOFT IT Academy - Formación en Sistemas.
ABAP nos proporciona una serie de métodos muy útiles para el tratamiento de archivos locales ubicados en nuestra PC mediante la clase CL_GUI_FRONTEND_SERVICES. Los conceptos de clases y métodos los veremos en detalle en el "Módulo Programador ABAP Nivel Avanzado". Por ahora, nos basta con entender que los métodos se ejecutan como si fueran funciones. Para visualizar todos los métodos disponibles en la clase, editamos un programa ABAP y presionamos el botón Modelo (Pattern).
Imagen 1.1 - El botón Modelo
Aquí marcamos la opción Patrón p.objetos ABAP (ABAP Object Patterns) y presionamos continuar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
298
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Seleccionamos Patrón para param. objetos
En la siguiente pantalla escribimos lo siguiente:
Imagen 1.3 - Introducimos la clase CL_GUI_FRONTEND_SERVICES
Y luego presionamos F4 en Método (Method) y veremos la siguiente pantalla con todos los métodos de la clase:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
299
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.4 - Visualizamos todos los métodos de la clase CL_GUI_FRONTEND_SERVICES
Veremos en detalle los siguientes métodos: FILE_OPEN_DIALOG: para mostrar la pantalla de navegación que permita al usuario poder seleccionar el archivo del directorio de su PC. GUI_DOWNLOAD: para descargar datos de los programas a archivos en la PC. GUI_UPLOAD: para bajar datos de los archivos de la PC a nuestros programas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
300
Manual de estudios Curso Programador ABAP Nivel Inicial
Para buscar archivos locales en el directorio de nuestra PC, utilizaremos el método FILE_OPEN_DIALOG. Veamos un ejemplo de su utilización:
Imagen 2.1 - El método FILE_OPEN_DIALOG
Analicemos los parámetros más importantes del método: WINDOW_TITLE: asigna un título a la ventana de búsqueda.
DEFAULT_FILENAME: contiene el nombre del archivo que buscamos en nuestra PC. Si colocamos el literal asterisco podremos ver todos los archivos que se encuentren en los directorios.
FILE_TABLE: contiene la ruta y nombre del archivo seleccionado. Al igual que las funciones, el método FILE_OPEN_DIALOG tiene definidas excepciones. Cada excepción tiene asociada una descripción que contempla cada uno de los errores posibles que pueden ocurrir al ejecutar dicho método. Si ejecutamos el código anterior veremos la siguiente ventana de diálogo:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
301
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.2 - Ventana de diálogo para buscar archivos
Para leer datos de los archivos locales en las tablas internas de nuestros programas, utilizaremos el método GUI_UPLOAD.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
302
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.1 - El método GUI_UPLOAD
Analicemos los parámetros más importantes del método: FILENAME: contiene el directorio y nombre del archivo local con el que estamos trabajando.
FILETYPE: contiene el tipo o extensión del archivo local. Los tipos admitidos son: BIN: para archivos binarios. ASC: para archivos ASCII. DAT: para archivos excel. Las columnas son separadas utilizando tabs. Las líneas son separadas con saltos de línea. WK1: para archivos excel y de lotus.
HAS_FIELD_SEPARATOR: indica que el archivo local tiene separadores.
DATA_TAB: es la tabla interna donde almacenaremos los datos del archivo local.
En este método están definidas excepciones con descripciones que contemplan cada uno de los errores que se pueden producir al ejecutar el método.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
303
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
304
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Archivos Locales: Download de datos Aprenderemos a grabar datos en archivos locales. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 6: Tratamiento de Archivos y Field Symbols
CVOSOFT IT Academy - Formación en Sistemas.
Para grabar datos existentes en las tablas internas de nuestros programas a archivos ubicados en la PC, utilizaremos el método GUI_DOWNLOAD. Veamos un ejemplo de su utilización:
Imagen 1.1 - El método GUI_UPLOAD
Analicemos algunos de los parámetros del método: FILENAME: contiene el directorio y nombre del archivo a descargar a la PC.
FILETYPE: contiene el tipo o extensión del archivo que descargamos a la PC.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
305
Manual de estudios Curso Programador ABAP Nivel Inicial
Los tipos o extensiones admitidas son: BIN: para archivos binarios. Se debe especificar la longitud del archivo en el parámetro
BIN_FILESIZE. La tabla interna que se utiliza debe tener un solo campo del tipo X. ASC: para archivos ASCII. DAT: para archivos excel. Las columnas son separadas utilizando tabs.
Las líneas son separadas con saltos de línea. WK1: para archivos excel y de lotus.
WRITE_FIELD_SEPARATOR: indica si se generará un separador de archivo o no y cual será.
DATA_TAB: aquí se almacena el contenido del archivo. Esta tabla debe tener la misma estructura del archivo.
En este método también están definidas excepciones con descripciones que contemplan cada uno de los errores que se pueden producir al ejecutar el método. Luego si ejecutamos el código veremos el mensaje que dice que la transferencia de datos se realizó correctamente y se especifica la cantidad de bytes transferida.
Imagen 1.2 - Transferencia realizada correctamente
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
306
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Archivos en Servidor: las sentencias OPEN y READ Aprenderemos a trabajar con archivos en el servidor y analizaremos como se realiza la apertura y lectura de los archivos en el servidor. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 6: Tratamiento de Archivos y Field Symbols
CVOSOFT IT Academy - Formación en Sistemas.
En un ambiente real de trabajo, es común la utilización de un servidor de aplicaciones, para trabajar con archivos. ABAP dispone de una serie de sentencias para el tratamiento de archivos ubicados en el servidor de aplicaciones. Las principales sentencias para el manejo de archivos en el servidor de aplicaciones son: OPEN DATASET:
para la apertura de archivos del servidor.
READ DATASET:
para la lectura de archivos del servidor.
TRANSFER: DELETE: CLOSE:
para transferir datos de archivos al servidor.
para borrar archivos del servidor.
para cerrar archivos del servidor.
A continuación veremos en detalle cada una de estas sentencias.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
307
Manual de estudios Curso Programador ABAP Nivel Inicial
Utilizaremos la sentencia OPEN DATASET para la apertura de archivos. La sintaxis de la sentencia es la siguiente:
Imagen 2.1 - La sentencia OPEN DATASET
El nombre del archivo junto con el directorio en donde se encuentra, pueden ingresarse como un literal entre comillas o en una variable. Si no ingresamos el directorio y solo ingresamos el nombre, entonces el sistema intentará abrir el archivo en el directorio en el que corre el servidor de aplicaciones. Si queremos abrir un archivo para lectura, debemos utilizar la cláusula FOR INPUT, tal como vemos a continuación:
Imagen 2.2 - Apertura de archivos para lectura
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
308
Manual de estudios Curso Programador ABAP Nivel Inicial
Veamos un ejemplo:
Imagen 2.3 - Ejemplo de apertura de archivo para lectura
En el ejemplo anterior, p_path es una parámetro de la pantalla de selección en donde el usuario ingresa el directorio y nombre del archivo.
Si queremos abrir un archivo para escritura, debemos utilizar la cláusula FOR OUTPUT, tal como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
309
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.4 - Apertura de archivos para escritura
Veamos un ejemplo:
Imagen 2.5 - Ejemplo de apertura de archivo para escritura
Si queremos abrir un archivo para agregar información, debemos utilizar la cláusula
FOR APPENDING, tal como
vemos a continuación.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
310
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.6 - Apertura de archivos para agregar información
Veamos un ejemplo:
Imagen 2.7 - Ejemplo de apertura de archivos para agregar información
Existen dos modos de apertura de archivos: MODO TEXTO
Para abrir un archivo en modo texto, debemos utilizar la cláusula IN TEXT MODE, tal como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
311
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.8 - Apertura de archivos en modo texto
Veamos un ejemplo:
Imagen 2.9 - Ejemplo de apertura de archivos en modo texto
MODO BINARIO
Para abrir un archivo en modo binario, debemos utilizar la cláusula IN BINARY MODE, tal como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
312
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.10 - Apertura de archivos en modo binario
Veamos un ejemplo:
Imagen 2.11 - Ejemplo de apertura de archivos en modo binario
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
313
Manual de estudios Curso Programador ABAP Nivel Inicial
Utilizaremos la sentencia READ DATASET para la lectura de archivos del servidor. La sintaxis de la sentencia es la siguiente:
Imagen 3.1 - La sentencia READ DATASET
Veamos un ejemplo:
Imagen 3.2 - Ejemplo de lectura de archivos con READ DATASET
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
314
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Archivos en Servidor: las sentencias TRANSFER, DELETE y CLOSE Aprenderemos a transferir datos a los archivos del servidor. También analizaremos el borrado, cierre y búsqueda de archivos en el servidor. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 6: Tratamiento de Archivos y Field Symbols
CVOSOFT IT Academy - Formación en Sistemas.
Utilizaremos la sentencia TRANSFER para transferir datos desde nuestros programas ABAP a los archivos ubicados en el servidor de aplicaciones. La sintaxis de la sentencia es la siguiente:
Imagen 1.1 - La sentencia TRANSFER
Veamos un ejemplo:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
315
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Ejemplo de transferencia de archivos con TRANSFER
Utilizaremos la sentencia DELETE DATASET para borrar archivos del servidor de aplicaciones. La sintaxis de la sentencia es la siguiente:
Imagen 2.1 - La sentencia DELETE DATASET
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
316
Manual de estudios Curso Programador ABAP Nivel Inicial
Veamos un ejemplo:
Imagen 2.2 - Ejemplo del borrado de archivos con DELETE DATASET
Utilizaremos la sentencia CLOSE DATASET para cerrar archivos del servidor de aplicaciones. La sintaxis de la sentencia es la siguiente:
Imagen 3.1 - La sentencia CLOSE DATASET
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
317
Manual de estudios Curso Programador ABAP Nivel Inicial
Veamos un ejemplo:
Imagen 3.2 - Ejemplo de cierre de archivos con CLOSE DATASET
Utilizando la función /SAPDMC/LSM_F4_SERVER_FILE podemos crear una ventana de navegación en el servidor de aplicaciones para poder seleccionar el archivo que deseamos. Veamos un ejemplo de su utilización:
Imagen 4.1 - La función /SAPDMC/LSM_F4_SERVER_FILE ©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
318
Manual de estudios Curso Programador ABAP Nivel Inicial
Si ejecutamos el código anterior veremos el siguiente mensaje ya que no disponemos de un servidor de aplicaciones para probar.
Imagen 4.2 - Mensaje que nos informa que no disponemos del server
Si lo tuviéramos, visualizaríamos una ventana de diálogo donde podremos buscar los archivos en el servidor.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
319
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Field Symbols Aprenderemos que son los Field Symbols, como se declaran y como se realiza la asignación de datos a un Field Symbol. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 6: Tratamiento de Archivos y Field Symbols
CVOSOFT IT Academy - Formación en Sistemas.
Al contrario de lo que sucede con el acceso estático de los datos, donde necesitamos especificar el nombre de un objeto para poder hacer algo con él, los Field Symbol nos permiten acceder y pasar datos cuyos nombres y atributos no conocemos hasta el momento de la ejecución. Se puede considerar a los Field Symbol como nombres simbólicos de los datos, ya que cuando se utilizan, el sistema trabaja con el contenido de los datos asignados y no con el contenido del field symbol.
Los Field Symbol nos proveen de gran flexibilidad debido a que: Si queremos procesar partes de campos, nos permiten especificar el offset y el desplazamiento de un campo en forma dinámica.
Se puede forzar a un Field Symbol para que tome diferentes atributos técnicos que los del campo asignado a él.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
320
Manual de estudios Curso Programador ABAP Nivel Inicial
Para declarar un Field Symbol vamos a utilizar la siguiente sintaxis:
Imagen 2.1 - Sintaxis para la declaración de un Field Symbol
Los tipos de datos genéricos posibles para un Field Symbol son:
Tabla 2.1 | Datos genéricos posibles para un Field Symbol
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
321
Manual de estudios Curso Programador ABAP Nivel Inicial
Veamos un ejemplo de la utilización de un Field symbol:
Imagen 2.2 - Ejemplo de utilización de Field Symbols
Para asignar datos a un Field Symbol utilizamos la sentencia ASSIGN. La asignación que utilizamos es estática ya que sabemos el nombre del campo que queremos asignar al Field Symbol. La sintaxis utilizada sería la siguiente:
Imagen 3.1 - Sintaxis de la sentencia ASSIGN
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
322
Manual de estudios Curso Programador ABAP Nivel Inicial
Veamos un ejemplo:
Imagen 3.2 - Otro ejemplo de utilización de Field Symbols
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
323
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Los Estándares de Programación Aprenderemos que son los Estándares de Programación y porque es tan importante que los utilicemos. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 6: Tratamiento de Archivos y Field Symbols CVOSOFT IT Academy - Formación en Sistemas.
La utilización de Estándares de Programación es sumamente beneficiosa ya que hace que los programas sean mucho más simples de leer y mantener al momento de tener que realizar una modificación.
Les propongo evaluar la utilidad de seguir estándares de programación en la siguiente situación hipotética pero que se repite muy a menudo en el ambiente laboral real de SAP: "Supongamos que en la empresa en donde trabajamos el equipo de Programación o Desarrollo ABAP está compuesto por dos programadores entre los cuales nos encontramos nosotros. Supongamos que en esta empresa no se ha definido ningún Estándar de Programación y que cada una de las dos personas que se encargan de la programación en ABAP tiene bien dividido el trabajo, de modo que dependiendo de que trate el desarrollo ABAP a realizar lo tomará uno de los programadores o el otro. Ahora por último imaginemos que debido a la alta demanda de empleo en SAP, nuestro compañero de equipo se va de la empresa y a nosotros nos toca tener que modificar los programas ABAP que él creó. Si no se utilizó ningún Estándar de programación es muy probable que modificar los programas ABAP desarrollados por otro programador se convierta en una tarea complicada, que nos puede llegar a llevar más del doble del tiempo que debería."
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
324
Manual de estudios Curso Programador ABAP Nivel Inicial
Hay muchos estándares de programación que se pueden utilizar. Un buen estándar de programación generalmente considerará los siguientes factores: Factor nemotécnico: para que el programador pueda recordar el nombre de una variable fácilmente.
Factor sugestivo: para que otros programadores puedan leer y entender rápidamente nuestro código.
Consistencia: de modo que utilicemos las mismas convenciones de nomenclatura en todo el programa y hagamos que el texto del código sea "legible".
Podemos resumir algunos de los beneficios de utilizar estándares de programación en los siguientes puntos: Los nombres de variables serán nemotécnicos con lo que se podrá saber el tipo de dato de cada variable con sólo ver el nombre de la variable.
Los nombres de variables serán sugestivos, de tal forma que se podrá saber el uso y finalidad de dicha variable o función fácilmente con solo ver el nombre de la variable.
La decisión de poner un nombre a una variable o función será mecánica y automática, puesto que seguirá las reglas definidas por el estándar.
Permiten el uso de herramientas automáticas de verificación de nomenclaturas tales como el Chequeo Extendido del Código o el Inspector de Código.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
325
Manual de estudios Curso Programador ABAP Nivel Inicial
Si los estándares tienes tantos beneficios, entonces la pregunta es ¿por qué los programadores los usan muy pocas veces? La razón tiene que ver más con los seres humanos que con la tecnología:
Trabajan en un proyecto que no ha adoptado ningún estándar. No los entienden o no los pueden recordar. No ven el beneficio de utilizarlos. Están muy apurados o cansados. Prefieren creatividad y consistencia arbitraria. Piensan que es divertido usar nombres "bonitos" en el código. Son "artistas del software" y no quieren estar regidos por convenciones.
A continuación les presentamos los Estándares de Programación que utilizaremos a lo largo de la Carrera SAP ABAP.
Los estándares que les presento a continuación fueron elaborados en base a la experiencia recopilada en los distintos proyectos en los que he participado como Consultor SAP ABAP y como Líder del equipo de Desarrollo.
Para las declaraciones dentro de un programa ABAP utilizaremos los siguientes estándares:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
326
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 5.1 - Estándares a utilizar dentro de un programa ABAP
Para las declaraciones de los datos que creamos en el Diccionario de datos ABAP utilizaremos los siguientes estándares:
Imagen 5.2 - Estándares a utilizar para objetos del Diccionario de datos
Utilizaremos la siguiente nomenclatura para establecer los nombres de los siguientes objetos:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
327
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 5.3 - Estándares a utilizar para el resto de los objetos
Para los Encabezados de Programas ABAP Cuando creamos un programa ABAP nuevo en SAP es recomendable utilizar siempre el mismo encabezado de modo de unificar criterios entre todos los programadores de un mismo proyecto. A continuación les proponemos una versión del esqueleto de un programa ABAP que pueden utilizar para sus desarrollos.
Imagen 5.4 - Ejemplo de comentarios en el encabezado de un programa ABAP
Más abajo, dentro de la misma plantilla de programa nuevo, especificamos las declaraciones de los Includes, Tipos, Tablas internas, etc.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
328
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 5.5 - Comentarios para declaraciones de includes, tipos y tablas
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
329
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
330
Manual de estudios Curso Programador ABAP Nivel Inicial
Inicio Nueva Unidad:
Unidad 7: Batch Input vs Bapis y temas avanzados Batch Inputs vs Bapis y temas avanzados Curso: Programador ABAP Nivel Inicial
CVOSOFT IT Academy - Formación en Sistemas.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
331
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Descripción de Unidad
MÓDULO: PROGRAMADOR ABAP INICIAL UNIDAD: Batch Inputs vs Bapis y temas avanzados
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
332
Manual de estudios Curso Programador ABAP Nivel Inicial
:: Lecciones que componen esta unidad Las siguientes lecciones componen a esta unidad de estudios:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
333
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
334
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
335
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
336
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
El concepto de Batch Input Aprenderemos que es un Batch Input, cuales son las técnicas existentes para realizarlo, cuales son los pasos para creación de un Batch Input y como cargar la tabla BDCDATA. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 7: Batch Input vs Bapis y temas avanzados
CVOSOFT IT Academy - Formación en Sistemas.
Cuando se instala una aplicación en un ambiente de producción, es necesario dar de alta toda la información que es indispensable para que pueda funcionar. A este proceso lo llamamos carga inicial de datos. Supongamos que necesitamos hacer la carga inicial de datos en SAP de 10.000 clientes. Para hacer esto, tendríamos que ingresar 10.000 veces a la transacción maestro de clientes, lo que cual sería una tarea demasiado tediosa y sumamente costosa en tiempo. Algo similar ocurriría si necesitamos ingresar 10.000 registros en una tabla base de datos, ya que si bien, en este caso, podríamos crear un programa que mediante instrucciones Open SQL carguen los registros, no estaríamos utilizando todas las validaciones estándar que tienen las transacciones SAP, por lo que necesitaríamos dedicar mucho tiempo para cubrir ese bache. Para solucionar estos inconvenientes, SAP introduce la técnica de Batch Input, mediante la cual, podremos dar de alta, modificar o borrar grandes cantidades de datos en el sistema, de forma automática y utilizando las mismas transacciones, con sus respectivas validaciones, tal como si lo hiciéramos manualmente de a 1 dato por vez.
Generalmente, la carga inicial de datos se realizará levantando los datos de un archivo, tal como vimos en la unidad anterior.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
337
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.1 - Carga inicial de datos en SAP
Existen dos técnicas para realizar un Batch Input, una se realiza de forma Online y la otra en forma Batch. Ellas son: CALL TRANSACTION: se realiza de forma Online, por lo que ejecuta las actualizaciones en el momento en que se ejecuta el programa del Batch Input. Se utiliza la sentencia estándar CALL TRANSACTION.
JUEGO DE DATOS: se realiza de forma Batch (o de fondo) y queda almacenado en SAP para su posterior ejecución mediante la transacción SM35. Consiste en la ejecución de una serie de funciones estándar para la apertura, ejecución y cierre del juego de datos.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
338
Manual de estudios Curso Programador ABAP Nivel Inicial
Los pasos para la generación de un
Batch Input dependen de la técnica utilizada. Veamos cuales son los pasos a
seguir para cada técnica:
CALL TRANSACTION Paso 1ero: Declaración de datos propios del Batch Input.
Paso 2do: Lectura de datos de archivo de entrada.
Paso 3ero: Carga de la tabla BDCDATA.
Paso 4to: Ejecución de la sentencia CALL TRANSACTION.
JUEGO DE DATOS Paso 1ero: Declaración de los datos propios del Batch Input.
Paso 2do: Lectura de datos de archivo de entrada.
Paso 3ero: Apertura de la sesión del Juego de Datos.
Paso 4to: Carga de la tabla BDCDATA.
Paso 5to: Inserción del Juego de Datos.
Paso 6to: Cierre de la sesión del Juego de Datos.
Paso 7mo: Ejecución del Juego de Datos a través de la transacción SM35 o a través de la creación de un job y la ejecución del programa estándar RSBDCBTC.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
339
Manual de estudios Curso Programador ABAP Nivel Inicial
El paso más importante en la ejecución de un Batch Input es la carga de la tabla BDCDATA. Tal como hacemos referencia, la tabla BDCDATA será una tabla interna que tendrá los mismos campos que la estructura BDCDATA. Los campos que forman parte de esta estructura son:
Imagen 4.1 - Estructura de la tabla BDCDATA
Veamos un ejemplo sencillo de como cargaríamos la tabla BDCDATA. Supongamos que queremos hacer un Batch Input, para cargar con un registro a nuestra tabla de usuarios ZTABLA_USUARIOS. Si ejecutamos esta acción en forma manual, deberíamos hacer lo siguiente: Ingresar a la transacción SM30, introducir el nombre de la tabla, presionar el botón de modificación o maintain, presionar el botón de nuevas entradas o new entries, introducir el contenido del registro con todos sus campos, presionar el botón grabar y salir de la transacción. Si representamos en código el procedimiento anteriormente descrito, escribiríamos: Para ingresar a la primer pantalla y presionar el botón de mantenimiento.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
340
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.2 - Introducimos los datos de la primer pantalla en la tabla BDCDATA
Luego, presionamos el botón de Nuevas entradas.
Imagen 4.3 - Presionamos el botón Nuevas entradas
Después ingreso el registro del usuario. En la imagen que vemos a continuación no figuran todos los campos de la tabla de usuarios.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
341
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 4.4 - Introducimos los campos de la tabla de usuarios
Por último, grabamos y salimos de ambas pantallas.
Imagen 4.5 - Grabamos y salimos de la transacción
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
342
Manual de estudios Curso Programador ABAP Nivel Inicial
En la próxima lección veremos como hacer para obtener los datos para completar la tabla BDCDATA.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
343
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Subrutinas y Grabación de datos de un BI Aprenderemos a utilizar subrutinas en un Batch Input. Analizaremos como obtener los datos necesarios para la carga de la tabla BDCDATA y como realizar la grabación de un Batch Input. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 7: Batch Input vs Bapis y temas avanzados
CVOSOFT IT Academy - Formación en Sistemas.
Para hacer más simple la creación de un Batch Input, vamos a utilizar la
subrutina BDC_FIELD, que nos van a
permitir modularizar los programas.
Imagen 1.1 - La subrutina BDC_FIELD
Si cambiamos el código de la lección anterior, utilizando la subrutina BDC_FIELD, el mismo quedaría de la siguiente manera:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
344
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Utilizamos la subrutina BDC_FIELD en nuestro código ABAP
Vamos a explicar como obtener los valores que cargamos en la tabla interna BDCDATA. Para ello, tomamos el ejemplo de la carga de la tabla BDCDATA, que vimos en la lección anterior. Vamos a entrar a la transacción SM30, y recuperar los datos correspondientes a la primer pantalla. Existen varias formas de obtener información de una pantalla. Ellas son: Parándonos sobre un campo de entrada de datos, presionamos F1:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
345
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - Presionamos F1 en el campo Tabla/Vista
Y luego hacemos clic en el botón de Información técnica:
Imagen 2.2 - El botón de información técnica
Y veremos una ventana de diálogo con información relevante para el armado de la tabla BDCDATA, como es el nombre del programa, el nombre de la dynpro y el nombre del campo.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
346
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.3 - Visualizamos la información técnica de la dynpro
Parándonos sobre un botón de la pantalla presionamos F1:
Imagen 2.4 - Presionamos F1 sobre el botón Actualizar
Y veremos una ventana de diálogo con el nombre del programa y el código de función correspondiente al botón.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
347
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.5 - Visualizamos la información técnica del botón
En todas las pantallas de SAP, podemos visualizar en el extremo inferior derecho de las mismas, diferentes datos de la pantalla como ser el nombre del programa en ejecución, la transacción, etc.
Imagen 2.6 - Información presente en todas pantallas de SAP
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
348
Manual de estudios Curso Programador ABAP Nivel Inicial
Otra forma más eficiente de obtener los datos para la carga de la tabla BDCDATA, consiste en realizar una grabación de los pasos que hacemos en la ejecución de las transacciones, mediante la transacción SM35.
Imagen 3.1 - La transacción SM35
Para realizar la grabación, presionamos el botón Grabación (Recording):
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
349
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.2 - Presionamos el botón grabación
Luego el botón Grabación nueva (New Recording):
Imagen 3.3 - Presionamos el botón Nueva grabación
Y veremos la siguiente ventana de diálogo:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
350
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.4 - Introducimos los datos necesarios para iniciar la grabación
Grabación (Recording): aquí asignamos un nombre a la grabación. Código de Transacción (Transaction code): aquí ingresamos el nombre de la transacción. El resto de las opciones, las dejamos como están y presionamos el botón Iniciar grabación (Start Recording). Luego seguiremos la secuencia de pantallas hasta generar un registro en la tabla ZTABLA_USUARIOS, que finaliza presionando el botón grabar y saliendo de la transacción. Después de esto, veremos la siguiente pantalla con la grabación.
Imagen 3.5 - La grabación
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
351
Manual de estudios Curso Programador ABAP Nivel Inicial
Si nos fijamos, la tabla con las columnas que visualizamos en la grabación tiene la misma estructura que la tabla BDCDATA. Luego si presionamos el botón grabar, la grabación quedará almacenada en el sistema para consultarla mientras hacemos el Batch Input. También es posible exportarla a un archivo o importar de un archivo una grabación.
Por último, si volvemos para atrás, presionando el botón Back de la pantalla, veremos la grabación que acabamos de crear con cierta información de la misma.
Imagen 3.6 - Volvemos atrás presionando el botón back
Podremos ejecutar la grabación cuantas veces queramos, presionando el botón procesar y seleccionando la grabación de la pantalla. También es posible modificar una grabación creada para volver a ejecutarla.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
352
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Batch Input utilizando Call transaction Creamos nuestro primer Batch Input utilizando CALL TRANSACTION. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 7: Batch Input vs Bapis y temas avanzados
CVOSOFT IT Academy - Formación en Sistemas.
Vamos a crear nuestro primer Batch Input utilizando la técnica de CALL TRANSACTION. El objetivo del Batch Input será la carga inicial de datos de la tabla ZTABLA_USUARIOS. Para ello, vamos a crear un archivo de texto con registros que cumplan con la estructura de la tabla ZTABLA_USUARIOS, sin tener en cuenta al campo mandante.
Imagen 1.1 - Archivo de texto de entrada con datos
Como lo que vamos a hacer será la carga inicial de la tabla de usuarios, borraremos su contenido previamente a la ejecución de este ejemplo. Ahora, seguiremos los pasos que establecimos en la primer lección de la unidad.
Paso 1ero. : Declaración de datos propios del batch input Declaramos una tabla interna y una estructura, ambas del tipo BDCDATA, otra tabla interna del tipo BDCMSGCOLL con su estructura, que servirán para almacenar los mensajes que se produzcan cuando ejecutemos el CALL TRANSACTION, la tabla interna de usuarios, que contendrá los datos que levantemos del archivo de entrada y una tabla para mostrar por pantalla los errores entre otras declaraciones.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
353
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Declaramos los tipos de datos necesarios para realizar el BI
Paso 2do. : Lectura de datos de archivo de entrada Ejecutamos el método GUI_UPLOAD para levantar el archivo de entrada con la información para generar el Batch Input.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
354
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.3 - Levantamos el archivo de entrada con el método GUI_UPLOAD
Paso 3ero. : Carga de la tabla BDCDATA Para cargar la tabla BDCDATA utilizamos la subrutina BDC_FIELD, que vimos en la lección anterior. Antes debemos inicializar la tabla interna del Batch Input y la de los mensajes. Como vamos a ingresar más de un registro, tendremos que manejar indices para saber en que fila de la pantalla estamos cargando los datos. Esto lo solucionamos fácilmente, concatenando al nombre del campo el número de fila que le corresponde en la pantalla entre paréntesis.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
355
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.4 - Carga de la tabla BDC_DATA
Paso 4to. : Ejecución de la sentencia Call Transaction Ahora vamos a ejecutar la sentencia CALL TRANSACTION. La sintaxis de la sentencia es la siguiente:
Imagen 1.5 - Ejecución de la sentencia CALL TRANSACTION
Veamos en detalle cada una de las opciones. USING: aquí especificamos la tabla BDCDATA que se utilizará. MODE: determina el modo de procesamiento que utilizará el Batch Input. Los modos posibles de procesamiento son:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
356
Manual de estudios Curso Programador ABAP Nivel Inicial
Tabla 1.1 | Modos posibles de procesamiento
UPDATE: determina el modo de actualización de los cambios que producirá el Batch Input. Los modos posibles son:
Tabla 1.2 | Modos de acualización
MESSAGES INTO: con el uso de esta opción, todos los mensajes generados durante el procesamiento del Batch Input son almacenados en una tabla interna de tipo BDCMSGCOLL. Para armar los mensajes, vamos a utilizar la función MESSAGE_PREPARE tal como vemos a continuación:
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
357
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.6 - Tratamiento de mensajes con la función MESSAGE_PREPARE
Ahora que ya terminamos con todos los pasos del Batch Input, vamos a ejecutarlo con modo de procesamiento "A", que nos permite ver el paso a paso de las actualizaciones. Lo primero que hacemos es ingresar a la transacción SM30 con el nombre de la tabla y presionamos el botón Actualizar (Maintain) .
Imagen 1.7 - En modo paso a paso se presiona el botón Actualizar
Luego presionamos el botón Entradas nuevas (New Entries).
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
358
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.8 - En modo paso a paso se presiona el botón Nuevas entradas
Se cargan todos los campos del registro y presionamos grabar.
Imagen 1.9 - En modo paso a paso se cargan los campos de un registro completo
Finalmente salimos de la transacción y repetiremos esta secuencia de pasos por cuantos registros de usuario ingresemos en la tabla.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
359
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.10 - En modo paso a paso salimos de la trx y se cargan los demás registros del archivo
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
360
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Batch Input utilizando Juego de Datos Creamos nuestro primer Batch Input utilizando Juego de Datos y analizamos la utilización del programa RSBDCBTC para la ejecución del juego de datos. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 7: Batch Input vs Bapis y temas avanzados
CVOSOFT IT Academy - Formación en Sistemas.
Vamos a crear nuestro primer Batch Input utilizando la técnica de Juego de datos. El objetivo del Batch Input será la carga inicial de datos de la tabla ZTABLA_USUARIOS. Para ello, vamos a crear un archivo de texto con registros que cumplan con la estructura de la tabla ZTABLA_USUARIOS, sin tener en cuenta el campo mandante.
Imagen 1.1 - Creamos un archivo de entrada sin el campo mandante
Como lo que vamos a hacer será la carga inicial de la tabla de usuarios, borraremos su contenido previamente a la ejecución de este ejemplo. Ahora seguiremos los pasos que establecimos en la primer lección de la unidad.
Paso 1ero. : Declaración de los datos propios del Batch Input Declaramos una tabla interna y una estructura, ambas del tipo BDCDATA y otra tabla interna de usuarios que contendrá los registros que levantemos del archivo de entrada.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
361
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.2 - Declaramos los tipos de datos necesarios para el BI
Paso 2do. : Lectura de datos de archivo de entrada Ejecutamos el método GUI_UPLOAD para levantar el archivo de entrada con la información para generar el
batch
input.
Imagen 1.3 - Lectura del archivo de entrada con el método GUI_UPLOAD
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
362
Manual de estudios Curso Programador ABAP Nivel Inicial
Paso 3ero. : Apertura de la sesión del Juego de Datos Para realizar la apertura de la sesión del
Juego de Datos, vamos a utilizar la función BDC_OPEN_GROUP,
especificando el mandante, el grupo y el usuario.
Imagen 1.4 - Apertura del juego de datos
Paso 4to. : Carga de la tabla BDCDATA Para cargar la tabla BDCDATA utilizaremos la subrutina BDC_FIELD, que vimos en la lección dos. Antes debemos inicializar la tabla interna del Batch Input.
Paso 5to. : Inserción del Juego de Datos Para realizar la inserción del
Juego de Datos vamos a utilizar la función BDC_INSERT, tal como vemos a
continuación.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
363
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.5 - Inserción del juego de datos
Paso 6to. : Cierre de la sesión del Juego de Datos Para cerrar el Juego de Datos vamos a utilizar la función BDC_CLOSE_GROUP, tal como vemos a continuación.
Imagen 1.6 - Cierre del juego de datos
Paso 7mo. : Ejecución del Juego de Datos Para realizar la ejecución del Juego de Datos vamos a entrar a la transacción SM35. Vamos a seleccionar el Juego de Datos y lo ejecutamos presionando el botón Ejecutar (Process).
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
364
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.7 - Ejecución del juego de datos a través de la transacción SM35
En la siguiente ventana de díalogo marcamos la opción Invisible (Background) y presionamos Ejecutar (Process).
Imagen 1.8 - Seleccionamos invisible
Finalmente la sesión cambiará de status dependiendo del resultado de la ejecución y los datos se actualizarán en la tabla ZTABLA_USUARIOS.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
365
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 1.9 - Cambia el estado del juego de datos dependiendo del resultado de la ejecución
Podemos ejecutar el Juego de Datos en forma Online mediante la ejecución del programa estándar RSBDCBTC. Para ello, vamos a tener que crear un job, submitir la ejecución del programa RSBDCBTC y cerrar el job, tal como vemos a continuación.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
366
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 2.1 - SUBMIT al programa RSBDCBTC
Luego, si vamos a la transacción SM35, vemos que el juego de datos se procesó sin la necesidad de hacerlo manualmente.
Imagen 2.2 - Juego de datos procesado en la transacción SM35
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
367
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
BAPIS Aprenderemos
que
es
una
BAPI,
analizaremos
algunas
bapis
estándar
y
aprenderemos a trabajar con la transacción BAPI. Curso: Programador ABAP Nivel Inicial Unidad: Unidad 7: Batch Input vs Bapis y temas avanzados
CVOSOFT IT Academy - Formación en Sistemas.
Ventajas de las BAPIS por sobre los Batch Inputs Debido a que las BAPIS son generalmente estándar de SAP, utilizando BAPIS, nos aseguramos que los programas que desarrollemos, serán compatibles con las versiones futuras de SAP. Esto no ocurre con los batch input, ya que entre las distintas versiones de SAP, es común que se modifiquen las pantallas de las transacciones, por lo tanto la ejecución del Batch Input fallará.
Se pueden utilizar BAPIS desde cualquier plataforma de desarrollo que soporte el uso de funciones RFC.
Desventajas de las BAPIS La mayor dificultad en la utilización de BAPIS, está en la carga correcta de los valores de las tablas de entrada. Para superar esta dificultad, podemos utilizar la SDN.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
368
Manual de estudios Curso Programador ABAP Nivel Inicial
Existen ciertas BAPIS que son estándares y pueden ser implementadas para la mayoría de los objetos de negocios. Estas BAPIS tienen funciones especificas, como puede ser listar las instancias existentes de un objeto de negocio SAP. Ellas son:
Bapis estándar para lectura de datos GetList(): con esta BAPI se pueden seleccionar un rango de objetos como pueden ser sociedades o números de materiales.
GetDetail(): se utiliza para recuperar los datos de una instancia de un objeto de negocio.
GetStatus(): se utiliza para obtener el status de un objeto de negocio.
ExistenceCheck(): chequea si existe una entrada determinada de un objeto de negocio.
Bapis estándar para crear o modificar datos Create() o CreateFromData(): se utilizan para crear instancias de objetos de negocios.
Change(): se utiliza para modificar una instancia de un objeto de negocio.
Delete() y Undelete(): se utilizan para borrar y para cancelar el borrado de una instancia de un objeto de negocio.
Bapis estándar para procesamiento masivo Las BAPIS para crear o modificar datos pueden ser utilizadas para procesamiento masivo, es decir para procesar grandes cantidades de datos. Para ello, será necesario agregar el sufijo Múltiple al nombre de los métodos. Por ejemplo: ChangeMultiple(), CreateMultiple() or DeleteMultiple().
Bapis estándar para replicar instancias de objetos Las BAPIS Replicate() y SaveReplicate() son utilizadas para copiar instancias de objetos de un sistema a otro.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
369
Manual de estudios Curso Programador ABAP Nivel Inicial
Para visualizar las BAPIS existentes en el sistema, podemos utilizar la transacción estándar BAPI.
Imagen 3.1 - La transacción BAPI
Veamos por ejemplo la Bapi BAPI_USER_GET_DETAILS, que se utiliza para obtener los datos personales de los usuarios de SAP. Para buscarla seleccionamos en el menú la opción Tratar / Buscar.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
370
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.2 - Buscamos una bapi en la transacción
Ingresamos el nombre del objeto que es USER y presionamos continuar.
Imagen 3.3 - Introducimos el nombre del objeto
Y dentro del menú que vemos a la izquierda de la pantalla, vamos a User y allí seleccionamos GetDetail.
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
371
Manual de estudios Curso Programador ABAP Nivel Inicial
Imagen 3.4 - Visualizamos la GETDETAIL
Si ejecutamos la BAPI desde la transacción SE37, podremos acceder a los datos personales del usuario.
Imagen 3.5 - Ejecución de la bapi BAPI_USER_GET_DETAIL en la transacción SE37
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
372
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
373
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
374
Manual de estudios Curso Programador ABAP Nivel Inicial
Lección:
Bibliografía Bibliografía utilizada a lo largo del módulo de estudios. Curso: Programador ABAP Nivel Inicial Unidad: Entrega de Materiales y Bibliografía
CVOSOFT IT Academy - Formación en Sistemas.
Manual SAP BC400 Introduction to ABAP Workbench Manual SAP BC405 Technics of List Processing and Sap Query Manual SAP BC410 Transaction Programming 1 y 2 Manual SAP BC415 Programming Communications Interfaces in ABAP Manual SAP BC420 Interfaces and Data Transfer Manual SAP BC430 ABAP Dictionary SAP BC ABAP Programming Release 4.6B December 1999 SAP Getting Started December 1999 SAP Introducción R/3 Enterprise Junio 2003 Manual SAP TAW_10_1 Manual SAP TAW_10_2 Manual SAP TAW_10_3 Manual SAP TAW_12_1 Manual SAP TAW_12_2
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
375
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
376
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
377
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
378
Manual de estudios Curso Programador ABAP Nivel Inicial
©CVOSOFTITACADEMY |ISBN978-987-27549-2-1|
[email protected]| www.cvosoft.com
379