alv llama popup
Creo q ya entendi lo q intentas hacer y si se puede:
Primero debes capturar la accion d dar doble clic a la celda q quieres editar, para eso debes asegurarte q:
q tu layout tenga asignado un valor en el campo F2CODE.
GS_LAYOUT-F2CODE = 'MATCHCODE'.
q tu llamado a alv grid tenga como export este layout y el user_command:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
*
*
*
IS_LAYOUT = GS_LAYOUT
TABLES
T_OUTTAB = 'tu_tabla_interna'
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
Luego implementar tu user_command:
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CHECK NOT RS_SELFIELD-TABNAME IS INITIAL.
CASE R_UCOMM.
WHEN 'MATCHCODE'.
IF RS_SELFIELD-FIELDNAME EQ 'nombre_campo_editable'.
" Aqui va la funcionalidad una vez q hiciste doble clic al campo
" Llamado al pop up tipo matchcode
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'CAMPO-TABLA-POPUP'
WINDOW_TITLE = 'TITULO POP-UP'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = 'tabla interna con valores popup'
RETURN_TAB = IT_MATCH
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
READ TABLE IT_MATCH INDEX 1.
tu_tabla_interna-nombre_campo_editable = IT_MATCH-FIELDVAL.
ENDIF.
" Actualizacion del campo con el valor dl pop up
MODIFY tu_tabla_interna INDEX RS_SELFIELD-TABINDEX.
rs_selfield-refresh = 'X'.
clear i_ucomm.
ENDIF.
ENDCASE.
ENDFORM.
Necesitaras declarar la tabla interna:
DATA: BEGIN OF IT_MATCH OCCURS 0,
SHLPNAME LIKE DDSHRETVAL-SHLPNAME,
FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
FIELDVAL LIKE DDSHRETVAL-FIELDVAL,
RETFIELD LIKE DDSHRETVAL-RETFIELD,
END OF IT_MATCH.
Esto lo hice sin compilar pero he hecho programas q hacen esto, asi q si tienes alguna duda, me avisas.
salu2
__________________
Jaime Zegarra V.
________________
ABAP Developer
|