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 20/09/07, 08:06:11
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Talking

oK! Ya lo tengo funcionando. Al finla mi código ha sido el siguiente:

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
CHECK NOT P_SELFIELD-VALUE IS INITIAL.
READ TABLE IT_OUT INDEX P_SELFIELD-TABINDEX.
SET PARAMETER ID 'BES' FIELD P_SELFIELD-VALUE.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN..
ENDCASE.
ENDFORM. "USER_COMMAND

Lo único que no enteiendo es lo de:
SET PARAMETER ID 'BES' FIELD P_SELFIELD-VALUE.

Porque me lo habeis dicho...pero yo otra vez como sabre que si al EBELN le equivale un BES....a un MATNR...que le equivale??? Hay alguna tabla de equivalencias para ésto???

Bueno...grácias a todos por vuestra ayuda...ha costado pero ha valido la pena!!
Responder Con Cita
  #8  
Viejo 20/09/07, 08:32:15
Avatar de melerogalan
melerogalan melerogalan is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Murcia
Mensajes: 142
Smile

Es muy facil compañero.
Cuando tu ejecutas cualquier transaccion(cualquier cosa en general), si pones el cursor del raton sobre cualquier sitio, en nuestro ejemplo, en la casilla donde se introduce el numero de material y le das a F1 te sale la ayuda, abajo vendrá un botón llamado 'DATOS TECNICOS', en esa hoja que te aparece te viene información muy importante como los datos para hacer un batch input (nombre del campo que debes incluir) y otras cosas, entre ellas te viene el ID del parametro para utilizarlo en estas ocasiones.
Si quieres mas aclaraciones, pregunta.
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 17:42:17.


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