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/09/07, 08:44:15
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Red face Pasar mas de 1parámetro a funcion

Hola a todos!

Alguien sabe si en éste cachito de código:

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


Se llama a la funcion ME23N y se le pasa el numero de documento de compras, ya que para acceder a dicha transacción sólo se pide el numero de documento de compras. Pero...si entro a una transacción que me pide mas de uno..se puede hacer?? Puedo pasarle a la funcion mas de un valor???

No se si me explico demasiado bién...
Responder Con Cita
  #2  
Viejo 24/09/07, 11:14:00
Avatar de nenuke
nenuke nenuke is offline
Member
 
Fecha de Ingreso: sep 2006
Localización: Madrid
Mensajes: 87
Hola,

tienes que hacer algo parecido a esto:

*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> R_UCOMM *
* --> RS_SELFIELD *
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

IF r_ucomm = '&IC1' AND rs_selfield-sel_tab_field = '1-ANLN1'.

*Lees la tabla que contiene los datos del listado
*usando como clave el campo donde ha pinchado el usuario.

read table li_itab with key anln1 = rs_selfield-value.

SET PARAMETER ID 'AN1' FIELD rs_selfield-value.
SET PARAMETER ID 'AN2' FIELD li_itab-anln2.
SET PARAMETER ID 'BUK' FIELD li_itab-bukrs.

CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN.

ENDIF.


ENDFORM. "user_command


Donde li_itab es la tabla que le pasas al ALV o donde contengas los datos para generar tu listado.

Un saludo.
Responder Con Cita
  #3  
Viejo 24/09/07, 12:34:28
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
oK...pero...

Oki..por lo que veo si se pueden pasar mas valores pero es que a veces en un campo de una transacción le doy a F1 encima de el y no me sale su "ID parámetro". Significa que entonces no lo puedo usar. Mi caso concreto es en la transacción CS15. Le paso al campo MAT un número de material..pero mas a bajo quiero qe me marque la opcion "directa" en "clase de utilización"...es possible eso? Como ya he dicho..este campo no ofrece un campo "ID parámetro" si me pongo encima y le doy a F1..que puedo hacer????
Responder Con Cita
  #4  
Viejo 24/09/07, 13:13:58
sap2006 sap2006 is offline
Senior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 134
Primero decirte que estas llamando a una transacción no una función.
Tienes varias opciones de hacerlo:

1.- Si lo haces con un call transaction puedes añadir la coletilla "using itab".
Esto lo que te permite es hacer un B.I. Para ello tendras que hacer una
grabación de la transaccion CS15 ( Sistema->Servicios->Batch Input-> Grabacion).
Donde:
DATA: itab TYPE TABLE OF BDCDATA occurs 0 with header line.

te paso tambien un form que te vendra bien que sera donde meteras la grabacion que has hecho antes que sera del tipo:

PERFORM dynpro USING: 'X' 'ZPCEDTE0' '1000',
' ' 'BDC_OKCODE' '=%154',

*&---------------------------------------------------------------------*
*& Form dynpro
*&---------------------------------------------------------------------*
FORM dynpro USING p_dynbegin
p_campo
p_valor.

CLEAR bdcdata.

IF p_dynbegin EQ 'X'.
MOVE: p_campo TO bdcdata-program,
p_valor TO bdcdata-dynpro,
p_dynbegin TO bdcdata-dynbegin.
ELSE.
MOVE: p_campo TO bdcdata-fnam,
p_valor TO bdcdata-fval.
ENDIF.
APPEND bdcdata.
ENDFORM. " dynpro

Una vez tengas itab rellena solo te queda llamar al call transacion:

CALL TRANSACTION 'CS15' USING ITAB
MODE 'N' "N->Oculto, A->Ves las pantallas, E->si
UPDATE 'S' "hay error.


2. Puedes hacer un submit al programa que este asociado dicha transaccion, lo veras en sistema->status nombre del programa.

la llamada seria del tipo:

SUBMIT zpcedte0 WITH SELECTION-TABLE parametros
* TO SAP-SPOOL SPOOL PARAMETERS params
* WITHOUT SPOOL DYNPRO
AND RETURN.

donde parametros seria del tipo:
DATA: parametros LIKE rsparams OCCURS 0 WITH HEADER LINE.

Espero que con esta ayudita te sirva!! Si te atascas no dudes en preguntar.

Saludos!!

Úlima edición por sap2006 fecha: 24/09/07 a las 13:17:06.
Responder Con Cita
  #5  
Viejo 24/09/07, 14:14:58
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Ok..a ver....

De momento he hecho é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
PERFORM DYNPRO USING:
'X' 'SAPMC29L' '0200',
' ' 'BDC_CURSOR''RC29L-DIRKT',
' ' 'BDC_OKCODE' '=CSN2',
' ' 'RC29L-MATNR' '4000',
' ' 'RC29L-DIRKT' 'X',
' ' 'RC29L-MATTP' 'X',
' ' 'RC29L-DATUV' 'SY-DATUM'
'X' 'SAPMC29L' '0205',
' ' 'BDC_CURSOR''RC29L-EMENG'
' ' 'BDC_OKCODE' '=CSGO',
' ' 'RC29L-WERKS' 'CENT'.
ENDCASE.
CALL TRANSACTION 'CS15' USING IT_BDCDATA MODE 'N'.
ENDFORM. "USER_COMMAND

Manteniendo mi código del ALV..le digo que en vez de hacer lo de antes...ahora realice el batch-input y luego llame a la transacción.
Por otro lado he declarado el form del dynpro como tu me has dicho (lo unico que he llamado a mi tabla it_bdcdata.:

FORM DYNPRO USING P_DYNBEGIN
P_CAMPO
P_VALOR.

CLEAR IT_BDCDATA.

IF P_DYNBEGIN EQ 'X'.
MOVE: P_CAMPO TO IT_BDCDATA-PROGRAM,
P_VALOR TO IT_BDCDATA-DYNPRO,
P_DYNBEGIN TO IT_BDCDATA-DYNBEGIN.
ELSE.
MOVE: P_CAMPO TO IT_BDCDATA-FNAM,
P_VALOR TO IT_BDCDATA-FVAL.
ENDIF.
APPEND IT_BDCDATA.
ENDFORM. "DYNPRO

Una vez echo todo esto te puedo decir que me da un error entre el numero de parametros que recibe el FORM DYNPRO y los que se le pasan en realidad...pero no se ver porque. También he estado mirando en internet y primero abren el juego de datos..luego lo cierran y otras cosas mas. Eso no s necesario??
Responder Con Cita
  #6  
Viejo 24/09/07, 14:36:02
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Ok...medio resuelto

Ok..he arreglado los errores en compilacion. Lo que pasa es que ejecuto el programa y cuando le doy al número de material no hace nada.

He comprobado que la tabla it_bdcdata se rellena con los campos tal y como en el batch-input.

Asi que nose que es lo que debe pasar...
Responder Con Cita
  #7  
Viejo 24/09/07, 14:56:55
sap2006 sap2006 is offline
Senior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 134
Pon el modo 'A' en el call transaction para que puedas visualizar pantalla por pantalla lo que hace, asi será mas facil saber porque no mete el valor...
El valor se lo metes literal o lo metes con una variable?¿
Responder Con Cita
  #8  
Viejo 24/09/07, 15:41:29
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Solucionado!

Ya me funciona...al final he utilizado ésta sentencia:

CALL TRANSACTION 'CS15' USING IT_BDCDATA MODE 'E'.

Primero la he pusto en Modo 'A'...y he visto pantalla por poantalla como iba haciendo lo que queria. Luego lo he puesto en MODE E y ya me ha funcionado.

Eres un hacha!!!! ;-)

Muchissimas 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 01:28:24.


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