![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Los status GUI y los títulos
ABAP Los status GUI y los títulos
![ABAP Los status GUI y los títulos ABAP Los status GUI y los títulos](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/236.jpg)
Status GUI
Es un componente independiente de los programas ABAP, que se utiliza para proporcionarle al usuario un amplio rango de funciones en la pantalla de los programas.
La pantalla que visualiza el usuario en una transacción tenemos varios componentes:
1. Título.
2. Barra de herramientas standard.
3. Barra de herramientas de la aplicación (Status GUI).
4. Teclas de función (Help F1, Back F2 Exit F3).
El Status GUI se crea en la transacción SE80 en ese punto tenemos que buscar nuestro programa y luego le damos clic derecho encima del mismo y le damos crear - Status GUI.
Cuando creamos un GUI Status, tenemos que ir a Teclas de Función y definir nuevamente los comandos BACK, EXIT, CANCEL, PRINT, etc. QUe son definidos por defecto en SAP para tener una funcionalidad concreta. Una vez definidos los nombres de cada botón para identificarlos posteriormente con la variabl de sistema sy-ucomm tenemos que definirle el tipo de función la cual deberá de ser E Exit Command (Module xxx AT EXIT-COMMAND). Difiniendo ese tipo de función al menú predefinido de SAP podemos obtener el mismo comportamiento de dichos botones.
SI queremos obtener todos los elementos en un GUI Status Podemos copiar uno ya existente tales como:
- PROGRAM: SAPLSALV
- Status: STANDARD
La forma en que copiamos el GUI Status usando la transacción Menu Painter (SE41). Ahi ingresamos los datos que mencionamos anteriormente.
El Programa SAPLSALV nos permite importar todos los elementos de menú que puede tener un programa, la cuestión es que tendríamos muchas funcionalidades y eso haría que nuestro algoritmo sea muy extenso porque si o si tenemos que configurarlas programaticamente (usando programación) lo que nos puede llevr tiempo y el mantenimiento de nuestro sistema sería un poco complicado.
Suponiendo que queremos crear un GUI Status desde cero, tenemos que usar el evento AT USER-COMMAND el cual es activado cuando un usuario hace clic en algún elemento del menú que se encuentra. Para verificar el tipo de botón que presionó tenemos que compararlo con la variable sy-ucomm (user command).
El GUI Status nos sirve mucho para darle vida a nuestros informes, es decir, para volverlos interactivos y que el usuario pueda interactuar de forma simple con nuestro programa.
Para inicializar un GUI Status dentro de nuestro código tenemos que colocar SET PF-STATUS id_gui_status.
El comando SET PF-STATUS tiene un complemento que es EXCLUDING list... que nos permite deshabilitar los elementos del menú. Esta función es super interesante ya que de forma sencilla podemos declarar que elementos no debería de tener acceso el usuario final. Lo podemos hacer la siguiente forma:
SPAN { font-family: "Consolas"; color: #000000; background: #FFFFFF; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } .L0S70 { color: #808080; } DATA: commands TYPE TABLE OF sy-ucomm.
SPAN { font-family: "Consolas"; color: #000000; background: #FFFFFF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } APPEND 'CHANGE' TO commands.
APPEND 'SAVE' TO commands.
APPEND 'PRINT' TO commands.
SPAN { font-family: "Consolas"; color: #000000; background: #FFFFFF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } SET PF-STATUS '0300' EXCLUDING commands.
Creación de Titulos.
SAP nos permite que cada pantalla de un informe pueda tener un titulo en la barra del Menú customizado.
Para hacer un título en nuestro menú debemos de darle clic derecho sobre el programa y decirle Crear Titulo. Seguimos los pasos que son Definir un código único para nuestro título y posteriormente definir el texto que queremos ver.
Para colocarlo en nuestro código colocamos el comando SET TITLEBAR id_title.
El código de la clase modificado para darle un mejor aspecto es el siguiente:
SPAN {
font-family: "Consolas";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
*&---------------------------------------------------------------------*
*& Report ZSTATUS_GUI_PRACTICE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zstatus_gui_practice NO STANDARD PAGE HEADING.
DATA: ti_usuarios LIKE STANDARD TABLE OF ztabla_usuarios,
wa_usr LIKE LINE OF ti_usuarios,
commands TYPE TABLE OF sy-ucomm.
INITIALIZATION.
* Colocamos los comandos que queremos excluir
APPEND 'CHANGE' TO commands.
APPEND 'SAVE' TO commands.
APPEND 'PRINT' TO commands.
TOP-OF-PAGE.
"No colocamos nada para que no salgo eso de ZINFORME....
START-OF-SELECTION.
"Declaramos que vamos a usar un GUI Status con PF-STATUS
SET PF-STATUS '0200'.
SET TITLEBAR '0100'.
WRITE:/ 'Seleccione un reporte para visualizar 2'.
AT USER-COMMAND.
"Con el evento AT USER-COMMAND podemos verificar cuando un usuario
"interactua con un informe.
IF sy-ucomm = 'USER-INACT'.
SET PF-STATUS '0300'.
SET TITLEBAR '0200'.
PERFORM show_inactive_users.
ELSEIF sy-ucomm = 'USER-ACTIV'.
SET PF-STATUS '0300' EXCLUDING commands.
SET TITLEBAR '0300'.
PERFORM show_active_users.
ENDIF.
FORM show_active_users.
CLEAR ti_usuarios.
REFRESH ti_usuarios.
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE estado_usu = 'A'.
IF ti_usuarios IS NOT INITIAL.
CLEAR wa_usr.
FORMAT COLOR COL_KEY HOTSPOT.
LOOP AT ti_usuarios INTO wa_usr.
WRITE:/ '|', (20) 'DNI' LEFT-JUSTIFIED,'|', (30) wa_usr-dni LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Nombre y Apellido' LEFT-JUSTIFIED,'|', (30) wa_usr-nombre_ape LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Estado Usuario' LEFT-JUSTIFIED,'|', (30) wa_usr-estado_usu LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Direccion' LEFT-JUSTIFIED,'|', (30) wa_usr-direccion LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Codigo Postal' LEFT-JUSTIFIED,'|', (30) wa_usr-codigo_postal LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Fecha Nacimiento' LEFT-JUSTIFIED,'|', (30) wa_usr-fecha_nac LEFT-JUSTIFIED, '|'.
NEW-LINE.
ULINE AT /(57).
ENDLOOP.
ELSE.
MESSAGE s000(demo) WITH 'Sin datos'.
ENDIF.
ENDFORM.
FORM show_inactive_users.
CLEAR ti_usuarios.
REFRESH ti_usuarios.
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE estado_usu = 'I'.
IF ti_usuarios IS NOT INITIAL.
CLEAR wa_usr.
FORMAT COLOR COL_KEY HOTSPOT.
LOOP AT ti_usuarios INTO wa_usr.
WRITE:/ '|', (20) 'DNI' LEFT-JUSTIFIED,'|', (30) wa_usr-dni LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Nombre y Apellido' LEFT-JUSTIFIED,'|', (30) wa_usr-nombre_ape LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Estado Usuario' LEFT-JUSTIFIED,'|', (30) wa_usr-estado_usu LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Direccion' LEFT-JUSTIFIED,'|', (30) wa_usr-direccion LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Codigo Postal' LEFT-JUSTIFIED,'|', (30) wa_usr-codigo_postal LEFT-JUSTIFIED, '|'.
WRITE:/ '|', (20) 'Fecha Nacimiento' LEFT-JUSTIFIED,'|', (30) wa_usr-fecha_nac LEFT-JUSTIFIED, '|'.
NEW-LINE.
ULINE AT /(57).
ENDLOOP.
ELSE.
MESSAGE s000(demo) WITH 'Sin datos'.
ENDIF.
ENDFORM.
 
 
 
Sobre el autor
Publicación académica de Juan Pablo Giron Ruiz, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Pablo Giron Ruiz
Colombia - Legajo: FG66E
✒️Autor de: 21 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Ingeniero electrónico con conocimientos sólidos en ciencias de la computación y magister en ciencias de ingeniería eléctrica. proactivo y amante a los retos profesionales.
Certificación Académica de Juan Giron