Archivo

Posts Tagged ‘popup’

POPUP_TO_DECIDE_LIST

Caso: se desea crear un popup para que el usuario seleccione una opción entre varias.

Solución: Usando la función POPUP_TO_DECIDE_LIST puedo hacerlo.

DATA: li_spopli TYPE STANDARD TABLE OF spopli,
wa_spopli TYPE spopli,
lv_result TYPE char1.

START-OF-SELECTION.
CLEAR: wa_spopli.
wa_spopli-varoption = ‘Opción 1’.
APPEND wa_spopli TO li_spopli.

CLEAR: wa_spopli.
wa_spopli-varoption = ‘Opción 2’.
APPEND wa_spopli TO li_spopli.

CLEAR: wa_spopli.
wa_spopli-varoption = ‘Opción 3’.
APPEND wa_spopli TO li_spopli.

CALL FUNCTION ‘POPUP_TO_DECIDE_LIST’
EXPORTING
titel = ‘POPUP – Radio Buttons’
textline1 = ‘Seleccione una opción’
IMPORTING
answer = lv_result
TABLES
t_spopli = li_spopli
EXCEPTIONS
not_enough_answers = 1
too_much_answers = 2
too_much_marks = 3
OTHERS = 4.

IF sy-subrc EQ 0.
IF lv_result NE ‘A’.
READ TABLE li_spopli INTO wa_spopli INDEX lv_result.
WRITE:/ ‘Se seleccionó: ‘, wa_spopli-varoption.
ELSE.
WRITE:/ ‘No ha realizado ninguna selección’.
ENDIF.
ENDIF.

Anuncios
Categorías:ABAP/4 Etiquetas: , ,

Tipos de Popup en SAP – Parte 3

Caso: Se busca mostrar los distintos tipos de POPUP para poder elegir el correcto cada vez que necesitemos uno.

1. MD_POPUP_SHOW_INTERNAL_TABLE

DATA: BEGIN OF gt_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
charg LIKE vbap-charg,
box, " seleccion del alv
END OF gt_vbap.

DATA: lk_zuonr LIKE vbak-zuonr,
lk_tabix LIKE sy-tabix,
lt_cols LIKE help_value OCCURS 0 WITH HEADER LINE.

gt_vbap-vbeln = ‘111’.
gt_vbap-posnr = ‘0010’.
gt_vbap-charg = ‘123456789’.
APPEND gt_vbap.

gt_vbap-vbeln = ‘112’.
gt_vbap-posnr = ‘0020’.
gt_vbap-charg = ‘125456789’.
APPEND gt_vbap.

CLEAR lk_tabix.

APPEND lt_cols.
lt_cols-tabname = ‘VBAP’.
lt_cols-fieldname = ‘VBELN’.
lt_cols-selectflag = ‘X’.
APPEND lt_cols.
lt_cols-tabname = ‘VBAP’.
lt_cols-fieldname = ‘POSNR’.
APPEND lt_cols.
lt_cols-tabname = ‘VBAP’.
lt_cols-fieldname = ‘CHARG’.
APPEND lt_cols.

CALL FUNCTION ‘MD_POPUP_SHOW_INTERNAL_TABLE’
EXPORTING
title = ‘Titulo (máx 80 caracteres)’
IMPORTING
index = lk_tabix " Línea seleccionada
TABLES
values = gt_vbap
columns = lt_cols
EXCEPTIONS
leave = 1
OTHERS = 2.

Uso: similar al REUSE_ALV_POPUP_TO_SELECT, pero la selección queda en el index, siendo el registro seleccionado mediante el doble click

Ventajas: fácil uso para mostrar datos en un ALV fácil.

Desventajas: no recomendado para selección de datos, es poco claro al usuario.

2. TH_POPUP

CALL FUNCTION ‘TH_POPUP’
EXPORTING
client = sy-mandt
user = sy-uname
message = ‘Prueba POPUP’
* MESSAGE_LEN = 0
* CUT_BLANKS = ‘ ‘
EXCEPTIONS
USER_NOT_FOUND = 1
OTHERS = 2.

Uso: Envía un popup tipo Windows al usuario indicado en la llamada.

Ventajas: útil para avisar de un evento a los usuarios.

Desventajas: quizá sea mejor enviar desde SAP los avisos a los usuarios.

Otros POPUP para revisar:

1. POPUP_TO_GET_ONE_VALUE Sale un POPUP en el que puedes meter un texto e insertarlo

2. POPUP_DISPLAY_MESSAGE POPUP para mensajes de ERROR

3. TERM_CONTROL_EDIT Super > POPUP que te permite escribir un texto largo

4. POPUP_TO_DECIDE_LIST Dentro del popup tiene radiobutons para elegir opciones.

5. HELP_DOCULINES_SHOW Mega POPUP para escribir textos muy largos del tipo Información

En el siguiente link aparecen otros ejemplos:

Link: http://wiki.scn.sap.com/wiki/display/ABAP/Different+Pop_Ups+in+ABAP

1. POPUP_WITH_TABLE_DISPLAY

2. POPUP_TO_CONFIRM_STEP

3. POPUP_TO_DECIDE_WITH_MESSAGE

4. POPUP_TO_DECIDE

5. POPUP_TO_SELECT_MONTH

6. POPUP_TO_CONFIRM_WITH_VALUE

7. POPUP_TO_CONFIRM_WITH_MESSAGE

8. POPUP_TO_DISPLAY_TEXT

9. POPUP_TO_CONFIRM

10. POPUP_TO_CONTINUE_YES_NO

11. POPUP_TO_CONFIRM_DATA_LOSS

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

Tipos de Popup en SAP – Parte 1

Caso: Se busca mostrar los distintos tipos de POPUP para poder elegir el correcto cada vez que necesitemos uno.

1. POPUP_TO_INFORM

CALL FUNCTION ‘POPUP_TO_INFORM’
EXPORTING
titel = ‘Título (máx 35 caracteres)’
txt1 = ‘Texto 1 (máx 80 caracteres)’
txt2 = ‘Texto 2 (máx 80 caracteres)’
TXT3 = ‘Texto 3 (máx 80 caracteres)’
TXT4 = ‘Texto 4 (máx 80 caracteres)’.

Uso: múltiple

Ventajas: fácil uso para informar algo al usuario.

Desventajas: no se puede definir la posición ni el tamaño del popup, no posee botones

2. POPUP_TO_SHOW_USERINFO, POPUP_TO_DISPLAY_USERDATA

DATA: e_vtbuser TYPE vtbuser.

e_vtbuser-cruser = sy-uname. " CHAR 12 0 Autor
e_vtbuser-dcrdat = sy-datum. " DATS 8 0 Fecha entrada
e_vtbuser-tcrtim = sy-uzeit. " TIMS 6 0 Hora de entrada
e_vtbuser-upuser = sy-uname. " CHAR 12 0 Modificado por
e_vtbuser-dupdat = sy-datum. " DATS 8 0 Fecha de modificación
e_vtbuser-tuptim = sy-uzeit. " TIMS 6 0 Hora de modificación

CALL FUNCTION ‘POPUP_TO_SHOW_USERINFO’
EXPORTING
title = ‘Título (máx 10 caracteres)’
user = e_vtbuser.

Uso: para mostrar un LOG de modificaciones de registros, por ejemplo. También puede usarse, con utilización similar, POPUP_TO_DISPLAY_USERDATA

Ventajas: fácil uso para informar usuario y fecha/hora de modificación. Puede mostrarse el cuadro de Registro o el de Última modif. si se requiere (es decir sólo una de los dos)

Desventajas: no se puede definir la posición ni el tamaño del popup, no posee botones

3. POPUP_TO_CONFIRM

DATA: lv_answer TYPE c,
lt_spar TYPE TABLE OF spar.

CALL FUNCTION ‘POPUP_TO_CONFIRM’
EXPORTING
titlebar = ‘Título (máx 35 caracteres)’
* diagnose_object = ‘ZPRUEBA_POPUP’ " Si lo defino aquí, el objeto de documentación aparece en el popup arriba de la pregunta
text_question = ‘Pregunta (máx 400 caracteres)’
text_button_1 = ‘Si'(001) " Texto botón 1
icon_button_1 = ‘ICON_UNLOCKED’ " Ícono botón 1
text_button_2 = ‘No'(002) " Texto botón 2
icon_button_2 = ‘ICON_FAILURE’ " Ícono botón 2
default_button = ‘1’ " Botón por defecto
display_cancel_button = ‘X’ " Mostrar botón Cancelar
userdefined_f1_help = ‘ZPRUEBA_POPUP’ " Botón Info – Documentación que debe crearse por la SE61 como texto en diálogo (tipo DT)
start_column = 25 " Columna comienzo POPUP
start_row = 6 " Fila comienzo POPUP
popup_type = ‘ICON_MESSAGE_CRITICAL’ " Nombre del ícono que aparece a la izquierda, sólo puede ser:
" ICON_MESSAGE_QUESTION (default), ICON_MESSAGE_INFORMATION, ICON_MESSAGE_WARNING
" ICON_MESSAGE_ERROR, ICON_MESSAGE_CRITICAL o NO_ICON
iv_quickinfo_button_1 = ‘Texto info botón 1 (máx.132 caracteres)’ " Quickinfo del botón 1 (cuando paso el mouse sobre el botón)
iv_quickinfo_button_2 = ‘Texto info botón 2 (máx.132 caracteres)’ " Quickinfo del botón 2
IMPORTING
answer = lv_answer " Respuesta
* TABLES
* parameter = lt_spar " The internal table contains the parameters which are to be put in the diagnosis and query text.
EXCEPTIONS
text_not_found = 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.
* Seleccionó algo…
CASE lv_answer.
WHEN ‘1’. " Si
MESSAGE i001(00) WITH ‘Presionó el Si’.
WHEN ‘2’. " No
MESSAGE i001(00) WITH ‘Presionó el No’.
WHEN ‘A’. " Cancelar
MESSAGE i001(00) WITH ‘Presionó el Cancelar’.
ENDCASE.

ENDIF.

Uso: para mostrar un POPUP de decisión, para que el usuario elija seguir o no el flujo de programa.

Ventajas: fácil uso, varios parámetros opcionales para hacerlo intuitivo al usuario, ubicar el popup en pantalla, etc.

Desventajas: ninguna de interés para lo que se necesita

Mostrar tabla interna en un POPUP ALV

Caso: se busca mostrar en un POPUP un ALV, para visualizar datos de una tabla interna (en mi caso, era el resultado de la ejecución de una BAPI que hace más de un asiento contable).

TYPES BEGIN OF t_asientos.
TYPES belnr TYPE belnr_d.
TYPES bukrs TYPE bukrs.
TYPES gjahr TYPE gjahr.
TYPES belnr_anul TYPE belnr_d.
TYPES bukrs_anul TYPE bukrs.
TYPES gjahr_anul TYPE gjahr.
TYPES END OF t_asientos.

DATA: gt_asientos   TYPE TABLE OF t_asientos,

      lt_fcat       TYPE slis_t_fieldcat_alv.

 

PERFORM crear_catalogo_popup TABLES lt_fcat.

 

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program    = sy-repid
it_fieldcat           = lt_fcat
I_CALLBACK_USER_COMMAND = 
‘USER_COMMAND_POPUP’
i_screen_start_column = 
30
i_screen_start_line   = 
7
i_screen_end_column   = 
100
i_screen_end_line     = 
20
TABLES
t_outtab              = gt_asientos
EXCEPTIONS
program_error         = 
1
OTHERS                = 2.

 

 

*&———————————————————————*
*&      Form  CREAR_CATALOGO
*&———————————————————————*
*       Crea el catálogo de campos para el ALV POPUP
*———————————————————————-*
FORM crear_catalogo_popup TABLES pt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

REFRESH pt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 
‘BELNR’.
ls_fieldcat-tabname   = 
‘GT_ASIENTOS’.
ls_fieldcat-seltext_m = 
‘Doc.Provisión’.
ls_fieldcat-
hotspot   = ‘X’.
APPEND ls_fieldcat TO pt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 
‘GJAHR’.
ls_fieldcat-tabname   = 
‘GT_ASIENTOS’.
ls_fieldcat-seltext_m = 
‘Período’.
APPEND ls_fieldcat TO pt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 
‘BELNR_ANUL’.
ls_fieldcat-tabname   = 
‘GT_ASIENTOS’.
ls_fieldcat-seltext_m = 
‘Doc.Anulación’.
ls_fieldcat-
hotspot   = ‘X’.
APPEND ls_fieldcat TO pt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 
‘GJAHR_ANUL’.
ls_fieldcat-tabname   = 
‘GT_ASIENTOS’.
ls_fieldcat-seltext_m = 
‘Período’.
APPEND ls_fieldcat TO pt_fieldcat.

ENDFORM.                    “crear_catalogo_popup

 

*&———————————————————————*
*&      Form  user_command
*&———————————————————————*
*       User command del popup
*———————————————————————-*
FORM user_command_popup USING r_ucomm LIKE sy-ucomm
rs_selfield 
TYPE slis_selfield.

DATA: lw_asientos TYPE t_asientos.
CASE rs_selfield-fieldname.
WHEN ‘BELNR’.
READ TABLE gt_asientos INTO lw_asientos WITH KEY belnr = rs_selfield-value.
SET PARAMETER ID ‘BLN’ FIELD lw_asientos-belnr.
SET PARAMETER ID ‘BUK’ FIELD lw_asientos-bukrs.
SET PARAMETER ID ‘GJR’ FIELD lw_asientos-gjahr.
CALL TRANSACTION ‘FB03’ AND SKIP FIRST SCREEN.

WHEN ‘BELNR_ANUL’.
READ TABLE gt_asientos INTO lw_asientos WITH KEY belnr_anul = rs_selfield-value.

SET PARAMETER ID ‘BLN’ FIELD lw_asientos-belnr_anul.
SET PARAMETER ID ‘BUK’ FIELD lw_asientos-bukrs_anul.
SET PARAMETER ID ‘GJR’ FIELD lw_asientos-gjahr_anul.
CALL TRANSACTION ‘FB03’ AND SKIP FIRST SCREEN.

WHEN OTHERS.
ENDCASE.

ENDFORM.                    “user_command

El resultado es algo así:

alv

Debugger de Popup – Como hacer debug a un popup

Para hacer un debug a una ventana popup, hay que crearse un archivo TXT con el siguiente texto:

[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand

Y cuando aparezca el popup arrastrar (hacer drag and drop) el archivo txt generado sobre la ventana popup y listo!

Categorías:ABAP/4 Etiquetas: ,