Ejemplos Abap. Jordi Calopa Bosch. Revisión

Ejemplos Abap Jordi Calopa Bosch Revisión 151006 Ejemplos Abap Jordi Calopa Bosch Índice 1. Introducción.........................................
Author:  Jaime Toro Casado

7 downloads 41 Views 319KB Size

Story Transcript

Ejemplos Abap Jordi Calopa Bosch

Revisión 151006

Ejemplos Abap

Jordi Calopa Bosch

Índice 1. Introducción....................................................................................................................................3 2. El lenguaje Abap.............................................................................................................................4 2.1 Parte DECLARATIVA del programa.....................................................................................4 2.2 Parte OPERATIVA del programa ........................................................................................ 4 2.3 Operadores Relacionales....................................................................................................... 6 2.4 Campos del Sistema...............................................................................................................6 2.5 Tipos de Datos Predefinidos..................................................................................................8 2.6 Tablas Internas....................................................................................................................... 9 3. Ejemplos....................................................................................................................................... 12 3.1 Tratamiento de Strings.........................................................................................................12 3.2 Cálculos............................................................................................................................... 15 3.3 Tablas de Base de Datos (SQL Open)..................................................................................17 3.4 Varios................................................................................................................................... 19 3.5 Programas ........................................................................................................................... 27

2 / 51

Ejemplos Abap

Jordi Calopa Bosch

1.  Introducción El lenguaje ABAP, cuyas siglas significan ­Advanced Business Application Programming­, es un lenguaje de programación implementado únicamente dentro del entorno de SAP; Es decir, que no dispone de compilador independiente,   sino   que   los   programas   se   ejecutan   mediante   un   “runtime”   incorporado   al   entorno   de desarrollo de SAP. ABAP es un lenguaje de programación que amalgama características de otros más antiguos como COBOL, RPG   y   Assembler.   En   los   entornos   host   fue   desarrollado   en   lenguaje   assembler   de   dichos   entornos   y funcionaba   como   un   subprograma   del   monitor   de   teleproceso   CICS.   Es   un   lenguaje   que   dispone   de   los elementos necesarios para la programación estructurada y es especialmente práctico para programación por refinamientos sucesivos.

3 / 51

Ejemplos Abap

Jordi Calopa Bosch

2.  El lenguaje Abap Adentrándonos en la estructura del lenguaje, cabe destacar que un programa ABAP, consta de dos grandes bloques: una parte DECLARATIVA, en la que podemos definir todas las tablas, estructuras, vistas, variables, constantes, parámetros y opciones de selección, entre otros, y una segunda parte OPERATIVA en la que se codifican las sentencias que marcarán el flujo del proceso.

2.1 Parte DECLARATIVA del programa    CONSTANTS DATA INCLUDE PARAMETERS PROGRAM REPORT SELECT­OPTIONS STATICS TABLES TYPES        

Definición de constantes   Definición de variables: campos internos, strings, tablas y áreas de trabajo Include de estructuras o tipos   Definición de campos internos inicializables por el usuario   Inicio de programa   Inicio de programa (Equivalente a PROGRAM)   Definición de los criterios de selección inicializables por el usuario   Definición de datos estáticos para subrutinas   Definición de tablas de SAP  (tablas de BD, estructuras etc)   Definición de tipos  

2.2 Parte OPERATIVA del programa   Eventos   INITIALIZATION        Antes de la salida de la pantalla de selección (solo OnLine)   AT SELECTION­SCREEN Después de la entrada de datos de la pantalla de selección   START­OF­SELECTION Al principio del programa (parte operativa)   GET                   Después de leer un registro vía BD lógica   END­OF­SELECTION Al final de la selección / programa   TOP­OF­PAGE Al principio de una nueva página   END­OF­PAGE Después de la salida de la última línea de la página   AT LINE­SELECTION Después de seleccionar una línea   AT Pfn Después de pulsar una tecla de función   AT USER­COMMAND Después de la entrada de datos en el campo de comandos   SQL Open (Tratamiento de tablas de BD)   COMMIT WORK         DELETE              FETCH INSERT MODIFY ROLLBACK            SELECT ENDSELECT SELECT SINGLE       UPDATE             

Finaliza LUW y Realiza los cambios en la BD   Borrado de registros de tablas de BD   Lee registro de tabla de BD (OPEN/CLOSE CURSOR)   Inserción de registros en tablas de BD   Si existe UPDATE; si no existe INSERT   Deshacer actualizaciones de BD hasta el último COMMIT   Selección de registros de tablas de BD   Lee registro de tabla de BD   Actualiza un registro de una tabla de BD  

4 / 51

Ejemplos Abap

Jordi Calopa Bosch

Tratamiento de ficheros secuenciales (Linux)   CLOSE DATASET    OPEN DATASET        READ DATASET        TRANSFER          

Cierre de un fichero secuencial   Apertura de un fichero secuencial   Lectura de un fichero secuencial   Grabación de registro en fichero secuencial  

Tratamiento de ficheros internos   XTRACT FIELD­GROUPS       INSERT LOOP   ENDLOOP    SORT

Grabación de un registro en un fichero interno   Definición de grupos de campos   Asociar campos a un determinado grupo   Loop de un fichero interno   Ordenar un fichero interno  

Tratamiento de tablas dinámicas en memoria principal   APPEND                COLLECT               CONTINUE              DELETE                DESCRIBE TABLE        EXIT LOOP AT   ENDLOOP MODIFY READ                  REFRESH               SORT                 

Añadir entrada en una tabla interna   Añadir entrada en una tabla interna (Si no existe, la añade)   Reinicio del LOOP   Delete de registros de tablas internas   Devuelve información de una tabla interna   Salir de loops y subrutinas   Loop de una tabla interna   Modificación de registros de tablas internas   Lectura de tablas internas y de BD   Limpiar (vaciar) una tabla interna   Ordenar una tabla interna  

Operaciones aritméticas   ADD COMPUTE DIVIDE MULTIPLY SUBTRACT

Suma   Calcular   División   Multiplicación   Resta  

Tratamiento de strings   CONDENSE CONCATENATE OVERLAY REPLACE SEARCH SHIFT SPLIT TRANSLATE

Elimina espacios en blanco de una cadena de caracteres   Concatena varios strings o variables (en una sola)   Enmascara una cadena con otra cadena de caracteres   Remplaza un string por otro (dentro de una variable)   Búsqueda de caracteres   Mover (shiftar) el contenido de un campo   Separa un string o variable (en varias)   Conversión Mayúsculas/minúsculas  

5 / 51

Ejemplos Abap

Jordi Calopa Bosch

2.3 Operadores Relacionales EQ , =  NE , >          LT , = , => LE ,  de 0000 a FFFF

* UTILIZAR SENTENCIA HIDE report yxxxxxxx"          no standard page heading.   data: campo(3) type c.   start­of­selection.     write: /01 'primera linea'.     campo = '111'.     hide campo.           ' asociamos valor 111 a la linea escrita anteriormente.   write: /01 'segunda linea'.     campo = '222'."     hide campo.           ' asociamos valor 222 a la linea escrita anteriormente. at line­selection.     write: /01 campo. ' campo valdrá 111 si se selecciona la primera línea ' o valdrá 222 si se selecciona la segunda   * VISUALIZAR LISTA DE USUARIOS CONECTADOS report zxxxxxxx        line­size 120        no standard page heading. data: begin of t1 occurs 1.         include structure uinfo. data: end of t1. data: w_conects   type i. start­of­selection.   refresh t1.   CALL FUNCTION 'THUSRINFO'     TABLES       USR_TABL = T1     EXCEPTIONS       OTHERS   = 1.   describe table t1 lines w_conects.   sort t1 by mandt bname.   format color col_heading.   format intensified off.   uline.   loop at t1.     write: /01 sy­vline,                t1­mandt       intensified on,

26 / 51

Ejemplos Abap

Jordi Calopa Bosch

               t1­bname,                t1­tcode       intensified on,                t1­zeit,                t1­extmodi     intensified on,                t1­hostadr,                t1­term        intensified on,                t1­tid,             at sy­linsz sy­vline.   endloop.   uline.   format color col_positive.   write: /01 sy­vline,              'usuarios conectados al sistema',              w_conects color col_normal,           at sy­linsz sy­vline.   uline.

3.5 Programas  * ************************************************************** * * Autor ........................... Jordi Calopa Bosch (JCB)     * * Ultima actualización ............ 09.10.2002                   * * Entorno de desarrollo ........... SAP/R3 (31I) bajo Unix       * * Lenguaje de programación ........ ABAP/4                       * *                                                                * *  Backup Automático de Programas del User activo. Este programa * *  revisa la tabla TRDIR y cuando encuentra un programa generado * *  y/o modificado por el usuario activo, lo vuelca a PC,         * *  añadiéndole la extensión TXT                                  * *                                                                * * ************************************************************** * program zxxxxxxx         line­size 120         no standard page heading. include zjcb_include. * *** Declaración de tablas y Vistas de Base de Datos              *** * TABLES: TRDIR. * *** Declaración de tablas dinámicas de memoria interna           *** * DATA: BEGIN OF t1 OCCURS 5000,          " Tabla de volcado          reg(255) type c,       end of t1. DATA: BEGIN OF t2 OCCURS 10000,         " Tabla directorio          name like trdir­name,          clas like trdir­clas,          cnam like trdir­cnam,          cdat like trdir­cdat,          unam like trdir­unam,          udat like trdir­udat,

27 / 51

Ejemplos Abap

Jordi Calopa Bosch

         secu like trdir­secu,          appl like trdir­appl,       end of t2. * *** Declaración de variables globales                            *** * data: wdir       type string,       tipo(10)   type c value 'ASC',       founds     type i value 0,       longi      type i value 0,       campo      type c,       numero(4)  type n. * *** Definición de los Criterios de Selección                     *** * SELECTION­SCREEN: BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT­001. SELECTION­SCREEN: SKIP. PARAMETERS: DIRPC(25) TYPE C OBLIGATORY. SELECTION­SCREEN: SKIP. SELECT­OPTIONS: WMODIF FOR sy­datlo                            NO­EXTENSION. SELECTION­SCREEN: SKIP. SELECTION­SCREEN: END OF BLOCK BL1. INITIALIZATION.   DIRPC = 'c:\temp\'.   WMODIF­SIGN = 'I'.   WMODIF­OPTION = 'EQ'.   WMODIF­LOW = sy­datlo ­ 1.   WMODIF­HIGH = sy­datlo.   APPEND WMODIF. START­OF­SELECTION.   clear t2.   refresh t2. * Selección de Programas   SELECT NAME CLAS CNAM CDAT UNAM UDAT SECU APPL          INTO TABLE t2          FROM TRDIR          WHERE ( CNAM EQ sy­uname OR UNAM EQ sy­uname ) AND                UDAT IN WMODIF                           and                ( name like 'Y%'      or                  name like 'Z%'      or                  name like 'SAPMY%'  or                  name like 'MY%' )          ORDER BY NAME. * *** Proceso de la tabla interna con los programas seleccionados   FORMAT INTENSIFIED OFF.   FORMAT COLOR COL_NORMAL.   ULINE.   loop at t2.     numero = sy­tabix.     CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'       EXPORTING         PERCENTAGE = sy­tabix         TEXT       = Numero.

28 / 51

Ejemplos Abap

Jordi Calopa Bosch

    CHECK t2+00(01) GE 'A' AND t2+00(01) LE 'Z'.     LONGI = STRLEN( DIRPC ).     LONGI = LONGI ­ 1.     MOVE DIRPC+LONGI(01) TO CAMPO.     IF CAMPO EQ '\'.       CONCATENATE DIRPC t2­NAME '.txt' INTO WDIR.     ELSE.       CONCATENATE DIRPC '\' t2­NAME '.txt' INTO WDIR.     ENDIF.     read report t2­name into t1.     CALL FUNCTION 'GUI_DOWNLOAD'       EXPORTING         filename                = wdir         FILETYPE                = tipo       TABLES         data_tab                = t1       EXCEPTIONS         FILE_WRITE_ERROR        = 1         NO_BATCH                = 2         GUI_REFUSE_FILETRANSFER = 3         INVALID_TYPE            = 4         NO_AUTHORITY            = 5         UNKNOWN_ERROR           = 6         HEADER_NOT_ALLOWED      = 7         SEPARATOR_NOT_ALLOWED   = 8         FILESIZE_NOT_ALLOWED    = 9         HEADER_TOO_LONG         = 10         DP_ERROR_CREATE         = 11         DP_ERROR_SEND           = 12         DP_ERROR_WRITE          = 13         UNKNOWN_DP_ERROR        = 14         ACCESS_DENIED           = 15         DP_OUT_OF_MEMORY        = 16         DISK_FULL               = 17         DP_TIMEOUT              = 18         FILE_NOT_FOUND          = 19         DATAPROVIDER_EXCEPTION  = 20         CONTROL_FLUSH_ERROR     = 21         OTHERS                  = 22.     CASE SY­SUBRC.       WHEN '0'.         WRITE: /01 SY­VLINE,                    'Volcado del fichero'(002),                    WDIR COLOR COL_POSITIVE,                 AT SY­LINSZ SY­VLINE.       WHEN OTHERS.         WRITE: /01 SY­VLINE,                    'ERROR AL VOLCAR ...'(003)   COLOR COL_NEGATIVE,                    WDIR                     COLOR COL_NEGATIVE,                 AT SY­LINSZ SY­VLINE.     ENDCASE.

29 / 51

Ejemplos Abap

Jordi Calopa Bosch

  ENDLOOP.   ULINE. END­OF­SELECTION. * *** Cabeceras del listado                                        *** * top­of­page.   WRITE: /01 '  Backup Automático de Programas del User:',              SY­UNAME.

* ************************************************************** *  Autor ........................... Jordi Calopa Bosch (JCB)  * *  Ultima actualización ............ 16.01.2001                * *  Entorno de desarrollo ........... SAP/R3 (31H) bajo Unix    * *  Lenguaje de programación ........ ABAP/4                    * *                                                              * * Este ejemplo muestra como realizar un programa en el cual la *   * pantalla de salida se refresque automáticamente cada segundo *   *                                                              * * ************************************************************ * PROGRAM Zxxxxxxx           LINE­SIZE 250           NO STANDARD PAGE HEADING.   CONSTANTS: COMANDO(4) TYPE C VALUE 'XXXX'.      *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       START­OF­SELECTION                                            *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   START­OF­SELECTION.        PERFORM PROCESO_PRINCIPAL.     SET USER­COMMAND COMANDO.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM PROCESO_PRINCIPAL                                        *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM PROCESO_PRINCIPAL.        Skip 10.     WRITE: /30 SY­ULINE(23).     WRITE:  50 SY­ULINE(21).     WRITE: /30 SY­VLINE, 'Host   :', SY­HOST,  SPACE, SY­VLINE.     WRITE:  50 SY­VLINE, 'Fecha:', SY­DATUM INTENSIFIED OFF,                                                 SY­VLINE.     WRITE: /30 SY­VLINE, 'Entorno:', SY­SYSID, SPACE, SY­VLINE.     WRITE:  50 SY­ULINE(21).     WRITE: /30 SY­VLINE, 'S.O.   :', SY­OPSYS, SY­VLINE.     WRITE:  50 SY­VLINE, 'Hora: ', SY­UZEIT INTENSIFIED OFF,                                             ' ', SY­VLINE.     WRITE: /30 SY­ULINE(23).     WRITE:  50 SY­ULINE(21).  

30 / 51

Ejemplos Abap

Jordi Calopa Bosch

  SKIP."      ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       AT USER­COMMAND                                               *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   AT USER­COMMAND.        SY ­LSIND = 0.         IF SY­UCOMM EQ COMANDO.        PERFORM PROCESO_PRINCIPAL.        CALL FUNCTION 'Y_DUMMY'         STARTING New TASK 'IF'         PERFORMING REFRESCAR ON END OF TASK.      ENDIF.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM REFRESCAR                                                *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM REFRESCAR USING TASKNAME.     DATA: INT_SECONDS TYPE I VALUE 1.       CALL 'ALERTS' ID 'ADMODE'         FIELD 50                   ID 'STORAGE_OPCODE' FIELD 'SLEEP'                   ID 'TIME'           FIELD INT_SECONDS.        SET USER­COMMAND COMANDO.   ENDFORM. 

* ************************************************************** *  Autor ........................... Jordi Calopa Bosch (JCB)  * *  Ultima actualización ............ 16.01.2001                * *  Entorno de desarrollo ........... SAP/R3 (31H) bajo Unix    * *  Lenguaje de programación ........ ABAP/4                    * *                                                              * *    Este programa permite Visualizar, Renombrar, Copiar,      *   *    Borrar, Bloquear, Desbloquear, Regenerar, Imprimir        *   *    Volcar a PC y/o Ejecutar (en local) un report             *   *    existente en la tabla de programas TRDIR.                 *   *                                                              *   * ************************************************************ *   REPORT Yxxxxxxx          line­size 120          NO STANDARD PAGE HEADING.   INCLUDE .   INCLUDE YSU0000.   TABLES: TRDIR, DD02L, DD03L, USR03.   DATA: NOMPROG          LIKE SY­REPID,         NOMPNEW          LIKE SY­REPID,         NUMLINES         TYPE I,         RESP(01)         TYPE C,         NAMETAB(10)      TYPE C,  

31 / 51

Ejemplos Abap

Jordi Calopa Bosch

      FOUNFLD(01)      TYPE C VALUE 'F',         FIELD_CLASIF(30) TYPE C,         RETCODE          LIKE SY­SUBRC.   DATA: BEGIN OF T0 OCCURS 5000,                     C(72) TYPE C,         END OF T0.   DATA: BEGIN OF T1 OCCURS 1,                     TABNAME   LIKE DD03L­TABNAME  ,         FIELDNAME LIKE DD03L­FIELDNAME,         END OF T1.   DATA: BEGIN OF T2 OCCURS 1,                        r(72) type c,   END OF T2.   DATA: BEGIN OF T3 OCCURS 50.                     INCLUDE STRUCTURE TEXTPOOL.   DATA: END OF T3.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       START­OF­SELECTION                                            *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   START­OF­SELECTION."    SY­TITLE = 'Program Manager'.     PERFORM PEDIR_NOMBRE_PGM.     IF RETCODE NE 0.       EXIT.     ENDIF.     IF NOMPROG EQ SY­REPID.       EXIT.     ENDIF.    READ REPORT NOMPROG INTO T0.     IF SY­SUBRC NE 0.       EXIT.     ENDIF.    DESCRIBE TABLE T0 LINES NUMLINES.     PERFORM TRATAMIENTO_GRAL.     IF RETCODE NE 0.       EXIT.     ENDIF.   END­OF­SELECTION.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM PEDIR_NOMBRE_PGM                                         *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM PEDIR_NOMBRE_PGM.     DATA: VALOR_INP LIKE NOMPROG,         VALOR_OUT LIKE NOMPROG,           VALOR_RES.  

32 / 51

Ejemplos Abap

Jordi Calopa Bosch

  CLEAR: NOMPROG.   CALL FUNCTION 'POPUP_TO_GET_VALUE'          EXPORTING               FIELDNAME           = 'NAME'               TABNAME             = 'TRDIR'               TITEL               = 'Indique el Nombre del'               VALUEIN = VALOR_INP          IMPORTING               ANSWER = VALOR_RES               VALUEOUT = VALOR_OUT          EXCEPTIONS               FIELDNAME_NOT_FOUND = 1               OTHERS = 2.     IF VALOR_OUT IS INITIAL.       RETCODE = 4.     ELSE.       SELECT SINGLE * FROM TRDIR              WHERE NAME EQ VALOR_OUT.       RETCODE = SY­SUBRC.       IF RETCODE EQ 0.         NOMPROG = VALOR_OUT.       ENDIF.     ENDIF.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM TRATAMIENTO_GRAL                                         *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM TRATAMIENTO_GRAL.     REFRESH T3.     CLEAR: T3.     READ TEXTPOOL NOMPROG INTO T3 LANGUAGE 'S'.     READ TABLE T3 WITH KEY 'R'.     FORMAT INTENSIFIED OFF.     FORMAT COLOR COL_HEADING.   ULINE.     WRITE: /01 SY­VLINE,            120 sy­vline.     WRITE: /01 SY­VLINE,                NOMPROG COLOR COL_NORMAL,                T3­ENTRY(70),            120 sy­vline.     WRITE: /01 SY­VLINE,            120 SY­VLINE,            /01 SY­VLINE,                'Grupo autorizaciones..', TRDIR­SECU    COLOR COL_NORMAL,             40 'Autor     ..', TRDIR­CNAM    COLOR COL_NORMAL,             80 'Fecha generación  ', TRDIR­CDAT    COLOR COL_NORMAL,            120 SY­VLINE,            /01 SY­VLINE,                'Versión     ', TRDIR­VERN    COLOR COL_NORMAL,             40 'Modificador   ..', TRDIR­UNAM    COLOR COL_NORMAL  

33 / 51

Ejemplos Abap

Jordi Calopa Bosch

                                              INTENSIFIED OFF,             80 'Fecha modificación .', TRDIR­UDAT    COLOR COL_NORMAL,            120 SY­VLINE,            /01 SY­VLINE,                'Protección fuente  .', TRDIR­SQLX   COLOR COL_NORMAL,             40 'Protección edición  ', TRDIR­EDTX   COLOR COL_NORMAL,             80 'Mayusculas/minusculas.', TRDIR­VARCL  COLOR COL_NORMAL,            120 SY­VLINE,            /01 SY­VLINE,                'Generado automático ', TRDIR­OCCURS  COLOR COL_NORMAL,             40 'Tipo de programa  ', TRDIR­SUBC    COLOR COL_NORMAL,             80 'Base de Datos Lógica..', TRDIR­DBNA    COLOR COL_NORMAL,                                        TRDIR­DBAPL   COLOR COL_NORMAL,            120 SY­VLINE,            /01 SY­VLINE,                'Nivel     ..', TRDIR­LEVL    COLOR COL_NORMAL,             40 'Status     .', TRDIR­RSTAT   COLOR COL_NORMAL,             80 'Mandante    ..', TRDIR­RMAND   COLOR COL_NORMAL,            120 SY­VLINE,            /01 SY­VLINE,                'Idioma maestro  ..', TRDIR­RLOAD   COLOR COL_NORMAL,             40 'Coma fija    .', TRDIR­FIXPT   COLOR COL_NORMAL,             80 'Solo con variante ..', TRDIR­SSET    COLOR COL_NORMAL,            120 SY­VLINE.     WRITE: /01 SY­VLINE,               'Cantidad Líneas   ', NUMLINES COLOR COL_NORMAL,            120 sy­vline.     WRITE: /01 SY­VLINE,            120 sy­vline.     WRITE: /01 SY­VLINE,             10 ICON_DISPLAY        AS ICON,             20 ICON_RENAME         AS ICON,             30 ICON_COPY_OBJECT    AS ICON,             40 ICON_DELETE         AS ICON,             50 ICON_LOCKED         AS ICON,             60 ICON_UNLOCKED       AS ICON,             70 ICON_GENERATE       AS ICON,             80 ICON_PRINT          AS ICON,             90 ICON_MOVE           AS ICON,            100 ICON_EXECUTE_OBJECT AS ICON,            120 SY­VLINE.     WRITE: /01 SY­VLINE,            120 SY­VLINE.     ULINE.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       AT LINE­SELECTION                                             *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   AT LINE­SELECTION.     SY­LSIND = 0.        IF SY­CUROW EQ 13.       IF SY­CUCOL EQ 11 OR SY­CUCOL EQ 12.  

34 / 51

Ejemplos Abap

Jordi Calopa Bosch

      PERFORM DISPLAY_PGM.     ELSEIF SY­CUCOL EQ 21 OR SY­CUCOL EQ 22.         PERFORM RENAME_PGM.         PERFORM TRATAMIENTO_GRAL.       ELSEIF SY­CUCOL EQ 31 OR SY­CUCOL EQ 32.         PERFORM COPY_PGM.         PERFORM TRATAMIENTO_GRAL.       ELSEIF SY­CUCOL EQ 41 OR SY­CUCOL EQ 42.         PERFORM DELETE_PGM.         IF RETCODE = 0.           LEAVE TO SCREEN 0.         ENDIF.       ELSEIF SY­CUCOL EQ 51 OR SY­CUCOL EQ 52.         PERFORM LOCKED_PGM.         PERFORM TRATAMIENTO_GRAL.       ELSEIF SY­CUCOL EQ 61 OR SY­CUCOL EQ 62.         PERFORM UNLOCKED_PGM.         PERFORM TRATAMIENTO_GRAL.       ELSEIF SY­CUCOL EQ 71 OR SY­CUCOL EQ 72.         PERFORM GENERATE_PGM.       ELSEIF SY­CUCOL EQ 81 OR SY­CUCOL EQ 82.         PERFORM PRINT_PGM.       ELSEIF SY­CUCOL EQ 91 OR SY­CUCOL EQ 92.         PERFORM VOLCADO_PGM.       ELSEIF SY­CUCOL EQ 101 OR SY­CUCOL EQ 102.         SUBMIT (NOMPROG) AND RETURN VIA SELECTION­SCREEN.       ENDIF.     ENDIF.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM DISPLAY_PGM                                              *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM DISPLAY_PGM.     CALL FUNCTION 'RS_SOURCE_STRUCTURE'          EXPORTING               Source = NOMPROG          EXCEPTIONS               OTHERS = 1.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM RENAME_PGM                                               *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM RENAME_PGM.     CALL FUNCTION 'RS_RENAME_PROGRAM'          EXPORTING               SOURCE_PROGRAM = NOMPROG          IMPORTING               PROGRAM = NOMPNEW          EXCEPTIONS               ENQUEUE_LOCK = 1               OBJECT_NOT_FOUND = 2               PERMISSION_FAILURE = 3               REJECT_COPY = 4  

35 / 51

Ejemplos Abap

Jordi Calopa Bosch

            REJECT_DELETION = 5               OTHERS = 6.    IF SY­SUBRC EQ 0.       NOMPROG = NOMPNEW.     ENDIF.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM COPY_PGM                                                 *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM COPY_PGM.     CALL FUNCTION 'RS_COPY_PROGRAM'          EXPORTING              SOURCE_PROGRAM = NOMPROG          IMPORTING               PROGRAM = NOMPNEW"          EXCEPTIONS               ENQUEUE_LOCK = 1               OBJECT_NOT_FOUND = 2               PERMISSION_FAILURE = 3               REJECT_COPY = 4               OTHERS = 5.   IF SY­SUBRC EQ 0.       NOMPROG = NOMPNEW.     ENDIF.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM DELETE_PGM                                               *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM DELETE_PGM.     CALL FUNCTION 'RS_DELETE_PROGRAM'          EXPORTING              PROGRAM = NOMPROG          EXCEPTIONS               ENQUEUE_LOCK = 1               OBJECT_NOT_FOUND = 2               PERMISSION_FAILURE = 3               REJECT_DELETION = 4               OTHERS = 5.     RETCODE = SY­SUBRC.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM LOCKED_PGM                                               *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM LOCKED_PGM.     SELECT SINGLE * FROM TRDIR            WHERE NAME EQ NOMPROG.  

36 / 51

Ejemplos Abap

Jordi Calopa Bosch

  IF SY­SUBRC EQ 0.       TRDIR­EDTX = 'X'.       UPDATE TRDIR.       COMMIT WORK.     ENDIF.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM UNLOCKED_PGM                                             *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM UNLOCKED_PGM.     SELECT SINGLE * FROM TRDIR            WHERE NAME EQ NOMPROG.     IF SY­SUBRC EQ 0.       TRDIR­EDTX = SPACE.       UPDATE TRDIR.       COMMIT WORK.     ENDIF.   ENDFORM.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM GENERATE_PGM                                             *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM GENERATE_PGM.     GENERATE REPORT NOMPROG.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM PRINT_PGM                                                *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM PRINT_PGM.     CALL FUNCTION 'RS_PROGRAM_PRINT'          EXPORTING               DIALOG            = 'X'               PROGRAMM = NOMPROG          EXCEPTIONS               CANCELED = 1               OPEN_FORM_ERROR = 2               PROGRAM_NOT_FOUND = 3               NO_AUTHORITY = 4               OTHERS = 5.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM VOLCADO_PGM                                              *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM VOLCADO_PGM.     DATA: PATHNAME(128) TYPE C.  

37 / 51

Ejemplos Abap

Jordi Calopa Bosch

  CONCATENATE 'c:\datos\' NOMPROG INTO PATHNAME.     CALL FUNCTION 'WS_DOWNLOAD'          EXPORTING               filename = PATHNAME               FILETYPE            = 'ASC'          TABLES               DATA_TAB = T0          EXCEPTIONS               FILE_OPEN_ERROR = 1               FILE_WRITE_ERROR = 2               INVALID_FILESIZE = 3               INVALID_TABLE_WIDTH = 4               INVALID_TYPE = 5               NO_BATCH = 6               UNKNOWN_ERROR = 7               OTHERS = 8.     IF SY­SUBRC EQ 0.       MESSAGE ID 38 TYPE 'I' NUMBER 016           WITH 'Programa volcado correctamente a PC'.     ENDIF.     ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM CABECERA_REPORT                                          *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM CABECERA_REPORT.     DATA: NOMBRE(40).     SELECT SINGLE * FROM USR03 WHERE BNAME EQ SY­UNAME.     IF SY­SUBRC EQ 0.       CONCATENATE USR03­NAME1 USR03­NAME2 '(' SY­UNAME ')'                   INTO NOMBRE SEPARATED BY ' '.     ELSE.       NOMBRE = SY­UNAME.     ENDIF.     REFRESH T2.     PERFORM R_BLANCO.     T2­R+00 = '* Autor:    '.     T2­R+14 = NOMBRE.                             APPEND T2.     T2­R+00 = '* Fecha:    '.     T2­R+14 = SY­DATUM.                           APPEND T2.     T2­R+00 = '* Hora:     '.     T2­R+14 = SY­UZEIT.                           APPEND T2.     T2­R+00 = '* Host:     '.     T2­R+14 = SY­HOST.                            APPEND T2.     T2­R+00 = '* Sistema:    '.     T2­R+14 = SY­OPSYS.                           APPEND T2.     perform r_blanco.     t2­r+00 = 'REPORT'.     t2­r+08 = nomprog.                            append t2.     T2­R = '        line­size 94'.                APPEND T2.     T2­R = '        no standard page heading.'.   APPEND T2.     T2­R = '                                 '.   APPEND T2.   ENDFORM.  

38 / 51

Ejemplos Abap

Jordi Calopa Bosch

*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM R_BLANCO                                                 *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   form r_blanco.     T2­R = '* ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ *'.     APPEND T2.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM INSERTAR_PGM                                             *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM INSERTAR_PGM.     CALL FUNCTION 'RKD_INSERT_REPORT'          EXPORTING               COMMIT         = 'X'               ENQUEUE_FLAG   = 'X'               REPORT_NAME = NOMPROG               REPORT_NAMEH = NOMPROG               REPORT_NAMEL = NOMPROG               TADIR_DEVCLASS = '$TMP'               TEXT           = 'Nuevo programa'               TRDIR_APPL     = 'S'               TRDIR_CLAS     = '$TMP'               TRDIR_DBAPL    = 'S'               TRDIR_DBNA     = 'D$'               TRDIR_FIXPT    = 'X'               TRDIR_RSTAT    = 'T'               TRDIR_SQLX     = 'R'               TRDIR_SUBC     = '1'          TABLES               CODE_TAB = T2          EXCEPTIONS               NO_FREE_NUMBER = 1               SYNTAX_CHECK = 2               TRDIR_LOCKED = 3               OTHERS = 4.    IF SY­SUBRC EQ 0.       SELECT SINGLE * FROM TRDIR              WHERE NAME EQ NOMPROG.       IF SY­SUBRC EQ 0.         TRDIR­RLOAD = 'S'.         TRDIR­EDTX = 'X'.         TRDIR­SECU = 'YSGNI'.         UPDATE TRDIR.         COMMIT WORK.       ENDIF.     ENDIF.      ENDFORM.  

* ******************************************************************** *  Autor ........................... Jordi Calopa Bosch (JCB)        * *  Ultima actualización ............ 16.02.2001                      *

39 / 51

Ejemplos Abap

Jordi Calopa Bosch

*  Entorno de desarrollo ........... SAP/R3 (31H) bajo Unix          * *  Lenguaje de programación ........ ABAP/4                          * *                                                                    * *  Descripción: Esta utilidad sirve para submitir programas Abap     * *               residentes en la work­station (PC).                  * *                                                                    * * ****************************************************************** * REPORT Yxxxxxxx.   INCLUDE YSU0000.   * *** Declaración de Variables Globales                            *** *   DATA: RESPUESTA(01) TYPE C,         RETCODE       LIKE SY­SUBRC,         TXT120(120)   TYPE C.   * *** Declaración de Constantes Globales                          *** *   CONSTANTS: MARCA(01)   TYPE C VALUE 'X',              SKELETON(8) TYPE C VALUE 'YZZZZZZZ'.   * *** Definición de tablas dinámicas de memoria interna           *** *   DATA: BEGIN OF TBLPGM OCCURS 5000,          C(72),         END OF TBLPGM.   * *** Definición de Criterios de Selección                         *** *   SELECTION­SCREEN: BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT­001.   SELECTION­SCREEN: SKIP.   PARAMETERS: PROGRAMA LIKE SY­REPID.   SELECTION­SCREEN: SKIP.   SELECTION­SCREEN: BEGIN OF BLOCK 2 WITH FRAME.   PARAMETERS: VISUAL RADIOBUTTON GROUP G1,               EDITAR RADIOBUTTON GROUP G1,               LANZAR RADIOBUTTON GROUP G1.   SELECTION­SCREEN: END OF BLOCK 2.   SELECTION­SCREEN: BEGIN OF BLOCK 3 WITH FRAME.   SELECTION­SCREEN: SKIP.   PARAMETERS: RESTORE AS CHECKBOX.   SELECTION­SCREEN: SKIP.   PARAMETERS: RESTPAT(128) TYPE C DEFAULT 'C:\DATOS\'.   SELECTION­SCREEN: END OF BLOCK 3.   SELECTION­SCREEN: END OF BLOCK 1.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       AT SELECTION­SCREEN                                           *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   AT SELECTION­SCREEN.     IF PROGRAMA IS INITIAL.       PROGRAMA = SKELETON.     ENDIF.     IF LANZAR EQ MARCA.       PROGRAMA = SKELETON.     ENDIF.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"  

40 / 51

Ejemplos Abap

Jordi Calopa Bosch

*       START­OF­SELECTION                                            *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   START­OF­SELECTION.   * *** EL SIGUIENTE IF NO DEBE SER ELIMINADO JAMAS ***     IF PROGRAMA EQ 'SAPMSYST'.        MESSAGE ID 38 TYPE 'I' NUMBER 16               WITH 'El programa Informado NO es correcto'.       STOP.     ENDIF.   * ***     IF EDITAR EQ MARCA.       PERFORM RUTINA_EDITAR.     ELSEIF LANZAR EQ MARCA.       PERFORM RUTINA_LANZAR.     ELSE.       PERFORM RUTINA_VISUALIZAR.     ENDIF.   END­OF­SELECTION.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM RUTINA_VISUALIZAR                                        *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM RUTINA_VISUALIZAR.     IF RESTORE = MARCA.       PERFORM RESTAURAR_DESDE_PC.     ELSE.       READ REPORT PROGRAMA INTO TBLPGM.      RETCODE = SY­SUBRC.     ENDIF.     IF RETCODE EQ 0.      EDITOR­CALL FOR TBLPGM DISPLAY­MODE.     ENDIF.  ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM RUTINA_EDITAR                                            *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM RUTINA_EDITAR.   PERFORM RUTINA_AVISO1.     IF RESPUESTA EQ '1'.       IF RESTORE EQ MARCA.         PERFORM RESTAURAR_DESDE_PC.       ELSE.         READ REPORT PROGRAMA INTO TBLPGM.         RETCODE = SY­SUBRC.       ENDIF.       IF RETCODE EQ 0.         EDITOR­CALL FOR TBLPGM.  

41 / 51

Ejemplos Abap

Jordi Calopa Bosch

    ENDIF.       PERFORM COMPROBAR_SINTAXIS.       IF RETCODE EQ 0.         INSERT REPORT PROGRAMA FROM TBLPGM.       ELSE.         MESSAGE ID 38 TYPE 'I' NUMBER 016            WITH 'EL PROGRAMA TIENE ERRORES DE SINTAXIS'.         INSERT REPORT PROGRAMA FROM TBLPGM.       ENDIF.     ENDIF.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM RUTINA_LANZAR                                            *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM RUTINA_LANZAR.     IF RESTORE EQ MARCA.       PERFORM RESTAURAR_DESDE_PC.       INSERT REPORT PROGRAMA FROM TBLPGM.       SUBMIT (PROGRAMA) AND RETURN VIA SELECTION­SCREEN.     ELSE.       SUBMIT (PROGRAMA) AND RETURN VIA SELECTION­SCREEN.     ENDIF.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM RUTINA_AVISO1                                            *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM RUTINA_AVISO1.  CALL FUNCTION 'POPUP_FOR_INTERACTION'         EXPORTING"               HEADLINE       = '*** ATENCION ***'               TEXT1          = 'Este es un Editor muy especial y su uso '              TEXT2          = 'conlleva un elevado riesgo. Si no está  '               TEXT3          = 'Ud. muy seguro de lo que desea modificar'               TEXT4          = 'es mejor pulse el botón de CANCELAR.    '               TEXT5          = '                                        '              TEXT6          = '                                        '               TICON          = 'W'               BUTTON_1       = 'Continuar'              BUTTON_2       = 'CANCELAR'             BUTTON_3       = ' '          IMPORTING             BUTTON_PRESSED = RESPUESTA        EXCEPTIONS             OTHERS = 1.   ENDFORM.  *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM RESTAURAR_DESDE_PC                                       *"  

42 / 51

Ejemplos Abap

Jordi Calopa Bosch

*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM RESTAURAR_DESDE_PC.     CALL FUNCTION 'WS_UPLOAD'          EXPORTING               filename = RESTPAT               FILETYPE            = 'ASC'          TABLES               DATA_TAB = TBLPGM          EXCEPTIONS               CONVERSION_ERROR = 1              FILE_OPEN_ERROR = 2               FILE_READ_ERROR = 3               INVALID_TABLE_WIDTH = 4               INVALID_TYPE = 5               NO_BATCH = 6               UNKNOWN_ERROR = 7               OTHERS = 8.     RETCODE = SY­SUBRC.   ENDFORM.   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   *       FORM COMPROBAR_SINTAXIS                                       *"   *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*"   FORM COMPROBAR_SINTAXIS.   CLEAR: RETCODE.  . . .  ENDFORM.

* ******************************************************************** *  Autor ........................... Jordi Calopa Bosch (JCB)        * *  Ultima actualización ............ 16.02.2001                      * *  Entorno de desarrollo ........... SAP/R3 (31I) bajo Unix          * *  Lenguaje de programación ........ ABAP/4                          * *                                                                    * *  Descripción: Generados de skeletons – Plantillas de programas     * *                                                                    * * ****************************************************************** * program zxxxxxxx         LINE­SIZE 120         NO STANDARD PAGE HEADING. include zxxxxxxx. * *** Declaración de tablas y Vistas de base de Datos            *** * TABLES: DD02L, DD03L, USR03, TRDIR. * *** Declaración de variables Globales del Programa             *** * DATA: RESP(01)           TYPE C,       NAMETAB(10)        TYPE C,

43 / 51

Ejemplos Abap

Jordi Calopa Bosch

      FOUNFLD(01)        TYPE C VALUE 'F',       FIELD_CLASIF(30)   TYPE C,       SKT                LIKE SY­CPROG  VALUE 'Z'. DATA: BEGIN OF T1 OCCURS 1,         TABNAME   LIKE DD03L­TABNAME  ,         FIELDNAME LIKE DD03L­FIELDNAME,       END OF T1. DATA: BEGIN OF T2 OCCURS 1,          R(255) TYPE C, END OF T2. *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       START­OF­SELECTION                                            * *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* START­OF­SELECTION.   skt+01(08) = sy­uname.   skt+09(01) = '_'.   PERFORM GENERADOR_PROGRAMAS. END­OF­SELECTION.   IF RETCODE EQ 0.     FORMAT INTENSIFIED ON.     FORMAT COLOR COL_HEADING.     ULINE.     WRITE: /01 SY­VLINE,            AT SY­LINSZ SY­VLINE.     WRITE: /01 SY­VLINE,                'Generado el skelecton correctamente. Nombre',                SKT COLOR COL_NORMAL,            AT SY­LINSZ SY­VLINE.     WRITE: /01 SY­VLINE,            AT SY­LINSZ SY­VLINE.     ULINE.   ELSE.     FORMAT INTENSIFIED ON.     FORMAT COLOR COL_NEGATIVE.     ULINE.     WRITE: /01 SY­VLINE,                'NO SE HA GENERADO NINGUN SKELETON',            AT SY­LINSZ SY­VLINE.     ULINE.   ENDIF. *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       FORM GENERADOR_PROGRAMAS                                      * *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM GENERADOR_PROGRAMAS.   DATA: BEGIN OF TM OCCURS 9,            C1(01),            C2(80),         END OF TM.

44 / 51

Ejemplos Abap

Jordi Calopa Bosch

  TM­C1 = ' '.   TM­C2 = ' Skeleton de un Programa Batch        '. APPEND TM.   TM­C2 = ' Skeleton de una Lista Interactiva    '. APPEND TM.   TM­C2 = ' Skeleton para Listar una Tabla de BD '. APPEND TM.   TM­C2 = ' Skeleton Programa Nuevo              '. APPEND TM.   CALL FUNCTION 'K_POPUP_TO_DECIDE'     EXPORTING       PAR_TEXT1        = '                     '       PAR_TITLE        = 'GENERADOR DE SKELETONS'     IMPORTING       PAR_REPLY        = RESP     TABLES       TAB_LINES        = TM     EXCEPTIONS       NOT_ENOUGH_LINES = 1       TOO_MANY_LINES   = 2.   RETCODE = SY­SUBRC.   IF RESP = 'A'.     RETCODE = 4.     EXIT.   ENDIF.   IF RETCODE EQ 0.     IF RESP EQ '1'.       skt+10(05) = 'BATCH'.       PERFORM RPG_SKELETON_BATCH.     ELSEIF RESP EQ '2'.       skt+10(05) = 'LISTA'.       PERFORM RPG_SKELETON_LISTA.     ELSEIF RESP EQ '3'.       skt+10(05) = 'TABLA'.       PERFORM RPG_TABLAS.     ELSEIF RESP EQ '4'.       skt+10(05) = 'NUEVO'.       PERFORM RPG_NEWPGM.     ELSE.       RETCODE = 4.     ENDIF.   ENDIF. ENDFORM.                    "GENERADOR_PROGRAMAS *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       FORM RPG_SKELETON_BATCH                                       * *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM RPG_SKELETON_BATCH.   PERFORM CABECERA_REPORT.   PERFORM R_BLANCO.

45 / 51

Ejemplos Abap

Jordi Calopa Bosch

  T2­R = '* Declaración de Tablas y Vistas de BD    '.      APPEND T2.   PERFORM R_BLANCO.   T2­R = 'tables: t001.                             '.      APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento ANTES DE LA PANTALLA DE SELECCION'.      APPEND T2.   PERFORM R_BLANCO.   T2­R = 'initialization.'.                                 APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento DESPUES DE LA PANTALLA DE SELECCION'.    APPEND T2.   PERFORM R_BLANCO.   T2­R = 'at selection­screen.'.                            APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL PRINCIPIO DEL PROGRAMA'.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'start­of­selection.'.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '   call function ''Y_UPD_T9S00'' '.               APPEND T2.   T2­R = '      exceptions                 '.               APPEND T2.   T2­R = '          others = 1.            '.               APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '   write ''SKELETON BATCH''.'.                    APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL FINAL DEL PROGRAMA    '.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'end­of­selection.'.                               APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL PRINCIPIO DE PAGINA   '.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'top­of­page.'.                                    APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL FINAL DE PAGINA       '.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'end­of­page.'.                                    APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM INSERTAR_PGM. ENDFORM.                    "RPG_SKELETON_BATCH *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       FORM RPG_SKELETON_LISTA                                       * *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM RPG_SKELETON_LISTA.

46 / 51

Ejemplos Abap

Jordi Calopa Bosch

  PERFORM CABECERA_REPORT.   PERFORM R_BLANCO.   T2­R = '* Declaración de Tablas y Vistas de BD    '.      APPEND T2.   PERFORM R_BLANCO.   T2­R = 'tables: t001.                             '.      APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento ANTES DE LA PANTALLA DE SELECCION'.      APPEND T2.   PERFORM R_BLANCO.   T2­R = 'initialization.'.                                 APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento DESPUES DE LA PANTALLA DE SELECCION'.    APPEND T2.   PERFORM R_BLANCO.   T2­R = 'at selection­screen.'.                            APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL PRINCIPIO DEL PROGRAMA'.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'start­of­selection.'.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '   call function ''Y_UPD_T9S00'' '.               APPEND T2.   T2­R = '      exceptions                 '.               APPEND T2.   T2­R = '          others = 1.            '.               APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '   write ''Haga doble click sobre esta línea''.'. APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL FINAL DEL PROGRAMA    '.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'end­of­selection.'.                               APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL PRINCIPIO DE LA PRIMERA PAGINA   '.   APPEND T2.   PERFORM R_BLANCO.   T2­R = 'top­of­page.'.                                    APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL PRINCIPIO DE LAS PAGINAS SIGUIENTES'. APPEND T2.   PERFORM R_BLANCO.   T2­R = 'top­of­page during line­selection.'.              APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL FINAL DE PAGINA       '.              APPEND T2.   PERFORM R_BLANCO.   T2­R = 'end­of­page.'.                                    APPEND T2.   T2­R = '                   '.                             APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM R_BLANCO.   T2­R = '* Evento AL SELECCIONAR UNA LINEA '.              APPEND T2.   PERFORM R_BLANCO.

47 / 51

Ejemplos Abap

Jordi Calopa Bosch

  T2­R = 'at line­selection.'.                              APPEND T2.   T2­R = '   if sy­curow eq 1. '.                           APPEND T2.   T2­R = '   write ''Esto es una LISTA INTERACTIVA    ''.'. APPEND T2.   T2­R = '   write /''Haga doble click sobre esta línea''.'. APPEND T2.   T2­R = '   sy­lsind = 0.                               '. APPEND T2.   T2­R = '   else.                                       '. APPEND T2.   T2­R = '   write ''Haga doble click sobre esta línea''.'. APPEND T2.   T2­R = '   endif. '.                                      APPEND T2.   T2­R = '                   '.                             APPEND T2.   PERFORM INSERTAR_PGM. ENDFORM.                    "RPG_SKELETON_LISTA *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       FORM RPG_TABLAS                                               * *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM RPG_TABLAS.   IF NAMETAB IS INITIAL.     CALL FUNCTION 'POPUP_TO_GET_VALUE'       EXPORTING         FIELDNAME           = 'TABNAME'         TABNAME             = 'DD02L'         TITEL               = 'Nombre de la'         VALUEIN             = NAMETAB       IMPORTING         VALUEOUT            = NAMETAB       EXCEPTIONS         FIELDNAME_NOT_FOUND = 1         OTHERS              = 2.   ENDIF.   TRANSLATE NAMETAB TO UPPER CASE.   SELECT SINGLE * FROM DD02L WHERE TABNAME EQ NAMETAB AND                                    AS4LOCAL EQ 'A'    AND                                    AS4VERS EQ '0000'.   IF SY­SUBRC NE 0.     FORMAT INTENSIFIED OFF.     WRITE: /01 'Tabla NO encontrada', NAMETAB COLOR 6.     RETCODE = 4.     STOP.   ENDIF.   REFRESH T1.   SELECT * FROM DD03L WHERE TABNAME EQ DD02L­TABNAME AND                             AS4LOCAL EQ DD02L­AS4LOCAL.     IF DD03L­FIELDNAME NE '.INCLUDE'.       MOVE­CORRESPONDING DD03L TO T1.       COLLECT T1.       MOVE 'T' TO FOUNFLD.     ENDIF.   ENDSELECT.   MOVE T1­FIELDNAME TO FIELD_CLASIF.

48 / 51

Ejemplos Abap

Jordi Calopa Bosch

  IF FOUNFLD EQ 'F'.     FORMAT INTENSIFIED OFF.     WRITE: /01 'Campos NO encontrados', NAMETAB COLOR 6.     RETCODE = 4.     STOP.   ENDIF.   PERFORM CABECERA_REPORT.   t2­r+00 = 'TABLES:'.   t2­r+10 = nametab.   T2­R+25 = '.'.                                            APPEND T2.   perform r_blanco.   T2­R = 'data: lincab1(40)    TYPE C.'.                    APPEND T2.   perform r_blanco.   T2­R = 'DATA: BEGIN OF TABLA01 OCCURS 1. '.               APPEND T2.   t2­r = '      include structure '.   t2­r+25 = nametab.   T2­R+50 = '.'.                                            APPEND T2.   T2­R = 'DATA: END OF TABLA01.'.                           APPEND T2.   perform r_blanco.   T2­R = 'start­of­selection.'.                             APPEND T2.   perform r_blanco.   T2­R = 'move ''Listado tabla            '' to lincab1.'.   T2­R+20 = NAMETAB(10).   T2­R+33 = ' '' to lincab1.                            '.  APPEND T2.   perform r_blanco.   t2­r = 'SELECT * FROM'.   t2­r+15 = nametab.   T2­R+30 = '.'.                                            APPEND T2.   t2­r = '   MOVE­CORRESPONDING '.   t2­r+25 = nametab.   T2­R+40 = ' TO TABLA01.'.                                 APPEND T2.   T2­R = '   APPEND TABLA01.'.                              APPEND T2.   T2­R = 'ENDSELECT.'.                                      APPEND T2.   perform r_blanco.   T2­R = 'END­OF­SELECTION.'.                               APPEND T2.   perform r_blanco.   T2­R = '*  format intensified off.'.                      APPEND T2.   T2­R = '*  format color col_normal.'.                     APPEND T2.   perform r_blanco.   T2­R = '   LOOP AT TABLA01.'.                             APPEND T2.   T2­R = '      write: /01            '.                    APPEND T2.   LOOP AT T1.     t2­r = '        TABLA01­'.     move t1­fieldname to t2­r+16.     MOVE ','          TO T2­R+47.                          APPEND T2.   ENDLOOP.   T2­R = '     space   . '.                                 APPEND T2.   T2­R = '   ENDLOOP.     '.                                APPEND T2.   T2­R = '   uline.       '.                                APPEND T2.   perform r_blanco.   T2­R = 'TOP­OF­PAGE.    '.                                APPEND T2.   T2­R = '   WRITE: /03 LINCAB1.'.                          APPEND T2.   T2­R = '   ULINE.       '.                                APPEND T2.   PERFORM INSERTAR_PGM.

49 / 51

Ejemplos Abap

Jordi Calopa Bosch

ENDFORM.                    "RPG_TABLAS *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       FORM RPG_NEWPGM                                               * *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM RPG_NEWPGM.   PERFORM CABECERA_REPORT.   PERFORM INSERTAR_PGM. ENDFORM.                    "RPG_NEWPGM

*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *&      Form  CABECERA_REPORT *&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       text *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM CABECERA_REPORT.   DATA: NOMBRE(40).   SELECT SINGLE * FROM USR03          WHERE BNAME EQ SY­UNAME.   IF SY­SUBRC EQ 0.     CONCATENATE USR03­NAME1 USR03­NAME2 '(' SY­UNAME ')'                 INTO NOMBRE SEPARATED BY ' '.   ELSE.     NOMBRE = SY­UNAME.   ENDIF.   REFRESH T2.   T2­R+00 = '* ***************************************************** *'.   APPEND T2.   T2­R+00 = '* Autor:    '.   T2­R+14 = NOMBRE.                             APPEND T2.   T2­R+00 = '* Fecha:    '.   T2­R+14 = sy­datlo.                           APPEND T2.   T2­R+00 = '* Hora:     '.   T2­R+14 = sy­timlo.                           APPEND T2.   T2­R+00 = '* Host:     '.   T2­R+14 = SY­HOST.                            APPEND T2.   T2­R+00 = '* Sistema:    '.   T2­R+14 = SY­OPSYS.                           APPEND T2.   T2­R+00 = '* ***************************************************** *'.   APPEND T2.   T2­R+00 = 'Program'.   T2­R+09 = SKT.                            APPEND T2.   T2­R = '         line­size 255'.                APPEND T2.   T2­R = '         no standard page heading.'.   APPEND T2.   T2­R = '                                 '.   APPEND T2. ENDFORM.                    "CABECERA_REPORT *&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *&      Form  r_blanco

50 / 51

Ejemplos Abap

Jordi Calopa Bosch

*&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       text *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* form r_blanco.   T2­R = '*'.   APPEND T2. ENDFORM.                    "r_blanco *&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *&      Form  INSERTAR_PGM *&­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* *       text *­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­* FORM INSERTAR_PGM.   insert report skt from t2. ENDFORM.                    "INSERTAR_PGM * ******************************************************************** * * ***                     FIN DE PROGRAMA                          *** * * ******************************************************************** *

51 / 51

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.