MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   RFC que genera idoc (foro/showthread.php?t=42803)

budista1 15/04/11 13:29:47

RFC que genera idoc
 
Hola,
tengo una RFC que coje información del sistema BSI y luego genera unos idocs, que son copia del estandard ORDERS05.
Nunca he trabajado con idocs,disculpadme si no me expreso bien.
He metido todos los parámetros en import y algunos los he agrupado en un Table type que tb van a Import.
En Export y tables no metí nada.

La cuestión es saber como relleno el código de la RFC.

Este código va troceado (Split). Os paso una parte del diseño que desconozco como hay que hacerlo:

MUCHAS GRACIAS POR VUESTRA AYUDA!

General Split criteria: First step, we will base on
• Offer type (only one per offer)
• Sales organization (only one per offer)
• Distribution channel (only one per offer)

.................

Second step, parameter Plant, by default, we’ll always split between items ‘without
plant’ and ‘with plant’, real and virtual. But we will include in our ‘hardcoding table’ the
companies/sales areas that will split per plant, not only per generic and real.

Then depending on offer type we will have several rules to split or group.

1) Normal Specific Offer (‘OFNS’)

a) Fixed Prices/Non-Fixed Prices (P_PR_FIX = ‘Y)
This parameter will be at header level in the offer.
i) If It is an offer with Fixed Prices, we will create a contract type ‘ZCQ’
ii) If it is and offer with Non-Fixed Prices, we will create a contract type ‘ZCP’

Jonathan Barrio Rodriguez 16/04/11 00:45:24

Hola budista1.
Me hace mucha gracia tu nick, siento atracción por esa filosofía ;)

No acabo de entender tu consulta ni la forma de implementar el desarrollo así que te daré alguna indicación a ver si te sirve.

Al usar el IMPORT, supongo que ya tienes la información del IDOC en memoria.
En cualquier caso, por si te sirve, EDIDC y EDID4.
Una Tx para visualizar el IDOC es WE30.

Si la infor tienes que mandarla por función RFC, simplemente fíjate a qué sistema llama la función, o sea, la IP o el nombre de sistema que viene tras el nombre de función y los dos puntos.

Entra en el sistema al que se envia y busca la función para saber sus parámetros de entrada y comprobar que le estás enviando desde la función del 1er sistema.

No hace falta que uses split, parece que el IDOC viene con una línea formada por distintos valres y con un determinado formato. Por este motivo podrías manejar el offset. Por ejemplo:
• Offer type (only one per offer)
idoc1-linea1(4) = var1
• Sales organization (only one per offer)
idoc1-linea1+4(4) = var2
• Distribution channel (only one per offer)
idoc1-linea1+08(4) = var3

De este modo si en la línea de idoc viniera el valor
VENT00250001
La información quedaría:
Var1 = 'VENT' "Tipo de Oferta
Var2 = '0025' "Organización de ventas
Var3 = '0001' "Canal de distribución
No sé si me explico.

Por lo que parece en las indicaciones del analista, solicitan que según el tipo de información que llegue el envío de los parámetros por RFC debe variar. Bueno, esto ya sabes, crear variable e ir llenándolos con determinados valores según la casuística que se dé.

Espero que algo te sirva.
Saludos.

budista1 17/04/11 09:10:12

un ejemplo de RFC que genera iDocs?
 
Hola Jonathan,
celebro que te guste mi nik. Se necesita mucha filosofía budista para afrontar Sap jeje.

Me has dado un poco de idea de cómo hacer el código, aunque un código real sería mucho más claro, gracias en todo caso.
Alguien tiene un ejemplo real de RFC que genera idocs?
¿Cómo tendría que probar la RFC para ver si funciona?

Saludos abaperos!:confused:

Jonathan Barrio Rodriguez 18/04/11 05:45:29

Ahora mismo no te puedo contestar bien y de forma extensa.
Casi es mejor que pegues tú el código que tienes y te vamows guiando.

La cuestión es que sepas el nombre del sistema destino y luego lo pones en la función como dije:


call function 'ZFUNCION': 'SISTEMA_DESTINO'

Y LOS parámetros correspondientes.
Estos parámetros tienen que ser los mismos que contiene de entrada la función en el sistema destino (porque la función a la que llamas debe existir en el sistema destino ).

Debes controlar los errores de validación de usuario. Esto se hace mediante las EXCEPTIONS de la función a la que llamas. Normalmente te sale la pantalla de logon para continuar con el proceso.

Por otro lado veo que lo que quieres es una función o BAPI que cree el IDOC. Esto en principio ni idea. Puedo mirar mis apuntes a ver que tengo por ahí.
El camino más facil que te planteo es quqe hagas un batch input con los datos que te dan.

Así a bote pronto es lo que te puedo contar.
Creo que tenía un ejemplo por aquí, a ver si lo encuentro y te lo pego.

Jonathan Barrio Rodriguez 18/04/11 06:43:35

Budista1, un pequeño detalle que se me había pasado.

La conexión tiene que estar creada.
Creo que puedes verificar esto por la transación SM59.

Si no lo está no sé es si esto debes hacerlo tú o se encargarían Basis, o sea, los administradores de SAP. Puedes consultarles a ver si está creada alguna conexión con la máquina a la que quieres enviar la información con la que emite y que te digan el nombre de dicha conexión o si es la dirección IP, y si no existe, si te la crean ellos.


Husos Horarios son GMT. La hora en este momento es 18:36:55.

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