PDA

Ver la Versión Completa : sy-ucomm


jorgeABAP29
13/10/10, 20:00:17
Holaa, aca les dejo el siguiente código (desde el alv llama a esta subrutina que maneja la interaccion del usuario con el reporte por medio del sy-ucomm, este tiene el codigo de la funcion asociada al evento):

FORM user_command USING us_ucomm TYPE sy-ucomm
us_selfield TYPE slis_selfield.

TABLES: zm23n.
DATA: e_m23n LIKE zm23n.

READ TABLE ts_mostrar INTO e_mostrar INDEX
us_selfield-tabindex. " probar con field symbols

IF syst-subrc IS INITIAL.
CASE us_ucomm.
WHEN '&IC1'. "Doble click

IF us_selfield-fieldname EQ 'EBELN'.

CALL FUNCTION 'ENQUEUE_EZOBJ2'
EXPORTING
mode_zm23n = 'E'
mandt = sy-mandt
* EBELN =
* USUARIO =
* FECHA =
* HORA =
* X_EBELN = ' '
* X_USUARIO = ' '
* X_FECHA = ' '
* X_HORA = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.

CLEAR e_m23n.

MOVE: e_mostrar-ebeln TO e_m23n-ebeln,
sy-uname TO e_m23n-usuario,
sy-datum TO e_m23n-fecha,
sy-uzeit TO e_m23n-hora.



INSERT INTO zm23n VALUES e_m23n.

COMMIT WORK.

CALL FUNCTION 'DEQUEUE_EZOBJ2'
EXPORTING
mode_zm23n = 'E'
mandt = sy-mandt.
* EBELN =
* USUARIO =
* FECHA =
* HORA =
* X_EBELN = ' '
* X_USUARIO = ' '
* X_FECHA = ' '
* X_HORA = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '

IF sy-subrc IS INITIAL.

SET PARAMETER ID 'BES' FIELD e_mostrar-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDIF.



ENDIF.

WHEN ' '.
write: 'holaaaaaa'.

ENDCASE.
ENDIF.


ENDFORM. "user_command


Quiero que cuando haga doble click, inserte en una tabla z un registro, y cuando presiona enter otra cosa, como hago?? (no me toma el enter). Ademas me gustaría que me expliquen como hago para saber los distintos valores del sy-ucomm.

espero por sus respuestas..., muchas gracias de nuevo.

jtristan
14/10/10, 05:45:41
Creo que estás trabajando con un alv normal. En tal caso, el sy-ucomm, si no me equivoco, sólo responde a acciones de botones o del pf-status. Es decir, no responde a eventos propiamente dichos como el doble click. Tendrías que tener una opción en el pf-status con cada una de las opciones que quieres recibir. Cuando declarás el "botón-opción de menú" le indicas un valor en el campo código de la función. Ese es el valor que te va a devolver el sy-ucomm cuando clikees en el mismo.
Para capturar el doble click tendrías que trabajar con un alv grid orientado a objetos.

Un saludo.

jorgeABAP29
14/10/10, 12:52:00
Hola jcristian, muchas gracias por responder.

Es verdad estoy trabajando con un alv, mas precisamente con alv REUSE_ALV_GRID_DISPLAY. El evento del doble click lo captura perfectamente este alv, el que no captura es el boton 'enter' (capaz q otros tampoco), se puede capturar el evento de presionar el boton enter?. igual gracias por lo de sy-ucomm me quedo un poco mas claro, igual me gustaría que sigan respondiéndome sobre este campo (sy-uccom).

espero por mas respuestas...