Ir al contenido
Programación ABAP

POPUP_WITH_TABLE_DISPLAY

Muestra una tabla interna en una ventana y devuelve la línea que elige el usuario.

Módulo de funciónPopup
Transacción
SE37
Grupo
Popup
Actualizado
21 de octubre de 2026

Alternativa moderna. Para listas con columnas usa CL_SALV_TABLE con SET_SCREEN_POPUP.

Para qué sirve

POPUP_WITH_TABLE_DISPLAY presenta las líneas de una tabla interna en una ventana de tamaño configurable. El usuario hace doble clic en una línea y la función devuelve su número en CHOISE (así, con esa ortografía).

La tabla se muestra como texto, sin columnas. Para listas con columnas, ordenación y filtros, hoy se usa CL_SALV_TABLE en modo ventana emergente.

Parámetros

Importing

Lo que recibe la función. En CALL FUNCTION se pasan tras EXPORTING.

ParámetroTipoDescripción
ENDPOS_COLObligatorio—Columna donde termina la ventana.
ENDPOS_ROWObligatorio—Fila donde termina la ventana.
STARTPOS_COLObligatorio—Columna donde empieza la ventana.
STARTPOS_ROWObligatorio—Fila donde empieza la ventana.
TITLETEXTObligatorio—Título de la ventana.

Exporting

Lo que devuelve. En CALL FUNCTION se recogen tras IMPORTING.

ParámetroTipoDescripción
CHOISESY-TABIXNúmero de la línea elegida.

Tables

Tablas internas que se pasan o se devuelven (TABLES).

ParámetroTipoDescripción
VALUETABObligatorio—Tabla con las líneas que se muestran.

Excepciones

Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.

ExcepciónCuándo se produce
BREAK_OFFEl usuario ha cancelado.

Ejemplo

ABAP
TYPES ty_linea TYPE c LENGTH 60.
DATA: lt_lineas TYPE STANDARD TABLE OF ty_linea,
      lv_linea  TYPE sy-tabix.

SELECT werks, name1 FROM t001w INTO TABLE @DATA(lt_centros) UP TO 20 ROWS.
lt_lineas = VALUE #( FOR c IN lt_centros ( |{ c-werks } { c-name1 }| ) ).

CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
  EXPORTING
    endpos_col   = 70
    endpos_row   = 20
    startpos_col = 10
    startpos_row = 5
    titletext    = 'Elige un centro'
  IMPORTING
    choise       = lv_linea
  TABLES
    valuetab     = lt_lineas
  EXCEPTIONS
    break_off    = 1
    OTHERS       = 2.
IF sy-subrc = 0.
  DATA(lv_werks) = lt_centros[ lv_linea ]-werks.
ENDIF.

Hoy lo harías así: CL_SALV_TABLE en ventana

Ahora
SELECT werks, name1 FROM t001w INTO TABLE @DATA(lt_centros) UP TO 20 ROWS.

cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
                        CHANGING  t_table      = lt_centros ).
lo_alv->set_screen_popup( start_column = 10 end_column = 70
                          start_line   = 5  end_line   = 20 ).
lo_alv->display( ).

Errores y excepciones habituales

  • Se escribe CHOISE: el parámetro de salida se llama así, no CHOICE.
  • BREAK_OFF: el usuario ha cerrado la ventana sin elegir.

Relacionadas

Funciones relacionadas

POPUP_TO_DECIDE_LISTREUSE_ALV_GRID_DISPLAY

Más en Popup

POPUP_TO_CONFIRMHELP_DOCULINES_SHOWPOPUP_DISPLAY_MESSAGEPOPUP_GET_VALUESPOPUP_TO_CONFIRM_WITH_MESSAGEPOPUP_TO_DISPLAY_TEXTPOPUP_TO_GET_ONE_VALUEGRM_POPUP_TO_GET_ONE_VALUEPOPUP_TO_INFORMPOPUP_TO_MODIFY_TEXTTERM_CONTROL_EDITTH_POPUP

Transacciones y tablas

SE37

En abap.es

¿Dudas con esta función?

Pregunta en el foro de abap.es: la comunidad lleva años resolviendo dudas de ABAP en español.

Preguntar en el foro

Actualizado: 21 de octubre de 2026