PDA

Ver la Versión Completa : Llamar Una Transaccion Dese Un Alv


johava
14/09/09, 20:11:03
Hola a todos, tengo la siguiente situación he hecho un reporte ALV para mostrar los pagos realizados a un acreedor pero con mayor detalle que la transacción FBL1N (combina datos de Presupuesto, tesoreria, CXP y contabilidad), el objetivo es que cuando se genere la grilla con los datos, el usuario pueda dar doble click en ciertas columnas e invoque transacciones que permmitan visualizar documentos (Ej: para un pago o una cxp llama a la FB03, si es un compromiso debe llamar a la FMZ3 o ME23N, dependiendo si es de MM o PRESUPUESTO), todas me funcionan bien excepto la FMZ3.

los resultados que se obtienen en la FMZ3 son 2:

* Invoca la transacción FMZ3 pero no exporta los datos que pide el programa.

* Siempre muestra los datos del primer documento de la grilla


pongo el codigo utilizado para que alguien me diga que error tengo o como solucionarlo

when 'VREFBN'. "Documento rpc

if t_faccom-wrttp = '65'.
set parameter id 'KBL' field t_faccom-vrefbn.
set parameter id 'KBP' field ''.
call transaction 'FMZ3' and skip first screen.
else.
set parameter id 'BES' field t_faccom-vrefbn.
call transaction 'ME23N' and skip first screen.
endif.


NOTA: anexo pantallazo con los datos de la grilla y de las 2 situaciones que se presentan

gracias
Harold Valencia

Mike
15/09/09, 13:54:27
El problema que veo es que no estas haciendo un read table en la posicion que diste doble click, no puedes hacer directamente if t_faccom-wrttp = '65'. porque t_faccom-wrttp va a ser igual a la ultima posicion que tocaste, tienes que posicionarte en la posicion del doble click.

Si estas haciendolo con funciones, en el evento del user command el parametro slis_selfield-tabindex te dice en donde diste doble clik y si lo estas haciendo con objetos usa el metodo GET_CURRENT_CELL para saber la celda y a partir de alli haces el read table para luego hacer el call transaction.

johava
15/09/09, 16:57:38
MIKE, si estoy haciendo el read, te mando el codigo completo

form user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'. "Doble Click

* Determina el campo (pago, doc compensado, factura, rpc) por el cual se desea ver detalle de documento
read table t_faccom index rs_selfield-tabindex.
if sy-subrc = 0.


case rs_selfield-fieldname.

when 'BELNR'. "Documento de pago

set parameter id 'BLN' field t_faccom-belnr.
set parameter id 'GJR' field t_faccom-gjahr.
set parameter id 'BUK' field t_faccom-bukrs.
call transaction 'FB03' and skip first screen.


when 'REBZG'. "Documento factura

set parameter id 'BLN' field t_faccom-rebzg.
set parameter id 'GJR' field t_faccom-gjahr1.
set parameter id 'BUK' field t_faccom-bukrs.
call transaction 'FB03' and skip first screen.

when 'AUGBL'. "Documento compensación

set parameter id 'BLN' field t_faccom-augbl.
set parameter id 'GJR' field t_faccom-gjahr2.
set parameter id 'BUK' field t_faccom-bukrs.
call transaction 'FB03' and skip first screen.

when 'VREFBN'. "Documento rpc

if t_faccom-wrttp = '65'.
set parameter id 'KBL' field t_faccom-vrefbn.
set parameter id 'KBP' field ' '.
call transaction 'FMZ3' and skip first screen.
else.
set parameter id 'BES' field t_faccom-vrefbn.
call transaction 'ME23N' and skip first screen.
endif.



endcase.


endif.
endcase.


endform. "USER_COMMAND

Atlas
16/09/09, 12:47:28
me paso lo mismo, al final como no averigüe por que, lo arregle haciendo un call transaction using bdcdata ( una chapuza, lo se )

johava
18/09/09, 21:56:05
Gracias Atlas, me funciono bien el USING