Archivo
Tipos de Popup en SAP – Parte 2
Caso: Se busca mostrar los distintos tipos de POPUP para poder elegir el correcto cada vez que necesitemos uno.
1. POPUP_FOR_INTERACTION
CALL FUNCTION ‘POPUP_FOR_INTERACTION’
EXPORTING
headline = ‘Título (máx 60 caracteres)’
text1 = ‘Texto 1 (máx 60 caracteres)’
text2 = ‘Texto 2 (máx 60 caracteres)’
text3 = ‘Texto 3 (máx 60 caracteres)’
text4 = ‘Texto 4 (máx 60 caracteres)’
text5 = ‘Texto 5 (máx 60 caracteres)’
text6 = ‘Texto 6 (máx 60 caracteres)’
ticon = ‘I’ " Ícono a mostrar
button_1 = ‘SI’
button_2 = ‘NO’
button_3 = ‘CERRAR’
IMPORTING
button_pressed = lv_answer. " Devuelve 1, 2, 3 o 0 si no presionó ningun botón
Uso: similar al popup_to_confirm
Ventajas: fácil uso para informar algo al usuario y obtener una decisión.
Desventajas: no se puede definir la posición ni el tamaño del popup, no permite personalización de botones (son muy simples)
2. REUSE_ALV_POPUP_TO_SELECT
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_output,
checkbox TYPE c,
material TYPE matnr,
fecha TYPE sy-datum,
END OF ty_output.
DATA: lt_output TYPE STANDARD TABLE OF ty_output,
ls_output TYPE ty_output,
lt_fcat TYPE slis_t_fieldcat_alv,
ls_fcat TYPE slis_fieldcat_alv,
lv_sel TYPE slis_selfield,
lt_excl TYPE slis_t_extab,
ls_excl TYPE slis_extab,
lv_exit TYPE c.
"Creamos Catalogo de Datos
CLEAR ls_fcat.
ls_fcat-row_pos = ‘1’.
ls_fcat-col_pos = ‘1’.
ls_fcat-fieldname = ‘CHECKBOX’.
ls_fcat-tabname = ‘LT_OUTPUT’.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-row_pos = ‘1’.
ls_fcat-col_pos = ‘2’.
ls_fcat-fieldname = ‘MATERIAL’.
ls_fcat-tabname = ‘LT_OUTPUT’.
ls_fcat-seltext_m = ‘Material’.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-row_pos = ‘1’.
ls_fcat-col_pos = ‘3’.
ls_fcat-fieldname = ‘FECHA’.
ls_fcat-tabname = ‘LT_OUTPUT’.
ls_fcat-seltext_m = ‘Fecha’.
APPEND ls_fcat TO lt_fcat.
"Creamos Exclusiones de Toolbar
ls_excl-fcode = ‘&ALL’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&SAL’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&ETA’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘%SC’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘%SC+’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&OUP’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&ODN’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&ILT’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&OL0’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&CRB’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&CRL’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&CRR’. APPEND ls_excl TO lt_excl.
ls_excl-fcode = ‘&CRE’. APPEND ls_excl TO lt_excl.
ls_output-material = ‘EV1957-00005’.
ls_output-fecha = ‘20131111’.
APPEND ls_output TO lt_output.
ls_output-material = ‘VT7000-12100’.
ls_output-fecha = ‘20131112’.
APPEND ls_output TO lt_output.
CALL FUNCTION ‘REUSE_ALV_POPUP_TO_SELECT’
EXPORTING
i_title = ‘Titulo (máx 35 caracteres)’
i_selection = ‘X’ " (X) = permite seleccionar, ( ) = sólo visualizar
i_allow_no_selection = ‘S’ " Allow copy although nothing is selected
i_zebra = ‘X’ " Modo Zebra para registros
i_screen_start_column = 5 " Posición ALV
i_screen_start_line = 5 "
i_screen_end_column = 100 "
i_screen_end_line = 10 "
i_checkbox_fieldname = ‘CHECKBOX’ " Campo de selección
* i_linemark_fieldname = " color para una línea
* i_scroll_to_sel_line = ‘X’ " remarca una línea
i_tabname = ‘LT_OUTPUT’ " Tabla de salida
* i_structure_name = " Nombre estructura
it_fieldcat = lt_fcat " Catálogo de campos
it_excluding = lt_excl " Excluir botones
* i_callback_program = " Name of the calling program
* i_callback_user_command = " USER_COMMAND handling form routine name
* is_private = " Internal private use only
IMPORTING
es_selfield = lv_sel " Info de la selección para una selección simple
e_exit = lv_exit " Queda en ‘X’ cuando el usuario aprieta Cancelar
TABLES
t_outtab = lt_output " Tabla de entrada/salida
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Error
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
* Si no puso cancelar…
IF lv_exit NE ‘X’.
ENDIF.
ENDIF.
Uso: Permite definir un ALV simple y dar al usuario la posibilidad de visualizar o seleccionar los registros
Ventajas: fácil uso para que el usuario elija datos de un ALV simple
Desventajas: Poca personalización del ALV para otros eventos
3. POPUP_GET_VALUES
DATA: lt_fields TYPE TABLE OF sval,
lw_fields TYPE sval,
lc_return TYPE c.
CLEAR lw_fields.
lw_fields-tabname = ‘MARA’.
lw_fields-fieldname = ‘MATNR’.
*lw_fields-comp_tab = ‘MARA’.
*lw_fields-comp_field = ‘MATNR’.
lw_fields-field_attr = ’01’. " Atributo para visualización del campo en el dynpro
" ( ) grado de visibilidad normal, listo para entrada
" 01 visible, listo para entrada
" 02 grado de visibilidad normal, no listo para entrada
" 03 visible, no listo para entrada
" 04 No visualizar
lw_fields-value = ‘EV1957-00005’. " Valor por defecto
lw_fields-field_obl = ‘X’. " Obligatorio indicar un valor
lw_fields-fieldtext = ‘Material’. " Texto descriptivo izquierdo
APPEND lw_fields TO lt_fields.
CLEAR lw_fields.
lw_fields-tabname = ‘EKET’.
lw_fields-fieldname = ‘EINDT’.
*lw_fields-comp_tab = ‘EKET’.
*lw_fields-comp_field = ‘EINDT’.
lw_fields-field_attr = ’01’.
lw_fields-value = sy-datum.
lw_fields-field_obl = ‘X’.
lw_fields-fieldtext = ‘Fecha’.
APPEND lw_fields TO lt_fields.
CALL FUNCTION ‘POPUP_GET_VALUES’
EXPORTING
* no_value_check = ‘ ‘ " Desactiva verificaciones del correspondiente tipo de datos
popup_title = ‘Título (máx 60 caracteres)’
start_column = ‘5’
start_row = ‘5’
IMPORTING
returncode = lc_return
TABLES
fields = lt_fields
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Error
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CHECK lc_return IS INITIAL.
LOOP AT lt_fields INTO lw_fields.
* Obtengo el dato ingresado
ENDLOOP.
ENDIF.
Uso: Permite mostrar una serie de campos para que el usuario ingrese datos y luego poder tomarlos
Ventajas: fácil uso para que el usuario elija datos simples
Desventajas: Es muy simple, se debe hacer referencia a una tabla
4. POPUP_TO_DISPLAY_TEXT
CALL FUNCTION ‘POPUP_TO_DISPLAY_TEXT’
EXPORTING
titel = ‘Título (máx 70 caracteres)’
textline1 = ‘Texto 1 (máx 70 caracteres)’
textline2 = ‘Texto 1 (máx 70 caracteres)’
start_column = 25
start_row = 6.
Uso: Permite mostrar un popup informativo con dos líneas de texto
Ventajas: popup simple informativo y posee parámetros para ubicarlo en la pantalla
Desventajas: muy simple