Inicio > ABAP/4 > Mostrar tabla interna en un POPUP ALV

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

About these ads
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: