Curso ABAP - Manual v1

download Curso ABAP - Manual v1

of 322

Transcript of Curso ABAP - Manual v1

  • 7/23/2019 Curso ABAP - Manual v1

    1/322

    Curso programacin ABAP IV:

    Temario ymaterial de soporte

  • 7/23/2019 Curso ABAP - Manual v1

    2/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    TEMARIO DEL CURSO

    1. INTRODUCCION1.1 QUE ES UN ERP1.2 MODULOS DE SAP1.3 CONCEPTO DE MANDANTE1.4 USUARIO Y PASS1.5 MENU SAP, MENU USUARIO, FAVORITOS, TRANSACCIONES,1.6 INTRODUCCIN AL SISTEMA BASE1.7 R/3 SAP PORTALS BW, ETC

    2. INTRODUCCION A LA PROGRAMACIN

    2.1 DEFINICIN DE DATOS (Tipos de datos, variables, constantes, estructuras,rangos, field-symbols)

    2.2 MODULARIZACIN ( Subrutinas y includes)2.3 VARIABLES DEL SISTEMA (SYST)2.4 INSTRUCCIONES BSICAS

    2.4.1 Asignaciones ( =, MOVE, MOVE-CORRESPONDING, CLEAR,OFFSET )

    2.4.2 Operaciones condicionales (EQ, NE, GE, ., IF, CASE, Op.Condicionales Cadenas CS, CA )

    2.4.3 Iteracin (bucles) (DO, WHILE, CONTINUE, CHECK, EXIT)2.4.4 Aritmticas (SQRT, ADD, SUBTRACT, MULTIPLY, DIV, MOD)2.4.5 Tratamiento de cadenas (CONCATENATE, SHIFT,

    CONDENSE,TRANSLATE, REPLACE, STRLEN)2.4.6 Formateo de valores (WRITE TO, PACK, UNPACK)2.4.7 Mensajes (MESSAGE)2.4.8 Comentarios de programas

    2.5 TABLAS INTERNAS2.5.1 Declaracin2.5.2 Creacin de registros2.5.3 Lectura de registros2.5.4 Modificacin de registros2.5.5 Borrado de registros2.5.6 Tratamiento de registros

    2.6 TABLAS DICCIONARIO2.6.1 Declaracin2.6.2 Creacin de registros2.6.3 Seleccin de datos (SELECT ver todas las opciones)2.6.4 Lectura de registros por clave2.6.5 Modificacin de registros2.6.6 Borrado de registros2.6.7 Tratamiento de registros

    2.7 DEBUGGING

    Pg. 2

  • 7/23/2019 Curso ABAP - Manual v1

    3/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    3. DICCIONARIO

    3.1 INTRODUCCIN AL DICCIONARIO

    3.2 DOMINIO3.3 ELEMENTO DE DATOS3.4 TIPOS DE TABLAS (transparentes, estructuras, vistas, cluster)3.5 TABLAS (SE11)

    3.5.1 Creacin de tablas3.5.2 Opciones tcnicas3.5.3 Estructuras append3.5.4 ndices3.5.5 Utilidades base de datos3.5.6 Generacin actualizacin de tablas3.5.7 Visualizar/Modificar contenido tablas (SE16, SE16N y SM30)3.5.8 Claves Externas

    3.6 ESTRUCTURAS3.7 VISTAS3.8 MATCHCODE (Ayudas de bsqueda)3.9 OBJETOS DE BLOQUEO

    4. REPORTS

    4.1 INTRODUCCIN (PLANOS E INTERACTIVOS)4.2 EDITOR ABAP IV (SE38, SE80)

    4.2.1 Documentacin y estructuracin de un listado plano.4.2.2 Definicin de atributos de salida.4.2.3 Definicin de tablas externas.4.2.4 Pantalla de seleccin.4.2.5 Elementos de texto

    Smbolos de texto Textos de seleccin Ttulos y cabeceras

    4.2.6 Sentencias de salida de datos4.2.7 Message4.2.8 Eventos

    INITIALIZATION START-OF-SELECTION END-OF-SELECTION TOP-OF-PAGE

    END-OF-PAGE AT SELECTION-SCREEN

    4.2.9 Eventos de rupturas de secuencia en tablas internas AT FIRST ENDAT AT LAST ENDAT AT NEW campo ENDAT AT END OF campo ENDAT

    Pg. 3

  • 7/23/2019 Curso ABAP - Manual v1

    4/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    ON CHANGE OF campo ENDON

    4.2.10 Bases de datos lgicas

    4.2.11 FIELD-GROUPS4.2.12 Programacin de listados interactivos Introduccin Eventos (AT LINE-SELECTION, AT USER-COMMAND,

    CASE SY-UCOMM, AT PFn) Sentencias de lectura y escritura de lneas (HIDE, READ

    LINE) Niveles de listados anidados Menu Painter Screen Painter

    4.3 ALV GRID

    5. PROGRAMACIN DE DILOGO

    5.1 INTRODUCCIN5.2 MODULE POOLS

    5.2.1 Introduccin5.2.2 Programa marco o principal5.2.3 Atributos de la pantalla5.2.4 Diseo grfico5.2.5 Status de pantalla (barra mens, teclas funcin, barra

    herramientas, barra pulsadores, )5.2.6 Lgica del proceso

    PBO

    PAI PROCESS ON HELP-REQUEST PROCESS ON VALUE-REQUEST

    5.2.7 Sentencias SET PF-STATUS SET TITLEBAR MODULE LEAVE PROGRAM AT EXIT-COMMAND AT CURSOR-SELECTION MESSAGE

    FIELD CHAINENDCHAIN ON INPUT ON CHAIN-INPUT ON REQUEST ON CHAIN-REQUEST ETC

    5.2.8 Asignacin de transacciones (SE93)

    Pg. 4

  • 7/23/2019 Curso ABAP - Manual v1

    5/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    5.2.9 Modificacin dinmica de una pantalla (LOOP AT SCREEN)5.2.10 TABLE CONTROL Y TABS5.2.11 Secuencia de proceso de pantallas (SET SCREEN, LEAVE

    SCREEN, LEAVE TO SCREEN, CALL SCREEN, LEAVEPROGRAM)5.2.12 Procesamiento de listados en pantallas

    6-FUNCIONES

    6.1 INTRODUCCIN6.2 CREACIN DE UN GRUPO DE FUNCIONES6.3 CREACIN DE UNA FUNCIN6.4 PARMETROS DE UNA FUNCIN

    6.4.1 Import6.4.2 Export6.4.3 Changing6.4.4 Tablas

    6.5 EXCEPCIONES6.6 DATOS GLOBALES6.7 CDIGO FUENTE6.8 EJECUCIN6.9 RFCs y BAPIs

    7-LLAMADAS A PROGRAMAS Y GESTIN DE MEMORIA

    7.1 INTRODUCCIN7.2 PARMETROS DE MEMORIA SAP (SET, GET, DATOS PROPIOS)7.3 SENTENCIAS DE LLAMADAS A PROGRAMAS (SUBMIT, CALLTRANSACTION)7.4 INTERCAMBIO DE DATOS A TRAVS DE LA MEMORIA ABAP/4(EXPORT, IMPORT, FREE MEMORY)

    8-INTERFASES

    8.1 INTRODUCCIN8.2 TRATAMIENTO DE FICHEROS8.3 INSTRUCCIONES

    8.3.1 Lectura/Escritura de ficheros fsicos (GUI_DOWLOAD,GUI_UPLOAD)8.3.2. Lectura ficheros servidor

    OPEN DATASET READ DATASET TRANSFER CLOSE DATASET DELETE DATASET

    8.3.3 EXPLORAR FICHEROS (AL11)8.3.4 TRANSACCIN FILE (FICHEROS LGICOS)8.3.5 PROGRAMAS DE CARGA

    Pg. 5

  • 7/23/2019 Curso ABAP - Manual v1

    6/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    8.3.6 BATCH INPUT Introduccin Grabadora (SHDB).

    BDC_OPEN_GROUP BDC_INSERT CLOSE_GROUP Creacin de juegos de datos Tratamiento/Ejecucin de juegos de datos CALL TRANSACTION (OPCIONES) DIRECT INPUT

    8.3.7 LEGACY SYSTEM MIGRATION WORKBENCH (LSMW)

    9-FORMULARIOS

    9.1 INTRODUCCIN9.2 ESTRUCTURA DE UN FORMULARIO (PROG.IMPRESIN, FORMULARIO)9.3 EDITOR DEL FORMULARIO (SE71)

    9.3.1 Cabecera9.3.2 Pginas9.3.3 Ventanas9.3.4 Ventana pgina9.3.5 Formatos de prrafo9.3.6 Formatos caracteres9.3.7 Elementos de texto

    9.4 SAPSCRIPT9.4.1 Cajas, lneas y sombreados

    9.4.2 Comandos de control9.4.3 Smbolos SAPScript9.4.4 Smbolos del sistema9.4.5 Campos generales de SAPScript9.4.6 Opciones de formato de los smbolos9.4.7 Formularios en varios idiomas9.4.8 Inclusin de grficos

    9.5 PROGRAMA DE IMPRESIN9.5.1 OPEN_FORM9.5.2 WRITE_FORM9.5.3 CLOSE_FORM9.5.4 ETC

    9.6 SMARTFORMS9.6.1 Parametrizacin global9.6.2 Paginas y ventanas (MAIN)9.6.3 Elementos para control de flujo

    10-PROGRAMACIN ORIENTADA A OBJETOS

    10.1 INTRODUCCIN10.2 CLASES Y OBJETOS

    Pg. 6

  • 7/23/2019 Curso ABAP - Manual v1

    7/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    10.3 METODOS Y PROPIEDADES10.4 HERENCIA10.5 POLIMORFISMO

    10.6 TABLAS INTERNAS DE OBJETOS10.7 EJEMPLOS

    11- AMPLIACIONES SAP

    11.1CMOD y SMOD11.2 USER EXIT11.3 BADIS

    12- RESTO DE INSTRUCCIONES ABAP

    12.1 REPASO DE LAS INTRUCCIONES ABAP

    13- TABLAS ESTANDAR SAP

    13.1 PRINCIPALES TABLAS ESTANDAR SAP

    14- TRANSACCIONES ESTANDAR SAP

    14.1 OBTENCIN DE LA AYUDA TCNICA (F1)14.2 TRACE DEL SISTEMA (ST05)14.3 TRANSPORTE (SE10 y STMS)14.4 ANALISIS DE ERRORES (ST22)14.5 SPOOL (SP01)14.6 PROGRAMACIN DE JOBS (SM37)14.7 SXDA14.8 EDITOR SPLIT SCREEN (SE39)14.9 OBJECT NAVIGATOR (SE80)14.10 MENS MBITO (SE43N)14.11 QUERYS (SQ01, SQ2, SQ03)14.12 WORKFLOW14.13 VERIFICACIN AMPLIADA

    Pg. 7

  • 7/23/2019 Curso ABAP - Manual v1

    8/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    1. Introduccin

    1.1 Qu es un ERP

    Un ERP (Enterprise Resource Planning) permite la integracin de los procesosde negocio y sistemas para alcanzar una amplia eficiencia operacional de laempresa. Adems mejora el funcionamiento de un negocio consolidando lasoperaciones de una empresa en una nica base de datos, una sola aplicacin yuna nica interfaz de usuario.

    1.2 Mdulos de SAP

    SAP (Systems Application Products in Data Processing) R/3 es un EnterpriseResource Planning

    Sus ventajas se resumen en las siguientes: Integracin Flexibilidad Procesamiento de datos en tiempo real Diseado para todo tipo de negocio

    Presenta una arquitectura de tres capas: Cliente, Servidor de aplicacin y Servidor deBase de Datos

    Se presentan en SAP diferentes mdulos. Los vemos con un esquema:

    Pg. 8

  • 7/23/2019 Curso ABAP - Manual v1

    9/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Sales and Distribution (SD). Ventas y distribucin.Da soporte a las tareas y actividades llevadas a cabo en ventas, entregas y

    facturaciones.

    Materials Management (MM) Gestin de materiales.Da soporte a la consecucin y funciones de inventario, como la compra, la

    gerencia de inventario.

    Production Planning (PP)Se utiliza para planear y controlar las actividades de la fabricacin de una

    empresa. Este mdulo incluye; las listas de material, encaminamientos, centrosde trabajo, ventas y la planificacin de operaciones, la planificacin deexigencias material, el control de planta, rdenes de produccin, coste deproducto, etc.

    Quality Management (QM) Es un control de calidad y proporciona el control dela fabricacin y la consecucin.

    Plant Maintenance (PM) Esun proceso de fabricacin de complejo donde elequipo puede ser reconstruido y el mantenimiento de servicio proporcionado. ElMantenimiento de Planta esta muy relacionado con PP.

    Human Resources (HR). Recursos Humanos es un sistema completo integradopara apoyar la planificacin y el control de actividades de personal.

    Financial Accounting (FI). Finanzas. Diseado para direccin automatizada ygeneracin de informes externos del libro de contabilidad general, cuentas porcobrar, cuentas por pagar y otras cuentas del sublibro de contabilidad.

    Pg. 9

  • 7/23/2019 Curso ABAP - Manual v1

    10/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Controlling (CO) Representa el flujo de coste de la empresa

    1.3 Concepto de mandante

    El concepto de mandante se refiere a diferentes escenarios de datos independientesunos de otros con los que el sistema trabaja. Es simplemente un rea de trabajo dentrode un ambiente SAP (produccin, integracin y desarrollo).

    1.4 Usuario y Password

    1.5 Menu SAP, Men Usuario, Favoritos transacciones

    Men de usuario

    Pg. 10

  • 7/23/2019 Curso ABAP - Manual v1

    11/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Favoritos, transacciones.

    Pg. 11

  • 7/23/2019 Curso ABAP - Manual v1

    12/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    2. Introduccin a la programacin

    2.1 Definicin de datos

    2.1.1 Tipos de datos.

    Los tipos de datos que se pueden utilizar en ABAP /4 son los siguientes:

    Tipos Long.porDefecto

    Longitudposible

    Valorinicial

    Descripcin

    C 1 1-32000

    ESPACIOS

    Texto

    F 8 8 0.0E+00 Punto flotanteI 4 4 0 EnteroN 1 1-

    320000000 Texto

    numricoP 8 1-16 0 Nmero

    EmpaquetadoX 1 1-

    29870x00 Hexadecimal

    D 8 8 00000000 FechaYYYYMMDD

    T 6 6 000000 HoraHHMMSS

    Pg. 12

  • 7/23/2019 Curso ABAP - Manual v1

    13/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    2.1.2 Variables

    Las variables se definen con la sentencia DATA.

    DATA (longitud) TYPE VALUE .

    Si no se indica lo contrario las variables se definirn por defecto de tipo carcter (Texto)con longitud 1.DATA D_CARACTER. Se crear una variable de texto con longitud 1DATA D_CARACTER (8). Se crear una variable de texto con longitud 8

    Con la clusula TYPE podemos especificar el tipo de dato de las variables.DATA: D_NUMERO_CAR (5) TYPE N,D_NUMERO TYPE I,D_FECHA TYPE D.

    Utilizando el carcter : detrs de una instruccin se encadenan varias ejecuciones dela misma instruccin separadas por el carcter ,.

    Con el parmetro VALUE podemos inicializar la variable con un valor distinto al quetiene por defecto.

    DATA D_CONTADOR TYPE I VALUE 1.

    Con la clusula LIKE podemos declarar una variable con los mismos atributos delongitud y tipo que un campo del diccionario de datos o que otra variable definidapreviamente.

    DATA D_ACREEDOR LIKE LFA1-LIFNR.

    2.1.3 Constantes

    Las constantes se definen con la sentencia CONSTANTS.

    CONSTANTS (longitud) TYPE VALUE .

    Para la definicin de constantes se aplican las mismas reglas que para la definicin devariables pero siempre hay que darle un valor inicial que no podr ser modificadodurante la ejecucin del programa.

    CONSTANTS C_ACREEDOR LIKE LFA1-LIFNR VALUE JOSE.

    2.1.4 Estructuras

    Una estructura es un conjunto de campos relacionados lgicamente y se define con lasentencia DATA:

    DATA: BEGIN OF ,

    Pg. 13

  • 7/23/2019 Curso ABAP - Manual v1

    14/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    END OF .

    DATA: BEGIN OF R_PROVEEDOR,

    CODIGO LIKE LFA1-LIFNR,NOMBRE LIKE LFA1-NAME1,CIUDAD(20) LIKE LFA1-ORT01,FECHA TYPE D,

    END OF R_PROVEEDOR.

    Tambin se puede incluir en la definicin de una estructura la de una tabla deldiccionario de datos o una estructura definida previamente en el programa utilizando lainstruccin INCLUDE STRUCTURE.

    DATA BEGIN OF R_SOCIEDADES OCCURS 10.INCLUDE STRUCTURE T001.

    DATA: CONTADOR(20) TYPE N,END OF R_SOCIEDADES.

    Estas instrucciones crean una estructura con todos los campos de la tabla deldiccionario T001 y el campo CONTADOR como ltimo campo.Para hacer referencia posteriormente a los campos de la estructura se especificar elnombre de la estructura y del campo separados por un guin.

    R_PROVEEDOR-NOMBRE = JOSE.

    2.1.5 Rangos

    Los rangos son tablas internas con una estructura determinada que se utilizan para

    almacenar rangos de valores para un tipo de campo y se definen con la sentenciaRANGES:

    RANGES: FOR .

    La estructura de un rango se compone de los siguientes campos:SIGN: Es un campo de tipo carcter de una posicin que indica si los valores

    especificados en el rango se incluyen (valor I) o se excluyen (valor E) del mismo.OPTION: Es un campo de tipo carcter de dos posiciones que indica el operador

    lgico que une los valores especificados en el rango.LOW: Valor inicial del rango. Este campo tiene el mismo tipo que el campo al

    que hace referencia el rango.HIGH: Valor final del rango. Este campo tiene el mismo tipo que el campo al que

    hace referencia el rango.

    Los rangos se utilizan para chequear valores vlidos en sentencias condicionales delcampo al que hace referencia. Si un rango no contiene ningn registro, asume quecualquier valor del campo al que hace referencia es vlido.

    TABLES: LFA1.RANGES G_PROVEEDOR FOR LFA1-LIFNR.

    Pg. 14

  • 7/23/2019 Curso ABAP - Manual v1

    15/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    G_PROVEEDOR-SIGN = I.G_PROVEEDOR-OPTION = BT. Operador ENTRE

    G_PROVEEDOR-LOW = 1.G_PROVEEDOR-HIGH = 9.APPEND G_PROVEEDOR.

    El rango creado hace referencia a los valores del campo LFA1-LIFNR comprendidosentre el valor 1 y 9 ambos inclusive.

    2.1.6 FIELD-SYMBOLS

    Los FIELD-SIMBOLS son campos simblicos que se pueden referenciar a un campoconcreto en tiempo de ejecucin del programa, y se definen con la sentencia FIELD-SYMBOLS:

    FIELD-SIMBOLS . (los caracteres se deben especificar).Utilizando la sentencia ASSIGN se asigna un campo al FIELD-SYMBOL y, a partir deese momento, todas las operaciones que se realicen sobre el FIELD-SYMBOL harnreferencia al campo asignado.

    FIELD-SYMBOLS: .DATA: D_CONTADOR_1 TYPE I,

    D_CONTADOR_2 TYPE I.

    ASSIGN D_CONTADOR_1 TO . = + 1.

    ASSIGN D_CONTADOR_2 TO . = + 2.

    Despus de ejecutar las sentencias anteriores la variable D_CONTADOR_1 contendrel valor 1 y la variable D_CONTADOR_2 contendr el valor 2.

    2.2 Modularizacin

    2.2.1 Subrutinas.

    Las subrutinas son conjuntos de instrucciones que pueden ser llamadas desde elprograma en diversas ocasiones, evitando as su codificacin cada vez que se

    necesiten ejecutar y dando adems mayor claridad al programa.Para definir una subrutina se utilizan las sentencias FORM y ENDFORM, que seespecifican respectivamente al inicio y final de las instrucciones que forman la subrutina.

    Para realizar una llamada a la misma se utiliza la sentencia PERFORM.

    PERFORM EJEMPLO. Llamada a la subrutina

    Pg. 15

  • 7/23/2019 Curso ABAP - Manual v1

    16/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    FORM EJEMPLO. Definicin de subrutinaINSTRUCCIONES ABAP.

    ENDFORM.

    El programa principal y la subrutina se podrn comunicar mediante parmetros quepueden ser pasados por valor o por referencia, siendo recomendable especificar el tipode dato al definirlos.

    El paso de parmetros por referencia se realiza de la siguientemanera:

    PERFORM USING parametro1 parametro2 ......FORM USING parametro1 parametro2 ......ENDFORM.

    Los parmetros que son pasados a la subrutina en la llamada (ACTUALES) actualizanel valor de los parmetros definidos en la subrutina (FORMALES).

    DATA: D_NUMERO_1 TYPE I VALUE 1,D_NUMERO_2 TYPE I VALUE 2.

    PERFORM SUMAR USING D_NUMERO_1 D_NUMERO_2.

    FORM SUMAR USING PS_NUMERO TYPE IPS_CANTIDAD TYPE I.

    PS_NUMERO = PS_NUMERO + PS_CANTIDAD.ENDFORM.

    Al finalizar la ejecucin de la subrutina las variables tendrn estos valores:D_NUMERO_1 => 3D_NUMERO_2 => 2

    Pase de parmetros por valor.

    ...PERFORM USING parametro1 parametro2 ......FORM USING VALUE(parametro1) VALUE(parametro2) ......ENDFORM.

    Los parmetros que son pasados a la subrutina en la llamada no se actualizan con elvalor de los parmetros definidos en la subrutina.

    Pg. 16

  • 7/23/2019 Curso ABAP - Manual v1

    17/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    DATA: D_NUMERO_1 TYPE I VALUE 1,D_NUMERO_2 TYPE I VALUE 2.

    PERFORM SUMAR USING D_NUMERO_1 D_NUMERO_2.

    FORM SUMAR USING PS_NUMERO TYPE IVALUE(PE_CANTIDAD) TYPE I.

    PE_CANTIDAD = 3.PS_NUMERO = PS_NUMERO + PE_CANTIDAD.

    ENDFORM.

    Al finalizar la ejecucin de la subrutina las variables tendrn estos valores:D_NUMERO_1 => 4D_NUMERO_2 => 2

    Utilizando la clusula STRUCTURE se puede pasar como parmetro una estructura yhacer referencia a sus campos en la subrutina.

    DATA: BEGIN OF R_PROV,CODIGO LIKE LFA1-LIFNR,NOMBRE LIKE LFA1-NAME1,

    END OF R_PROV.

    PERFORM INFORMAR_PROV USING R_PROV.

    FORM INFORMAR_PROV USING PS_PROV STRUCTURE R_PROV.PS_PROV-NOMBRE = JOSE.

    ENDFORM.

    Tambin se puede pasar como parmetro una tabla interna por referencia con laclusula TABLES.

    DATA: D_CONTADOR TYPE I VALUE 1.DATA: BEGIN OF I_PROV OCCURS 0,

    CODIGO LIKE LFA1-LIFNR,NOMBRE LIKE LFA1-NAME1,

    END OF I_PROV.

    PERFORM INFORMAR_PROV TABLES I_PROVUSING D_CONTADOR.

    FORM INFORMAR_PROV TABLES PS_I_PROV STRUCTURE I_PROVUSING VALUE(PE_CONTADOR).

    PS_I_PROV-CODIGO = PE_CONTADOR.PS_I_PROV-NOMBRE = JOSE.APPEND PS_I_PROV. Inserta el registro en la tabla interna

    Pg. 17

  • 7/23/2019 Curso ABAP - Manual v1

    18/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    ENDFORM.

    Al finalizar la ejecucin de la subrutina se habr insertado el registro en la tabla interna

    I_PROV.2.2.2 Includes

    Los INCLUDES son unos programas que contienen definiciones que pueden serutilizadas en otros programas insertando en estos la sentencia INCLUDE .

    Este tipo de programas no son ejecutables directamente, han de estar incluidos en otrospara que puedan ser ejecutado el cdigo que contienen.

    2.3 Variables del sistema

    2.3.1 Tabla SYST

    ABAP/4 tiene algunas variables internas que se van actualizando automticamente yque pueden ser utilizadas en los programas. Estas variables se encuentranalmacenadas en la tabla del diccionario SYST y para acceder a ellas se les debe aadirel prefijo SY-.

    2.3.2 Variable SY-SUBRC

    La variable ms importante es SY-SUBRC, que devuelve el resultado de la ejecucin delas instruccines ABAP/4, siendo 0 el cdigo de retorno de una ejecucin correcta yotros valores en caso de error (estos valores de error dependen de la instruccin ABAPque se este ejecutando).

    Variables del sistema ms utilizadas.

    CAMPO CONTENIDOABCDE Alfabeto (A, B, C, D, .)COLNO Columna actual en la creacin de una listaCPAGE N de la pgina actualCPPROG Nombre del programa principalCUCOL Posicin del cursor, columnaCURROW Posicin del cursor, lneaDATUM Fecha del sistema

    DBNAME Base de datos lgica usada en ReportDYNGR Grupo de dynpros al que pertenece la dynpro actualDYNNR N de la pantalla actualFDPOS Lugar de hallazgo de un stringFMKEY Men de teclas de funcinINDEX Cantidad de ejecuciones del LOOPLILLI N de lnea en la lista actualLINCT Cantidad de lneas de la listaLINNO Lnea actual en la creacin de una lista

    Pg. 18

  • 7/23/2019 Curso ABAP - Manual v1

    19/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    LINSZ Longitud de la lnea de una listaLISEL Lnea seleccionada (Listado interactivo)LISTI N de la lnea de la lista actual

    LISTI ndice de seleccin de las listasLOOPC Cantidad de lneas LOOP en Step-Loop de una DynproLSIND ndice de las listas secundariasLSTAT Informacin del status por nivel de listaMSGID Identificador del mensajeMSGNO N del mensajeMSGTY Tipo del mensaje (E, I, W, )MSGV1 4 Variables en mensajePAGCT Lmite de columnas de la lista en la sentencia REPORTPAGNO Pgina actual en creacin de listaPFKEY Status actual de teclas de funcinPRBIG Impresin: portada de seleccinPRIMM Impresin: salida inmediataPRREL Impresin: borrar tras salidaREPID Nombre del programa Abap / 4SCOLS Total de columnas en la pantallaSROWS Total de lneas en la pantallaSTACO Margen del listado, columnaSTARO Margen del listado, lneaSTEP ndice del Step-LoopSTEPL N de la lnea Loop en Step de una DynproSUBRC N del error al ejecutar una operacinTABIX Lnea actual de tabla internaTCODE Cdigo de la transaccin actualTFILL N actual de entradas en la tabla internaTITLE Ttulo del programa Abap / 4TLENG Tamao de la lnea de una tabla internaTMAXL Cantidad mxima de entradas en tabla internaTNAME Nombre de la tabla interna despus de un accesoTOCCU Parmetros OCCURS en tabla internaTTABC N de la ltima lnea de tabla interna ledaTVAR0 9 Variable de texto para elementos de texto de Abap / 4UCOMM Entrada de funcin en campos comando (Pulsadores, )ULINE Lnea horizontalUNAME Nombre del usuarioUZEIT Hora del sistemaVLINE Lnea verticalWILLI N de lnea en la ventana actualWINCO Posicin del cursor en la ventana, columnaWINDI ndice de la lnea de la ventana actualWINRO Posicin del cursor en la ventana, lneaWINSL Lnea de la ventana seleccionadaWTITL Indicador para cabecera estndar de pgina

    Pg. 19

  • 7/23/2019 Curso ABAP - Manual v1

    20/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    2.4 Instrucciones bsicas.

    2.4.1 AsignacinExisten diversas formas de asignar valores a una variable en ABAP/4:

    Asignacin directaSe asigna un valor a una variable directamente utilizando el operador =. = valor.

    El valor se puede especificar como un literal, el contenido de una constante o elcontenido de una variable.

    Sentencia MOVE.

    Asigna un valor a una variable.MOVE TO .

    Sentencia MOVE-CORRESPONDING.

    Mueve el contenido de los campos de una estructura a los campos que tengan el mismonombre de otra estructura.MOVE-CORRESPONDING TO .

    Sentencia CLEAR.

    Inicializa el contenido de un campo a su valor inicial segn el tipo de dato (espacios enel tipo carcter, cero en el tipo entero, etc.).CLEAR .

    OFFSETS.Se puede hacer referencia parcial a una parte de un campo indicando el nmero deposiciones que hay hasta la posicin en la que se comienza a referenciar utilizando eloperador +, y la cantidad de posiciones que se referencian entre parntesis.MOVE +(longitud) TO .

    DATA: D_CARACTER_1(8) TYPE C VALUE ABCDEFGH,D_CARACTER_2(4) TYPE C.

    D_CARACTER_2 = D_CARACTER_1+2(4) .

    Al ejecutar la sentencia de asignacin la variable D_CARACTER_2 tendr el valorCDEF.

    Pg. 20

  • 7/23/2019 Curso ABAP - Manual v1

    21/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    2.4.2 Condicionales

    Las sentencias condicionales permiten ejecutar una serie de instrucciones solamentecuando se cumplan una serie de condiciones.

    Operadores condicionales.Las condiciones se construyen utilizando los siguientes operadores condicionales:

    1 EQ .La condicin se cumple si es igual que . (Tambin se puede utilizar elcarcter = en lugar de EQ).

    NE .La condicin se cumple si es distinto que . (Tambin se puedenutilizar los caracteres en lugar de NE).

    GT .La condicin se cumple si es mayor que . Tambin se puede utilizar elcarcter > en lugar de GT).

    LT .La condicin se cumple si es menor que . Tambin se puede utilizar elcarcter = en lugar de GE).

    LE .La condicin se cumple si es menor o igual que . Tambin se puedenutilizar los caracteres

  • 7/23/2019 Curso ABAP - Manual v1

    22/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    FORM ESCRIBIR USING VALUE(PE_TEXTO)VALUE(PE_ESCRIBIR).

    IF NOT PE_ESCRIBIR IS INITIAL.* Se escribe el texto en la pantallaWRITE PE_TEXTO.

    ENDIF.

    ENDFORM.

    Esta subrutina escribir por pantalla el texto recibido en el parmetro PE_TEXTO si serecibe un valor distinto de espacios en el parmetro PE_ESCRIBIR (la sentencia deescritura en pantalla WRITE se ver en el manual de reporting).

    Sentencias CASE ENDCASE.

    Permiten ejecutar diferentes grupos de sentencias en funcin del valor contenido en, delimitando las sentencias con la clusula WHEN .

    El valor OTHERS comprende todos los valores que no hayan sido especificados en lasanteriores clusulas WHEN.

    FORM ESCRIBIR USING VALUE(PE_TEXTO)VALUE(PE_ALINEACION).

    CONSTANTS: C_L_CENTRADO(1) TYPE C VALUE C,C_L_IZQUIERDA(1) TYPE C VALUE I,

    C_L_DERECHA(1) TYPE C VALUE D.CASE PE_ALINEACION.

    WHEN C_L_CENTRADO.* Se escribe el texto en la pantalla centrado

    WRITE PE_TEXTO CENTERED.WHEN C_L_IZQUIERDA.

    * Se escribe el texto en la pantalla justificado a* la izquierda

    WRITE PE_TEXTO LEFT-JUSTIFIED.WHEN C_L_DERECHA.

    * Se escribe el texto en la pantalla justificado a* derecha

    WRITE PE_TEXTO RIGHT-JUSTIFIED.WHEN OTHERS.

    * Se escribe el texto en la pantalla sin justificar WRITE PE_TEXTO.

    ENDCASE.ENDFORM.

    Pg. 22

  • 7/23/2019 Curso ABAP - Manual v1

    23/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Esta subrutina escribir por pantalla el texto recibido en el parmetro PE_TEXTO segnel valor recibido en el parmetro PE_ALINEACION:Si se recibe el valor C se escribe centrado.

    Si se recibe el valor I se escribe justificado a la izquierda.Si se recibe el valor D se escribe justificado a la derecha.Si se recibe cualquier otro valor se escribe sin justificar.

    Operadores condicionales para cadenas.Utilizando los siguientes operadores se pueden construir condiciones especficas paracadenas de texto:

    CO .La condicin se cumple si todos los caracteres contenidos en , incluyendoespacios en blanco, existen en .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr la longitud de, sino contendr el OFFSET del primer carcter de que noexiste en .

    CN .La condicin se cumple si alguno de los caracteres contenidos en ,incluyendo espacios en blanco, no existe en .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr el OFFSET delprimer carcter de que no existe en , sino contendr la longitudde .

    CA .

    La condicin se cumple si alguno de los caracteres contenidos en ,incluyendo espacios en blanco, existe en .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr el OFFSET delprimer carcter de que existe en , sino contendr la longitud de.

    NA .La condicin se cumple si ninguno de los caracteres contenidos en ,incluyendo espacios en blanco, existe en .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr la longitud de, sino contendr el OFFSET del primer carcter de que existeen .

    CS .La condicin se cumple si contiene .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr el OFFSET delprimer carcter de que existe en , sino contendr la longitud de.

    Pg. 23

  • 7/23/2019 Curso ABAP - Manual v1

    24/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    NS .La condicin se cumple si no contiene .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr la longitud de

    , sino contendr el OFFSET del primer carcter de que existe en.

    CP .La condicin se cumple si contiene el patrn de bsqueda . Estepatrn permite utilizar el carcter * para representar cualquier cadena de caracteres yel carcter + para representar cualquier carcter.Si la condicin es cierta, la variable del sistema SY-FDPOS contendr el OFFSET delprimer carcter de que existe en , sino contendr la longitud de.

    Ejemplos: La condicin Jose Luis Daz CP Jose*Diaz es verdadera y devuelve el valor0 en la variable SY-FDPOS.La condicin JoseLuisDaz CP Jose+Luis es falsa y devuelve el valor 12 en lavariable SY-FDPOS.

    NP .La condicin se cumple si no contiene el patrn de bsqueda .Si la condicin es cierta, la variable del sistema SY-FDPOS contendr la longitud de, sino contendr el OFFSET del primer carcter de que existe en.

    2.4.3 Iteracin (bucles)

    Sentencias DO ENDDO.

    Ejecuta las sentencias delimitadas por DO y ENDDO hasta que se ejecute unasentencia de salida como EXIT.

    DATA: D_CONTADOR TYPE I.

    DO.D_CONTADOR = D_CONTADOR + 1.IF D_CONTADOR = 10.

    EXIT.ENDIF.ENDDO.

    Las sentencias del bucle DO se ejecutarn hasta que se ejecuta la sentencia EXIT, quefinaliza la ejecucin del bucle despus de haber ejecutado las sentencias 10 veces. Lavariable D_CONTADOR tendr el valor 10. La variable del sistema SY-INDEX contieneel nmero de vueltas del bucle. Con la clusula TIMES se puede especificar el nmeromximo de vueltas del bucle.

    Pg. 24

  • 7/23/2019 Curso ABAP - Manual v1

    25/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    DATA: D_CONTADOR TYPE I.

    DO 3 TIMES.D_CONTADOR = D_CONTADOR + 1.IF D_CONTADOR = 10.EXIT.

    ENDIF.ENDDO.

    Las sentencias del bucle DO se ejecutarn 3 veces y la variable D_CONTADOR tendrel valor 3.

    Sentencias WHILE ENDWHILE.

    Ejecuta las sentencias delimitadas por WHILE y ENDWHILE hasta que no se cumpla lacondicin especificada o se ejecute una sentencia de salida como EXIT.

    DATA: D_CONTADOR TYPE I.

    WHILE D_CONTADOR < 10.D_CONTADOR = D_CONTADOR + 1.

    ENDWHILE.

    Las sentencias del bucle WHILE se ejecutarn hasta que se deja de cumplir la condicincuando la variable D_CONTADOR alcanza el valor 10. La variable del sistema SY-INDEX contiene el nmero de vueltas del bucle.

    Sentencia CONTINUE.

    Esta sentencia se utiliza dentro de un bucle y provoca que se finalice la vuelta actual sinejecutar las sentencias posteriores y se inicie la ejecucin de la siguiente vuelta delbucle.

    DATA: D_CONTADOR TYPE I.,D_NUMERO TYPE I.

    WHILE D_CONTADOR < 10.D_CONTADOR = D_CONTADOR + 1.

    IF D_CONTADOR > 4.CONTINUE.ENDIF.D_NUMERO = D_CONTADOR.

    ENDWHILE.

    Las sentencias del bucle WHILE se ejecutarn 10 veces pero solamente se ejecuta laasignacin a la variable D_NUMERO solo se ejecuta las 4 primeras vueltas. Al finalizar

    Pg. 25

  • 7/23/2019 Curso ABAP - Manual v1

    26/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    la ejecucin del bucle la variable D_CONTADOR tendr el valor 10 y la variableD_NUMERO el valor 4.

    Sentencia CHECK .

    Esta sentencia, al igual que la sentencia CONTINUE, provoca el final de la ejecucin dela vuelta actual en un bucle sin ejecutar las sentencias posteriores e iniciando laejecucin de la siguiente vuelta cuando no se cumpla la condicin especificada.

    DATA: D_CONTADOR TYPE I.,D_NUMERO TYPE I.

    WHILE D_CONTADOR < 10.D_CONTADOR = D_CONTADOR + 1.CHECK D_CONTADOR < 5.

    D_NUMERO = D_CONTADOR.ENDWHILE.

    Las sentencias del bucle WHILE se ejecutarn 10 veces pero solamente se ejecuta laasignacin a la variable D_NUMERO solo se ejecuta las 4 primeras vueltas. Al finalizarla ejecucin del bucle la variable D_CONTADOR tendr el valor 10 y la variableD_NUMERO el valor 4. La ejecucin de esta sentencia fuera de un bucle finalizainmediatamente la ejecucin de la subrutina donde se ejecuta.

    FORM SUMAR USING PE_NUMERO_1 TYPE IPE_NUMERO_2 TYPE IPS_SUMA TYPE I.

    CHECK PE_NUMERO_1 > 0 ANDPE_NUMERO_2 > 0.PS_SUMA = PE_NUMERO_1 + PE_NUMERO_2.

    ENDFORM.

    Esta subrutina solamente sumar nmeros positivos ya que si alguno de los nmerosque recibe como parmetros es negativo se finaliza la ejecucin de la subrutina sinejecutar el resto de las sentencias.

    Sentencia EXIT.

    Provoca la salida de un bucle o el final de la ejecucin de la subrutina donde se ejecuta.

    2.4.4 Aritmticas

    Sentencia SQRT.

    Devuelve la raz cuadrada de un valor. = SQRT( ).

    Sentencia ADD.

    Pg. 26

  • 7/23/2019 Curso ABAP - Manual v1

    27/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Suma un valor al contenido de un campo.ADD TO .

    Tambin se puede utilizar el operador +. = + .

    Sentencia SUBTRACT.

    Resta un valor al contenido de un campo.SUBTRACT FROM .

    Tambin se puede utilizar el operador -. = - .

    Sentencia MULTIPLY.Multiplica por un valor el contenido de un campo.MULTIPLY BY .

    Tambin se puede utilizar el operador *. = * .

    Sentencia DIV.

    Devuelve el cociente de una divisin entera. = DIV .

    El operador / devuelve el cociente con decimales. = / .

    Sentencia MOD.

    Devuelve el resto de una divisin entera. = MOD .

    2.4.5 Tratamiento de cadenas

    Sentencia CONCATENATE.

    Concatena cadenas en un campo.CONCATENATE INTO .

    Con la clusula SEPARATED BY se puede especificar un separador entre las cadenas.

    Sentencia SHIFT.

    Elimina caracteres por la izquierda de un campo.SHIFT .

    Pg. 27

  • 7/23/2019 Curso ABAP - Manual v1

    28/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    DATA: D_CADENA(8) VALUE ABCDEFGH.SHIFT D_CADENA.

    La variable D_CADENA tendr el valor BCDEFGH .

    Con la clusula CIRCULAR se provoca que los carcteres que se eliminan por laizquierda se inserten por la derecha de la cadena.

    DATA: D_CADENA(8) VALUE ABCDEFGH.SHIFT D_CADENA CIRCULAR.

    La variable D_CADENA tendr el valor BCDEFGHA.

    Sentencia CONDENSE.

    Elimina los espacios en blanco por la izquierda de una cadena y reduce los espaciosintermedios consecutivos a un solo espacio.CONDENSE .

    DATA: D_CADENA(25) VALUE JOSE LUIS.CONDENSE D_CADENA.

    La variable D_CADENA tendr el valor JOSE LUIS.

    Con la clusula NO-GAPS se eliminan todos los espacios de la cadena.

    Sentencia TRANSLATE.

    Permite convertir a maysculas o minsculas una cadena con las clusulas TO UPPERCASE y TO LOWER CASE.TRASLATE TO UPPER/LOWER CASE.

    Sentencia REPLACE.

    Reemplaza una parte de una cadena por otra cadena.REPLACE WITH INTO .

    DATA: D_CADENA(10) VALUE JOSE LUIS.

    REPLACE JOSE WITH JUAN INTO D_CADENA.

    La variable D_CADENA tendr el valor JUAN LUIS.

    Sentencia STRLEN.

    Devuelve la longitud de una cadena sin tener en cuenta los espacios finales por laderecha.

    Pg. 28

  • 7/23/2019 Curso ABAP - Manual v1

    29/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    DATA: D_CADENA(25) VALUE JOSE LUIS ,D_LONGITUD TYPE I.

    D_LONGITUD = STRLEN( D_CADENA ).

    La variable D_LONGITUD tendr el valor 9.

    2.4.6 Formateo de valores

    Sentencia WRITE TO.

    Escribe un valor en un campo permitiendo formatearlo con diferentes opciones deformato.WRITE TO .

    Sentencia PACK.

    Almacena un valor en formato empaquetado en el campo especificado.

    PACK TO campo.

    Sentencia UNPACK.Desempaqueta un valor y lo almacena con ceros a la izquierda en el campoespecificado.UNPACK TO .

    2.4.7 Mensajes

    En los programas ABAP se pueden mostrar mensajes creados previamente en unaclase de mensajes utilizando la instruccin MESSAGE.

    MESSAGE NNN()

    Existen los siguientes tipos de mensajes:

    Informativos (tipo I): Se visualiza el mensaje en unaventana y continua la ejecucin del programa al pulsar la tecla INTRO.

    xito (Success, tipo S): Se visualiza el mensaje en labarra de status en la siguiente pantalla y continua con la ejecucin del programa alpulsar la tecla INTRO.

    Error(Error, tipo E): Se visualiza el mensaje en la barrade status e interrumpe el programa en funcin del tipo de programa (listado, module

    pool, etc.) al pulsar la tecla INTRO. Advertencia (Warning, tipo W): Se visualiza el mensaje

    en la barra de status y, si se pulsa la tecla ESCAPE permite realizar modificaciones enfuncin del tipo de programa, y si se pulsa la tecla INTRO continua con la ejecucin delprograma.

    Finalizacin (Abend, tipo A): Se visualiza el mensaje enla barra de status y finaliza la ejecucin del programa al pulsar la tecla INTRO.

    Salida (eXit, tipo X): Finaliza la ejecucin del programaprovocando un error en tiempo de ejecucin (DUMB).

    Pg. 29

  • 7/23/2019 Curso ABAP - Manual v1

    30/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Para tratar los mensajes de una clase de mensajes se ejecuta la opcin de menHerramientasWorkbench Abap/4 Desarrollo Entorno de programacin

    Mensajes.

    2.4.8 Comentarios

    En el cdigo de los programas se debern introducir comentarios que ayuden acomprender su lgica de proceso y as facilitar su mantenimiento posterior. Existen dostipos de comentarios:

    Comentario en lnea: Al especificar el carcter en unalnea de programa, todos los literales que se escriban a su derecha hasta el final de lalnea se considerarn comentarios.

    Lnea de comentario: Al especificar el carcter * en la

    primera posicin de una lnea de texto, todos los literales de la lnea se considerarncomentarios.

    2.5 Tratamiento de tablas internas

    Las tablas internas se almacenan en memoria y no en el diccionario de datos. Esfrecuente su utilizacin para almacenar datos seleccionados de las tablas de la base dedatos para procesarlos posteriormente, permitiendo ordenar dichos datos de diversasformas y tenerlos disponibles en todo momento, evitando accesos a la base de datosque penalizaran el rendimiento de los programas.

    2.5.1 Declaracin

    Las tablas internas se declaran con la sentencia DATA.

    DATA: BEGIN OF OCCURS n,

    END OF .

    La clusula OCCURS determina el nmero de registros de la tabla interna que sealmacenarn en memoria principal, no el tamao de la tabla, almacenndose el resto deregistros en un rea de paginacin. Hay que tener especial cuidado al establecer estenmero porque si se define demasiado pequeo provoca un acceso ms lento a la tablay si es muy grande puede provocar que el rea de almacenamiento destinado por SAP(ROLL AREA) se agote. Si no estamos seguros del nmero a especificar es

    recomendable asignarle cero para indicar que lo gestione SAP.

    Tambin se puede utilizar la instruccin INCLUDE STRUCTURE en la declaracin detablas internas de la misma forma que en las estructuras.

    DATA: BEGIN OF I_PROVEEDORES OCCURS 0,CODIGO LIKE LFA1-LIFNR,NOMBRE LIKE LFA1-NAME1,CIUDAD LIKE LFA1-ORT01,

    Pg. 30

  • 7/23/2019 Curso ABAP - Manual v1

    31/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    FECHA TYPE D,END OF I_PROVEEDORES.

    Al declarar una tabla interna se define automticamente una lnea de cabecera con laestructura de la tabla. Esta lnea de cabecera es una estructura con el nombre de latabla interna que nos permite recuperar, modificar o borrar registros de la misma.

    2.5.2 Creacin de registros

    La sentencia APPEND permite crear una entrada al final de una tabla interna con losdatos almacenados en la lnea de cabecera de la tabla. La variable del sistema SY-TABIX almacenar el ndice del nuevo registro creado.

    FORM AADIR_MATERIAL USING VALUE(PE_CODIGO) LIKE I_MATERIALES-CODIGO

    VALUE(PE_NOMBRE) LIKE I_MATERIALES-NOMBRE

    VALUE(PE_CANTIDAD) LIKE I_MATERIALES-CANTIDAD.MOVE: PE_CODIGO TO I_MATERIALES-CODIGO,

    PE_NOMBRE TO I_MATERIALES-NOMBRE,PE_CANTIDAD TO I_MATERIALES-CANTIDAD.

    APPEND I_MATERIALES.

    ENFORM.

    Esta subrutina crea entradas en la tabla de materiales con los datos recibidos comoparmetros.

    La sentencia COLLECT permite crear entradas en una tabla interna acumulando elcontenido de los campos numricos (tipos P, I o F).

    Si no existe ningn registro en la tabla interna en el que coincidan los datos nonumricos almacenados en la lnea de cabecera, se aadir un nuevo registro en latabla, sino se acumular el contenido de los campos numricos almacenados en la lneade cabecera en el registro. La variable del sistema SY-TABIX almacenar el ndice delnuevo registro creado o del registro acumulado.PERFORM ACUMULAR_MATERIAL USING 1

    MATERIAL10.

    PERFORM ACUMULAR_MATERIAL USING 2MATERIAL20.

    PERFORM ACUMULAR_MATERIAL USING 1MATERIAL5.

    FORM ACUMULAR_MATERIAL USING VALUE(PE_CODIGO) LIKE I_MATERIALES-CODIGO

    Pg. 31

  • 7/23/2019 Curso ABAP - Manual v1

    32/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    VALUE(PE_NOMBRE) LIKE I_MATERIALES -NOMBREVALUE(PE_CANTIDAD) LIKE I_MATERIALES-CANTIDAD.

    MOVE: PE_CODIGO TO I_MATERIALES-CODIGO,PE_NOMBRE TO I_MATERIALES-NOMBRE,PE_CANTIDAD TO I_MATERIALES-CANTIDAD.

    COLLECT I_MATERIALES.

    ENDFORM.

    Al finalizar la ejecucin la tabla de materiales almacenar las siguientes entradas:

    CODIGO NOMBRE CANTIDAD1 MATERIAL 152 MATERIAL 20

    2.5.3 Lectura de registrosLa sentencia READ TABLE permite leer un registro de una tabla interna especificandoun argumento de bsqueda con la clusula WITH KEY = =

    Si se logra leer el registro se almacenar en la lnea de cabecera de la tabla, la variabledel sistema SY-SUBRC contendr el valor 0 y la variable SY-TABIX el ndice delregistro ledo.

    Si no se logra leer el registro la lnea de cabecera de la tabla no se modificar, lavariable del sistema SY-SUBRC contendr un valor distinto de 0 y la SY-TABIX el valor

    0.READ TABLE I_MATERIALES WITH KEY CODIGO = 1.

    La lnea de cabecera contendr los siguientes valores (en funcin de los registrosaadidos en el ejemplo anterior de creacin de registros):

    CODIGO NOMBRE CANTIDAD1 MATERIAL 15

    La variable SY-SUBRC almacenar el valor 0.La variable SY-TABIX almacenar el valor 1.

    2.5.4 Modificacin de registros

    La sentencia MODIFY permite modificar un registro de una tabla con los datosalmacenados en la lnea de cabecera especificando el ndice del registro con la clusulaINDEX.

    Si se logra modificar el registro la variable del sistema SY-SUBRC contendr el valor 0.

    Pg. 32

  • 7/23/2019 Curso ABAP - Manual v1

    33/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    READ TABLE I_MATERIALES WITH KEY CODIGO = 1.IF SY-SUBRC = 0.I_MATERIALES-CANTIDAD = 25.

    MODIFY I_MATERIALES INDEX SY-TABIX.ELSE.WRITE NO EXISTE EL MATERIAL.

    ENDIF.

    El primer registro de la tabla se habr modificado con los valores almacenados en lalnea de cabecera (en funcin de los registros utilizados en el ejemplo anterior decreacin de registros):

    CODIGO NOMBRE CANTIDAD1 MATERIAL 25

    La variable SY-SUBRC almacenar el valor 0.La variable SY-TABIX almacenar el valor 1.

    Se pueden realizar modificaciones masivas en una tabla interna utilizando la clusulaTRANSPORTING WHERE = . El valoralmacenado en la lnea de cabecera de los campos especificados se modificar entodos los registros que cumplan la condicin especificada.

    CLEAR I_MATERIALES-CANTIDAD.MODIFY TABLE I_MATERIALES

    TRANSPORTING CANTIDADWHERE CODIGO > 0AND CODIGO < 101.

    Se modificar con el valor 0 el campo cantidad en todos los materiales de la tabla cuyocdigo este comprendido entre 1 y 100.

    2.5.5 Borrado de registros

    La sentencia DELETE permite borrar un registro de una tabla interna especificando elndice del registro con la clusula INDEX.

    Si se logra borrar el registro, la variable del sistema SY-SUBRC contendr el valor 0.

    READ TABLE I_MATERIALES WITH KEY CODIGO = 1.IF SY-SUBRC = 0.DELETE I_MATERIALES INDEX SY-TABIX.

    ELSE.WRITE NO EXISTE EL MATERIAL.

    ENDIF.

    El registro del material con cdigo 1 se ha borrado de la tabla interna. La variable SY-SUBRC almacenar el valor 0.

    Pg. 33

  • 7/23/2019 Curso ABAP - Manual v1

    34/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Especificando una condicin de borrado con la clusula WHERE se borrarn todas lasentradas de la tabla interna que cumplan la condicin (est clusula es incompatible con

    la clusula INDEX).Tambin se pueden borrar todas las entradas de una tabla interna con la instruccinREFRESH

    2.5.6 Tratamiento de registros

    La sentencia LOOP ENDLOOP permite tratar individualmente los registros de la tablainterna, generando un bucle en el que se va informando cada registro en la lnea decabecera y ejecutando las instrucciones especificadas entre las dos sentencias en cadavuelta.

    Utilizando la clusula WHERE se puede especificar una condicin paratratar solamente una parte de los registros de la tabla.

    FORM TOTALIZAR_MATERIALES USING VALUE(PE_CODIGO) LIKEI_MATERIALES-CODIGO.

    PS_CANTIDAD LIKE I_MATERIALES-CANTIDAD.CLEAR PS_CANTIDAD.LOOP AT I_MATERIALES WHERE CODIGO = PE_CODIGO.PS_CANTIDAD = PS_CANTIDAD + I_MATERIALES-CANTIDAD

    ENDLOOP.ENDFORM.

    La sentencia SORT ordena los registros de la tabla interna, se pueden especificar el/los campo(s) por los que hay que ordenar as como el orden ascendente odescendente.

    SORT I_MATERIALES BY CODIGO DESCENDING.

    Ordena los registros de la tabla interna por cdigo de material de forma descendente.Por defecto, los registros de la tabla interna se ordenan de forma ascendente por laclave por defecto, compuesta por los campos no numricos de la tabla.

    La sentencia DESCRIBE TABLE nos permite obtener las caractersticas de la tablainterna, entre ellas el nmero de registros que contiene la tabla utilizando la clusulaLINES .

    2.6 Tratamiento de tablas del diccionario de datos

    El diccionario de datos est perfectamente integrado con el entorno de desarrollo ycualquier modificacin que se realice en una tabla del diccionario se reflejarautomticamente en los programas que la utilicen.

    Pg. 34

  • 7/23/2019 Curso ABAP - Manual v1

    35/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    2.6.1 Declaracin

    Las tablas del diccionario de datos se declaran con la sentencia TABLES.

    TABLES: , .

    Al declarar una tabla del diccionario se define automticamente una lnea de cabeceracon la estructura de la tabla. Esta lnea de cabecera es una estructura con el nombre dela tabla que nos permite recuperar, modificar o borrar registros en la misma.

    2.6.2 Creacin de registros

    La sentencia INSERT permite crear una entrada con los datos almacenados en la lneade cabecera de la tabla.

    No se podr aadir un registro si ya existe uno en la tabla con la misma clave primaria ocon la misma clave de un ndice de valores nicos.

    Si la insercin del registro es correcta la variable SY-SUBRC devolver 0 y si seproduce un error en la insercin porque ya existe un registro con la misma clavedevolver el valor 4.

    FORM AADIR_MATERIAL USING VALUE(PE_CODIGO) LIKE I_MATERIALES-CODIGO

    VALUE(PE_NOMBRE) LIKE I_MATERIALES-NOMBREVALUE(PE_CANTIDAD) LIKE I_MATERIALES-CANTIDAD.

    MOVE: PE_CODIGO TO MATERIALES-CODIGO,PE_NOMBRE TO MATERIALES-NOMBRE,

    PE_CANTIDAD TO MATERIALES-CANTIDAD.INSERT MATERIALES.IF SY-SUBRC 0.WRITE ERROR.

    ENDIF.

    ENFORM.

    Esta subrutina crea entradas en la tabla del diccionario MATERIALES con los datosrecibidos como parmetros.

    2.6.3 Lectura de registros por clave

    La sentencia SELECT con la clusula SINGLE permite leer un registro de una tabla deldiccionario de datos especificando su clave primaria como condicin de bsqueda.

    SELECT SINGLE * FROM WHERE .

    Si se logra leer el registro, se almacenar en la lnea de cabecera de la tabla y lavariable del sistema SY-SUBRC contendr el valor 0, sino la variable del sistema SY-

    Pg. 35

  • 7/23/2019 Curso ABAP - Manual v1

    36/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    SUBRC contendr un valor distinto de 0 y la lnea de cabecera de la tabla no semodificar.

    Si se especifica la clusula INTO, el registro ledo se almacenar en la estructuraespecificada en lugar de almacenarse en la lnea de cabecera.

    SELECT SINGLE * FROM INTO

    WHERE .

    Se pueden recuperar campos especficos del registro enumerndolos en lugar deespecificar el carcter *, siendo necesario en ese caso especificar la clusula INTOcon una estructura que coincida exactamente con los campos seleccionados oenumerando los campos de destino (entre parntesis si son varios).

    SELECT SINGLE FROM INTO (, )

    WHERE .

    Si no se especifica la clave primaria completa de la tabla como condicin de bsqueda,se leer el primer registro que cumpla la condicin.

    SELECT SINGLE *FROM MATERIALESWHERE CODIGO = 1.

    Se seleccionar en la cabecera de la tabla el registro del material que contenga el valor1 en el campo CODIGO, que es el campo que forma la clave primaria de la tabla.

    Se puede seleccionar un registro de una tabla y bloquearlo para que no pueda sermodificado por otros procesos utilizando la clusula SINGLE FOR UPDATE yespecificando obligatoriamente la clave completa de la tabla como criterio de seleccin.

    2.6.4 Modificacin de registros

    La sentencia UPDATE permite modificar un registro de una tabla del diccionario con losdatos almacenados en la lnea de cabecera, no debiendo estar modificados los valoresde los campos clave de la tabla.

    UPDATE .

    Utilizando la clusula SET se podrn especificar los campos que se van a modificar,pudiendo modificar tambin los campos clave de la tabla y no teniendo en cuenta losvalores almacenados en la lnea de cabecera. Al utilizar esta clusula se deber tenerespecial cuidado, ya que actualizar todos los registros de la tabla a menos que seespecifique la clusula WHERE para delimitar los registros que queremos modificar.

    UPDATE SET = = WHERE .

    Pg. 36

  • 7/23/2019 Curso ABAP - Manual v1

    37/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Despus de ejecutar una sentencia UPDATE, la variable del sistema SY-SUBRCcontendr el valor 0 si se ha logrado modificar al menos un registro y la variable SY-

    DBCNT contendr el nmero de registros que han sido modificados.UPDATE MATERIALESSET CANTIDAD = CANTIDAD + 1WHERE CODIGO > 0

    AND CODIGO < 101.

    Esta sentencia incrementa en una unidad el campo CANTIDAD en todos los materialesque tengan un valor comprendido entre 1 y 100 en el campo CODIGO.

    2.6.5 Borrado de registros

    La sentencia DELETE permite borrar un registro de una tabla cuya calve primariacoincida con la almacenada en la lnea de cabecera. Si se logra borrar el registro, lavariable del sistema SY-SUBRC contendr el valor 0.

    MATERIALES-CODIGO = 1.DELETE MATERIALES.

    Borrar el registro correspondiente al material cuyo cdigo es 1.

    Tambin se pueden borrar uno o ms registros de una tabla del diccionarioespecificando una condicin de borrado.DELETE WHERE .

    2.6.6 Tratamiento de registros

    Las sentencias SELECT...ENDSELECT permiten tratar individualmente los registros deuna tabla del diccionario, generando un bucle en el que se va informando cada registroen la lnea de cabecera y ejecutando las instrucciones especificadas entre las dossentencias en cada vuelta.FORM TOTALIZAR_MATERIALESUSING VALUE(PE_CODINI) LIKE Z_MATERIALES-CODIGOVALUE(PE_CODFIN) LIKE Z_MATERIALES-CODIGOPS_TOTAL LIKE Z_MATERIALES-CANTIDAD.

    SELECT * FROM Z_MATERIALESWHERE CODIGO >= PE_CODINIAND CODIGO

  • 7/23/2019 Curso ABAP - Manual v1

    38/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Esta subrutina totalizar en el parmetro de salida PS_TOTAL la cantidad de losmateriales almacenados en la tabla del diccionario Z_MATERIALES, cuyo cdigo estcomprendido entre los recibidos en los parmetros de entrada PE_CODINI y

    PE_CODFIN.Cuando se van a tratar grandes cantidades de registros de una tabla del diccionario, espreferible almacenar los registros en una tabla interna con la clusula INTO TABLE y realizar un tratamiento posterior de dicha tabla. Esta clusula provocala realizacin de un slo acceso de lectura a la tabla del diccionario, en lugar de realizaruna lectura por cada registro recuperado, optimizndo as el tiempo de ejecucin delprograma. En este caso no se genera un bucle para el tratamiento de los registros, porlo que no se utiliza la sentencia ENDSELECT.

    La tabla interna especificada en la clusula INTO TABLE debe tener la misma estructuraque los campos recuperados de la tabla del diccionario, sino es as, se puede utilizar ensu lugar la clusula INTO CORRESPONDING FIELDS OF TABLE paraalmacenar los valores recuperados de la tabla del diccionario en los campos de la tablainterna que tengan el mismo nombre y tipo.

    En un bucle SELECT...ENDSELECT no se puede ejecutar ninguna instruccin queprovoque una actualizacin de la base de datos (CALL SCREEN, CALLTRANSACTION, MESSAGE, COMMIT-WORK, etc), ya que se producira un error entiempo de ejecucin del programa. Al procesar los datos utilizando una tabla interna seelimina esa limitacin.

    DEBUGGING (FALTA)

    3. Diccionario

    El Diccionario de datos lo componen todas las definiciones de datos, tipos de datos ascomo las tablas de la base de datos en la que se almacenan los datos.El diccionario, lo componen todos los objetos tanto los Estndares como losdesarrollados a medida.

    Para llegar al men de gestin del diccionario:Ruta de acceso: (En el men principal de SAP) Herramientas Workbench ABAP4 DesarrolloDictionary (SE11).

    Llegaremos a la pantalla principal del diccionario:

    Pg. 38

  • 7/23/2019 Curso ABAP - Manual v1

    39/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    3.2 Dominios.

    Un dominio es el objeto que define las caractersticas tcnicas de un atributo. Medianteel dominio se definen el tipo de datos, longitud, valores posibles, propiedades de salida(Por pantalla, impresin)

    Creacin / Modificacin / Visualizacin.

    En el men diccionario, introducimos el nombre del Dominio de datos que vamos acrear, en nuestro caso ZMESESXX, seleccionamos la opcin Dominios. Pulsamos el

    botn de Crear (El procedimiento es similar para visualizar

    y modificar ), tambin podemos acceder a estasopciones a travs del men Objeto Dict

    Llegaremos a la siguiente pantalla:

    Pg. 39

  • 7/23/2019 Curso ABAP - Manual v1

    40/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    En la pestaa Definicin:

    Descripcin breve: Descripcin del dominio a crear, ha de ser un texto explicativo deldominio. En nuestro caso escribiremos Meses de Ao.Tipo de datos: Seleccionaremos uno de los tipos existentes eligiendo el que mejor seadapte a las caractersticas del objeto que estamos definiendo. En nuestro casoseleccionaremos CHARLos tipos de datos existentes se pueden visualizar (F4) nos mostrar la siguienteventana:

    Pg. 40

  • 7/23/2019 Curso ABAP - Manual v1

    41/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Longitud: Se corresponder al tamao deseado. En nuestro caso pondremos 10.

    Los elementos del marcoAtributos de salida, varan dependiendo del tipo datos

    seleccionado as por ejemplo para el tipo CHAR tendremos la opcin de minsculas ypara un tipo CURR tendremos la opcin del signoLongitud de salida: Representa la longitud en la que se va a representar el valor a lahora de imprimirse en un informe, visualizarse en una pantalla, etc. (Dejamos en valores

    propuestos 10)Rutina de conversin: Es una referencia a los procedimientos de conversin entre elformato interno del dato y su representacin externa. (En blanco)Flag de Minsculas: Se permite la utilizacin de letras minsculas (No marcado).

    En la pestaa dembito Val:Representa el rango de datos vlidos que puede tomar dicho atributo (El sistema realizacomprobaciones automticas verificando que el valor introducido por pantalla estdentro de los valores vlidos). Para definir estos valores (no siempre es necesario) haydos posibilidades:- Que estos valores estn almacenados en una tabla, en cuyo caso introduciremos aquel nombre de la tabla.- O bien fijar los valores directamente, bien valores individuales, bien rangos o intervalosde valores.

    Pg. 41

  • 7/23/2019 Curso ABAP - Manual v1

    42/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Como vemos, podemos introducir valores fijos junto con su descripcin as comointroducir intervalos de valores introduciendo el lmite inferior y superior.

    Una vez completados todos los campos deseados grabamos el dominio mediante laopcin grabar (F11)

    Cuando grabemos por primera vez (no as en las modificaciones) nos preguntar por laclase de desarrollo a la que pertenece el objeto. La clase de desarrollo sirve paraagrupar objetos pertenecientes a una misma aplicacin y de esta manera podertransportar los objetos. Utilizaremos la clase de desarrollo $TMP que es lacorrespondiente a los objetos locales y pulsamos el botn de grabar o bien pulsamos

    directamente el botn que asignar directamete la clase de sarrollo temporal(Esto es extensible a todos los objetos posibles , dominios , elementos de datos ,tablas , programas ) .

    Una vez grabado el dominio, verificamos que no contiene errores para ello pulsamos elbotn de verificar (Ctrl. + F2), posteriormente ser necesario activarlo para poder

    ser utilizado pulsaremos el botn de activar (Ctrl. + F3). (Es necesario activar losobjetos que se crean ya que hasta que no son activados no podrn ser utilizados enotros objetos).

    La modificacin de un dominio, se hace de manera similar, pondremos el nombre deldominio a modificar y pulsaremos la opcin de modificar, una vez realizadas las

    modificaciones oportunas a las caractersticas del dominio grabamos (F11),

    verificamos (Ctrl. + F2) y activamos (Ctrol + F3).

    (Crearemos los siguientes dominios:).

    Dominio Tipo Long. DescripcinZNCLIEXX CHAR 10 Nmero de clienteZNOMBXX CHAR 20 Nombre clienteZAPELLXX CHAR 25 ApellidosZNFACTXX CHAR 10 Nmero de facturaZFECHAXX DATS 8 FechaZIMPNTXX CURR 13 Importe

    3.3 Elementos de datos.Si el dominio representa la parte tcnica de un atributo, el elemento de datos representala parte funcional del atributo, es decir, su descripcin semntica.

    Creacin / Modificacin / Visualizacin.

    En el men diccionario:

    Pg. 42

  • 7/23/2019 Curso ABAP - Manual v1

    43/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Seleccionamos la opcin Tipo de Datos, introducimos el nombre del Elemento dedatos que vamos a crear, (en nuestro caso ZMESFAXX).Pulsamos la opcin de Crear.

    Seleccionamos la opcin Elem. Datos, llegaremos a la siguiente pantalla:

    Descripcin breve: Introduciremos una descripcin representativa del objeto. (Mesde la factura).

    En la pestaa Definicin:Opcin Tipo elemental:Dominio: Dominio al que hace referencia el elemento de datos. (ZMESESXX).Tipo Instalado: Tipo de datos y longitud con el mismo significado que el que se defineen los dominios.ID parmetro: Permite referenciar a un parmetro de memoria SAP. Ser til para

    mostrar valores por defecto en pantallas, ya que este campo se completar con el valorque tenga el parmetro de memoria SAP al mostrar la pantalla. (En nuestro caso lodejamos en blanco.)

    En la pestaa Denom. Campo: Estos campos corresponden a la descripcin del objeto,estos, son los textos que se mostrarn en los diferentes lugares donde se haganreferencia al campo que utilicen el elemento de datos , por ejemplo en cabeceras de

    Pg. 43

  • 7/23/2019 Curso ABAP - Manual v1

    44/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    informes al visualizar contenidos de tablas, en pantallas El campo longitud representael espacio en el que se va a escribir el texto.(En nuestro caso: Mes Fac., Mes de factura, Mes de la factura.

    En el campo longitud pondremos los valores propuestos: 10, 15, 20).Una vez completado, grabamos (F11), verificamos (Ctrl. + F2) y activamos(Ctrl. + F3).

    (Crearemos los siguientes elementos de datos :)

    Elem. Datos Dominio DescripcinZNCLIEXX ZNCLIEXX Nmero de clienteZNOMBXX ZNOMBXX Nombre clienteZAPEL1XX ZAPELLXX Primer ApellidoZAPEL2XX ZAPELLXX Segundo ApellidoZNFACTXX ZNFACTXX Nmero de factura

    ZFECHAXX ZFECHAXX Fecha facturaZIMPNTXX ZIMPNTXX Importe neto

    3.4 Tablas.

    3.4.1 Creacin de una tabla.

    Una tabla representa un conjunto de atributos de una entidad. Esta formada por camposque se corresponden con cada uno de los atributos. Cada uno de ellos har referencia aun elemento de datos.

    Creacin / Modificacin / Visualizacin.

    En el men diccionario introducimos el nombre de la tabla que vamos a crear, ennuestro caso ZCLIENXX, seleccionamos la opcin Tablasy pulsamos la opcin deCrear.

    Pg. 44

  • 7/23/2019 Curso ABAP - Manual v1

    45/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Descripcin breve: Descripcin significativa de la tabla. (Maestro de clientes)

    PestaaAtributos:Clase de entrega: Indica quin es el responsable del mantenimiento de la tabla, si esuna tabla de parametrizacin, (Pondremos de tipo A (Aplicacin)).Permitida Actualizacin tabla: Habilita/ Deshabilita la posibilidad de que el contenidode la tabla pueda ser modificado en la transaccin de visualizacin del contenido de latabla. (Si no se marca no se podrn modificar los registros de la tabla por estatransaccin). (Marcamos con una X)

    Pestaa Campos:Nombre campo: Nombre del campo.Clave: Indica si el campo forma parte de la clave primaria de la tabla. Un campo oconjunto de campos son clave en una tabla si determinan de forma unvoca un nico

    registro de dicha tabla. Toda tabla tiene que tener clave primaria.

    Tipo de datos: Nombre del elemento de datos que describe al campo. (*)Tipo y longitud: Tipo de dato y longitud. (*)Tabla de Verificac.: En est tabla aparecer un * cuando el elemento de datosintroducido, haga referencia a un dominio que tenga una tabla de valores permitidos, obien cuando se asocie una clave externa (Visto ms adelante).Descripcin breve: Descripcin del campo. (*)

    Pg. 45

  • 7/23/2019 Curso ABAP - Manual v1

    46/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    (*) Podemos crear campos en la tabla que no necesariamente han de estar vinculados aun elemento de datos, si no que directamente le podemos asignar un tipo, longitud y

    descripcin. Mediante el botn de esta manera sehabilitan para entrada estos campos. Para volver a introducir tipos de datos pulsaremosnuevamente esta opcin. (Aunque existe esta posibilidad, no es muy recomendable).

    Pestaa Campos moneda/cantidad:TabRef y Cpo Ref.: Solamente los tipos de datos de importe (CURR) y cantidad(QUAN), necesitan ser referenciados a otros campos del diccionario. Para ellos esobligatorio completar estos valores (tabla + campo). Estos campos de referenciadebern de ser del tipo Moneda (CUKY) para importes y Unidad (UNIT) para cantidadesDe esta forma, cuando se visualicen datos (en pantallas, pantallas de seleccin)sern formateados con el valor que contenga el campo al que han sido referenciados.

    Aadimos a la tabla los campos:Campo Cl. Elem. Datos Tipo Long DescripcinMANDT X MANDT MandanteBUKRS X BUKRS Sociedad NCLIE X ZNCLIEXX N de identificacin clienteNOMBR ZNOMBXX Nombre cliente

    APEL1 ZAPEL1XX Primer apellidoAPEL2 ZAPEL2XX Segundo apellidoFNACI DATS 8 Fecha de nacimiento

    Nota: El campo MANDT, mandante, se aade como un atributo en las tablas de estaforma, se pueden tener varias colecciones de datos distintas segn el mandante. En las

    selecciones, actualizaciones de la tabla este campo es trasparente ya que tendrsiempre el valor indicado al iniciar la sesin en el sistema. (No es obligatorio definir elmandante en todas las tablas aunque si es lo ms habitual).

    OPCIONES TCNICAS

    Una vez completados todos los campos, grabamos la tabla (F11). Posteriorementeser necesario completar las definiciones tcnicas de la tabla para ello seleccionaremos

    la opcin de men Pasar a Opciones tcnicas o el botn . Aparecerla siguiente pantalla , donde hay que completar los campos:

    Pg. 46

  • 7/23/2019 Curso ABAP - Manual v1

    47/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Clase Datos: Con la clase de datos se define de forma lgica el mbito fsico en la basede datos en el que se grabar la tabla.Este lugar fsico donde se ubicar la tabla sedeterminar en funcin del tipo de utilizacin de la tabla, es decir, predominio deactualizaciones consultas. Por ejemplo una tabla con datos maestros sufrir pocasactualizaciones y muchas consultas(Para nuestro ejemplo seleccionaremos APPL0)Categora tamao: Determina el nmero aproximado de registros que va a albergar latabla. (Seleccionamos tamao 3)

    Una vez completados, pulsamos el botn verificar (Ctrl. + F2) y grabamos botn

    (F11). Volveremos a la pantalla inicial con el botn (F3) verificamos (Ctrl. + F2)

    y activamos la tabla (Ctrl. + F3).

    3.4.2 ndices.

    Un ndice es la ordenacin de los registros de una tabla, por uno o varios de los camposque la componen Por tanto la definicin de un ndice consisten en la enumeracin de loscampos que lo componen.Para crear un ndice a una tabla, en la pantalla:

    Pg. 47

  • 7/23/2019 Curso ABAP - Manual v1

    48/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Pulsamos la opcin de men Pasar a ndices o el botn

    Si no hay ningn ndice creado para la tabla aparecer la siguiente ventana:

    Al pulsar la opcin Si aparecer la ventana donde nos pide un identificador para elndice. (Pondremos Z01).

    Pg. 48

  • 7/23/2019 Curso ABAP - Manual v1

    49/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    A continuacin aparece la pantalla donde se introducen los campos que forman enndice.

    Descripcin breve: Descripcin del ndice. (ndice por fecha de nacimiento.)Indice nico / no nico: Si marcamos la opcin ndice nico haremos que el ndice seanico, es decir que no se podrn repetir entradas iguales en la tabla para los campos

    que formen el ndice. En nuestro ejemplo si marcamos el ndice como nico no sepodrn insertar en la tabla dos clientes que nacieran el mismo da. (Marcamos el ndicecomo no nico).Campos: Campos que forman el ndice. Pondremos el nombre de los campos o bien

    podemos seleccionarlos mediante el botn . (En nuestro casoseleccionaremos los campos MANDT y FNACI).

    Cuando se han completado los datos grabamos (F11), verificamos (Ctrl. + F2) y

    activamos (Ctrl. + F3).

    Para modificar el ndice pulsaremos el botn nos mostrar una ventana conlos ndices existentes :

    Pg. 49

  • 7/23/2019 Curso ABAP - Manual v1

    50/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Podremos seleccionar uno de los existentes para modificarlo o crear uno nuevo

    En general los ndices permiten acelerar las operaciones de consulta, pero en

    contraposicin ralentizan las actualizaciones ya que cada actualizacin de alguno de losregistros de la tabla ha de actualizar el/los ndices de la misma. Por tanto a la hora decrear ndices hay que valorar bien su utilidad y repercusiones.

    Toda tabla est ordenada por los campos clave, luego hay un ndice implcito por estoscampos, y no tendr sentido definir un ndice con los todos los campos clave. (En elejemplo sera absurdo definir un ndice con los campo MANDT, BUKRS y NCLIE).

    3.4.3 Visualizar / Modificar Contenido de tabla.

    Una vez que la tabla est definida, podemos almacenar informacin para ello dentro dela pantalla de definicin de la tabla seleccionamos la opcin de men UtilidadesContenido tablaRegistrar entradas aparecer una pantalla en la que introducir cadauno de los registros:

    Pg. 50

  • 7/23/2019 Curso ABAP - Manual v1

    51/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Introducimos los datos y pulsamos (F11).

    Para visualizar los registros de la tabla seleccionaremos la opcin de menUtilidadesContenido tabla Visualizar.

    Aparecera una pantalla de seleccin de la tabla donde se podrn indicar los criterios debsqueda.

    Pg. 51

  • 7/23/2019 Curso ABAP - Manual v1

    52/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Pulsando visualizaremos el contenido de la tabla en forma de listado.

    Pg. 52

  • 7/23/2019 Curso ABAP - Manual v1

    53/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Desde esta pantalla podremos, crear nuevas entradas y visualizar , modificar

    y borrar (Entrada en Tabla Borrar ) las existentes.

    Existen otras formas de llegar a la visualizacin del contenido de una tabla sin pasar porla transaccin del diccionario de datos.Con la transaccin SE16, indicaremos el nombre de la tabla y llegaremos directamentea la pantalla de seleccin de datos de la tabla.Con la transaccin SM30 (slo si hemos generado las vistas de dilogo de actualizacinde la tabla).

    3.4.4 Vistas / Dilogo de actualizacin. GENERACION ACTUALIZACION DETABLAS

    Un dilogo de actualizacin de una tabla es un conjunto de programas cuya utilidad esel mantenimiento del contenido de la tabla. Cuando creamos el dilogo sobre una tabla,se generan estos programas de forma automtica.

    Aunque no es estrictamente necesario crear este dilogo para mantener las tablas si esmuy aconsejable para aquellas tablas que el usuario mantiene ya que de esta forma sepuede controlar de manera sencilla la seguridad de la tabla. (Esta opcin es muyutilizada en las tablas de parametrizacin, por ejemplo).

    Pg. 53

  • 7/23/2019 Curso ABAP - Manual v1

    54/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Para generar el dilogo, la tabla ha de estar activada. Una vez activada seleccionamosla opcin de men Utilidades Generador Actualiz.Tab. llegaremos a la siguientepantalla:

    Grupo de autorizaciones: Mediante este campo, se puede controlar la seguridad sobreel mantenimiento de la tabla, es decir, limitar los usuarios que puedan modificar elcontenido de la tabla. Solamente podrn realizar modificaciones aquellos usuarios quetengan autorizacin sobre el grupo de autorizaciones indicado. Si deseamos nocontrolar la autorizacin pondremos en este campo el valor por defecto &NC&. (Ennuestro caso pondremos este valor).Grupo de funciones: Es necesario indicar un grupo de funciones en el que se incluirnlas funciones, dynpros y dems objetos del dilogo de actualizacin. Aunque podemosindicar aqu cualquier grupo de funciones ya existente, es conveniente indicar unonuevo o bien un grupo que contenga una funcionalidad similar, el dilogo deactualizacin de otra tabla, por ejemplo. (En nuestro caso pondremos ZGXX).Tipo de actualizacin: Marcar uno o dos niveles har que se generen una o dospantallas de mantenimiento. Si marcamos un nivel solamente se generar una pantalla(imagen resumen) que muestra el contenido de todos los registros de la pantalla, si dosniveles adems de la pantalla anterior (imagen resumen) se genera una segunda(imagen sencilla) con el detalle de cada uno de los registros. (Seleccionamos dosniveles).Imgenes actualizacin: Representan el nmero de dynpro que se asignar a cadauna de las dos pantallas que se generan. Podemos indicar dos nmeros de dynpro que

    Pg. 54

  • 7/23/2019 Curso ABAP - Manual v1

    55/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    no existan en grupo de funciones elegido aunque existe una utilidad para que el sistema

    elija de manera automtica estos valores para ello pulsamos el botnnos llevar a la siguiente ventana

    Con la primera opcin nos propondr unos nmeros no existentes. Las otras opcionespermiten visualizar los n todava libres y los ya asignados. Al seleccionar la primeraopcin volveremos a la pantalla anterior, donde se habrn informado los campos de la

    imagen resumen y sencilla. Pulsamos el botn crear (Si el grupo de funcionesindicado no esta creado, nos pedir una clase de desarrollopondremos

    seleccionaremos objeto local). Grabamos (F11) y retornamos a la pantalla anterior

    (F3).

    Para introducir entradas y visualizar el contenido de la tabla seguiremos los mismospasos que en el apartado anterior. (Veremos como las pantallas han cambiado ya queahora se vern las pantallas de dilogo generadas)

    3.4.5 Claves Externas.

    Un campo de una tabla tiene asociada una clave externa cuando los valores posiblesque puede tomar el campo en dicha tabla, han de estar en otra tabla/s que llamaremostabla maestra.

    Vamos a crear la siguiente tabla teniendo en cuenta las indicaciones que se detallan acontinuacin para los campos NCLIE e IMPNT

    Nombre tabla: ZFACTUXX:

    Campo Cl. Elem. Datos Tipo Long DescripcinMANDT X MANDT MandanteBUKRS X BUKRS Sociedad NFACT X ZNFACT XX N de facturaNCLIE ZNCLIE XX Nmero de clienteFECHA ZFECHAXX Fecha de la facturaMESFA ZMESFAXX Mes de la facturaIMPNT ZIMPNTXX Importe neto de la facturaMONED WAERS Clave de moneda

    En esta tabla el campo NCLIE tendr unos valores limitados a los existentes en la tablamaestro de clientes. (No deberamos tener facturas de clientes que no existen) Para

    Pg. 55

  • 7/23/2019 Curso ABAP - Manual v1

    56/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    asociar esta clave externa, situados sobre este campo seleccionamos la opcin de

    men Pasar a Claves Externas o botn nos aparecer la ventana:

    Descripcin Breve: Descripcin de la clave externa. (Pondremos Maestro de clientes).Tabla de verificacin: Tabla maestra que contiene el campo con los valores vlidos

    (Pondremos ZCLIENXX).

    Una vez indicada la tabla, nos aparecer la ventana:

    Seleccionamos la opcin Si y no la pantalla se completar con los campos claves de latabla intoducida :

    Pg. 56

  • 7/23/2019 Curso ABAP - Manual v1

    57/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Cardinalidad: La cardinalidad entre dos tablas, representa el grado de la relacin entrelas mismas, es decir, cuantas ocurrencias de una tabla estn relacionadas con unaentrada de la otra. Por ejemplo en la relacin entre madres e hijos la cardinalidad ser 1a N ya que una madre puede tener cero ms hijos pero un hijo tendr una ysolamente una madre. Por tanto introduciremos aqu los valores oportunos en funcinde la relacin entre las tablas. (En nuestro caso seleccionaremos 1: CN ya que una uncliente puede tener varias facturas, pero una factura nicamente puede pertenecer a uncliente).

    Una vez introducidos lo valores oportunos verificamos (Ctrl. + F2) validamos

    . Podemos ver como se indica el valor de la tabla en la columna de tabla deverificacin.

    En esta tabla tenemos un campo IMPNT que es de tipo importe (CURR) por tanto esnecesario referenciarlo. Para ello podemos seleccionar la pestaa Campos moneda /Cantidad) e informar directamente los campo TabRef y CpoRef. o bien situados sobre elcampo hacemos Doble-Click (F2) aparecer la ventana donde tambin podemos indicarestos datos

    Tab. Referencia: Nombre de la tabla. (Pondremos ZFACTUXX).Cpo. Referencia: Campo de la tabla indicada. (Pondremos Moned).De esta manera hemos referenciado el importe IMPNT a la moneda MONED.

    Pg. 57

  • 7/23/2019 Curso ABAP - Manual v1

    58/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    3.5 Estructuras.

    Una estructura es similar a una tabla en cuanto a su definicin pero con la diferenciaque una estructura no puede albergar registros. Una estructura es simplemente la

    definicin de una entidad.

    Para crear una estructura, desde la pantalla de diccionario, seleccionamos la opcinTipo de datos ponemos el nombre de la estructura a crear(En nuestro casoZDATPERXX) y pulsamos crear, seleccionamos la opcin Estructura. Llegaremos a lapantalla:

    Donde introduciremos los campos y su definicin, bien a travs del campo elemento dedatos o bien introduciendo el tipo, longitud y descripcin (Del mismo modo que en lacreacin de tablas). (Introduciremos, los campos Nombr, Apel1, Apel2, con susrespectivos elementos de datos ZNOMBRXX, ZAPELLXX. En el texto pondremos Datos personales).

    3.6 Vistas.

    Una vista es una particularizacin de una o varias tablas en la que se puedenseleccionar uno o varios de los campos de las tabla/s. Por ejemplo podemos realizaruna vista para seleccionar nicamente algunos campos de una tabla peroprincipalmente utilizaremos vistas para obtener datos de tablas relacionadas. Bajo una

    Pg. 58

  • 7/23/2019 Curso ABAP - Manual v1

    59/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    vista podemos unir dos o ms tablas y poder ver la interseccin entre dichas tablascomo si se tratar de una nica tabla.Cuando se trata de una vista de ms de una tabla, es necesario definir las condiciones

    por las que se unen las tablas, es decir, los campos de interseccin de las tablas. Lasvistas no contienen datos sino que los datos se obtienen en tiempo de ejecucin alrealizar consultas sobre ellas.

    Por ejemplo: Si quisiramos ver todas las facturas de un cliente (Nombre y primerapellido), deberemos realizar una interseccin entre la tabla de clientes y la tabla defacturas para obtener una vista con los campos:

    Facturas/ Cliente.

    Campo DescripcinNFACT N de factura

    NCLIE N de clienteNOMBR Nombre clienteAPEL1 Primer apellidoIMPNT Importe NetoMONEDA Moneda

    Crear/Modificar/Visualizar.

    En la pantalla principal del diccionario de datos ponemos el nombre de la vista a Crear(ZFACLIXX) seleccionamos Vistas y pulsamos el botn crear. Seleccionaremos el tipoVista de base de datos. Llegaremos a la pantalla:

    Pg. 59

  • 7/23/2019 Curso ABAP - Manual v1

    60/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Tablas: Seleccionaremos las tablas de las que se desee obtener informacin. (Ennuestro caso la tablas ZCLIENXX y ZFACTUXX).

    Condiciones Join: Definen los campos por los que se realiza la interseccin entre lastablas seleccionadas. Para indicar las relaciones podemos utilizar el botn

    o escribir directamente las relaciones.

    (En nuestro caso:ZCLIENXX-MANDT = ZFACTUXX-MNADTZCLIENXXBUKRS = ZFACTUXX-BUKRS)ZCLIENXXCLIEN = ZFACTUXX-CLIEN).

    Campos Vista: Se seleccionan los campos deseados. Podemos renombrar el campoen la vista ser el que pongamos en Campos Vista. (Por defecto ser el nombre originaldel campo seleccionado). (En nuestro caso NFACT, NCLIE, IMPNT y MONEDA de latabla ZFACTUXX y NOMBR y APEL1 de la tabla ZCLIENXX).

    Para facilitar la seleccin de campos de una tabla, situados sobre la tabla pulsamos el

    botn donde marcaremos los campos deseados , una vez seleccionados

    aparecern automticamente en la pantalla. Una vez completada la vista grabamos

    (F11), verificamos (Ctrl. + F2) y activamos (Ctrl. + F3).

    Pg. 60

  • 7/23/2019 Curso ABAP - Manual v1

    61/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Para ver el contenido de la vista seleccionamos el menu Utilidades Contenido.Aparecera la pantalla de seleccin de la vista de la misma forma que en la visualizacin

    de los datos de una tabla.

    3.7 Matchcode. (Ayudas para bsqueda)

    Un matchcode es un instrumento de bsqueda de registros almacenados en el sistema.Permite en pantallas de seleccin filtrar la informacin existente por determinadoscriterios para facilitar la bsqueda. Por ejemplo no sabemos el DNI de una persona perosi su nombre, mediante este, podremos obtener el DNI.

    Crear/modificar/Visualizar:

    En la pantalla principal del diccionario seleccionamos la opcin Matchcode (Ayudas de

    bsqueda) introducimos el nombre del matchcode a crear, (ZCXX), y pulsamos el botnde crear, seleccionamos el tipo para ayuda elemental, llegaremos a la pantalla:

    Descripcin breve: Descripcin del matchcode (Podremos Bsqueda de clientes).Mtodo de seleccin: Nombre de tabla o vista del diccionario de datos de donde seobtendrn los datos a mostrar en la ayuda. (Pondremos ZCLIENXX).

    Pg. 61

  • 7/23/2019 Curso ABAP - Manual v1

    62/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Parm.Ayuda busq: Formado por cada uno de los campos que se utilizarn para labsqueda.IMP: Flag de parmetro EXPORT, este campo se utilizar como campo en el que

    informar valores de condicin para la bsqueda de registros.EXP: Flag de parmetro IMPORT, este campo se utilizar como parmetro de salida, esdecir, se volcar el valor del registro seleccionado sobre el campo.P.I: Posicin del campo para lista de aciertos, indica la posicin que ocupar el campoen la ventana de ayuda donde se mostrarn los registros seleccionados. (Si se indica 0o Blanco, significar que el campo no se muestra en la lista de aciertos).PoS: Posicin del campo para la pantalla de condiciones de la seleccin.V.s: Valor no modificable en la seleccin.Valor Propuesta: Valor de propuesta para la seleccin.

    (Seleccionaremos el campo NCLIE, NOMBR y APEL1 como campos de la bsqueda ,seleccionaremos el NOMBR y APEL1 como campos para condicin y NCLIE como

    parmetro EXPORT) .

    A continuacin grabamos (F11), verificamos (Ctrl. + F2) y activamos (Ctrl. +F3).

    3.8 Objetos de bloqueo.

    Sirven para controlar la concurrencia de procesos sobre un mismo objeto, siempre estnasociados a tablas del diccionario. Un objeto de bloqueo es un semforo sobre unatabla.Cuando se define un objeto de bloqueo se generan automticamente dos funciones quecontrolan dicho semforo:

    - ENQUEUE_Nombre: Controla la peticin de bloqueo sobre el objeto.- DEQUEUE_Nombre: Controla la liberacin del bloqueo sobre el objeto.Los argumentos con los que se defina el objeto de bloqueo permitirn que se controle latotalidad de registros de la tabla, un conjunto de ellos un nico registro.

    Bsicamente el funcionamiento es el siguiente:Necesitamos que dos procesos no compartan un objeto de forma concurrente, porejemplo que dos usuarios no accedan a la misma transaccin simultneamente, lo queharemos ser programar un objeto de bloqueo, y al inicio de la transaccin podremos lallamada a la funcin ENQUEUE_XXXX si el recurso esta ya siendo utilizado(encontramos semforo rojo), no podremos bloquearlo y podremos obrar enconsecuencia, mostrando un mensaje y terminar , mostrar una opcin de reintento Si

    se puede bloquear el objeto ser seal que no hay otro proceso utilizndolo (semforoverde) por tanto el proceso puede continuar (pondr el semforo en rojo para otrosprocesos), antes de terminar el proceso se deber llamar a la funcin DEQUEUE_XXXXpara liberar el objeto que se ha bloqueado (debe poner el semforo en verde para queotros procesos puedan utilizarlo.

    Para crear objetos de bloqueo, en la pantalla principal del diccionario de datos,seleccionamos la opcin Objeto de bloqueo (En nuestro caso, vamos a crear un objeto

    Pg. 62

  • 7/23/2019 Curso ABAP - Manual v1

    63/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    de bloqueo para la tabla ZCLIENXX, escribiremos EZCLIENXX). Tras pulsar la opcinde crear, nos aparecer la pantalla:

    Descripcin breve: Descripcin del objeto de bloqueo. (Bloqueo maestroclientes)

    En la pestaa Tablas.Nombre: Nombre de la tabla (ZCLIENXX en nuestro caso).Modo de Bloqueo: Modo en el que se realiza el bloqueo, lectura, escritura, (E)

    En la pestaa Parm.bloqueo.Parm.bloqueo: Corresponden a los parmetros del argumento de bloqueo.

    (Dejamos los valores por defecto)

    Una vez completados todos los campos, grabamos (F11)., verificamos (Ctrl. +

    F2) y activamos (Ctrol + F3).

    Pg. 63

  • 7/23/2019 Curso ABAP - Manual v1

    64/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    4. Programacin de listados (REPORTS)

    4.1 Introduccin.

    En el proceso de tratamiento de la informacin es necesario poder consultar los datosalmacenados en el sistema de una forma organizada, para realizar este tipo deoperaciones se utilizan programas tipo REPORT, con estos programas podemosgenerar listados en los que mostrar dicha informacin. Estos listados pueden estar

    orientados a visualizacin en pantalla y/o a impresora.Podramos distinguir dos tipos de listados por su grado de interaccin con el usuario:

    Reports planos: Orientados a visualizar informacin de una manera plana en niconivel. En este tipo de listados las opciones de usuario sobre el tratamiento de lainformacin es nula.

    Reports interactivos: Orientados a presentar informacin en varios niveles, es decir,pudiendo acceder desde un nivel de informacin a otro nivel de ms detalle y assucesivamente. Las opciones de usuario para el tratamiento de la informacin sonamplias ya que se puede ir navegando a travs de los distintos niveles de detalle.

    Por otra parte se da la necesidad de actualizar las bases de datos en las que no esnecesaria la intervencin directa del usuario, son los procesos que conocemos comoprocesos batch. Estos programas tambin se realizan mediante programas tipoREPORT pero lgicamente sin la parte de presentacin de datos por pantalla.

    Por tanto con programas tipo REPORT podemos realizar listados para la visualizacinde informacin as como programas de actualizacin masiva de datos. Estos programasse realizan en un lenguaje de programacin propio de SAP, es el lenguaje ABAP/4.

    4.2 Editor ABAP/4

    Para poder desarrollar los programas tenemos un editor de lenguaje ABAP/4. Esteeditor nos permitir escribir, verificar y generar los programas. Hay varias maneras de

    llegar al editor, el camino ms habitual para crear un nuevo programa del tipoREPORT es (desde el men principal de SAP) HerramientasWorkbenchABAPDesarrollo Editor ABAP (SE38).

    Llegaremos a la pantalla principal del editor de programas:

    Pg. 64

  • 7/23/2019 Curso ABAP - Manual v1

    65/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Desde esta pantalla podremos crear, visualizar, modificar y ejecutar (tambin podremos

    ejecutar en DEBUG mediante la opcin , ya veremos su significado msadelante) los programas.

    Para crear un programa, escribieremos el nombre del programa, seleccionaremos la

    opcin Texto fuente y seleccionaremos la opcin de crear . Nosaparecer la siguiente pantalla donde se definen los atributos del programa.

    Pg. 65

  • 7/23/2019 Curso ABAP - Manual v1

    66/322

    Curso programacin ABAP IVCurso programacin ABAP IV

    Ttulo: Descripcin de la funcionalidad del programa. (En nuestro caso pondremosListado de maestro de clientes).Tipo: Determina el tipo de programa, tenemos los siguientes:

    Programa ON-LINE (1): Programa ejecutable tanto de forma ON-LINE y enfondo (BATCH)Programa Include (I): Programa que contiene cdigo pero que no puede ser ejecutadodirectamente si no que formar parte de otros programas ejecutable.Module pool (M): Contiene cdigo para controlar pantallas. Es necesario asociarle uncdigo de transaccin para que pueda ser ejecutado.

    Grupo de funciones (F): Contiene programas denominados funciones, que no sepueden ejecutar directamente sino que tienen que ser llamados de otros programas.Pool de Subrutinas (S): Contiene cdigo compuesto por procedimientos, tampoco puedeser ejecutado directamente sino que puede ser llamado desde otros programas.

    (En nuestro caso pondremos tipo ON-LINE 1).

    Aplicacin: Mdulo al que pertenece el programa (FI, HHRR) (En nuestro casopondremos un Aplicacin Desconocida *)

    Una vez completado estos campos obligatorios pulsaremos el botn de grabar(F1