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 11/03/09, 20:42:56
acha3318 acha3318 is offline
Senior Member
 
Fecha de Ingreso: abr 2008
Localización: Cali - Colombia
Mensajes: 182
Function 'reuse_alv_popup_to_select'

Hola a todos,

Estoy usando la función CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT', para mostrar una lista de SOLPED, la pregunta es: ¿Como hago para que desde este ALV, haga click sobre un registro y me muestre la SOLPED y ejecute la ME53N?
Alguién sabe algún truco sobre esta función ? Gracias por sus respuestas

ACHA
Responder Con Cita
  #2  
Viejo 12/03/09, 10:42:31
ongo ongo is offline
Member
 
Fecha de Ingreso: ago 2007
Mensajes: 45
Buenas,

Con esa función en el alv puedes poner que un campo sea de tipo check box utilizando la linea i_checkbox_fieldname. En tu tabla interna pones un char de 1 y en esa linea de la función pones el nombre del campo tipo char1.
Si te fijas en tables t_outtab la función te devuelve la tabla que tu le digas. Los registros que hayas elegido en el pop up tendran una X en el campo de tipo char1. Luego puedes hacer un loop a esta tabla donde el campo ese tenga la X y ejecutar el programa o transacción ke necesites.

Espero haberte ayudado en algo.

Un saludo,

Ongo
Responder Con Cita
  #3  
Viejo 12/03/09, 12:17:31
acha3318 acha3318 is offline
Senior Member
 
Fecha de Ingreso: abr 2008
Localización: Cali - Colombia
Mensajes: 182
Gracias por responder, pero te cuento, eso que me dices ya lo tengo hecho para mostrar una lista de SOLPED, esa lista es para rechazarlas y la "X" en el campo es para identificar las que seran rechazadas, pero el usuario quiere ahi que sobre la lista, poder hacer doble click y entrar a revisar la SOLPED en la transacción ME53N. Se que con esta linea de la función i_callback_user_command = 'USER_COMMAND' se puede hacer pero no he logrado hacerla funcionar no se que tanto debo tener antes para que funcione

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = 'Modos:'
i_selection = ' '
i_zebra = 'X'
i_tabname = 'TI_MODOS'
it_fieldcat = ti_cat1
i_callback_program = l_repid
i_callback_user_command = 'USER_COMMAND'
IMPORTING
es_selfield = l_selfield
e_exit = l_exit
TABLES
t_outtab = ti_modos
EXCEPTIONS
program_error = 1
OTHERS = 2.

Les agradezco si alguién me puede ayudar...


Responder Con Cita
  #4  
Viejo 12/03/09, 14:32:09
ongo ongo is offline
Member
 
Fecha de Ingreso: ago 2007
Mensajes: 45
Buenas,

Yo para esas cosas utilizo la función POPUP_WITH_TABLE_DISPLAY. Aquí pinchas una linea y la función te devuelve la linea que has elegido. Después puedes hacer un read a tu tabvla injterna y el call a la transacción.

A ver si esta vez si te vale
Responder Con Cita
  #5  
Viejo 12/03/09, 16:26:23
acha3318 acha3318 is offline
Senior Member
 
Fecha de Ingreso: abr 2008
Localización: Cali - Colombia
Mensajes: 182
Vale, voy a probar la función POPUP_WITH_TABLE_DISPLAY y te cuento como me fué.

Gracias.

Responder Con Cita
  #6  
Viejo 12/03/09, 17:19:04
Avatar de Jonathan Barrio Rodriguez
Jonathan Barrio Rodriguez Jonathan Barrio Rodriguez is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Localización: MADRID
Mensajes: 199
En cuanto al REUSE_ALV_POPUP_TO_SELECT, funcionará igual que la función de ALV?

Podrías probar a verificar las líneas rojas...

"controla que si selo pones en mayusculas el "user_command" a continuación tb, y que esté igual escrito

FORM user_command USING r_ucomm rs_selfield TYPE slis_selfield.
DATA:
answer.
DATA p_ref1 TYPE REF TO cl_gui_alv_grid.

l_okcode = r_ucomm.
CASE sy-ucomm. "ANTES R_UCOMM.
*====================================================================*
*
WHEN 'RENOVAR'.
*________________________________________________________________*
CLEAR: code.
status = '9001'.
* Función que actualiza la tabla interna con los valores modificados en el alv, en este caso el
* valor del campo flag, el cual hemos modificado para indicarlo para borrado.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = p_ref1.
CALL METHOD p_ref1->check_changed_data.

* RS_SELFIELD-IGNORE_MULTI = 0.
*====================================================================*
* tabla buffer para recargar el box seleccionado registros seleccionados.
* si las ordenes del usuario son volver.
REFRESH: tabla_alv_buffer. tabla_alv_buffer[] = tabla_alv[].
*____________________________________________________________________*

No sé si esto te puede ayudar o es lo que pedías, por si sirve.
__________________
Barrio Rodriguez, Jonathan.
_____________________________________
"No sigas a quien haya encontrado la verdad sino a quien la busque"
Responder Con Cita
  #7  
Viejo 13/03/09, 12:28:42
acha3318 acha3318 is offline
Senior Member
 
Fecha de Ingreso: abr 2008
Localización: Cali - Colombia
Mensajes: 182
Saludos a todos, muchas gracias a los abaperos que intentaron ayudarme, pero ya solucioné el caso y para todos los que estuvieron pendientes explico como se soluciona:

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = 'RECHAZAR SOLICITUDES DE PEDIDOS'
i_selection = ' '
i_zebra = 'X'
i_screen_start_column = 1
i_screen_start_line = 1
i_screen_end_column = 130
i_screen_end_line = 20
it_fieldcat = lt_fieldcat
i_tabname = 'TI_SOLPEDS'
i_checkbox_fieldname = 'CHECK'
i_callback_program = l_repid
i_callback_user_command = 'USER_COMMAND'
IMPORTING
es_selfield = l_selfield
e_exit = l_exit
TABLES
t_outtab = ti_solpeds.

Yo intentaba usar esta función para mostrar mis datos de SOLPED donde adicioné un campo para manejarlo como checkbox, y asi mas adelante evaluar si estaba con X o no. Pero además intentaba dar doble click sobre el numero de SOLPED para consultar sobre la ME53N, pero esta función no me proporciona la opción de manejar eventos sobre el ALV, osea que no sirve para mi propósito de doble click.

La función para este propósito es:

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = l_repid
is_layout = wa_layout
it_fieldcat = lt_fieldcat
i_default = 'X'
i_save = 'A'
it_events = ti_events
TABLES
t_outtab = ti_solpeds
EXCEPTIONS
program_error = 1
OTHERS = 2.

Esta función además de propórcionarme las mismas bondades de la anterior, me permite manejar eventos mediante el parametro (it_events), aqui traigo todos los eventos en especial el USER_COMMAND que son los eventos hechos por el usuario final, veamos como obtengo los eventos:

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = l_type
IMPORTING
et_events = ti_events.

* Leer evento 'TOP_OF_PAGE'
READ TABLE ti_events WITH KEY name = slis_ev_top_of_page
INTO wa_events.
* Asignar Rutina FORM 'TOP_OF_PAGE' a evento
IF sy-subrc = 0.
MOVE slis_ev_top_of_page TO wa_events-form.
MODIFY ti_events FROM wa_events INDEX sy-tabix.
ENDIF.

Ya teniendo en la tabla interna ti_events los eventos que deseo manejar construyo la rutina USER_COMMAND, para evaluar cuando se hace doble click asi:

FORM user_command USING ucomm LIKE sy-ucomm
sfields TYPE slis_selfield.

DATA: l_objectname TYPE tstc-tcode.

* Hace una copia de los registros antes de regresar
ti_solpeds_bakup[] = ti_solpeds[]
.
* Rescatar el registro seleccionado.
IF sfields-tabname EQ 'TI_SOLPEDS'.
READ TABLE ti_solpeds INDEX sfields-tabindex.
ENDIF.

* Selección de opción.
CASE ucomm.
* DOUBLE CLICK.
WHEN '&IC1' OR '&ICM'.
* Evaluar valor de campo seleccionado.
CHECK NOT sfields-value IS INITIAL.

CASE sfields-fieldname.

* ########################################################
* ##### Solicitud de Pedido. #####
* ########################################################
WHEN 'BANFN'.
MOVE sfields-value TO sy-lisel.
SET PARAMETER ID 'BAN' FIELD sy-lisel. "BANFN Numero de Solicitud de Pedido
CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.
WHEN 'MATNR'.
MOVE sfields-value TO sy-lisel.
SET PARAMETER ID 'MAT' FIELD sy-lisel. "Material
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

WHEN OTHERS.
* DO NOTHING !!!
ENDCASE.

WHEN OTHERS.
* DO NOTHING !!!
ENDCASE.

IF sfields-tabname EQ 'TI_SOLPEDS'.
* Hago el refresh en el ALV.
ti_solpeds[] = ti_solpeds_bakup[].
* PERFORM seleccionar_datos.
sfields-refresh = 'X'.
ENDIF.

ENDFORM. "user_command

Espero que estos datos les sirva a alguien mas que desea hacer algo parecido

Gracias,

ACHA
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 03:33:06.


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