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 13/07/09, 15:16:40
LauraVV LauraVV is offline
Junior Member
 
Fecha de Ingreso: abr 2009
Mensajes: 5
Question Rutinas de Conversión por RFC

Buenas!

Me encuentro con un problemilla... tengo un report en un sistema con una pequeña pantalla de selección que llama por RFC a una función de otro sistema SAP para validar el dato introducido por pantalla. Uno de los campos contiene una rutina de conversión (es de tipo NUMC).
Para que me funcionara, he tenido que crear mi propia rutina de conversión la cual lo único que hace es llamar vía RFC a la auténtica rutina de conversión que está en el otro sistema.

De forma standard, las variables input y output se declaran sin tipo, pero al ser una función RFC me obliga a darles uno y las he declarado como CHAR.
Cuando introduzco un dato válido, me funciona correctamente, me sale el aviso de que se ha introducido un dato válido y me mantiene ese dato en el campo de la pantalla.

El problema viene cuando introduzco uno no válido... me da un Dump. He trampeado el SY-SUBRC poniéndolo a cero para que por lo menos no me salga del Dump y consigo que me salga el aviso de que se ha introducido un dato erróneo, pero ese dato erroneo introducido en la pantalla de selección se borra, no se mantiene. Al debugar, veo que en la función OUTPUT el campo se vuelve ###### y ahí es cuando peta.

¿¿Alguien puede ayudarme??

PD: evidentemente, lo primero que probé es a declararlo como NUMC, pero de esta forma ni siquiera funciona cuando introduzco un dato válido... por eso he tenido que cambiar al CHAR.
Responder Con Cita
  #2  
Viejo 14/07/09, 12:52:16
ibecerra
 
Mensajes: n/a
Puedes mostrar el DUMP, para ver de q se trata

Responder Con Cita
  #3  
Viejo 14/07/09, 13:48:59
LauraVV LauraVV is offline
Junior Member
 
Fecha de Ingreso: abr 2009
Mensajes: 5
El dump que daba era porque de forma standard no recogia la excepción y yo se la he puesto (RAISE NOT_FOUND)

Cuando debugo, lo que veo es que cuando estoy introduciendo un dato no válido, primero pasa por la función 'input' de conversión y cuando salta a la función 'output' de conversión, los parámetros input y output se quedan vacíos o con ceros (supongo que porque en el input hace sus selects y comprobaciones y al no encontrar nada, no le pasa nada a la función 'output') y al estar vacio, lo muestra vacio...

Pensé en poner una variable donde guardar el input de entrada, y en caso de no ser válido el dato hacer que el parámetro output fuera igual a la variable que guardé al principio... pero nada... no sé que más probar...

Cuando lo declaro como numc, es cuando en vez de vacio o ceros me salen ######.
No sé si he conseguido explicarme o si te habré liado más xDD

Gracias igualmente por el interés!
Saludos!
Responder Con Cita
  #4  
Viejo 14/07/09, 14:05:23
ibecerra
 
Mensajes: n/a
creo saber q es lo q pasa con la funcion.
cuando pasas o recibe parametros deben ser del mismo tipo q tiene la funcion. si no es asi te dumpea!!
ejemplo si la funcion recibe char 20 la variable q vas a pasar debe ser de la misma caracteristicas.
saludos
Responder Con Cita
  #5  
Viejo 16/07/09, 15:12:14
LauraVV LauraVV is offline
Junior Member
 
Fecha de Ingreso: abr 2009
Mensajes: 5
Thumbs up

Como dije en el primer email, si pongo el mismo tipo de elemento es cuando no funciona, porque en el sistema RM no existe la tabla donde se realiza la rutina de conversión y no lo hace y lo que le llega a la otra máquina son ceros o ###### (las rutinas de conversión se aplican en el mismo momento en que se declara ya la variable, asique me fallaba ya al principio de todo en la propia declaración del campo, la rutina de conversión en sí ya hace su propia validación de si existe o no lo que se ha introducido)

Al final lo he resuelto de otra forma. He declarado el campo que deseaba validar de tipo char (sin rutina de conversión asociada) y se lo paso a una función RFC de la otra máquina (donde sí estan todas las tablas y datos) y en esa función hago directamente la conversión (sin realizar la rutina de conversión completa, sólo realizo el INPUT para ver si convierte el dato) y si me lo convierte correctamente, devuelvo un cero, y si no lo realiza bien, es porque no existe y devuelvo un uno.

De esta forma, en la máquina de RM no pierdo la entrada que se hizo en el campo de la pantalla de selección y siempre se muestra, además de añadirle un mensaje de error en caso de que la función RFC me devolviera un uno.

El campo de la pantalla se perdia porque cuando la función de la rutina de conversión INPUT fallaba, a la función OUTPUT ya no le llegaba nada y por eso se borraba el campo.

Un problema menos!! Gracias igualmente por la ayuda!

Un saludo!
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 10:03:35.


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