En desarrollo clásico con dynpros en ABAP, hay una situación crítica que debes controlar siempre, y es que el usuario puede salir de la pantalla y perder datos. Para evitarlo y mejorar la experiencia de usuario, SAP proporciona una solución estándar muy utilizada: POPUP_TO_CONFIRM.
¿Qué es POPUP_TO_CONFIRM?
POPUP_TO_CONFIRM es un módulo de función estándar de SAP que muestra un diálogo modal de confirmación y devuelve la decisión del usuario. Es el típico popup que pregunta ‘¿estás seguro de que quieres salir?’. Y botones como Sí / No / Cancelar.
| Característica | Descripción |
|---|---|
| Modal | Bloquea la pantalla hasta que el usuario responde |
| Interactivo | Espera la decisión del usuario |
| Personalizable | Puedes cambiar textos, títulos, número de botones |
| Retorno | Devuelve un código con la respuesta del usuario |
Valores de retorno
| Valor | Significado | Botón asociado |
|---|---|---|
'1' | Botón 1 (normalmente «Sí») | Primer botón |
'2' | Botón 2 (normalmente «No») | Segundo botón |
'A' | Cancelar | Botón de cancelar (si está activado) |
Este valor es el que debes usar en tu lógica.
DATA lv_answer TYPE c.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING titlebar = 'Confirmación'
text_question = '¿Desea salir sin guardar los cambios?'
text_button_1 = 'Sí'
text_button_2 = 'No'
display_cancel_button = 'X'
popup_type = 'ICON_MESSAGE_WARNING'
IMPORTING answer = lv_answer.
Explicación de parámetros
| Parámetro | Descripción | Valores típicos |
|---|---|---|
titlebar | Título de la ventana | 'Confirmación', 'Atención' |
text_question | Texto de la pregunta | Cualquier string |
text_button_1 | Texto primer botón | 'Sí', 'Aceptar', 'Guardar' |
text_button_2 | Texto segundo botón | 'No', 'Cancelar' |
text_button_3 | Texto tercer botón (opcional) | 'Quizás', 'Más tarde' |
cancel_display | Muestra botón Cancelar | 'X' para mostrar |
display_cancel_button | Alternativa al anterior | 'X' para mostrar |
default_button | Botón que se activa con Enter | '1', '2', '3', 'A' |
popup_type | Icono que se muestra | Ej: 'ICON_MESSAGE_WARNING' |
En un caso real podemos utilizarlo de la siguiente manera:
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT'.
IF gv_changed = abap_true.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING titlebar = 'Confirmación'
text_question = '¿Desea salir sin guardar los cambios?'
IMPORTING answer = DATA(lv_answer).
IF lv_answer = '1'.
LEAVE PROGRAM.
ENDIF.
ELSE.
LEAVE PROGRAM.
ENDIF.
ENDCASE.
Buenas prácticas
CONSTANTS:
c_answer_yes TYPE c VALUE '1',
c_answer_no TYPE c VALUE '2',
c_answer_cancel TYPE c VALUE 'A'.
IF lv_answer = c_answer_yes.
" Proceder con la acción
ENDIF.
" Para acciones destructivas
popup_type = 'ICON_MESSAGE_WARNING'
" Para preguntas normales
popup_type = 'ICON_MESSAGE_QUESTION'
" Para información
popup_type = 'ICON_MESSAGE_INFORMATION'
IF gv_changed = abap_true.
" Solo preguntar si hay cambios pendientes
CALL FUNCTION 'POPUP_TO_CONFIRM' ...
ELSE.
" No hay cambios, salir directamente
LEAVE PROGRAM.
ENDIF.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = text-001
text_question = text-002
IMPORTING
answer = lv_answer.
POPUP_TO_CONFIRM es una herramienta pequeña pero fundamental en el desarrollo ABAP clásico con dynpros. No es compleja, pero usarla correctamente marca la diferencia entre una aplicación que «funciona» y una aplicación que cuida al usuario.



