ABAP Workshop

Diccionario de Datos y Reportes

Ing. Hernán González Navas Noviembre 2009

ABAP Workshop Diccionario y Reportes

Noviembre 2009

Visión General de SAP SAP AG es el Principal Proveedor Mundial de Software Empresarial. Fue fundado en 1972, por 5 Ingenieros ex empleados de IBM, y tiene su sede en Walldorf Alemania. Actualmente, más de 12 millones de usuarios trabajan cada día con Soluciones SAP, existen al menos 120000 Instalaciones alrededor del mundo, más de 1500 Partners, como mínimo 25 Soluciones Específicas de Industria, y supera los 40000 Clientes, en más de 120 Países. SAP es el tercer mayor proveedor mundial de software. Además de Software, SAP proporciona Consultoría, Soporte y Formación. Su producto característico y más exitoso es mySAP ERP (Enterprise Resource Planning), un sistema versátil, modular y totalmente Integrado, tuvo varios predecesores (R/1, R/2, R/3), y provee soluciones estándares (mejores prácticas) y customizables a todas las necesidades típicas de información de una compañía. El mismo cuenta, entre otros, con los siguientes Módulos: finanzas (FI), tesorería (TR), control (CO), control empresarial (EC), gestión de inversiones (IM), ventas y distribución (SD), logística (LO), gestión de materiales (MM), planificación de la producción (PP), gestión de almacenes (WM), mantenimiento de planta (PM), sistema de proyectos (PS), gestión de la calidad (QM) y recursos humanos (HR). SAP provee Soluciones de Industria para bancos, defensa y seguridad, atención de la salud, enseñanza superior e investigación, seguros, sector público, aeroespacial y defensa, automotriz, química, productos de consumo, ingeniería construcción y operaciones, alta tecnología, maquinaria industrial y componentes, ciencias de la vida, productos de construcción, minería, petróleo y gas, medios, servicios profesionales, retail, telecomunicaciones, servicios de logística y viajes, distribución mayorista, etc. Los productos SAP trabajan en tiempo real, pueden correr sobre la mayoría de sistemas operativos y base de datos, manejar múltiples idiomas y monedas. Su Lenguaje de Programación Histórico es ABAP, el cual permite, cuando la parametrización resulta insuficiente, ampliar los productos estándares, y desde hace algunos años, con el advenimiento de NetWeaver, también utiliza Java, principalmente para temas como integración, dispositivos móviles y portales. Además del ERP, la aplicación primaria de mySAP Business Suite, otros exitosos productos son: Customer Relationship Management (CRM), Supplier Relationship Management (SRM), Supply Chain Management (SCM) y Product LifeCycle Management (PLM). SAP también cuenta con una plataforma de gestión central de aplicaciones, denominada Solution Manager, que ayuda a implementar, operar, monitorear y dar soporte a las Soluciones SAP. Acompañando un proyecto SAP en todas sus etapas (de acuerdo a la Metodología ASAP: Preparación, Business BluePrint, Realización, Preparación Final, Go Live y Soporte). En el Grupo Embotelladora Andina se utiliza SAP ERP (ex R/3), Business Warehouse (BW), Portal, Solution Manager, CRM y APO (Predecesor de SCM). Dentro del ERP casi Todos los Módulos.

Embotelladora del Atlántico - Coca-Cola

Página 2 / 43

ABAP Workshop Diccionario y Reportes

Noviembre 2009

Visión General de NetWeaver NetWeaver es la Nueva Plataforma Tecnológica de Todos los Productos Sap (ERP, CRM, SRM, SCM, PLM, Etc.), utiliza arquitectura orientada a servicios para empresas, y tiene como objetivo incentivar la Integración de Personas, de Información y de Procesos. NetWeaver posee varios Componentes, construidos para trabajar juntos, ser base para la ejecución de aplicaciones, facilitar su integración, la creación de nuevas aplicaciones sobre las existentes, permitir la innovación, y ahorrar dinero. Application Server: Actúa como la Infraestructura Subyacente de tiempo de ejecución, para los demás componentes de Sap NetWeaver. Soporta ABAP y Java. Busca robustez, escalabilidad y utilización de estándares abiertos. Usa arquitectura multicapas, con clara separación entre interfases, lógica de negocios, y datos. Brinda independencia del hardware, sistema operativo y motor de base de datos. Process Integration (antes Exchange Infrastructure): Permite la comunicación, por medio de mensajes, entre aplicaciones SAP y No SAP, inter o extra compañía. Posee un conjunto de herramientas de modelado flexible, para reemplazar código del cliente, por configuración y generación de código. Además el BPM (Business Process Management) facilita el modelado, administración, y automatización de procesos dirigidos por el usuario. Master Data Management: Consolida, armoniza, centraliza y administra datos maestros, a través de toda la red de negocios, en ambientes IT heterogéneos (SAP y/o No SAP), garantizando la integridad de los mismos. Sap NetWeaver Developer Studio: Es el entorno de programación para Java. Composite Application Framework: Entorno de modelado y desarrollo para xApps o aplicaciones compuestas (basadas en servicios de otras aplicaciones). Visual Componer: Herramienta de modelado p/ crear contenido de un Portal. Mobile Infrastructure: Posibilita la utilización de aplicaciones en dispositivos móviles, tales como teléfonos celulares, pagers o PDAs, creando un entorno en tiempo de ejecución independiente del dispositivo en sí. Business Warehouse o Business Intelligence: Solución de Data Warehouse y Data Mining. Integra, transforma, consolida, depura, y almacena datos, a fin de facilitar su análisis, reporte e interpretación. Obteniendo valiosa y oportuna información estratégica, que permite la planificación corporativa, mejorar la competitividad, optimizar los procesos y reaccionar rápidamente. Enterprise Portal: Ofrece un punto de acceso centralizado a información SAP y No SAP, dentro y fuera de la empresa. Este se basa en roles y permite la personalización por parte del usuario. Incentiva la colaboración entre las personas. Está construido con tecnología Java. En un futuro, será la interfaz de usuario o capa de presentación de todos los productos SAP. Solution Manager: Plataforma de gestión central de aplicaciones, que ayuda a implementar, operar, monitorear y dar soporte a las Soluciones SAP Business Suite.

Embotelladora del Atlántico - Coca-Cola

Página 3 / 43

ABAP Workshop Diccionario y Reportes

Noviembre 2009

Arquitectura SAP: Cliente Servidor Desde el punto de vista del Software, Cliente y Servidor son definidos como niveles de servicios provistos por un componente de software. Este puede consistir de un proceso o un grupo de procesos (como es en el SAP Web Application Server). Los componentes de software que utilizan el Servicio son llamados Clientes, los que los brindan, Servidores. Al mismo tiempo, los Clientes pueden también ser Proveedores de Otros Servicios específicos. En general el objetivo es Distribuir la Carga de Trabajo de una aplicación entre varios programas que cooperan entre sí. Los siguientes niveles son utilizados en la Arquitectura SAP:
• •

Presentación (ej.: mostrar pantallas al usuario) Aplicación (ej.: ejecutar lógica del negocio) Base de Datos: (ej.: administrar y organizar los datos)

Cuando se configura un sistema SAP, se debe decidir cómo se van a distribuir los procesos requeridos en el hardware disponible. Esto básicamente se puede realizar en uno o muchos niveles, dependiendo del número de capas de computadoras utilizadas.

Embotelladora del Atlántico - Coca-Cola

Página 4 / 43

adoptada por SAP para cambiar del enfoque de Módulos al de Procesos de Negocios. perfiles. CRM. FI. (En Andina esto es realizado por HP/EDS) ABAP Nuevos Desarrollos o Adaptaciones de sistemas originales. Dentro o Fuera de la Compañía. seguridad y temas relacionados. (También utilizada por Coke One) Técnicos Los principales son: Administradores Basis / NetWeaver Instalación de los diferentes sistemas.ABAP Workshop Diccionario y Reportes Noviembre 2009 Tipos de Profesionales SAP Se dividen en dos Grandes Grupos: Funcionales Personas experimentadas en algunas áreas de la empresa que han aprendido a parametrizar esos módulos o sistemas para satisfacer las necesidades de los clientes. (No se utiliza en Andina) Portal Su objetivo es brindar a los usuarios una Vista Única que abarca toda la empresa. SCM. CO. Business Warehouse Reportes Estratégicos utilizando herramientas de Data Warehouse y Data Mining. Process Integration Integración SAP & No SAP.Coca-Cola Página 5 / 43 . MM. administración de la base de datos. de los servidores.: Existe una movida conceptual mundial. gestión del sistema operativo y de la red. (En EDASA esto sería el Área Usuarios) Obs. Embotelladora del Atlántico . Ejemplos: SD. creación de usuarios. Etc.

(Sap List Viewer): ALV Orientado a Objetos. Integración y Dispositivos Móviles. Vistas.  SmartForms: Para Generar Salidas Impresas de Formularios. a las necesidades específicas del cliente. Directo a las Tablas. En sus orígenes utilizó el Paradigma Estructurado y Cobol como basamentos.  BAPIs (Business Application Program Interface): Para Acceso a Datos y Comportamientos de Objetos. Abap (Advanced Business Application Programming) es el principal Lenguaje de Programación utilizado para desarrollar las Soluciones mySAP Business Suite.  Direct Inputs: Ingreso Masivo de Datos.  ALV (Abap List Viewer): Reportes con Funciones Predefinidas c/ Sumarización. y finalmente el Orientado a Servicios. Filtro y Totales. Hoy todos conviven ordenadamente en él.O. Estadísticos o de Ranking. Ingreso Masivo de Datos  Batch Inputs: Método de Ingreso Masivo de Datos Emulando una Transacción Estándar y sus Controles. Utiliza Programa de Control y Formulario. Elementos de Datos.  LSMW (Legacy System Migration Workbench): Migración de Datos desde Sistemas Legados a SAP. Otro tanto es desarrollado en Java. Órden.ABAP Workshop Diccionario y Reportes Noviembre 2009 Visión General de ABAP Como adelantamos. Dominios. Índices. Su Aparición es Posterior a SapScript. Sin Simulación de la Transacción Estándar. Formularios  SapScript: Para Generar Salidas Impresas de Formularios. y hoy es la base de la mayoría del código fuente de los productos de la compañía.  Interactive Forms: Formularios Interactivos de NW Basados en el PDF de Adobe y Potenciados Junto a SAP.  IDOCs (Intermediate Document) / EDI / ALE: Intercambio de Datos Entre Sistemas (SAP o No SAP). entre ellas: Diccionario de Datos  Diccionario de Datos: Administración de Tablas.  Queries: Para Crear Reportes Elementales. etc. principalmente para Portales. Sin Necesidad de Programar. más tarde el Orientado a Objetos. luego introdujo el Paradigma Orientado a Eventos. Reportes  Reportes Básicos / Interactivos: Reportes con Salida de Texto Simple / con Drill Drown. Utiliza las Clases CL_SALV_* de NetWeaver. luego se utilizó casi exclusivamente en SAP R/3.  ALV O. Botones. etc. Es propiedad de SAP y nació para desarrollar su sistema R/2. Embotelladora del Atlántico . o adaptar las estándares. Incidencia menor tienen C++ y HTML. Dentro de ABAP encontramos muchas diferentes Herramientas.Coca-Cola Página 6 / 43 . cuando la parametrización resulta Insuficiente. ABAP permite crear nuevas funcionalidades.

 User Exits: Salida para Colocar Código del Cliente en el Estándar. Orientación a Objetos  Object Oriented Programming: Utilización de Clases. su Objetivo es Aislar el Acceso a los Datos.  Module Pools / Screen Painter: P/ Realizar Transacciones de Diálogo con el Usuario Mediante Dynpros. Generalmente dentro del Módulo de Finanzas. Herencia.  BSP (Business Server Pages): Modelo Basado en Páginas para el Diseño e Implementación Web.Coca-Cola Página 7 / 43 . Class y Kernel-BADI. Interfases.ABAP Workshop Diccionario y Reportes Noviembre 2009 Ampliaciones  Field Exits: Salida Disponible para Colocar una Validación del Cliente sobre un Campo Estándar.  Shared Memory Objects: Instancias de Objetos. Embotelladora del Atlántico . a Objetos p/ Comunicarse con Aplicaciones de Escritorio. Principalmente Para HR. Function Group.O. Principalmente para SD.  ITS Flow Logic: Modelo que Permite Desarrollar Aplicaciones Web en HTML Tomando Datos desde SAP. Incluye Salidas Source.  Persistent Objects: Abstracción O.  Enhancement Framework: P/ NetWeaver. de Tablas de la BD.  BTEs (Business Transaction Events): Permite Incorporar una Función del Cliente al Estándar en FI.  Sustituciones: Salida para Reemplazar un Valor por Otro.  Fórmulas: Salida para Agregar Código del Cliente en Fórmulas de Cálculo.  Web Services: Para Proveer y Consumir Servicios Web en NW (Soporte para la Orientación a Servicios). Otros  Base de Datos Lógicas: Encapsula Criterios de Selección y Acceso a Datos.  Workflow: Para Realizar Seguimiento e Integración de Funcionalidades en Procesos de Negocios. Principalmente Utilizadas en Finanzas.  Web Dynpro for Abap: Para Desarrollar Transacciones de Diálogo en NW para ser Utilizadas en Internet. Desarrollo Web  Web Transactions (IACs): Para Crear Diálogos de Usuario para Internet Utilizando Abap y HTML. Objetos. Polimorfismo. Etc.  Funciones / RFC (Remote Function Call): Procedimiento con un Objetivo y una Interfase Predefinida.  Classics BADIs (Business Adds In): Salida Orientada a Objetos para Incorporar Código al Estándar.  Screen Exits: Salida en un Module Pool Estándar para Agregar Porciones de Pantalla y su Lógica.  Validaciones: Salida para Agregar una Validación al Estándar. que pueden ser Almacenados en Memoria Compartida.  Desktop Office Integration (DOI): Técnica O. Diálogos Interactivos  BDT (Business Data Toolset): Para Generar Mantenimientos en CRM y Algunas Soluciones de Industria. Principalmente en el Módulo SD.  Customer Exits: Salida Ampliamente Utilizada Para Incorporar Código Fuente del Cliente en el Estándar.

Embotelladora del Atlántico . llamados a Funciones y a Métodos de Clases.ABAP Workshop Diccionario y Reportes Noviembre 2009 Observación: En este WorkShop Introductorio de Abap. ALVs. Reportes Básicos. vamos a ver Diccionario de Datos.Coca-Cola Página 8 / 43 . Interactivos.

sin embargo. modificaciones de objetos originales de SAP. un segundo sistema es casi un imperativo. y como última alternativa. Sistema de Prueba o Calidad Los sistemas de pruebas. los desarrolladores pueden aislar sus trabajos del entorno productivo. Dependiendo del tamaño de la instalación se utilizarán varios sistemas que servirán a distintos propósitos. aun incluso en pequeñas instalaciones. Producción. se lleva a cabo en objetos propios (solo permite la creación de objetos cuyos nombres comienzan con las letras Z o Y). en todos estos casos (al menos que sean objetos locales) se generaran órdenes de transportes. o una incorrecta parametrización pueden causar la indisponibilidad total del sistema.Coca-Cola Página 9 / 43 . adaptación de estándares (exits). donde hay varios sistemas disponibles. Normalmente el desarrollo y la parametrización no se llevan a cabo directamente en los sistemas productivos. Embotelladora del Atlántico . más conocidos como de Control de Calidad. que sólo se podrán realizar con códigos de autorizaciones especiales. Sistema Productivo Es el sistema en el que los usuarios finales realizan la gestión diaria del negocio. Calidad. son útiles para validar los desarrollos con datos reales antes de su transporte a productivo. puesto que no es una buena práctica. Sin embargo. una modificación en la estructura de una tabla. Normalmente. un error en un programa. ni es recomendable por SAP. son utilizados para verificar los nuevos desarrollos o configuraciones del sistema. Los ambientes más habituales pueden ser: Sistema de Desarrollo Es aquel sistema en el cual se realizan labores de desarrollo. y cuando el trabajo de desarrollo se ha completado y probado. además se realizan trabajos de parametrización. realizar los trabajos desarrollo y parametrización en el sistema productivo. los objetos nuevos o modificados pueden ser transportados.ABAP Workshop Diccionario y Reportes Noviembre 2009 Ambientes: Desarrollo. ya que el riesgo de tener problemas es bastante alto.

Dependencia e Independencia de Mandante * La Información que es independiente de mandante es válida para todos ellos. Por ejemplo podría ser un grupo de empresas. Mandante 001. Cuando todos los cambios han sido realizados. Los datos dependientes de mandantes son tratados en forma especial. Mandante 066. Normalmente es utilizado como base para la creación de nuevos mandantes. contiene una estructura orgánica simple de una compañía de prueba y parámetros para todas las aplicaciones con parametrizaciones independientes de mandantes. SAP incluye 3 mandantes estándares. sólo puede ver los datos de ese mandante o los que son independientes de mandante. En Andina los Transportes se solicitan por Lotus Notes. nuevas parametrizaciones o modificaciones de estándares. Mandante 000. O también es habitual que se utilicen diferentes mandantes en Desarrollo para Programación y Parametrización. Gestión de Versiones Con la gestión de versiones. Cuando una orden se libera se crea un Log de transporte en forma automática. una unidad comercial. incluso con la compañía de prueba.ABAP Workshop Diccionario y Reportes Noviembre 2009 Mandantes Un mandante se define como una unidad independiente desde el punto de vista organizativo. etc. para ello las tablas deben tener un campo de mandante (conocido como MANDT). Las diferentes tareas pueden pertenecer a varios usuarios pero la orden que los contiene solo a uno (responsable o titular de la orden). las tareas pueden ser de desarrollo. la orden puede ser liberada. Tarea es una lista de objetos creados o modificados por un usuario. corrección o de reparación. si se configura o parametriza este mandante. sus parámetros serán dependientes de mandantes. Las órdenes de modificación son liberadas al sistema de transporte que se encarga de exportar los objetos y guarda un registro del proceso. Embotelladora del Atlántico . * La dependiente de mandante.Coca-Cola Página 10 / 43 . Una orden de modificación esta compuesta por una o varias tareas. y las tareas liberadas. Está reservado para las actividades de preparar un sistema para el entorno de producción. solo está disponible en el mandante específico. está reservado para el acceso de Sap a los sistemas de sus usuarios. Órdenes de Transporte Se generan ante una modificación o nuevo desarrollo. cuando un usuario se conecta a una sesión de SAP en un mandante específico. y es una lista que contiene los objetos que van a ser transportados. los usuarios pueden comprobar la versión actual de un objeto y posibilita a los desarrolladores la visualización o restauración de versiones anteriores. es una copia del mandante 000.

debe introducir el indicador pertinente. que nos abre una pantalla similar a esta: Elegimos el sistema. Al escribir su clave de acceso sólo se mueve el cursor. Embotelladora del Atlántico . Si en el campo Mandante ya hay un valor introducido. y al dar doble clic o presionar logon aparecerá la siguiente ventana:      Antes de entrar debe conocer el mandante. los asteriscos (*) no.ABAP Workshop Diccionario y Reportes Noviembre 2009 Ingreso a SAP ERP Utilizamos el programa SAPlogon. Si desea trabajar en un idioma distinto al predefinido para su usuario. su clave de acceso no puede visualizarse.Coca-Cola Página 11 / 43 . puede aceptarlo o sobrescribirlo. su nombre de usuario y su clave de acceso. Por motivos de seguridad. Indique su usuario SAP en el campo Usuario y su password en el campo Clave de acceso.

vistas. Generador de Clases (SE24) Definir y mantener clases (programación orientada a objetos).Coca-Cola Página 12 / 43 . documentación. dominios. Generador de Funciones (SE37) Definir y mantener módulos de función (rutinas de propósito general). Almacena todos los objetos.ABAP Workshop Diccionario y Reportes Noviembre 2009 ABAP Workbench El ABAP Workbench incluye un grupo de herramientas y utilidades para facilitar y realizar todas las tareas relacionadas con el desarrollo y mantenimiento del sistema SAP. tablas. elementos de datos. mantener y almacenar el diccionario de datos de SAP ERP. información y ayuda. Navegador de Objetos (SE80) Gestionar y organizar los objetos de desarrollo de forma jerárquica. Visualizador de Datos (SE16) Permite acceder al contenido de las tablas transparentes (de base de datos) de SAP. Embotelladora del Atlántico . permitiendo un desplazamiento fácil entre los mismos y el entorno de desarrollo (otras herramientas). Dentro de sus principales herramientas y funciones se destacan: Diccionario ABAP (Transacción SE11) Definir. Organizador de Transportes (SE09) Lleva a cabo y gestiona los transportes de los objetos entre los diferentes sistemas SAP. Editor ABAP (SE38) Crear y mantener los programas Abap.

para independizar las operaciones sobre tablas.  Los objetos básicos para la definición de datos en el diccionario de datos son Tablas. índices.  Está completamente integrado con el entorno de desarrollo Abap. no reflejan necesariamente problemas ni soluciones que encontraríamos o utilizaríamos en nuestro día a día.).Coca-Cola Página 13 / 43 . vistas. etc. campos. El Dominio se utiliza para la definición técnica de un campo (tipo de dato.Ejercicio Práctico A        Creación de una Tabla Definición de sus Atributos y Campos Creación de un Elemento de Datos Creación de un Dominio Definición de Opciones Técnicas Definición de Categoría de Ampliación Generar Mantenimiento Automático Activación de la Tabla Probar Mantenimiento   Observación: Los ejercicios tienen por finalidad practicar y asimilar lo aprendido. Embotelladora del Atlántico . Características:  Almacena y administra definiciones de datos. etc.ABAP Workshop Diccionario y Reportes Noviembre 2009 Diccionario de Datos ABAP El Diccionario de Datos (SE11). ayuda. es una de las herramientas del entorno de desarrollo Abap más utilizadas. Ejemplo de Utilización para Fijación de Conocimientos . etc.) y con el Elemento de Datos se establece la definición semántica (descripción corta.  Los cambios que en él se realizan surten efecto inmediato en todo el sistema SAP por medio del mecanismo de activación. de esta. longitud. es un nivel de abstracción entre SAP y la Base de Datos subyacente. Dominios y Elementos de Datos.

cada una de las cuales empieza por una palabra clave y termina con un punto.INITIALIZATION. TOP-OF-PAGE. Existen dos formas de utilizar comentarios en un reporte.  Con un asterisco (*) en la primera columna de una línea. Por ejemplo: IF. Eventos Especifica un evento.END-OF-SELECTION. Operativas Realizan funciones propias según el tipo de palabra clave. Por fin de página ejecutar <Sentencias> . Por ejemplo: DATA.TABLES: Tablas que se utilizan . WHILE. Por fin de programa ejecutar <Sentencias> La secuencia de Eventos en el código no es relevante y se ejecutarán según corresponda.ABAP Workshop Diccionario y Reportes Noviembre 2009 Reportes ABAP Fundamentos de la Programación de Reportes Un reporte consiste en una serie de instrucciones ABAP. Por ejemplo: WRITE. Estructura General de un Reporte Simple .TOP-OF-PAGE.DATA: Variables internas .Coca-Cola Página 14 / 43 .START-OF-SELECTION. Por inicio de página ejecutar <Sentencias> . Embotelladora del Atlántico . MOVE. TABLES.  Con comillas (“) en cualquier otra parte de una línea.REPORT <nombre>. Por ejemplo: START-OF-SELECTION. Nombre programa . Por inicio de programa ejecutar <Sentencias> . Inicializar valores en la pantalla de selección <Sentencias> .END-OF-PAGE. es el punto donde ABAP ejecuta un cierto proceso. Tipos de palabras claves: Declarativas Para declarar los datos que vamos a utilizar a lo largo del programa. Control Sentencias de control de flujo de programa.

y no se activará el objeto. utilizando diversas herramientas en forma transparente según el tipo de objeto seleccionado y pudiendo navegar entre los mismos. Verificando. desde este podremos realizar gran parte de nuestro trabajo diario con Abap. si correspondiera. los errores encontrados. Activando y Ejecutando un Programa Presionando ‘Verificar’ o Ctrl + F2 se va a realizar un chequeo de sintaxis del programa.Coca-Cola Directo Activar Verificar Página 15 / 43 . estos se informarán. indicándonos. El Activar realiza previamente un control sintáctico. Con el botón ‘Activar’ o Ctrl + F3 vamos a hacer que nuestra versión del programa esté disponible para todos los usuarios del sistema. Presionando ‘Directo’ o F8 vamos a ejecutar la versión activa del programa. Embotelladora del Atlántico . En caso de ocurrir errores en el mismo.ABAP Workshop Diccionario y Reportes Noviembre 2009 Entorno de Programación (SE80) La Transacción SE80 da inicio al ‘Object Navigator’.

Coca-Cola Página 16 / 43 .ABAP Workshop Diccionario y Reportes Noviembre 2009 Declarando Datos y Asignando Valores Tipos de Datos Los tipos de datos que se pueden utilizar en ABAP son: Embotelladora del Atlántico .

Estructuras Una estructura o registro de datos es un conjunto de campos relacionados lógicamente. Parámetro TYPE Con él podemos utilizar otros tipos de datos. Parámetro LIKE Con el parámetro LIKE podemos declarar una variable con los mismos atributos de longitud y tipo que una variable de base de datos u otra previamente definida. CIUDAD(20) VALUE ‘Córdoba’. NAME1 LIKE LFA1-NAME1.ABAP Workshop Diccionario y Reportes Noviembre 2009 Declaración de Variables Sentencia DATA Las Variables de un programa se declaran con la sentencia DATA. Ejemplo: DATA LV_ACREEDOR LIKE LFA1-LIFNR.Coca-Cola Página 17 / 43 . LE_PROV-FECHA. FECHA TYPE D. Ejemplo: DATA LV_VAR_CAR. Si no se indica lo contrario las variables serán del tipo carácter (Texto) y la longitud 1. Ejemplo: DATA LV_NUM_CAR(5) TYPE N. DATA LV_FECHA_LIMITE TYPE D. Embotelladora del Atlántico . Ejemplo: DATA: BEGIN OF LE_PROV. Creará una variable texto de longitud 8. DATA LV_NUMERO(2) TYPE P. Posteriormente el acceso a los campos del registro de datos será: WRITE: LE_PROV-NAME1. LIFNR LIKE LFA1-LIFNR. Parámetro VALUE Con el parámetro VALUE inicializamos la variable con un valor distinto al por defecto. Ejemplo: DATA LV_CONTADOR TYPE P VALUE 1. END OF LE_PROV. DATA LV_VAR_CAR(8).

Visualizando la Estructura SYST (con SE11) podemos observarlas a todas ellas: Embotelladora del Atlántico .ABAP Workshop Diccionario y Reportes Noviembre 2009 INCLUDE STRUCTURE Además podemos utilizar la misma estructura que una tabla transparente o de base de datos. DATA END OF LE_SOCIEDADES. Estas a diferencia de las de base de datos (o transparentes) se guardarán en memoria y no en el diccionario de datos. Tablas Internas También usaremos la instrucción DATA para declarar tablas internas. SY-DATUM la fecha del sistema y SY-UZEIT la hora. Variables del Sistema ABAP tiene algunas variables internas que se van actualizando automáticamente y que pueden ser utilizadas en los programas. SY-UNAME almacena el nombre del usuario. INCLUDE STRUCTURE T001. Ejemplo: DATA BEGIN OF LE_SOCIEDADES. 0 si fue exitosa u otro valor para los casos erróneos.Coca-Cola Página 18 / 43 . Ejemplo: DATA LT_PROV LIKE STANDARD TABLE OF LE_PROV. Las más comunes son SY-SUBRC que indica el resultado de una operación. Para ello utilizaremos la instrucción INCLUDE STRUCTURE.

Ej. Ejemplo: DATA: lv_date_long TYPE c LENGTH 10. LV_VAR2(15) VALUE ‘Hola’. CLEAR inicializa al valor que tiene por defecto sin tener en cuenta las cláusulas VALUE. VARIABLE+offset(longitud) Ejemplo: DATA: LV_VAR1(15) VALUE ‘EDASA Coca Cola’.: CLEAR LV1. Ejemplo: LV_VAR1 = LV_VAR2. MOVE LV_VAR1+0(5) TO LV_VAR2+5(5).Coca-Cola Página 19 / 43 . Sentencia MOVE Podemos sustituir esta última instrucción por: MOVE <var1> TO <var2>. Sentencia WRITE Esta sentencia asigna el contenido formateado de la variable de origen a la de destino. Sentencia MOVE-CORRESPONDING Podremos conseguir una asignación más potente con MOVE-CORRESPONDING. Acceso a Sub Cadenas Es posible referenciar o asignar valores a una parte de la variable utilizando el offset. Asignación Directa Para transportar el contenido de var1 al campo var2 podemos utilizar: <var2> = <var1>. Ejemplo: MOVE LV_VAR1 TO LV_VAR2. Ejemplo: MOVE-CORRESPONDING ge_struc1 TO ge_struc2.ABAP Workshop Diccionario y Reportes Noviembre 2009 Asignación de Valores Existen diversas formas de asignar valores a una variable en ABAP. Embotelladora del Atlántico . WRITE LV_VAR2. Hola EDASA Resultado: Sentencia CLEAR Para inicializar las variables utilizamos la sentencia: CLEAR <campo>. Observación: Esta instrucción también se utiliza (sin el TO) para dar salida por pantalla. date_mask DD/MM/YY. WRITE sy-datum TO: date_long. MOVE-CORRESPONDING <reg1> TO <reg2>. lv_date_mask TYPE c LENGTH 8. Esta instrucción mueve de reg1 a reg2 aquellos campos que tengan idéntico nombre.

Coca-Cola Página 20 / 43 .>.. Formulando Condiciones Sentencia IF Como en todos los lenguajes estructurados. … ELSE. … ELSEIF<Cond. Ejemplo: DATA time TYPE t. … ENDIF..>.>. ELSEIF time > '120000' AND time < '240000'.12 * 3600.. WRITE: / time. Para introducir una condición utilizaremos la sentencia IF .. ELSE. IF <Cond. … ELSE. ELSE . D = 49 / 7. … ENDIF.. ENDIF. ENDIF.>. time = sy-uzeit. time = time . IF time < '120000'. . 'AM' . IF <Cond. WRITE: / time. ENDIF que podrá aparecer en distintas modalidades. Posibles Sintaxis: IF <Cond.. disponemos de una serie de instrucciones para subdividir el programa en bloques lógicos se ejecutarán cuando se cumpla una cierta condición. B = 4 * 3. 'PM' . C = 11 MOD 5. Embotelladora del Atlántico . WRITE / 'High Noon'.ABAP Workshop Diccionario y Reportes Noviembre 2009 Operaciones Aritméticas en ABAP Las principales operaciones aritméticas se pueden implementar directamente con: Operador + * Función Suma Resta Multiplicación / DIV MOD ** División Entero de una División Resto de una División Potencia Ejemplos: Lógica Básica A = 100 + 25.

LEAVE PROGRAM. LEAVE SCREEN.. ENDCASE. ENDCASE... GE  Menor o igual <= . WHEN 'BACK'.. WHEN <valor2>. .. LT  Mayor o igual >= .. LE Sentencia CASE Se utiliza para ejecutar diferentes instrucciones en función del contenido de un campo. Ejemplo: CASE sy-ucomm. GT  Menor < ..' TYPE 'E'.. WHEN OTHERS. WHEN 'CANCEL'.. NE  Mayor > . . WHEN <valor1>.Coca-Cola Página 21 / 43 . : WHEN OTHERS.ABAP Workshop Diccionario y Reportes Noviembre 2009 Operadores para Condiciones En las condiciones utilizamos los clásicos operadores:  AND  OR  Igual = . WHEN 'EXIT'. LEAVE TO SCREEN 100.. EQ  Distinto <> . . Embotelladora del Atlántico . CASE <campo>.. MESSAGE '.

WHILE sy-subrc = 0. DO <n> TIMES.ABAP Workshop Diccionario y Reportes Noviembre 2009 Proceso de Bucles Sentencia DO DO permite ejecutar un bloque de instrucciones tantas veces como se especifique. square. WHILE permite anidar bucles.. Ejemplo: DATA square TYPE i. Ejemplo: DATA text TYPE string VALUE `One Two Three`. Embotelladora del Atlántico . En ese caso SY-INDEX hará referencia al bucle en proceso. ENDDO. ENDWHILE. WRITE: / sy-index. WHILE <cond>. De la misma forma que la instrucción DO. .. ENDDO. Sentencia WHILE Permite ejecutar un bloque de instrucciones mientras se cumpla una condición.. DO 10 TIMES. REPLACE space WITH '-' INTO text. ENDWHILE.Coca-Cola Página 22 / 43 . Es posible anidar DO’s. En la variable del sistema SY-INDEX tendremos un contador del nº de repeticiones. square = sy-index ** 2. ..

ENDDO. Sentencia EXIT La instrucción EXIT. Realiza un chequeo de <cond> de forma que si dentro de un bucle la condición es falsa. ENDDO. ENDIF. remainder = sy-index MOD 2. y antes se ejecutará el evento END-OF-SELECTION. Ejemplo: DATA remainder TYPE i. WRITE / sy-index. DO 20 TIMES. DO. saltará todas las instrucciones que siguen al CHECK e iniciará la siguiente pasada al bucle. CHECK remainder = 0.ABAP Workshop Diccionario y Reportes Noviembre 2009 Sentencias de Control Se utilizan para terminar el procesamiento de un bucle o proceso. Si la instrucción EXIT está dentro de varios bucles anidados. si la condición es falsa. EXIT. Fuera de un bucle. rutina o programa en proceso. START-OF-SELECTION y GET. saltará todas las instrucciones que siguen hasta el final del evento.Coca-Cola Página 23 / 43 . únicamente saldrá del bucle en proceso. Ejemplo: DATA limit TYPE i VALUE 10. WRITE / sy-index. Embotelladora del Atlántico . Esta se puede utilizar dentro de los bloques AT SELECTION-SCREEN. Sentencia CHECK La instrucción CHECK <cond>. Dentro de un bucle saldrá del mismo y fuera saldrá del programa. IF sy-index > limit. Sentencia STOP Con la instrucción STOP finalizaremos el reporte (programa) en ejecución.

etc. íconos. Con el Offset indicaremos la columna donde empezará la impresión (opcional). ULINE /(<offset>)(<long>). Sentencia SKIP Para saltar una o varias líneas utilizaremos SKIP. Sentencia NEW-PAGE Se utiliza para saltar una página. lv_len TYPE i VALUE 5. WRITE /(<offset>)(<long>) ‘<datos a visualizar>‘. Embotelladora del Atlántico . para mostrar por pantalla un valor utilizaremos WRITE. Tendrá las mismas propiedades que el WRITE. Por defecto el salto será de una línea. Ejemplo: SKIP 2. Con Long indicaremos la longitud de los valores a visualizar (opcional).Coca-Cola Página 24 / 43 . realizar un hotspot. Otras opciones son imprimir colores.ABAP Workshop Diccionario y Reportes Noviembre 2009 Introducción a las Sentencias de Salida en Reportes Veremos un resumen de las sentencias de salida básicas de reportes. Ejemplo: DATA: lv_text TYPE string VALUE '0123456789ABCDEF'. Es especialmente útil si el reporte se va a imprimir. intensidades. Estas alternativas de formato pueden aplicarse también con la sentencia FORMAT. WRITE /5(10) lv_text. WRITE AT lv_col(lv_len) lv_text. Ejemplo: ULINE. Sentencia ULINE Imprime una línea de Subrayados. SKIP <n>. Con la Barra / indicaremos si queremos saltar una línea o no antes de imprimir (opcional). WRITE lv_text. indican que la sentencia se aplica a todos los argumentos que siguen separados por coma. Observación: Los dos puntos luego de la sentencia DATA (o cualquier otra instrucción). lv_col TYPE i VALUE 25. Sentencia WRITE Como hemos comentado.

OBLIGATORY. SELECTION-SCREEN.Coca-Cola Página 25 / 43 . etc. ‘Elementos de texto’ y ‘Textos de selección’ se podrán actualizar los títulos que aparecen junto a los parámetros de entrada definidos.ABAP Workshop Diccionario y Reportes Noviembre 2009 Pantallas de Selección Son pantallas automáticamente generadas que construimos por medio de instrucciones Abap (PARAMETERS.). Los nombres de estas variables no pueden ser superiores a 8 caracteres. marcos.Ejercicio Práctico B Embotelladora del Atlántico . Ejemplo: SELECT-OPTIONS S_WERKS FOR VIAUFKST-WERKS OBLIGATORY. Ejemplo: PARAMETERS: p_bukrs LIKE t001-bukrs OBLIGATORY. Ejemplo de Utilización para Fijación de Conocimientos . NO INTERVALS Solo aparece el campo Desde. etc. ‘Pasar a’. Sentencia SELECT-OPTIONS Para ingreso de valores múltiples. PARAMETERS: <var1> LIKE <tipo> DEFAULT <valor> Igual que el VALUE. exclusiones. El usuario las utiliza para especificar ciertos valores o filtros que luego usará el programa en su ejecución. rangos. comentarios. Sentencia PARAMETERS Permite introducir un valor simple. SELECT-OPTIONS: <var2> FOR f DEFAULT <valor> Igual que el VALUE. Por menú con las opciones. SELECT-OPTIONS. OBLIGATORY Obliga a introducir algún valor. botones. etc. Tiene por defecto la forma Desde-Hasta. Obliga a introducir algún valor. El sistema es el encargado de transferir los valores ingresados a las variables correspondientes. Sentencia SELECTION-SCREEN Sirve para colocar una línea separación.

estructuras y tablas internas. END OF GE_T005U. de uso más o menos generalizado. aún se soportan).ABAP Workshop Diccionario y Reportes Noviembre 2009 Tablas Internas Si deseamos guardar una colección de registros de datos con la misma estructura en memoria y poder realizar operaciones diversas con este conjunto de información. También una estructura LS_SPFLI con los mismos campos. vemos aquí los mayormente utilizados a fin de no complicar innecesariamente el workshop. LS_SPFLI LIKE LINE OF LT_SPFLI. BEZEI TYPE T005U-BEZEI. También existen varias diversas otras formas de declarar tablas internas en Abap. pero esto no es aplicable dentro de clases (Orientación a Objetos). Embotelladora del Atlántico . como muchas otras vistas. tiene más parámetros posibles.: todas aquellas que utilicen el parámetro OCCURS ya no deberían utilizarse (aunque por compatibilidad hacia atrás. Ahora definimos una estructura (a veces denominada área de trabajo) para contener un código y una descripción de una provincia. que posteriormente utilizaremos conjuntamente con la tabla interna. que indica si son Locales (válidas dentro de una rutina) o Globales (para todo el programa). Aquí definimos una tabla interna LT_SPFLI de tipo estándar e idéntica a la tabla transparente o de diccionario (que existe en la BD) SPFLI. y en base a esta. Con el parámetro ‘WITH HEADER LINE’ nos ahorramos de definir explícitamente el área de trabajo.Sentencia DATA Sintaxis: DATA <intab> { {TYPE tabkind OF [REF TO] type} | {LIKE tabkind OF dobj} } [WITH HEADER LINE]. BLAND TYPE T005U-BLAND. DATA: BEGIN OF GE_T005U.Coca-Cola Página 26 / 43 . Algunas Observaciones: Las letras L o G con que comienzan los nombres de las diferentes variables. Ejemplos: DATA: LT_SPFLI TYPE STANDARD TABLE OF SPFLI. utilizaremos tablas internas (en otros entornos suelen denominarse matrices). Esta sentencia. por ej. una tabla interna de provincias. que actualmente son obsoletas. son una convención. " Región o Provincia " Denominación Provincia DATA GT_T005U LIKE STANDARD TABLE OF GE_T005U. Declarar Tablas Internas .

Sentencia APPEND Añade al final de una tabla interna el contenido del área de trabajo. APPEND GE_WA TO GT_TAB. INSERT INTO Ejemplo: INSERT ge_conexion INTO TABLE gt_conexion.Sentencia COLLECT Añade o suma el contenido del área de trabajo a la tabla interna. Su sintaxis general es: APPEND TO Ejemplos: APPEND ge_seats TO gt_seats_tab SORTED BY seatsfree. Embotelladora del Atlántico . de otra tabla interna con idéntica estructura. Ejemplo: COLLECT ge_seats INTO gt_seats_tab. o una línea en blanco. {wa} | {INITIAL LINE} | {LINES OF jtab [FROM idx1] [TO idx2]} <intab> [SORTED BY comp].ABAP Workshop Diccionario y Reportes Noviembre 2009 Poblar una Tabla Interna . {TABLE intab} | {intab [INDEX idx]}.Sentencia INSERT Esta sentencia adiciona una o más líneas en una posición específica de una tabla interna. {wa} | {INITIAL LINE} | {LINES OF jtab [FROM idx1] [TO idx2]}.Coca-Cola Página 27 / 43 . a nuestra tabla interna. COLLECT wa INTO <intab>. Observación: Se puede sustituir por las instrucciones READ e INSERT o MODIFY. Poblar una Tabla Interna . APPEND INITIAL LINE TO gt_itab. Sumará los campos numéricos si existe una línea en la tabla con idéntica clave a la contenida en el área de trabajo. Poblar una Tabla Interna .

Coca-Cola Página 28 / 43 . SORT GT_DATOS BY DATO2 DESCENDING DATO3 ASCENDING..<field n>]. Con INTO CORRESPONDING FIELDS OF TABLE colocamos los valores leídos en los campos correspondientes de la tabla interna. Ejemplos: SELECT INTO FROM WHERE AND AND CARRID CONNID FLDATE PLANETYPE TABLE GT_VUELOS SFLIGHT CARRID EQ P_CARRID CONNID IN S_CONNID FLDATE IN S_FLDATE. SELECT * FROM <tab> INTO TABLE <intab>. Ejemplos: SORT GT BY CAMPO1. SORT .Sentencia SORT Para clasificar una tabla interna utilizamos SORT. Siempre que la tabla interna tenga la misma estructura que la tabla de base de datos. Ordenar una Tabla Interna .... sin necesidad de contar con estructuras idénticas. Observación: Más adelante vamos a ver en mayor detalle la Sentencia SELECT. Si no se indica lo contrario la ordenación por defecto es ascendente. pudiendo especificar por cuales campos. ASCENDING. o DESCENDING..Sentencia SELECT Podemos llenar una tabla interna con el contenido de una tabla de base de datos. SELECT carrid connid cityfrom cityto FROM spfli INTO CORRESPONDING FIELDS OF gt_table. SORT <intab> [BY <field 1> .ABAP Workshop Diccionario y Reportes Noviembre 2009 Poblar una Tabla Interna . Embotelladora del Atlántico .

LOOP AT <intab> ( WHERE <cond> ) INTO <wa>. Además podemos restringir el proceso de una tabla con una condición WHERE. .. En cada iteración coloca la línea de la TI que se está procesando en la cabecera. la variable de sistema SY-SUBRC será distinta de cero.. Ejemplos: READ TABLE GT WITH KEY AUFNR = ‘1’ INTO GE. sino <> 0.Sentencia READ TABLE Podemos buscar un registro concreto en una tabla sin necesidad de recorrerla. READ TABLE lee una línea desde una tabla interna.Coca-Cola Página 29 / 43 . . LOOP AT <intab> ( WHERE <cond> ). READ TABLE <intab> { FROM wa } | { WITH KEY comp1 = dobj1 comp2 = dobj2 } | { index }. Si no existe ningún registro de la tabla que cumpla la condición especificada en la cláusula WHERE. Leer Entradas de una Tabla Interna . Si nuestra tabla interna no tiene cabecera. ENDLOOP.. una condición clave libre o el número de registro. READ TABLE GT_DATOS INDEX 10 INTO GE_DATOS. ENDLOOP.... Podemos especificar cual. ENDLOOP. | INTO ge_wa. debemos indicarle que área de trabajo vamos a utilizar para ir colocando el contenido de la línea leída en cada iteración.. Ejemplo: LOOP AT GT_TAB WHERE CAMPO1 > 10 INTO GE_WA. Embotelladora del Atlántico .ABAP Workshop Diccionario y Reportes Noviembre 2009 Procesar una Tabla Interna . .. ENDLOOP.Sentencia LOOP Podemos recorrer una tabla interna con la instrucción LOOP . Recordemos que si la búsqueda ha sido positiva SY-SUBRC valdrá cero. SY-TABIX contiene el índice de la entrada que está procesando. indicando: la clave (explícitamente o por su área de trabajo). Observación: En general un SY-SUBRC <> 0 indica que la última instrucción no fue exitosa. Dentro del LOOP.

| intab [FROM idx1] [TO idx2] [WHERE log_exp].. . Ejemplos: DELETE ADJACENT DUPLICATES FROM GT_TABLA. Dentro de un LOOP.}|{ALL FIELDS}]. Su sintaxis general es: MODIFY { {TABLE intab }|{ intab INDEX idx} FROM wa.Sentencia DELETE Esta instrucción borra una o más filas. REFRESH <intab>. También puede eliminar las filas vecinas duplicadas (idénticas o con campos iguales).Sentencia MODIFY La sentencia MODIFY cambia el contenido de una o varias líneas que pueden especificarse con la clave de la tabla interna o su índice. | ADJACENT DUPLICATES FROM intab [COMPARING { comp1 comp2 . MODIFY gt_scarr_tab INDEX 5 FROM ge_scarr_wa.ABAP Workshop Diccionario y Reportes Noviembre 2009 Modificar Líneas de una Tabla Interna . Ejemplo: REFRESH GT_TABLA. Ejemplo: CLEAR GE_ESTRUCTURA. DELETE { {TABLE intab table_key} | {intab [INDEX idx]}..Sentencias CLEAR y REFRESH Para inicializar el área de trabajo o línea de cabecera utilizamos. la cláusula INDEX es opcional (se modifica la línea actual). }. | intab FROM wa WHERE log_exp }. DELETE GT_MITABLA FROM 1 TO 10. especificado la clave o índice de tabla interna.. DELETE gt_otra_tabla INDEX 7..Coca-Cola Página 30 / 43 . Ejemplos: MODIFY GT_VIAUFKST FROM GE_VIAUFKST. CLEAR <wa>. Para eliminar el contenido de una tabla interna usamos. Limpiar una Tabla Interna . Embotelladora del Atlántico . Eliminar Líneas de una Tabla Interna .

WRITE: / sflight_wa-carrid. sflight_wa-connid. ENDAT. SUM. WRITE: / 'Sum'. SUM. sflight_wa-seatsocc.. sflight_wa-seatsocc. SUM. AT NEW connid. WRITE: / sflight_wa-fldate. ENDAT...Sentencias AT y SUM Al recorrer una tabla interna con un LOOP. … AT END OF comp1. .. SUM.] ENDLOOP. según ciertos eventos que se den en sus registros o el contenido de los mismos.ABAP Workshop Diccionario y Reportes Noviembre 2009 Niveles de Ruptura .] … [AT NEW comp1. AT END OF carrid. WRITE: / 'Carrier Sum'. WRITE: / 'Overall Sum'. ENDAT. LOOP AT <intab> [INTO WA]. ENDAT. ENDLOOP. [AT FIRST. .Coca-Cola Página 31 / 43 . Ejemplo: LOOP AT sflight_tab INTO sflight_wa. AT END OF connid. ENDAT.] … [AT LAST. Ejemplo de Utilización para Fijación de Conocimientos . . sflight_wa-seatsocc. ...Ejercicio Práctico C => En la primer línea de la tabla interna => Luego de que el campo cambia de valor => Antes de que el campo cambie de valor => En la última línea de la tabla interna => Sumariza valores numéricos Embotelladora del Atlántico .. AT LAST. podemos ejecutar una serie de instrucciones. ENDAT.. ENDAT. sflight_wa-seatsocc. ENDAT.

compartir cierta lógica.ABAP Workshop Diccionario y Reportes Noviembre 2009 Subrutinas Las subrutinas son porciones de código que se utilizan para realizar una tarea repetitiva. Módulos de Función Métodos de una Clase (Programación Orientada a Objetos) Embotelladora del Atlántico . hacer más entendible el código fuente de los programas.Coca-Cola Página 32 / 43 . Básicamente existen 4 tipos de Subrutinas o Subprogramas. modularizar. centralizar cambios. Externas: El Subprograma y la llamada a éste están en programas distintos. reutilizar código. etc. • • • • Internas: El Subprograma y la llamada a éste están en el mismo programa.

. . Ejemplo: DATA: A1 TYPE C. la cabecera del módulo será: FORM <modulo> USING VALUE(var1). A3 TYPE C.ABAP Workshop Diccionario y Reportes Noviembre 2009 Subrutinas Internas Llamada a un procedimiento o subprograma. Tanto las variables como las tablas internas definidas al inicio del reporte. Embotelladora del Atlántico . PERFORM <modulo>. … FORM TEST USING CHANGING … ENDFORM. Por defecto serán por referencia. ABAP creará un espacio para esas variables que será liberado al salir del módulo.. ENDFORM. PERFORM <modulo> USING var1 var2 .. son globales a todas las subrutinas y por tanto accesibles en cualquier momento (no es necesario pasarlas como parámetros... FORM <modulo> .. . El programa principal y el procedimiento se podrán comunicar mediante parámetros. A4 TYPE I. ..... FORM <modulo> USING var1 var2 . aunque el valor que tengan será siempre el local en el módulo.. . P1 TYPE C P2 TYPE I VALUE(P3) TYPE C VALUE(P4) TYPE I.Coca-Cola Página 33 / 43 . A2 TYPE I.. aunque sí aconsejable). Por tanto se podrán utilizar variables con el mismo nombre que variables globales. Si queremos utilizar parámetros por valor.. ENDFORM. ENDFORM. … PERFORM TEST USING A1 A2 CHANGING A3 A4... Subprograma. Dentro de cada subrutina es posible declarar datos que sólo serán visibles dentro del módulo donde esté declarado. Los parámetros pueden ser pasados por valor o por referencia.

Embotelladora del Atlántico . que fue incluido en el programa principal. … PERFORM TEST USING A1 A2 CHANGING A3 A4. La llamada a una subrutina que esté dentro de un include. Si ya lo hicimos en el principal. Es bastante común definir los siguientes includes: TOP: Para definiciones globales y pantalla de selección FORM: Para subrutinas CLASS: Para clases locales (para Programación Orientada Objetos) PAI: Process After Input (para Module Pools) PBO: Process Before Output (para Module Pools) Como nombre todos deberían tener el del programa principal y luego estas letras. es totalmente idéntica a una de subrutina interna.. en el include no utilizaremos la sentencia REPORT. A4 TYPE I. … Y en el Include FORM estaría la Definición de la Rutina. Ejemplo: En el Programa Principal tendríamos la Llamada a la Rutina: DATA: A1 TYPE C.Coca-Cola Página 34 / 43 . FORM TEST USING CHANGING … ENDFORM. También existe la posibilidad de añadir porciones de código del tipo include (serían como subprogramas) con la muy utilizada instrucción: INCLUDE <report>. P1 TYPE C P2 TYPE I VALUE(P3) TYPE C VALUE(P4) TYPE I. También es posible declarar includes que se utilicen en múltiples programas..ABAP Workshop Diccionario y Reportes Noviembre 2009 Subrutinas Externas Si queremos llamar a una subrutina que está en un programa distinto utilizamos: PERFORM <sub>(<programa>) USING . A2 TYPE I. A3 TYPE C.

Ejemplo: CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = 'c:\temp\texto.. La interface bien definida facilita el paso de parámetros de entrada y salida..ABAP Workshop Diccionario y Reportes Noviembre 2009 Módulos de Función Las funciones son módulos especiales guardados en una librería central. CALL FUNCTION <funcion>. Se crean.. un objetivo bien definido. Esto último también es aplicable a Métodos.txt' filetype = 'ASC' IMPORTING filelength = lv_long TABLES data_tab = lg_tabla EXCEPTIONS file_write_error =1 invalid_type =2 no_authority =3 unknown_error =4 others = 10. cada error tiene un número predefinido que de corresponder se asigna a la variable SY-SUBRC. y asociados en Grupos de Funciones.. TABLES <tab_func> = <tab_prog> . modifican o visualizan por la SE37.Coca-Cola Página 35 / 43 . en el IMPORTING (opcional) el resultado o retorno de la función. Donde en el EXPORTING especificamos los parámetros de entrada. Cuando nos encontremos en el programa principal y queramos realizar una llamada a una función.. Se caracterizan por una interface... tablas y excepciones. Subrutinas. EXCEPTIONS <excep> = <valor> . IMPORTING <par_s> = <valor_ret> . EXPORTING <par_e> = <valor> . etc. Embotelladora del Atlántico . podemos utilizar el botón “Modelo” para que nos inserte un patrón con la sintaxis correcta incluyendo todos los parámetros de entrada.. y porque realizan tratamiento de excepciones o errores. la sentencia Write. salida. en TABLES (opcional) las tablas que se utilizan como parámetros de entrada/salida y en EXCEPTIONS (opcional) los tipos de errores que vamos a manipular si se produjeran dentro de la función.

<ci> =..<f i>. Otras formas más modernas de llamar a un método son: <ref>-><meth> (IMPORTING. Donde <ref> es una variable referenciada cuyo valor apunta a una instancia de una clase (objeto)..ABAP Workshop Diccionario y Reportes Noviembre 2009 Métodos (OOP) Breve repaso a la POO: Podemos afirmar que una clase es un molde con el cual se crean Objetos.. Los métodos visibles estáticos pueden ser llamados con la sentencia: CALL METHOD <class>=><meth>. Se deben pasar los parámetros de entrada en EXPORTING o CHANGING. Para llamar a un Método existen diversas formas.Coca-Cola Página 36 / 43 ..<f i>.<f i>...... CHANGING .Ejercicio Práctico D Embotelladora del Atlántico ...... la más utilizada es: CALL METHOD <ref>-><meth> EXPORTING. <ei> =. los de salida es optativo pasarlos en IMPORTING o RECEIVING. Un Objeto es una abstracción del mundo real..<g i>. Ejemplo de Utilización para Fijación de Conocimientos .).......<ii> =.... y los Métodos hacen referencia a su comportamiento.. Los Atributos son los datos característicos de un objeto. <ii> =. Ejemplo: CALL METHOD cl_gui_frontend_services=>directory_browse EXPORTING WINDOW_TITLE = 'Seleccionar Directorio' CHANGING SELECTED_FOLDER = lv_folder EXCEPTIONS CNTL_ERROR =1 ERROR_NO_GUI =2 OTHERS = 3. IMPORTING. se puede usar: CALL METHOD <ref>-><meth>(. <ei> =.. Si la interface de un método tiene sólo parámetros IMPORTING. <ei> = rc i.) <var> = <ref>-><meth>() Recordemos que la Transacción para manipular clases (visualizar métodos) es la SE24. RECEIVING r = h EXCEPTIONS. tampoco es obligatorio controlar los errores desencadenados con EXCEPTIONS. aunque se recomienda hacerlo.<g i>..

SELECT Lectura de un único registro de una tabla de la base de datos: SELECT SINGLE * FROM <tab> WHERE <cond>.. ENDSELECT. ‘%’ como una cadena de caracteres. <var2> . Embotelladora del Atlántico .ABAP Workshop Diccionario y Reportes Noviembre 2009 Instrucciones SQL ABAP tiene un subconjunto de sentencias SQL para su aplicación sobre tablas de la base de datos SAP.. Selecciona todos los registros que cumplan la condición del WHERE. es decir en cada iteración del bucle SELECT . y distinta si hubo algún inconveniente (por ej. no se encontraron datos). ). ENDSELECT tendremos un registro leído en dicha área. => Si <campo> cumple la máscara. => Si <campo> está entre los valores <var1> y <var2>. Se pueden utilizar: ‘_’ como carácter cualquiera. o a un índice secundario. LIKE: LIKE <literal enmascarado>. Por supuesto si la condición de la cláusula WHERE se acerca a la clave de la tabla. Lectura Iterativa: Selección de un grupo de registros. en la condición sólo podremos utilizar la igualdad y el operador AND. Las principales son: SELECT. En general la variable de sistema SY-SUBRC nos indicará el código de retorno de la operación. SY-DBCNT nos informará la cantidad de registros afectados por la última operación.... o todos en caso de no utilizarlo.. INSERT. 0 si fue satisfactoria. IN: IN (<var1> . ya que especificaremos toda la clave del registro.Coca-Cola Página 37 / 43 . Como realizamos la búsqueda de un registro. la búsqueda de registros será más rápida. SELECT * FROM <tab> (WHERE <cond>). En este Workshop nos concentraremos en las consultas (SELECT). Si <campo> esta en el conjunto de valores <var1> . El resultado lo tendremos en el área de trabajo. UPDATE. <var2> . MODIFY y DELETE. BETWEEN: SELECT * FROM <tab> WHERE <campo> BETWEEN <var1> AND <var2>.

los parámetros GROUP BY para agrupar. separados por coma. Otras lecturas: Podemos leer una tabla de base de datos y simultáneamente llenar una tabla interna con el resultado de la lectura (todos los registros que cumplan la condición). ENDSELECT. esto mejora notablemente la performance. Para realizar una selección en base a dos o más tablas utilizamos INNER JOIN: SELECT * INTO CORRESPONDING FIELDS OF TABLE <intab> FROM VBRK Primer Tabla INNER JOIN VBRP Segunda Tabla ON VBRK~VBELN = VBRP~VBELN Condición de Unión WHERE VBRK~VBELN = <var1>. SELECT * FROM <tab> INTO TABLE <intab> (WHERE <cond>). utilizaremos: SELECT * FROM <tab> APPENDING TABLE <intab> (WHERE <cond>). ENDSELECT. Si queremos que respete los registros que tenía la tabla interna antes de realizar el SELECT. Ejemplo de Utilización para Fijación de Conocimientos .: SELECT * FROM KNA1 INTO TABLE GT_KNA1 WHERE KUNNR GT 1000. lo aconsejable es reemplazarlo por la lista explícita de campos que necesitamos. y solo agregue las nuevas líneas sin eliminar las anteriores.ABAP Workshop Diccionario y Reportes Noviembre 2009 Esta opción es muy útil en conjunto con variables SELECT-OPTIONS.Ejercicio Práctico E Embotelladora del Atlántico .. Condición de Restricción Algunas Observaciones: Además es posible utilizar junto al SELECT. Por lo general conviene trabajar con TI y no con SELECT .: SELECT * FROM KNA1 APPENDING TABLE GT_KNA1 WHERE KUNNR LT 5. ya que por medio del IN podemos comparar campos de la base de datos directamente con las opciones múltiples ingresadas por el usuario en la pantalla de selección. Ej. Ejemplo: SELECT * FROM VBRK WHERE FKART IN S_FKART AND FKDAT BETWEEN '20080101' AND '20081231' AND INCO2 LIKE 'A%'. El * que utilizamos en los ejemplos significa traer todos los campos de la base de datos. Llena la tabla interna <intab> eliminando los registros que pudiera tener esta. HAVING para filtrar los grupos y ORDER BY para ordenar el resultado.Coca-Cola Página 38 / 43 .. Ej.

El primer nivel es el cero. IF SY-UCOMM = 'VER'. Para agregar un botón tenemos que crear un STATUS GUI (o copiarlo de algún otro programa. PERFORM DRILL_DOWN. <bloque-de-proceso> Ej. tengamos disponible este ID para buscar sus datos de detalle.Coca-Cola Página 39 / 43 . AT LINE-SELECTION.: AT LINE-SELECTION. y luego se va incrementando uno cada vez que hacemos un dril down.: HIDE: GS_VUELOS-CARRID. por ejemplo el STLI del estándar SAPMSSY0). IF SY-LSIND = 1.: AT USER-COMMAND. Ejemplo de Utilización para Fijación de Conocimientos . La variable de sistema SY-LSIND indica el nivel en que nos encontramos. GS_VUELOS-FLDATE. <bloque-de-proceso> Ej. Evento AT USER-COMMAND Este evento define un bloque de proceso que se activa cuando se selecciona un comando (se presiona un botón). que posteriormente podrán ser leídos. Sintaxis: HIDE <campo>. para que al hacer doble click en ella. Con esta sentencia almacenamos en memoria por ejemplo el número de una factura. Para hacer uso de él utilizaremos la sentencia SET PF-STATUS 'nombre del status'. GS_VUELOS-CONNID. El campo del sistema SY-UCOMM nos permite saber qué código de función ha activado el usuario. AT USER-COMMAND. Ej.Ejercicio Práctico F Embotelladora del Atlántico . Estos pueden o no salir en el listado. ENDIF. PERFORM MOSTRAR. Evento AT LINE-SELECTION Se utiliza para asociar cierta lógica a la acción del usuario seleccionar una línea del listado. Se utiliza en los informes interactivos cuando generan salidas secundarias.ABAP Workshop Diccionario y Reportes Noviembre 2009 Reportes Interactivos Sentencia HIDE La sentencia HIDE nos permite asociar a cada línea de un listado ciertos campos. ENDIF.

casi sin ninguna necesidad de codificación. la primera o Abap List Viewer utilizaba las siguientes funciones y clases: • • • • • Lista Grilla a pantalla completa Grilla Lista Jerárquica Árbol -> Función REUSE_ALV_LIST_DISPLAY -> Función REUSE_ALV_GRID_DISPLAY -> Clase CL_GUI_ALV_GRID -> Función REUSE_ALV_HIERSEQULIST_DISPLAY -> Clase CL_GUI_ALV_TREE Estas aún se soportan.ABAP Workshop Diccionario y Reportes Noviembre 2009 Reportes SAP List Viewer (ALV Orientado a Objetos) Los ALV brindan una forma más sencilla de realizar reportes e incluyen funciones como ordenar. filtrar. Existen dos generaciones o formas de realizar Reportes ALVs bien definidas. Deberíamos utilizar: • • • Lista o Grilla Lista Jerárquica Árbol -> Clase CL_SALV_TABLE -> Clase CL_SALV_HIERSEQU_TABLE -> Clase CL_SALV_TREE Así se visualiza un Reporte ALV en pantalla: Disposición Ordenar Filtrar Download Enviar Correo Embotelladora del Atlántico . pero con la llegada de NetWeaver fueron reemplazadas por la segunda generación o sAp List Viewer completamente Orientado a Objetos. etc.Coca-Cola Página 40 / 43 . sumarizar.

ABAP Workshop Diccionario y Reportes Noviembre 2009 Podemos ver algunos ejemplos en los programas estándares SALV_DEMO*. Salida ALV Grilla (Programa SALV_DEMO_TABLE_SIMPLE): Salida ALV Lista Jerárquica (Programa SALV_DEMO_HIERSEQ_SIMPLE): Salida ALV Árbol (Programa SALV_DEMO_TREE_SIMPLE): Embotelladora del Atlántico .Coca-Cola Página 41 / 43 .

GR_TABLE->DISPLAY( ). DATA: GT_SPFLI TYPE TABLE OF SPFLI. y luego con el método SET_ALL las disponibilizaremos. Por medio del método GET_FUNCTIONS recibiremos estas en una variable de referencia. DATA: GR_TABLE TYPE REF TO CL_SALV_TABLE. DATA: GR_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS. Opciones de Visualización Podemos cambiar algunas opciones de visualización de un ALV utilizando la clase CL_SALV_DISPLAY_SETTINGS. Por ejemplo para utilizar cebra (líneas claras y oscuras intercaladas): GR_DISPLAY>SET_STRIPED_PATTERN( CL_SALV_DISPLAY_SETTINGS=>TRUE ). etc) vamos a utilizar la clase CL_SALV_FUNCTIONS. Creamos una referencia y recibimos el objeto por medio del método GET_DISPLAY_SETTINGS del objeto de la clase CL_SALV_TABLE. 2) invocar el método FACTORY de dicha clase para crear nuestro objeto ALV y 3) llamar al método DISPLAY para mostrar el reporte. Y si quisiéramos colocar un Título a nuestro reporte usaríamos: GR_DISPLAY->SET_LIST_HEADER( 'Título del Reporte' ). GR_FUNCTIONS->SET_ALL( ABAP_TRUE ). SELECT * INTO TABLE GT_SPFLI FROM SPFLI. filtrar. DATA: GR_DISPLAY TYPE REF TO CL_SALV_DISPLAY_SETTINGS. Funciones Para agregar botones con las funciones predefinidas de los ALV (ordenar.Coca-Cola Página 42 / 43 . GR_DISPLAY = GR_TABLE->GET_DISPLAY_SETTINGS( ). lo único nuevo que vamos a ver es: 1) definir una referencia a la clase CL_SALV_TABLE. GR_FUNCTIONS = GR_TABLE->GET_FUNCTIONS( ). START-OF-SELECTION.ABAP Workshop Diccionario y Reportes Noviembre 2009 ALV Básico En el siguiente ejemplo. Embotelladora del Atlántico . CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = GR_TABLE CHANGING T_TABLE = GT_SPFLI ).

Ejercicio Práctico G FIN . DATA: GR_COLUMN TYPE REF TO CL_SALV_COLUMN. Filtros Utilizando la clase CL_SALV_FILTERS podremos setear algunos filtros por defecto para los datos de nuestro reporte. Orden Para dar un orden inicial determinado emplearemos la clase CL_SALV_SORTS.ABAP Workshop Diccionario y Reportes Noviembre 2009 Columnas Para cambiar algunos atributos específicos de una columna utilizaremos referencias a las clases CL_SALV_COLUMNS y CL_SALV_COLUMN. Sumarizaciones Para incluir totales usaremos una referencia a la clase CL_SALV_AGGREGATIONS. DATA: GR_COLUMNS TYPE REF TO CL_SALV_COLUMNS. Recibiremos el objeto con el método GET_FILTERS de la clase CL_SALV_TABLE y agregaremos un nuevo filtro con el método ADD_FILTER. DATA: GR_AGG TYPE REF TO CL_SALV_AGGREGATIONS. GR_FILTER = GR_TABLE->GET_FILTERS( ). Ejemplo de Utilización para Fijación de Conocimientos . GR_SORTS = GR_TABLE->GET_SORTS( ). GR_AGG->ADD_AGGREGATION( 'DISTANCE' ). para las columnas en general y para cada columna en particular. GR_COLUMN = GR_COLUMNS->GET_COLUMN( 'nombrecolumna' ). su método ADD_SORT.Coca-Cola Página 43 / 43 . GR_FILTER->ADD_FILTER( COLUMNNAME = 'nombrecolumna' LOW = 'valor' ). respectivamente. GR_COLUMN->SET_LONG_TEXT( 'texto largo' ). su método ADD_AGGREGATION y GET_AGGREGATIONS del objeto referente a CL_SALV_TABLE. Los métodos son GET_COLUMNS y GET_COLUMN. GR_COLUMN->SET_MEDIUM_TEXT( 'texto medio’ ).ABAP Workshop . GR_SORTS->ADD_SORT( 'nombrecolumna' ). GR_AGG = GR_TABLE->GET_AGGREGATIONS( ). GR_COLUMN->SET_SHORT_TEXT( 'texto corto' ). y el método GET_SORTS del objeto de la clase CL_SALV_TABLE como sigue: DATA: GR_SORTS TYPE REF TO CL_SALV_SORTS.Diccionario de Datos y Reportes Embotelladora del Atlántico . GR_COLUMNS = GR_TABLE->GET_COLUMNS( ). DATA: GR_FILTER TYPE REF TO CL_SALV_FILTERS.

Sign up to vote on this title
UsefulNot useful