sy-ucomm

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jorgeABAP29
    Member
    • oct
    • 33

    #1

    sy-ucomm

    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
    Senior Member
    • oct
    • 240

    #2
    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.

    Comentario

    • jorgeABAP29
      Member
      • oct
      • 33

      #3
      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...

      Comentario

      Trabajando...