PDA

Ver la Versión Completa : REUSE_ALV_FIELDCATALOG_MERGE Modificar disposicion


mendocar
10/07/09, 17:56:02
Que debo agregar para que me aparezcan los iconos de modificar, gestionar disposiciones.

jmenendez
13/07/09, 13:29:58
No se si te entiendo bien.

Me suena a querés modificar el Status GUI del reporte final.
Para eso no tenés que modificar el catálogo sino el display.
Copiate un estatus estandar por la trx: SE41 a tu programa y este aplicalo al alv.

Ej: Programa: SAPLKKBL
Status: STANDARD_FULLSCREEN

Este tiene los botones: &OL0 &OAD &AVE
Que creo son los que solucionan el problema que planteás.

SAludos.

ibecerra
14/07/09, 12:59:01
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'TI_ZTPICK_VER'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_save = g_save --------> esto te habilita los botones para poder grabar y mod disp

mendocar
14/07/09, 14:19:07
Estimados : De nuevo la explicaciòn con algo de còdigo.

FORM get_layout .
clear gs_layout.
* gs_layout-zebra = 'X'.
gs_layout-sel_mode = 'D'.
ENDFORM. " get_layout

FORM get_fieldcat .
data: ls_fcat type lvc_s_fcat.
data: w_pos(2) TYPE n.
DATA: w_repid LIKE sy-repid.
data: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
w_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = w_repid
i_internal_tabname = 'GT_DATA'
i_inclname = w_repid
CHANGING
ct_fieldcat = IT_FIELDCAT[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT IT_FIELDCAT.
CLEAR ls_fcat.
MOVE-CORRESPONDING IT_FIELDCAT to ls_fcat.
ls_fcat-ref_table = IT_FIELDCAT-ref_tabname.
ls_fcat-ref_field = IT_FIELDCAT-ref_fieldname.
ls_fcat-outputlen = IT_FIELDCAT-ddic_outputlen.
ls_fcat-key = space.
ls_fcat-fix_column = space.
ls_fcat-auto_value = space.
ls_fcat-edit = space.
CASE ls_fcat-fieldname.
WHEN 'BELNR'.
ls_fcat-key = 'X'.
ls_fcat-fix_column = 'X'.
WHEN 'GJAHR'.
ls_fcat-key = 'X'.
ls_fcat-fix_column = 'X'.
WHEN 'PROCESS'.
ls_fcat-scrtext_l = 'Procesado'.
ls_fcat-scrtext_m = 'Procesado'.
ls_fcat-scrtext_s = 'Procesado'.
WHEN 'SGTXT'.
ls_fcat-edit = 'X'.
WHEN OTHERS.
ENDCASE.
APPEND ls_fcat to gt_fieldcat.
ENDLOOP.

Luego viene:

MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ST_001'.
SET TITLEBAR 'TIT01'.
if GRID1 is INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = G_CONTAINER.
CREATE OBJECT GRID1
EXPORTING
I_PARENT = g_custom_container.
CREATE OBJECT gr_events.
SET HANDLER gr_events->handle_data_changed
FOR GRID1.
* Validar al dar enter
CALL METHOD GRID1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
* Validar al modificar el campo
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
is_layout = gs_layout
i_save = 'A'
CHANGING
IT_OUTTAB = gt_data[]
IT_FIELDCATALOG = GT_FIELDCAT.
ELSE.
call METHOD GRID1->refresh_table_display.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT