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 SELECTOPTIONS 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 SELECTIONSCREEN Después de la entrada de datos de la pantalla de selección STARTOFSELECTION Al principio del programa (parte operativa) GET Después de leer un registro vía BD lógica ENDOFSELECTION Al final de la selección / programa TOPOFPAGE Al principio de una nueva página ENDOFPAGE Después de la salida de la última línea de la página AT LINESELECTION Después de seleccionar una línea AT Pfn Después de pulsar una tecla de función AT USERCOMMAND 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 FIELDGROUPS 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. startofselection. 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 lineselection. 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 linesize 120 no standard page heading. data: begin of t1 occurs 1. include structure uinfo. data: end of t1. data: w_conects type i. startofselection. 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 syvline, t1mandt intensified on,
26 / 51
Ejemplos Abap
Jordi Calopa Bosch
t1bname, t1tcode intensified on, t1zeit, t1extmodi intensified on, t1hostadr, t1term intensified on, t1tid, at sylinsz syvline. endloop. uline. format color col_positive. write: /01 syvline, 'usuarios conectados al sistema', w_conects color col_normal, at sylinsz syvline. 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 linesize 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 trdirname, clas like trdirclas, cnam like trdircnam, cdat like trdircdat, unam like trdirunam, udat like trdirudat,
27 / 51
Ejemplos Abap
Jordi Calopa Bosch
secu like trdirsecu, appl like trdirappl, 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 *** * SELECTIONSCREEN: BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT001. SELECTIONSCREEN: SKIP. PARAMETERS: DIRPC(25) TYPE C OBLIGATORY. SELECTIONSCREEN: SKIP. SELECTOPTIONS: WMODIF FOR sydatlo NOEXTENSION. SELECTIONSCREEN: SKIP. SELECTIONSCREEN: END OF BLOCK BL1. INITIALIZATION. DIRPC = 'c:\temp\'. WMODIFSIGN = 'I'. WMODIFOPTION = 'EQ'. WMODIFLOW = sydatlo 1. WMODIFHIGH = sydatlo. APPEND WMODIF. STARTOFSELECTION. 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 syuname OR UNAM EQ syuname ) 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 = sytabix. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = sytabix 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 t2NAME '.txt' INTO WDIR. ELSE. CONCATENATE DIRPC '\' t2NAME '.txt' INTO WDIR. ENDIF. read report t2name 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 SYSUBRC. WHEN '0'. WRITE: /01 SYVLINE, 'Volcado del fichero'(002), WDIR COLOR COL_POSITIVE, AT SYLINSZ SYVLINE. WHEN OTHERS. WRITE: /01 SYVLINE, 'ERROR AL VOLCAR ...'(003) COLOR COL_NEGATIVE, WDIR COLOR COL_NEGATIVE, AT SYLINSZ SYVLINE. ENDCASE.
29 / 51
Ejemplos Abap
Jordi Calopa Bosch
ENDLOOP. ULINE. ENDOFSELECTION. * *** Cabeceras del listado *** * topofpage. WRITE: /01 ' Backup Automático de Programas del User:', SYUNAME.
* ************************************************************** * 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 LINESIZE 250 NO STANDARD PAGE HEADING. CONSTANTS: COMANDO(4) TYPE C VALUE 'XXXX'. **" * STARTOFSELECTION *" **" STARTOFSELECTION. PERFORM PROCESO_PRINCIPAL. SET USERCOMMAND COMANDO. **" * FORM PROCESO_PRINCIPAL *" **" FORM PROCESO_PRINCIPAL. Skip 10. WRITE: /30 SYULINE(23). WRITE: 50 SYULINE(21). WRITE: /30 SYVLINE, 'Host :', SYHOST, SPACE, SYVLINE. WRITE: 50 SYVLINE, 'Fecha:', SYDATUM INTENSIFIED OFF, SYVLINE. WRITE: /30 SYVLINE, 'Entorno:', SYSYSID, SPACE, SYVLINE. WRITE: 50 SYULINE(21). WRITE: /30 SYVLINE, 'S.O. :', SYOPSYS, SYVLINE. WRITE: 50 SYVLINE, 'Hora: ', SYUZEIT INTENSIFIED OFF, ' ', SYVLINE. WRITE: /30 SYULINE(23). WRITE: 50 SYULINE(21).
30 / 51
Ejemplos Abap
Jordi Calopa Bosch
SKIP." ENDFORM. **" * AT USERCOMMAND *" **" AT USERCOMMAND. SY LSIND = 0. IF SYUCOMM 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 USERCOMMAND 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 linesize 120 NO STANDARD PAGE HEADING. INCLUDE . INCLUDE YSU0000. TABLES: TRDIR, DD02L, DD03L, USR03. DATA: NOMPROG LIKE SYREPID, NOMPNEW LIKE SYREPID, 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 SYSUBRC. DATA: BEGIN OF T0 OCCURS 5000, C(72) TYPE C, END OF T0. DATA: BEGIN OF T1 OCCURS 1, TABNAME LIKE DD03LTABNAME , FIELDNAME LIKE DD03LFIELDNAME, 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. **" * STARTOFSELECTION *" **" STARTOFSELECTION." SYTITLE = 'Program Manager'. PERFORM PEDIR_NOMBRE_PGM. IF RETCODE NE 0. EXIT. ENDIF. IF NOMPROG EQ SYREPID. EXIT. ENDIF. READ REPORT NOMPROG INTO T0. IF SYSUBRC NE 0. EXIT. ENDIF. DESCRIBE TABLE T0 LINES NUMLINES. PERFORM TRATAMIENTO_GRAL. IF RETCODE NE 0. EXIT. ENDIF. ENDOFSELECTION. **" * 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 = SYSUBRC. 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 SYVLINE, 120 syvline. WRITE: /01 SYVLINE, NOMPROG COLOR COL_NORMAL, T3ENTRY(70), 120 syvline. WRITE: /01 SYVLINE, 120 SYVLINE, /01 SYVLINE, 'Grupo autorizaciones..', TRDIRSECU COLOR COL_NORMAL, 40 'Autor ..', TRDIRCNAM COLOR COL_NORMAL, 80 'Fecha generación ', TRDIRCDAT COLOR COL_NORMAL, 120 SYVLINE, /01 SYVLINE, 'Versión ', TRDIRVERN COLOR COL_NORMAL, 40 'Modificador ..', TRDIRUNAM COLOR COL_NORMAL
33 / 51
Ejemplos Abap
Jordi Calopa Bosch
INTENSIFIED OFF, 80 'Fecha modificación .', TRDIRUDAT COLOR COL_NORMAL, 120 SYVLINE, /01 SYVLINE, 'Protección fuente .', TRDIRSQLX COLOR COL_NORMAL, 40 'Protección edición ', TRDIREDTX COLOR COL_NORMAL, 80 'Mayusculas/minusculas.', TRDIRVARCL COLOR COL_NORMAL, 120 SYVLINE, /01 SYVLINE, 'Generado automático ', TRDIROCCURS COLOR COL_NORMAL, 40 'Tipo de programa ', TRDIRSUBC COLOR COL_NORMAL, 80 'Base de Datos Lógica..', TRDIRDBNA COLOR COL_NORMAL, TRDIRDBAPL COLOR COL_NORMAL, 120 SYVLINE, /01 SYVLINE, 'Nivel ..', TRDIRLEVL COLOR COL_NORMAL, 40 'Status .', TRDIRRSTAT COLOR COL_NORMAL, 80 'Mandante ..', TRDIRRMAND COLOR COL_NORMAL, 120 SYVLINE, /01 SYVLINE, 'Idioma maestro ..', TRDIRRLOAD COLOR COL_NORMAL, 40 'Coma fija .', TRDIRFIXPT COLOR COL_NORMAL, 80 'Solo con variante ..', TRDIRSSET COLOR COL_NORMAL, 120 SYVLINE. WRITE: /01 SYVLINE, 'Cantidad Líneas ', NUMLINES COLOR COL_NORMAL, 120 syvline. WRITE: /01 SYVLINE, 120 syvline. WRITE: /01 SYVLINE, 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 SYVLINE. WRITE: /01 SYVLINE, 120 SYVLINE. ULINE. ENDFORM. **" * AT LINESELECTION *" **" AT LINESELECTION. SYLSIND = 0. IF SYCUROW EQ 13. IF SYCUCOL EQ 11 OR SYCUCOL EQ 12.
34 / 51
Ejemplos Abap
Jordi Calopa Bosch
PERFORM DISPLAY_PGM. ELSEIF SYCUCOL EQ 21 OR SYCUCOL EQ 22. PERFORM RENAME_PGM. PERFORM TRATAMIENTO_GRAL. ELSEIF SYCUCOL EQ 31 OR SYCUCOL EQ 32. PERFORM COPY_PGM. PERFORM TRATAMIENTO_GRAL. ELSEIF SYCUCOL EQ 41 OR SYCUCOL EQ 42. PERFORM DELETE_PGM. IF RETCODE = 0. LEAVE TO SCREEN 0. ENDIF. ELSEIF SYCUCOL EQ 51 OR SYCUCOL EQ 52. PERFORM LOCKED_PGM. PERFORM TRATAMIENTO_GRAL. ELSEIF SYCUCOL EQ 61 OR SYCUCOL EQ 62. PERFORM UNLOCKED_PGM. PERFORM TRATAMIENTO_GRAL. ELSEIF SYCUCOL EQ 71 OR SYCUCOL EQ 72. PERFORM GENERATE_PGM. ELSEIF SYCUCOL EQ 81 OR SYCUCOL EQ 82. PERFORM PRINT_PGM. ELSEIF SYCUCOL EQ 91 OR SYCUCOL EQ 92. PERFORM VOLCADO_PGM. ELSEIF SYCUCOL EQ 101 OR SYCUCOL EQ 102. SUBMIT (NOMPROG) AND RETURN VIA SELECTIONSCREEN. 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 SYSUBRC 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 SYSUBRC 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 = SYSUBRC. ENDFORM. **" * FORM LOCKED_PGM *" **" FORM LOCKED_PGM. SELECT SINGLE * FROM TRDIR WHERE NAME EQ NOMPROG.
36 / 51
Ejemplos Abap
Jordi Calopa Bosch
IF SYSUBRC EQ 0. TRDIREDTX = 'X'. UPDATE TRDIR. COMMIT WORK. ENDIF. ENDFORM. **" * FORM UNLOCKED_PGM *" **" FORM UNLOCKED_PGM. SELECT SINGLE * FROM TRDIR WHERE NAME EQ NOMPROG. IF SYSUBRC EQ 0. TRDIREDTX = 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 SYSUBRC 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 SYUNAME. IF SYSUBRC EQ 0. CONCATENATE USR03NAME1 USR03NAME2 '(' SYUNAME ')' INTO NOMBRE SEPARATED BY ' '. ELSE. NOMBRE = SYUNAME. ENDIF. REFRESH T2. PERFORM R_BLANCO. T2R+00 = '* Autor: '. T2R+14 = NOMBRE. APPEND T2. T2R+00 = '* Fecha: '. T2R+14 = SYDATUM. APPEND T2. T2R+00 = '* Hora: '. T2R+14 = SYUZEIT. APPEND T2. T2R+00 = '* Host: '. T2R+14 = SYHOST. APPEND T2. T2R+00 = '* Sistema: '. T2R+14 = SYOPSYS. APPEND T2. perform r_blanco. t2r+00 = 'REPORT'. t2r+08 = nomprog. append t2. T2R = ' linesize 94'. APPEND T2. T2R = ' no standard page heading.'. APPEND T2. T2R = ' '. APPEND T2. ENDFORM.
38 / 51
Ejemplos Abap
Jordi Calopa Bosch
**" * FORM R_BLANCO *" **" form r_blanco. T2R = '* *'. 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 SYSUBRC EQ 0. SELECT SINGLE * FROM TRDIR WHERE NAME EQ NOMPROG. IF SYSUBRC EQ 0. TRDIRRLOAD = 'S'. TRDIREDTX = 'X'. TRDIRSECU = '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 workstation (PC). * * * * ****************************************************************** * REPORT Yxxxxxxx. INCLUDE YSU0000. * *** Declaración de Variables Globales *** * DATA: RESPUESTA(01) TYPE C, RETCODE LIKE SYSUBRC, 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 *** * SELECTIONSCREEN: BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT001. SELECTIONSCREEN: SKIP. PARAMETERS: PROGRAMA LIKE SYREPID. SELECTIONSCREEN: SKIP. SELECTIONSCREEN: BEGIN OF BLOCK 2 WITH FRAME. PARAMETERS: VISUAL RADIOBUTTON GROUP G1, EDITAR RADIOBUTTON GROUP G1, LANZAR RADIOBUTTON GROUP G1. SELECTIONSCREEN: END OF BLOCK 2. SELECTIONSCREEN: BEGIN OF BLOCK 3 WITH FRAME. SELECTIONSCREEN: SKIP. PARAMETERS: RESTORE AS CHECKBOX. SELECTIONSCREEN: SKIP. PARAMETERS: RESTPAT(128) TYPE C DEFAULT 'C:\DATOS\'. SELECTIONSCREEN: END OF BLOCK 3. SELECTIONSCREEN: END OF BLOCK 1. **" * AT SELECTIONSCREEN *" **" AT SELECTIONSCREEN. IF PROGRAMA IS INITIAL. PROGRAMA = SKELETON. ENDIF. IF LANZAR EQ MARCA. PROGRAMA = SKELETON. ENDIF. **"
40 / 51
Ejemplos Abap
Jordi Calopa Bosch
* STARTOFSELECTION *" **" STARTOFSELECTION. * *** 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. ENDOFSELECTION. **" * FORM RUTINA_VISUALIZAR *" **" FORM RUTINA_VISUALIZAR. IF RESTORE = MARCA. PERFORM RESTAURAR_DESDE_PC. ELSE. READ REPORT PROGRAMA INTO TBLPGM. RETCODE = SYSUBRC. ENDIF. IF RETCODE EQ 0. EDITORCALL FOR TBLPGM DISPLAYMODE. 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 = SYSUBRC. ENDIF. IF RETCODE EQ 0. EDITORCALL 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 SELECTIONSCREEN. ELSE. SUBMIT (PROGRAMA) AND RETURN VIA SELECTIONSCREEN. 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 = SYSUBRC. 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 LINESIZE 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 SYCPROG VALUE 'Z'. DATA: BEGIN OF T1 OCCURS 1, TABNAME LIKE DD03LTABNAME , FIELDNAME LIKE DD03LFIELDNAME, END OF T1. DATA: BEGIN OF T2 OCCURS 1, R(255) TYPE C, END OF T2. ** * STARTOFSELECTION * ** STARTOFSELECTION. skt+01(08) = syuname. skt+09(01) = '_'. PERFORM GENERADOR_PROGRAMAS. ENDOFSELECTION. IF RETCODE EQ 0. FORMAT INTENSIFIED ON. FORMAT COLOR COL_HEADING. ULINE. WRITE: /01 SYVLINE, AT SYLINSZ SYVLINE. WRITE: /01 SYVLINE, 'Generado el skelecton correctamente. Nombre', SKT COLOR COL_NORMAL, AT SYLINSZ SYVLINE. WRITE: /01 SYVLINE, AT SYLINSZ SYVLINE. ULINE. ELSE. FORMAT INTENSIFIED ON. FORMAT COLOR COL_NEGATIVE. ULINE. WRITE: /01 SYVLINE, 'NO SE HA GENERADO NINGUN SKELETON', AT SYLINSZ SYVLINE. 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
TMC1 = ' '. TMC2 = ' Skeleton de un Programa Batch '. APPEND TM. TMC2 = ' Skeleton de una Lista Interactiva '. APPEND TM. TMC2 = ' Skeleton para Listar una Tabla de BD '. APPEND TM. TMC2 = ' 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 = SYSUBRC. 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
T2R = '* Declaración de Tablas y Vistas de BD '. APPEND T2. PERFORM R_BLANCO. T2R = 'tables: t001. '. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento ANTES DE LA PANTALLA DE SELECCION'. APPEND T2. PERFORM R_BLANCO. T2R = 'initialization.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento DESPUES DE LA PANTALLA DE SELECCION'. APPEND T2. PERFORM R_BLANCO. T2R = 'at selectionscreen.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL PRINCIPIO DEL PROGRAMA'. APPEND T2. PERFORM R_BLANCO. T2R = 'startofselection.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' call function ''Y_UPD_T9S00'' '. APPEND T2. T2R = ' exceptions '. APPEND T2. T2R = ' others = 1. '. APPEND T2. T2R = ' '. APPEND T2. T2R = ' write ''SKELETON BATCH''.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL FINAL DEL PROGRAMA '. APPEND T2. PERFORM R_BLANCO. T2R = 'endofselection.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL PRINCIPIO DE PAGINA '. APPEND T2. PERFORM R_BLANCO. T2R = 'topofpage.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL FINAL DE PAGINA '. APPEND T2. PERFORM R_BLANCO. T2R = 'endofpage.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. 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. T2R = '* Declaración de Tablas y Vistas de BD '. APPEND T2. PERFORM R_BLANCO. T2R = 'tables: t001. '. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento ANTES DE LA PANTALLA DE SELECCION'. APPEND T2. PERFORM R_BLANCO. T2R = 'initialization.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento DESPUES DE LA PANTALLA DE SELECCION'. APPEND T2. PERFORM R_BLANCO. T2R = 'at selectionscreen.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL PRINCIPIO DEL PROGRAMA'. APPEND T2. PERFORM R_BLANCO. T2R = 'startofselection.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' call function ''Y_UPD_T9S00'' '. APPEND T2. T2R = ' exceptions '. APPEND T2. T2R = ' others = 1. '. APPEND T2. T2R = ' '. APPEND T2. T2R = ' write ''Haga doble click sobre esta línea''.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL FINAL DEL PROGRAMA '. APPEND T2. PERFORM R_BLANCO. T2R = 'endofselection.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL PRINCIPIO DE LA PRIMERA PAGINA '. APPEND T2. PERFORM R_BLANCO. T2R = 'topofpage.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL PRINCIPIO DE LAS PAGINAS SIGUIENTES'. APPEND T2. PERFORM R_BLANCO. T2R = 'topofpage during lineselection.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL FINAL DE PAGINA '. APPEND T2. PERFORM R_BLANCO. T2R = 'endofpage.'. APPEND T2. T2R = ' '. APPEND T2. T2R = ' '. APPEND T2. PERFORM R_BLANCO. T2R = '* Evento AL SELECCIONAR UNA LINEA '. APPEND T2. PERFORM R_BLANCO.
47 / 51
Ejemplos Abap
Jordi Calopa Bosch
T2R = 'at lineselection.'. APPEND T2. T2R = ' if sycurow eq 1. '. APPEND T2. T2R = ' write ''Esto es una LISTA INTERACTIVA ''.'. APPEND T2. T2R = ' write /''Haga doble click sobre esta línea''.'. APPEND T2. T2R = ' sylsind = 0. '. APPEND T2. T2R = ' else. '. APPEND T2. T2R = ' write ''Haga doble click sobre esta línea''.'. APPEND T2. T2R = ' endif. '. APPEND T2. T2R = ' '. 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 SYSUBRC 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 DD02LTABNAME AND AS4LOCAL EQ DD02LAS4LOCAL. IF DD03LFIELDNAME NE '.INCLUDE'. MOVECORRESPONDING DD03L TO T1. COLLECT T1. MOVE 'T' TO FOUNFLD. ENDIF. ENDSELECT. MOVE T1FIELDNAME 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. t2r+00 = 'TABLES:'. t2r+10 = nametab. T2R+25 = '.'. APPEND T2. perform r_blanco. T2R = 'data: lincab1(40) TYPE C.'. APPEND T2. perform r_blanco. T2R = 'DATA: BEGIN OF TABLA01 OCCURS 1. '. APPEND T2. t2r = ' include structure '. t2r+25 = nametab. T2R+50 = '.'. APPEND T2. T2R = 'DATA: END OF TABLA01.'. APPEND T2. perform r_blanco. T2R = 'startofselection.'. APPEND T2. perform r_blanco. T2R = 'move ''Listado tabla '' to lincab1.'. T2R+20 = NAMETAB(10). T2R+33 = ' '' to lincab1. '. APPEND T2. perform r_blanco. t2r = 'SELECT * FROM'. t2r+15 = nametab. T2R+30 = '.'. APPEND T2. t2r = ' MOVECORRESPONDING '. t2r+25 = nametab. T2R+40 = ' TO TABLA01.'. APPEND T2. T2R = ' APPEND TABLA01.'. APPEND T2. T2R = 'ENDSELECT.'. APPEND T2. perform r_blanco. T2R = 'ENDOFSELECTION.'. APPEND T2. perform r_blanco. T2R = '* format intensified off.'. APPEND T2. T2R = '* format color col_normal.'. APPEND T2. perform r_blanco. T2R = ' LOOP AT TABLA01.'. APPEND T2. T2R = ' write: /01 '. APPEND T2. LOOP AT T1. t2r = ' TABLA01'. move t1fieldname to t2r+16. MOVE ',' TO T2R+47. APPEND T2. ENDLOOP. T2R = ' space . '. APPEND T2. T2R = ' ENDLOOP. '. APPEND T2. T2R = ' uline. '. APPEND T2. perform r_blanco. T2R = 'TOPOFPAGE. '. APPEND T2. T2R = ' WRITE: /03 LINCAB1.'. APPEND T2. T2R = ' 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 SYUNAME. IF SYSUBRC EQ 0. CONCATENATE USR03NAME1 USR03NAME2 '(' SYUNAME ')' INTO NOMBRE SEPARATED BY ' '. ELSE. NOMBRE = SYUNAME. ENDIF. REFRESH T2. T2R+00 = '* ***************************************************** *'. APPEND T2. T2R+00 = '* Autor: '. T2R+14 = NOMBRE. APPEND T2. T2R+00 = '* Fecha: '. T2R+14 = sydatlo. APPEND T2. T2R+00 = '* Hora: '. T2R+14 = sytimlo. APPEND T2. T2R+00 = '* Host: '. T2R+14 = SYHOST. APPEND T2. T2R+00 = '* Sistema: '. T2R+14 = SYOPSYS. APPEND T2. T2R+00 = '* ***************************************************** *'. APPEND T2. T2R+00 = 'Program'. T2R+09 = SKT. APPEND T2. T2R = ' linesize 255'. APPEND T2. T2R = ' no standard page heading.'. APPEND T2. T2R = ' '. APPEND T2. ENDFORM. "CABECERA_REPORT *&* *& Form r_blanco
50 / 51
Ejemplos Abap
Jordi Calopa Bosch
*&* * text ** form r_blanco. T2R = '*'. 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