MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 24/07/08, 11:39:25
Ermengol Ermengol is offline
Junior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 6
Captura eventos ALV OO

Mi problema es que intento capturar el evento producido por los botones
del toolbar, i no hay manera.
alguien puede darme una pista.
he definido la clase local, he implementado el metodo i he provado con diferentes eventos i no hay manera.
gracias por avanzado.
Responder Con Cita
  #2  
Viejo 24/07/08, 14:58:16
ibecerra
 
Mensajes: n/a
hola te comento que los botones del toolbar del alv oo ya estan definidos y hacen su tarea estandard como por ejmplo ordenar , filtrar etc.
que es lo que deseas debuguear y encontrarte con la accion del boton? o
agregar un nuevo boton al toolbar y personalizar la accion?.

Saludos
Responder Con Cita
  #3  
Viejo 24/07/08, 15:06:21
Ermengol Ermengol is offline
Junior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 6
lo que me pasa es que tengo un campo oculto y quando hago la acción de copiar fila no me copia los valores de la fila original(los de ese campo), por eso, queria controlar el evento del boton crear para copiar ese valor manualmente. parece ser, que los botones de copia, crear, insertar i quitar fila no se pueden controlar.
gracias.
Responder Con Cita
  #4  
Viejo 24/07/08, 15:16:56
ibecerra
 
Mensajes: n/a
facil quitalo y create tu propio boton copiar dentro del toolbar y hay puede hacer lo que quieras.
paso 1.....
ejemplo
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L0S52 {color: #0000FF;} PERFORM exclude.
donde..
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S52 {color: #0000FF;}FORM exclude.
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S31 {font-style: italic;color: #808080;}.L1S33 {color: #4DA619;}.L1S52 {color: #0000FF;}*Excluimos los botones q no vamos a utilizar.
DATA ls_toolbar_excluding TYPE ui_func.

ls_toolbar_excluding = '&LOCAL&CUT'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&COPY'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&PASTE'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&UNDO'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&INSERT_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&PASTE_NEW_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&APPEND'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&COPY_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&DELETE_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&INFO'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.

SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S33 {color: #4DA619;}.L1S52 {color: #0000FF;} CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'TI_ZTFIH'
is_layout = gs_layout
is_variant = gs_variant
i_save = ''
i_default = 'X'
it_toolbar_excluding = lt_toolbar_excluding --> aqui quitas los botones o el boton de copiar o append. para que puedas crear tu propio boton y hacer lo que quieras....!!! seguimis con lo siguiente.

paso 2.
tienes tus clase definidas
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S52 {color: #0000FF;}class lcl_event_receiver definition.
public section.
METHODS handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S52 {color: #0000FF;} METHODS handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S52 {color: #0000FF;}endclass.
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S31 {font-style: italic;color: #808080;}.L1S52 {color: #0000FF;}class lcl_event_receiver implementation.
METHOD handle_toolbar.
PERFORM handle_toolbar CHANGING e_object.
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S52 {color: #0000FF;} METHOD handle_user_command.
PERFORM handle_user_command USING e_ucomm.
ENDMETHOD. "handle_toolbar



creas tus nuevos botones en tu caso seria la copia o el append.
pero antes ya los eliminastes..
osea lo quitas y lo vuelves a poner pero para personalizarlo.
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S31 {font-style: italic;color: #808080;}.L1S32 {color: #3399FF;}.L1S33 {color: #4DA619;}.L1S52 {color: #0000FF;}FORM handle_toolbar CHANGING e_object
TYPE REF TO cl_alv_event_toolbar_set.

DATA ls_toolbar TYPE stb_button.

* REFRESH ti_fcode.
perform usuario_perm.
IF SY-SUBRC EQ 0.
CLEAR ls_toolbar.
ls_toolbar-butn_type = 3.
CLEAR ls_toolbar.
ls_toolbar-function = 'NUEVO'.
ls_toolbar-icon = ICON_CREATE.
ls_toolbar-quickinfo = text-008.
ls_toolbar-disabled = space.
APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.
ls_toolbar-butn_type = 4.
CLEAR ls_toolbar.
ls_toolbar-function = 'MODIF'.
ls_toolbar-icon = ICON_CHANGE.
ls_toolbar-quickinfo = text-009.
ls_toolbar-disabled = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDIF.
endform

luego colocas la accion por cada boton

SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S31 {font-style: italic;color: #808080;}.L1S32 {color: #3399FF;}.L1S33 {color: #4DA619;}.L1S52 {color: #0000FF;}FORM handle_user_command USING e_ucomm TYPE sy-ucomm.
DATA: et_index_rows TYPE lvc_t_row. "#EC NEEDED
DATA: et_row_no TYPE lvc_t_roid.
DATA: wa_row TYPE lvc_s_roid.
perform usuario_perm.
IF SY-SUBRC NE 0.
MESSAGE s000(zpp) WITH
'No tiene permiso para realizar esta acción'.
ELSE.


Wsyucomm = e_ucomm.
CASE Wsyucomm.
WHEN 'NUEVO'.
CLEAR WZTFIH.
WDESCRIPCION = 'Nuevo Registro'.
CALL SCREEN 200 STARTING AT 5 5.
clear Wsyucomm.
* IF CONTAINER = 'C_ALV_GRID'.
* PERFORM ELIMINA_REGISTRO.
* ENDIF.
WHEN 'MODIF'.
CLEAR WZTFIH.
* Obtener los numeros de filas que se han seleccionado.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no = et_row_no.
IF not et_row_no[] is initial.
LOOP AT et_row_no INTO wa_row.
READ TABLE TI_ZTFIH INDEX wa_row-row_id.
MOVE-CORRESPONDING TI_ZTFIH TO WZTFIH.
WDESCRIPCION = 'Modificar Registro'.
CALL SCREEN 200 STARTING AT 5 5.
ENDLOOP.
clear Wsyucomm.
ENDIF.

ENDCASE.

ENDIF.
ENDFORM.
Responder Con Cita
  #5  
Viejo 24/07/08, 15:18:08
ibecerra
 
Mensajes: n/a
sorry por la cojudes que sale de
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L0S52 {color: #0000FF;}
eso no se porque lo coloca mi editor .. asi q no le hagas caso.
Responder Con Cita
  #6  
Viejo 24/07/08, 15:20:31
ibecerra
 
Mensajes: n/a
facil quitalo y create tu propio boton copiar dentro del toolbar y hay puede hacer lo que quieras.
paso 1.....
ejemplo
PERFORM exclude.
donde..
FORM exclude.
*Excluimos los botones q no vamos a utilizar.
DATA ls_toolbar_excluding TYPE ui_func.
ls_toolbar_excluding = '&LOCAL&CUT'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&COPY'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&PASTE'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&UNDO'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&INSERT_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&PASTE_NEW_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&APPEND'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&COPY_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&LOCAL&DELETE_ROW'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
ls_toolbar_excluding = '&INFO'.
INSERT ls_toolbar_excluding INTO TABLE lt_toolbar_excluding.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'TI_ZTFIH'
is_layout = gs_layout
is_variant = gs_variant
i_save = ''
i_default = 'X'
it_toolbar_excluding = lt_toolbar_excluding --> aqui quitas los botones o el boton de copiar o append. para que puedas crear tu propio boton y hacer lo que quieras....!!! seguimis con lo siguiente.
paso 2.
tienes tus clase definidas
class lcl_event_receiver definition.
public section.
METHODS handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
METHODS handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
endclass.
class lcl_event_receiver implementation.
METHOD handle_toolbar.
PERFORM handle_toolbar CHANGING e_object.
METHOD handle_user_command.
PERFORM handle_user_command USING e_ucomm.
ENDMETHOD. "handle_toolbar

creas tus nuevos botones en tu caso seria la copia o el append.
pero antes ya los eliminastes..
osea lo quitas y lo vuelves a poner pero para personalizarlo.
FORM handle_toolbar CHANGING e_object
TYPE REF TO cl_alv_event_toolbar_set.
DATA ls_toolbar TYPE stb_button.
* REFRESH ti_fcode.
perform usuario_perm.
IF SY-SUBRC EQ 0.
CLEAR ls_toolbar.
ls_toolbar-butn_type = 3.
CLEAR ls_toolbar.
ls_toolbar-function = 'NUEVO'.
ls_toolbar-icon = ICON_CREATE.
ls_toolbar-quickinfo = text-008.
ls_toolbar-disabled = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
ls_toolbar-butn_type = 4.
CLEAR ls_toolbar.
ls_toolbar-function = 'MODIF'.
ls_toolbar-icon = ICON_CHANGE.
ls_toolbar-quickinfo = text-009.
ls_toolbar-disabled = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDIF.
endform
luego colocas la accion por cada boton
FORM handle_user_command USING e_ucomm TYPE sy-ucomm.
DATA: et_index_rows TYPE lvc_t_row. "#EC NEEDED
DATA: et_row_no TYPE lvc_t_roid.
DATA: wa_row TYPE lvc_s_roid.
perform usuario_perm.
IF SY-SUBRC NE 0.
MESSAGE s000(zpp) WITH
'No tiene permiso para realizar esta acción'.
ELSE.

Wsyucomm = e_ucomm.
CASE Wsyucomm.
WHEN 'NUEVO'.
CLEAR WZTFIH.
WDESCRIPCION = 'Nuevo Registro'.
CALL SCREEN 200 STARTING AT 5 5.
clear Wsyucomm.
* IF CONTAINER = 'C_ALV_GRID'.
* PERFORM ELIMINA_REGISTRO.
* ENDIF.
WHEN 'MODIF'.
CLEAR WZTFIH.
* Obtener los numeros de filas que se han seleccionado.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no = et_row_no.
IF not et_row_no[] is initial.
LOOP AT et_row_no INTO wa_row.
READ TABLE TI_ZTFIH INDEX wa_row-row_id.
MOVE-CORRESPONDING TI_ZTFIH TO WZTFIH.
WDESCRIPCION = 'Modificar Registro'.
CALL SCREEN 200 STARTING AT 5 5.
ENDLOOP.
clear Wsyucomm.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM.
__________________
IBF
ARQUITECTO DE DESARROLLO ABAP
Responder Con Cita
  #7  
Viejo 24/07/08, 15:23:20
Ermengol Ermengol is offline
Junior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 6
Muchas gracias, lo pruevo.
Responder Con Cita
  #8  
Viejo 28/07/08, 18:55:35
Avatar de mcarrasco
mcarrasco mcarrasco is offline
Member
 
Fecha de Ingreso: jul 2007
Localización: Venezuela. Pto Ordaz
Mensajes: 71
Exclamation Bueno amigo.!

Hola, ya he pasado por esto varias veces, te adjuntare un codigo y explicare con comentarios.

Efectivamente hay q eliminar los botones estandar y agregar los tuyos. Ahi se ve como lo hago. Se llena una tabla "LT_EXCLUDE" dnd estan todos los botones que se van a quitar.

Te adjunto 2 archivos. La clase que contrlola los eventos y el codigo del programa. Hay un metodo que se encarga de obtener los botones que presiona el usuario, se llama handle_user_command. Echale un ojo

Cualquier duda me avisas
Archivos Adjuntos
Tipo de Archivo: txt clase.txt (5.8 KB, 496 visitas)
Tipo de Archivo: txt prog.txt (10.7 KB, 363 visitas)
__________________

Atte. Marcos Carrasco...
Responder Con Cita
  #9  
Viejo 14/06/10, 14:32:19
SAPING SAPING is offline
Senior Member
 
Fecha de Ingreso: may 2010
Localización: Buenos Aires, Argentina
Mensajes: 199
Exclamation trx estandar

Buenas. Yo tengo el mismo problema pero en una trx estandar. En la trx BP, en una de las solapas donde debo setear un valor, debo hacer click en un boton de un alv el cual no genera eventos en mi grabacion por lo cual no puedo reproducir la accion. Al mismo tiempo, si es que logro reproducir el evento del click sobre el boton, nose si me tomara el valor del campo que deseo seleccionar.
Espero me haya explicado y vean este mensaje.

Gracias. Saludos.
Responder Con Cita
  #10  
Viejo 15/06/10, 14:45:01
SAPING SAPING is offline
Senior Member
 
Fecha de Ingreso: may 2010
Localización: Buenos Aires, Argentina
Mensajes: 199
Exclamation Eventos ALV

Gente, saludos.
Tengo ese problema que no lo puedo resolver.
Necesito, primero, en una solapa de una trx estandar hacer un click sobre un boton del menu de un ALV y seleccionar un valor de la lista que muestra; estos pasos no me generan eventos capturados por la SHDB por lo que no puedo hacer que funcionen en mi Batch Input.
Segundo, al oprimir un boton en la trx en otra solapa, me muestra un popup con un ALV en el cual debo hacer doble click en una de las lineas que muestra; esta parte del doble click en la linea tampoco genera evento por lo que no puedo reproducirla en mi BI.
Alguno tiene alguna forma de solucionar este problema?..

Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 04:06:19.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web