Variables de Sistema ABAP

SY-ABCDE - Constant: Alphabet (A,B,C,...)
SY-APPLI - SAP applications
SY-BATCH - Background active (X)
SY-BATZD - Background SUBMIT: Daily
SY-BATZM - Background SUBMIT: Monthly
SY-BATZO - Background SUBMIT: Once
SY-BATZS - Background SUBMIT: Immediately
SY-BATZW - Background SUBMIT: Weekly
SY-BINPT - Batch input active (X)
SY-BREP4 - Background SUBMIT: Root name of request report
SY-BSPLD - Background SUBMIT: List output to spool
SY-CALLD - CALL mode active (X)
SY-CALLR - Print: ID for print dialog function
SY-CCURS - Rate specification/result field (CURRENCY CONVERT)
SY-CCURT - Table rate from currency conversion
SY-CDATE - Date of rate from currency conversion
SY-COLNO - Current column during list creation
SY-CPAGE - Current page number
SY-CPROG - Runtime: Main program
SY-CTABL - Exchange rate table from currency conversion
SY-CTYPE - Exchange rate type 'M','B','G' from CURRENCY CONVERSION
SY-CUCOL - Cursor position (column)
SY-CUROW - Cursor position (line)
SY-DATAR - Flag: Data received
SY-DATLO - Local date for user
SY-DATUM - System: Date
SY-DATUT - Global date related to UTC (GMT)
SY-DAYST - Summertime active ? ('daylight saving time')
SY-DBCNT - Number of elements in edited dataset with DB operations
SY-DBNAM - Logical database for ABAP/4 program
SY-DBSYS - System: Database system
SY-DCSYS - System: Dialog system
SY-DSNAM - Runtime: Name of dataset for spool output
SY-DYNGR - Screen group of current screen
SY-DYNNR - Number of current screen
SY-FDAYW - Factory calendar weekday
SY-FDPOS - Location of a string
SY-FMKEY - Current function code menu
SY-HOST - Host
SY-INDEX - Number of loop passes
SY-LANGU - SAP logon language key
SY-LDBPG - Program: ABAP/4 database program for SY-DBNAM
SY-LILLI - Number of current list line
SY-LINCT - Number of list lines
SY-LINNO - Current line for list creation
SY-LINSZ - Line size of list
SY-LISEL - Interact.: Selected line
SY-LISTI - Number of current list line
SY-LOCDB - Local database exists
SY-LOCOP - Local database operation
SY-LOOPC - Number of LOOP lines at screen step loop
SY-LSIND - Number of secondary list
SY-LSTAT - Interact.: Status information for each list level

SY-MACDB - Program: Name of file for matchcode access
SY-MACOL - Number of columns from SET MARGIN
SY-MANDT - Client number from SAP logon
SY-MARKY - Current line character for MARK
SY-MAROW - No. of lines from SET MARGIN statement
SY-MODNO - Number of alternative modi
SY-MSGID - Message ID
SY-MSGLI - Interact.: Message line (line 23)
SY-MSGNO - Message number
SY-MSGTY - Message type (E,I.W,...)
SY-MSGV1 - Message variable
SY-MSGV2 - Message variable
SY-MSGV3 - Message variable
SY-MSGV4 - Message variable
SY-OPSYS - System: Operating system
SY-PAART - Print: Format
SY-PAGCT - Page size of list from REPORT statement
SY-PAGNO - Runtime: Current page in list
SY-PDEST - Print: Output device
SY-PEXPI - Print: Spool retention period
SY-PFKEY - Runtime: Current F key status
SY-PLIST - Print: Name of spool request (list name)
SY-PRABT - Print: Department on cover sheet
SY-PRBIG - Print: Selection cover sheet
SY-PRCOP - Print: Number of copies
SY-PRDSN - Print: Name of spool dataset
SY-PREFX - ABAP/4 prefix for background jobs
SY-PRIMM - Print: Print immediately
SY-PRNEW - Print: New spool request (list)
SY-PRREC - Print: Recipient
SY-PRREL - Print: Delete after printing
SY-PRTXT - Print: Text for cover sheet
SY-REPID - Program: Name of ABAP/4 program
SY-RTITL - Print: Report title of program to be printed
SY-SAPRL - System: SAP Release
SY-SCOLS - Columns on screen
SY-SLSET - Name of selection set
SY-SPONO - Runtime: Spool number for list output
SY-SPONR - Runtime: Spool number from TRANSFER statement
SY-SROWS - Lines on screen
SY-STACO - Interact.: List displayed from column
SY-STARO - Interact.: Page displayed from line
SY-STEPL - Number of LOOP line at screen step
SY-SUBRC - Return value after specific ABAP/4 statements
SY-SUBTY - ABAP/4: Call type for SUBMIT
SY-SYSID - System: SAP System ID
SY-TABIX - Runtime: Current line of an internal table
SY-TCODE - Session: Current transaction code
SY-TFDSN - Runtime: Dataset for data extracts
SY-TFILL - Current number of entries in internal table
SY-TIMLO - Local time for user
SY-TIMUT - Global time related to UTC (GMT)
SY-TITLE - Title of ABAP/4 program
SY-TLENG - Line width of an internal table
SY-TMAXL - Maximum number of entries in internal table (?)
SY-TNAME - Name of internal table after an access (?)

Runtime: Text variable for ABAP/4 text elements SY-TVAR3 .Runtime: Text variable for ABAP/4 text elements SY-TVAR1 .T001: Company code currency after reading B segment SY-WILLI .Constant: Underline (---------.Cursor position in window (column) SY-WINDI .Session: SAP user from SAP logon SY-UZEIT .Extended command field SY-ZONLO .Runtime: Text variable for ABAP/4 text elements SY-TVAR4 .Number of current window line SY-WINCO .) SY-UNAME .Runtime: Text variable for ABAP/4 text elements SY-TZONE .Runtime: Text variable for ABAP/4 text elements SY-TVAR2 .Runtime: Text variable for ABAP/4 text elements SY-TVAR6 .: Command field function entry SY-ULINE .Interact.Index of current window line SY-WINRO .Runtime: Text variable for ABAP/4 text elements SY-TVAR8 .Cursor position in window (line) SY-WINSL .Timestamp (date and time) related to UTC (GMT) SY-TTABC .: Selected window line SY-WINX1 .Runtime: Text variable for ABAP/4 text elements SY-TVAR9 .Runtime: Text variable for ABAP/4 text elements SY-TVAR5 .Offset of internal table in roll area (?) SY-TVAR0 .Time difference from 'Greenwich Mean Time' (UTC) in seconds SY-UCOMM .Number of line last read in an internal table (?) SY-TTABI .Interact.System: Time SY-VLINE ..Window coordinate (column left) SY-WINX2 .Timestamp (date and time) for user SY-TSTUT .SY-TOCCU .Constant: Vertical bar SY-WAERS ..Standard page header indicator SY-XCODE .Window coordinate (line left) SY-WINY2 .Window coordinate (column right) SY-WINY1 .Runtime: Text variable for ABAP/4 text elements SY-TVAR7 .OCCURS parameter with internal tables SY-TPAGI .Time zone of user .Flag indicating roll-out of internal table to paging area (?) SY-TSTLO .Window coordinate (line right) SY-WTITL .

diciembre 10. como ventana de diálogo modal. Modificar y Visualizar). modificar y visualizar datos en una base de datos. El primer paso es crear un Module Pool en la SE38: .  Una Dynpro 9002 como ventana de diálogo modal. 2013 No comments Datos previos:  Base de datos ZBIBLIO_SOCIOS (Ver aquí) Objetivo:  Una Dynpro 9000 con tres botones (Crear. Esquema de las cuatro dynpros: Esquema de los dynpros. para Modificar o Visualizar un socio de la base de datos.  Una Dynpro 9003. para introducir el código de socio.  Una Dynpro 9001 para añadir datos a la base de datos. martes. Crear Dynpros para crear.

. Crear el elemento tipo OK de la pantalla 9000. Indicar el número de pantalla (se recomienda a partir de 9000). Crear un Module Pool en la SE38 Añadir una Dynpro (Screen) al Module Pool creado pulsando el botón derecho: Añadir una Dynpro al Module Pool creado.

Descomentar los módulos PBO y PAI. En nuestro programa principal se nos habrán creado los objetos PBO y PAI en el código del programa. y en el PAI la salida del programa cuando el usuario pulsa el botón Cancel. Como se puede apreciar. Para crear el STATUS y el título se pincha dos veces en el nombre: . en el PBO se añade un Status y un Título. y crear ambos objetos pinchando dos veces en el nombre. Objetos PBO y PAI en el programa.

Pinchamos dos veces al Dynpro 9000 y vamos al Layout para editar la pantalla. Descripción del título del programa. Se introducirán los botones de crear. . modificar y visualizar: Ir al Layout para editar la pantalla. Descripción del Status Activación del botón Cancel cómo mínimo para salir del programa. Escribir el código de función del botón.

Botones creados en el Dynpro 9000. Directamente en el programa Crear la transacción en la SE93. . En la SE93 2. Hay dos formas: 1. es necesario crear una transacción. Para poder ejecutar la pantalla creada.

El campo de entrada/salida se nombra con el nombre de la tabla ZBIBLIO_SOCIOS para referenciar sus características. Las únicas diferencias son: 1. Descripción de la transacción. Se indicará la descripción. el nombre del Module Pool y la pantalla. Añadimos el botón BACK para volver al screen 9000 en el STATUS_9001. . 2. Crear la transacción directamente en el programa. Creamos la Dynpro (Screen) 9001 tal y como creamos la 9000. Module Pool y Dynpro para que la transacción lo ejecute.

Dynpro 9001 resultante. CHAIN. Añadimos el botón Back. FIELD zbiblio_socios-cod_socio. MODULE status_9001. MODULE user_command_9001. MODULE existe_socio. . PROCESS BEFORE OUTPUT. * PROCESS AFTER INPUT. Para ello recurrimos al Process After Input (PAI) para comprobar si el valor introducido existe en la base de datos. ENDCHAIN. Nombras el campo de entrada/salida con el mismo nombre para referenciar. Se necesita comprobar que el nuevo código de socio no existe en la base de datos. Se indica el campo con un CHAIN y el módulo correspondiente a ejecutar (ver código resultante al final).

. dependiendo del botón pulsado en la Dynpro 9000. el botón tendrá como texto Modificar o Visualizarse. En este caso. Botón como campo output en el Dynpro 9002. Finalmente creamos la Dynpro 9003 como ventana de diálogo modal. el Status tiene que ser del mismo tipo: Status 9002 como diálogo modal. Añadimos el código para cuando el usuario pulsa X para salir. En este caso.A continuación creamos la Dynpro 9002 con sus correspondientes campos como ventana de diálogo modal. por tanto es necesario indicar el botón como campo de salida.

El botón será un campo de salida. tendrán un identificador de Grupo1 llamado ID1. Las diferencias con respecto a la 9001 son: 1. El campo input del código de socio es solo output. salvo el primero. por lo tanto identificamos con ID1 los campos a modificar esa opción. Dynpro 9003 como ventana de diálogo modal. 3. Esta misma Dynpro se va a utilizar para la acción de modificar o visualizar. tal y como en el Dynpro 9002. 2. Todos los campos de entrada/salida. El campo del código de socio es solo output (El usuario ya ha sido introducido en la Dynpro 9002).  Si se da al botón de visualizar. . ningún campo es editable.

MODULE STATUS_9000. ENDCHAIN. MODULE user_command_9001. MODULE existe_socio. Identificador de grupo ID1 en todos los campos de entrada/salida salvo en código de socio. .  Dynpro 9001 PROCESS BEFORE OUTPUT. * PROCESS AFTER INPUT. Botón como campo de salida. Los códigos son los siguientes:  Dynpro 9000 PROCESS BEFORE OUTPUT. CHAIN. MODULE USER_COMMAND_9000. MODULE status_9001. * PROCESS AFTER INPUT. FIELD zbiblio_socios-cod_socio.

ENDCHAIN. MODULE status_9003. * PROCESS AFTER INPUT. TABLES: zbiblio_socios.  Module Pool *&---------------------------------------------------------------------* *& Module Pool ZBIBLIO_CREAR_MODIF_VISUAL *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* PROGRAM zbiblio_crear_modif_visual. MODULE inicial_9002. MODULE status_9002. ok_code_9002 TYPE sy-ucomm. DATA: ok_code_9000 TYPE sy-ucomm. "Texto de los botones output b_9003_boton(20) TYPE c. CHAIN. DATA: b_9002_boton(20) TYPE c. MODULE existe_socio. MODULE inicial_9003. DATA: g_st_socios TYPE zbiblio_socios. "Al iniciar PBO del dynpro 9003 *&---------------------------------------------------------------------* *& Module STATUS_9000 OUTPUT *&---------------------------------------------------------------------* * text . Dynpro 9002 PROCESS BEFORE OUTPUT. FIELD zbiblio_socios-cod_socio. ok_code_9003 TYPE sy-ucomm. "Búsqueda en dynpro 9002 g_wa_vuelta TYPE i. DATA: g_wa_existe_socio TYPE c. MODULE user_command_9003. ok_code_9001 TYPE sy-ucomm.  Dynpro 9003 PROCESS BEFORE OUTPUT. * PROCESS AFTER INPUT. MODULE user_command_9002.

CALL SCREEN 9002 STARTING AT 10 10. WHEN 'CREAR'. ENDMODULE. ENDMODULE. CALL SCREEN 9001. ENDCASE. WHEN 'CANCEL'. " USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* *& Module STATUS_9001 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_9001 OUTPUT. CALL SCREEN 9000. WHEN 'CANCEL'. SET PF-STATUS 'STATUS_9000'. WHEN 'BACK'. WHEN 'CREAR'. LEAVE PROGRAM. SET TITLEBAR 'TITLE_9001'. ENDCASE. " STATUS_9000 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_9000 INPUT. ENDMODULE. CALL SCREEN 9002 STARTING AT 10 10. MESSAGE 'Usuario creado' type 'I'. LEAVE PROGRAM. WHEN 'VISUALIZAR'. SET TITLEBAR 'TITLE_9000'. " USER_COMMAND_9001 INPUT .*----------------------------------------------------------------------* MODULE status_9000 OUTPUT. " STATUS_9001 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9001 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_9001 INPUT. WHEN 'MODIFICAR'. INSERT zbiblio_socios. ENDMODULE. CASE ok_code_9001. CASE ok_code_9000. SET PF-STATUS 'STATUS_9001'.

ENDMODULE. ELSEIF ( ok_code_9000 = 'MODIFICAR' OR ok_code_9000 = 'VISUALIZAR' ) AND g_wa_existe_socio <> 'X'. g_wa_existe_socio. " STATUS_9002 OUTPUT *&---------------------------------------------------------------------* *& Module MODIFICAR_VISUALIZAR OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE inicial_9002 OUTPUT. WHEN 'ACCION'. WHEN 'CANCEL'. " EXISTE_SOCIO INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9002 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_9002 INPUT.*&---------------------------------------------------------------------* *& Module STATUS_9002 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_9002 OUTPUT. " MODIFICAR_VISUALIZAR OUTPUT *&---------------------------------------------------------------------* *& Module VALIDA_SOCIO INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE existe_socio INPUT. . CALL SCREEN 9000. SET TITLEBAR 'TITLE_9002'. PERFORM f_existe_socio. LEAVE PROGRAM. CLEAR: g_st_socios. ENDIF. PERFORM f_inicial. SET PF-STATUS 'STATUS_9002'. IF ok_code_9000 = 'CREAR' AND g_wa_existe_socio = 'X'. ENDMODULE. CASE ok_code_9002. ENDMODULE. WHEN 'BACK'. IF g_wa_existe_socio = 'X'. MESSAGE 'El usuario ya existe' TYPE 'E'. MESSAGE 'El usuario no existe' TYPE 'E'. g_wa_vuelta = 1.

" INICIAL_9003 OUTPUT *&---------------------------------------------------------------------* . ELSEIF ok_code_9000 = 'VISUALIZAR'. ENDIF. " STATUS_9002 OUTPUT *&---------------------------------------------------------------------* *& Module INICIAL_9003 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE inicial_9003 OUTPUT. IF ok_code_9000 = 'MODIFICAR'. ENDIF. CASE ok_code_9003. ENDCASE. " USER_COMMAND_9003 INPUT *&---------------------------------------------------------------------* *& Module STATUS_9003 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_9003 OUTPUT. ENDIF. ENDMODULE. ENDIF. ENDMODULE. WHEN 'ACCION'. ENDMODULE. CALL SCREEN 9003 STARTING AT 10 10. g_wa_vuelta = g_wa_vuelta + 1. SET TITLEBAR 'TITLE_9003_1'. IF ok_code_9000 = 'MODIFICAR'. PERFORM f_inicial. WHEN 'CANCEL'. LEAVE PROGRAM. " USER_COMMAND_9002 INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9003 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_9003 INPUT. CALL SCREEN 9000. ENDCASE. PERFORM f_ver_socio. WHEN 'BACK'. SET PF-STATUS 'STATUS_9003'. ENDMODULE. IF g_wa_vuelta = 1. PERFORM f_modificar. SET TITLEBAR 'TITLE_9003_2'.

MODIFY SCREEN. ENDFORM. IF sy-subrc = 0. b_9003_boton = 'Modificar'. SELECT SINGLE * FROM zbiblio_socios INTO l_st_socios WHERE cod_socio = zbiblio_socios-cod_socio.*& Form F_INICIAL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-. b_9003_boton = 'Visualizar'. screen-input = 0. ENDIF. g_wa_existe_socio = 'X'. ENDIF. DATA: l_st_socios TYPE zbiblio_socios. * Cambiar el texto del botón IF ok_code_9000 = 'MODIFICAR'. IF screen-group1 = 'ID1'. * No editable cuando es visualización LOOP AT SCREEN.p2 text *----------------------------------------------------------------------* FORM f_inicial. ELSEIF sy-subrc <> 0. b_9002_boton = 'Modificar'. ENDIF. " F_EXISTE_SOCIO *&---------------------------------------------------------------------* *& Form F_MODIFICAR_9002 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* . ELSEIF ok_code_9000 = 'VISUALIZAR'. ENDLOOP. ENDIF. ENDFORM. b_9002_boton = 'Visualizar'. IF zbiblio_socios-cod_socio IS NOT INITIAL. CLEAR g_wa_existe_socio. " F_INICIAL *&---------------------------------------------------------------------* *& Form F_EXISTE_SOCIO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_existe_socio .

ENDFORM. " F_MODIFICAR *&---------------------------------------------------------------------* *& Form F_VER_SOCIO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-. DATA l_st_socio TYPE zbiblio_socios.p2 text *----------------------------------------------------------------------* FORM f_ver_socio . " F_VER_SOCIO . ENDFORM. SELECT SINGLE * FROM zbiblio_socios INTO l_st_socio WHERE cod_socio = zbiblio_socios-cod_socio.p2 text *----------------------------------------------------------------------* FORM f_modificar. MESSAGE 'Usuario modificado' TYPE 'I'. zbiblio_socios = l_st_socio.* --> p1 text * <-. * Los datos del input se actualizan a la base datos (mismo nombre) UPDATE zbiblio_socios.

Tabla: ZBIBLIO_LIBROS Campo Tipo Código de libro NUMC-8 . Tabla: ZBIBLIO_SOCIOS Campo Tipo Código de socio NUMC-4 DNI CHAR-9 Nombre CHAR-30 Apellido CHAR-30 Teléfono CHAR-15 Dirección 1 CHAR-75 Dirección 2 CHAR-75 Dirección 3 CHAR-75 Dirección 4 CHAR-75 2. 2013 2 comments Crear las siguientes tablas: 1.Crear bases de datos domingo. diciembre 08.

otro para CHAR-15 y así sucesivamente con cada uno de los tipos de las tres tablas.Autor CHAR-75 Título CHAR-125 Ejemplares disponibles INT-4 Ejemplares totales INT-4 3. . Creación de un dominio. un dominio para CHAR-9. Tabla: ZBIBLIO_PRESTAM Campo Tipo Código de préstamo NUMC-12 Código de socio (Clave externa con tabla de socios) Código de libro (Clave externa con tabla de socios) Fecha inicio préstamo DAT Fecha estimada devolución DAT Fecha real devolución DAT El primer paso es crear todos los dominios en la SE11. es decir. Habrá tantos dominios como tipo de variables.

Por tanto. Características de un dominio. A continuación. se crean los tipos de datos. . Finalmente se habrán creado los siguientes dominios: Lista de dominios creados. volvemos a la SE11 para crear los tipos de datos.

tendremos que crear todos los tipos de datos de las tres tablas y asignarle el dominio correspondiente. . La única diferencia entre los tipos de datos Nombre y Apellido es las descripciones. En este ejemplo. ya que su tipo es un CHAR-30. como es el caso de los campos Nombre y Apellido en la tabla Z_BIBLIO_SOCIOS. Se aconseja rellenar las descripciones del campo. Asignando un dominio creado al tipo de datos. Este dominio se puede repetir. ya que ayudará a la visualización cuando se utilicen ALVs. Creación del tipo de datos.

Creamos una base de datos. Creando etiquetas de descripción para mostrar en ALVs. Asignamos la clase y navegación de datos. pasamos a crear la base de datos en la SE11. Todo tabla debe de comenzar por el mandante. con lo que asignamos el elemento MANDT al primer campo. Una vez con todos los tipos de datos creados. Seleccionamos la clase e introducimos los campos de la tabla. .

Pulsamos el botón de ajustes técnicos de la tabla para asignar la clase APPL0 y un tamaño de registro categoría 0 (780 registros). Añadimos el mandante y los campos (asignando los tipos creados previamente). . Asignar clase de datos y el número de registros que tendrá la tabla. A continuación. seleccionamos la categoría de ampliación de la tabla en Detalles: Categoría de ampliación en Detalles.

Seleccionamos categoría de actualización. Se repite cada uno de los pasos con las otras dos tablas. En este caso. Seleccionamos el grupo de autorización y el grupo de funciones. asignamos la imagen resumen con un 9000 (Se recomienda que se empiece a contar a partir de ese número). Seleccionamos ampliable de cualquier manera. . Pinchamos en crear. Se recomienda que para cada tabla tenga su propio grupo de funciones. el grupo de funciones y la imagen resumen. Y finalmente. la llamamos igual que el nombre de la tabla. grabamos y activamos la tabla. vamos al generador de actualizador de tabla en Utilidades: Ir al generador de mantenimiento de tabla en utilidades. Además.

iremos a la transacción SM30 Inside the screen create a sub screen by using the sub screen tool bar. Para introducir datos en la tabla de forma manual. .Las claves externas se explican en esta entrada. There is no need to create that sub screen separately.