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