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 17/09/07, 13:05:14
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Acciones en ALV

Hola a todos!

Sólo os quería preguntar una cosilla. He hecho un ALV que lista los documentos de compra de material. Lo que passa es que he visto ALV's en los que cuando por ejemplo le das al número de documento de compras en el mismo ALV...te redirije a otra transacción...o a otro lado para poder ver ése documento de compras. En mi ALV si le doy a un número de documento de compras...no passa nada.

Alguien sabe porque???
Responder Con Cita
  #2  
Viejo 17/09/07, 14:37:08
ibecerra
 
Mensajes: n/a
lo que deseas es darle doble click al campo donde se encuentra el documento y q llame una transaccion estandar para poder visualizarla si es asi..
te adjunto el codigo
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'it_alv_ind'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_save = g_save
is_variant = g_variant
it_events = gt_events[]
is_print = gs_print
TABLES
t_outtab = it_alv_ind
EXCEPTIONS
program_error = 1
OTHERS


*---------------------------------------------------------------------*
* FORM user_command *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> PA_UCOMM *
* --> PA_TABLA *
*---------------------------------------------------------------------*
Este es un ejemplo en este caso llamo a la transaccion FB03 para ver un documento contable..

FORM user_command USING pa_ucomm LIKE sy-ucomm
pa_tabla TYPE slis_selfield.
WHEN '&IC1'.
CHECK NOT pa_tabla-value IS INITIAL.
READ TABLE it_alv_ind INDEX pa_tabla-tabindex.
CASE pa_tabla-sel_tab_field.
WHEN 'IT_ALV_IND-BELNR'.
SET PARAMETER ID 'BLN' FIELD pa_tabla-value.
SET PARAMETER ID 'BUK' FIELD it_alv_ind-bukrs.
SET PARAMETER ID 'GJR' FIELD it_alv_ind-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDFORM
Responder Con Cita
  #3  
Viejo 17/09/07, 15:35:20
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Unhappy Una última ayuda

Gracias por el código. Lo he estado mirando y utiliza la misma función que para mostrar el ALV que mi código. El problema es que al compilar-lo me da un montón de errores como la variable g_repid, etc.... No acabo de saber como montar-lo. Lo veo...pero nose cómo...me podrias ayudar?? Mi codigo de ALV és éste:

Primero ejecuto el catálogo en un form:

FORM CATALEG_ALV.
SORT IT_OUT BY TEXT EBELN.
CLEAR IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'EINDT'.
WA_FIELDCAT-REF_FIELDNAME = 'EINDT'.
WA_FIELDCAT-REF_TABNAME = 'MDBS'.
WA_FIELDCAT-OUTPUTLEN = 16.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-REF_FIELDNAME = 'MATNR'.
WA_FIELDCAT-REF_TABNAME = 'EKPO'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'TXZ01'.
WA_FIELDCAT-REF_FIELDNAME = 'TXZ01'.
WA_FIELDCAT-REF_TABNAME = 'EKPO'.
WA_FIELDCAT-OUTPUTLEN = 35.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'TEXT'.
WA_FIELDCAT-REF_FIELDNAME = 'TEXT'.
WA_FIELDCAT-SELTEXT_L = 'Proveedor'.
WA_FIELDCAT-OUTPUTLEN = 30.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-REF_FIELDNAME = 'MENGE'.
WA_FIELDCAT-REF_TABNAME = 'EKPO'.
WA_FIELDCAT-OUTPUTLEN = 13.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-REF_FIELDNAME = 'MEINS'.
WA_FIELDCAT-REF_TABNAME = 'EKPO'.
WA_FIELDCAT-OUTPUTLEN = 4.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-REF_FIELDNAME = 'EBELN'.
WA_FIELDCAT-REF_TABNAME = 'EKPO'.
WA_FIELDCAT-OUTPUTLEN = 17.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BEDAT'.
WA_FIELDCAT-REF_FIELDNAME = 'BEDAT'.
WA_FIELDCAT-REF_TABNAME = 'EKKO'.
WA_FIELDCAT-OUTPUTLEN = 14.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'PEINH'.
WA_FIELDCAT-REF_FIELDNAME = 'PEINH'.
WA_FIELDCAT-REF_TABNAME = 'EIPA'.
WA_FIELDCAT-OUTPUTLEN = 7.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'PREIS'.
WA_FIELDCAT-REF_FIELDNAME = 'PREIS'.
WA_FIELDCAT-REF_TABNAME = 'EIPA'.
WA_FIELDCAT-OUTPUTLEN = 12.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ENTREGA'.
WA_FIELDCAT-REF_FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_L = 'Por entregar'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE2'.
WA_FIELDCAT-REF_FIELDNAME = 'MENGE'.
WA_FIELDCAT-REF_TABNAME = 'EKPO'.
WA_FIELDCAT-SELTEXT_L = 'Ctd. EM'.
WA_FIELDCAT-OUTPUTLEN = 12.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'IMPORT'.
WA_FIELDCAT-REF_FIELDNAME = 'IMPORT'.
WA_FIELDCAT-SELTEXT_L = 'Importe'.
WA_FIELDCAT-OUTPUTLEN = 12.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
ENDFORM. "CATALEG_ALV


Luego voy a por el layout:

FORM LAYOUT_ALV USING LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
LS_LAYOUT-ZEBRA = 'X'.
LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. "LAYOUT_ALV


Y finalmente (que creo que es donde debo modificar mayoritáriamente) llamo a la función:

FORM MOSTRAR_ALV.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = IT_FIELDCAT
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = GS_LAYOUT
TABLES
T_OUTTAB = IT_OUT
.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM. "MOSTRAR_ALV

Como ves mi tabla de salida es la IT_OUT.

Nose--si me podrias ayudar con ésto...sy lo haces lo único que podré darte es mi gratitud...pero creeme que a mi me seria de gran ayuda.

Gracias por tu tiempo,

Un saludo!
Responder Con Cita
  #4  
Viejo 17/09/07, 15:57:36
ibecerra
 
Mensajes: n/a
esto es lo que tienes ok .. esta bien lo unico q deberias d hacer es lo siguiente
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = IT_FIELDCAT
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = GS_LAYOUT
TABLES
T_OUTTAB = IT_OUT
*------------------------------------------------------------------------
*---------------------------------------------------------------------*
* FORM user_command *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> PA_UCOMM *
* --> PA_TABLA *
*---------------------------------------------------------------------*
FORM user_command USING pa_ucomm LIKE sy-ucomm
pa_tabla TYPE slis_selfield.
WHEN '&IC1'.
CHECK NOT pa_tabla-value IS INITIAL.
READ TABLE IT_OUT INDEX pa_tabla-tabindex.
CASE pa_tabla-sel_tab_field.
WHEN 'IT_OUT-tucampo'.
SET PARAMETER ID 'BLN' FIELD pa_tabla-value.
-- tus valor o pedido de compra
CALL TRANSACTION 'tu transaccion' AND SKIP FIRST SCREEN.

ENDFORM
Responder Con Cita
  #5  
Viejo 18/09/07, 07:38:09
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Problema con "When"

Hola amigo!

Ante todo gracias por contestar!! Me sirve de mucho todo esto!

He estado probando el codigo y lo único que falla es que me da un error en el

WHEN '&IC1'.

No me hara falta abrir una estructur de tipo "WHEN"??

Imagino que el "&IC1" debe ser el valor asociado al click de ratón no???
Responder Con Cita
  #6  
Viejo 18/09/07, 08:37:23
Avatar de melerogalan
melerogalan melerogalan is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Murcia
Mensajes: 142
Red face

Para utilizar el when...debes de abrir el case, asi es la estrutura:
Case <var>.
when valor1.
....
when valor2.
...
endcase.

Saludos.
Responder Con Cita
  #7  
Viejo 18/09/07, 10:24:57
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Pero...CASE que???

Pos eso...que eso del when lo tengo claro. Pero segun está hecho el código....seria CASE que?

Grácias a todos por contestar!
Responder Con Cita
  #8  
Viejo 18/09/07, 10:45:54
Avatar de melerogalan
melerogalan melerogalan is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Murcia
Mensajes: 142
Cool

Seria case pa_ucomm.
En esta variable se almacena el boton que pulsas en el alv, en el ejemplo es el clic l oque tiene almacenado, que creo que es lo que buscas, que al hacer click se te vaya a un docuemnto o material.

Espero que ahora te funcione

Pd- Si no te va todavia, yo tengo echo algo similar pero en lugar de materiales accedo a la visualizacion de unos pedidos al hacer click y el pedido sale en el alv subrayado como si fuera un hiperenlace, sin cambiar el color, solo subrayado.

Úlima edición por melerogalan fecha: 18/09/07 a las 10:53:32.
Responder Con Cita
  #9  
Viejo 18/09/07, 13:27:04
ibecerra
 
Mensajes: n/a
melerogalan Tiene razon.. la sentencia deberia decir lo siguiente.
pero asumia yo que conocias un poco mas abap por eso reduje el codigo

*---------------------------------------------------------------------*
* FORM user_command *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> PA_UCOMM *
* --> PA_TABLA *
*---------------------------------------------------------------------*
FORM user_command USING pa_ucomm LIKE sy-ucomm
pa_tabla TYPE slis_selfield.
CASE pa_ucomm.
WHEN '&IC1'.
CHECK NOT pa_tabla-value IS INITIAL.
READ TABLE IT_OUT INDEX pa_tabla-tabindex.
CASE pa_tabla-sel_tab_field.
WHEN 'IT_OUT-tucampo'.
SET PARAMETER ID 'BLN' FIELD pa_tabla-value.
-- tus valor o pedido de compra
CALL TRANSACTION 'tu transaccion' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM
Responder Con Cita
  #10  
Viejo 19/09/07, 11:02:48
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Casi Casi está! ;-)

Hola a todos!

He estado probando varias cosillas y al final trasteando por ahí, he conseguido algo parecido. Ahora los pedidos me salen subrayados y efectivamente cuando le doy a uno me redirige a la ME23N!!! És decir que funciona casi casi a la perfección...si no fuera porque siempre me coge el mismo número de pedido....es decir...le importa un bledo a que número de pedido le de...el siempre coge el mismo. Tendrá que ver con ésto?

FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
CASE P_UCOMM.
WHEN '&IC1'. " SAP standard code for double-clicking
SET PARAMETER ID 'EBELN' FIELD P_SELFIELD-VALUE.
CALL TRANSACTION 'ME23N'.
ENDCASE.

ENDFORM.

Éste es mi código...veis algo mal???

Grácias a todos por vuestro tiempo!
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 05:00:28.


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