Envío y Recepción de IDOCs Por HTTP en Formato XML

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 17

ENVO Y RECEPCIN DE IDOCS POR HTTP EN FORMATO XML

Queremos utilizar la interfase IDOC para una interfase con un software externo utilizando el
protocolo HTTP y el formato XML. Esta configuracin tiene diversas ventajas:

El protocolo estndar HTTP es ampliamente conocido.


El formato estndar XML es tambin ampliamente conocido.
No hay ficheros fsicos para el traspaso de datos, por lo que simplifica la interfase al no
tener que gestionarlos.
La interfase IDOC es un estndar en SAP, al que muchos fabricantes de software no
SAP quieren adaptarse.
La interfase IDOC, al contrario del uso de BAPIs por ejemplo, tiene una gestin de
errores ms amplia y permite revisar a posteriori los datos enviados o recibidos,
puesto que los IDOCS quedan registrados en SAP. Tambin permite reprocesar IDOCS
que por alguna razn no haban podido ser contabilizados.

Este documento es una gua de ejemplo para configurar el sistema SAP mediante el envo de
un maestro de material a un servidor HTTP externo, y la recepcin de otro maestro de material
enviado desde un servidor HTTP externo a SAP.

ENVO DE IDOCS POR HTTP EN FORMATO XML

SERVIDOR HTTP DE PRUEBAS


Para hacer pruebas, necesitamos un servidor HTTP. Una opcin sencilla y gratuita es utilizar el
servicio PutsReq.

1. Accedemos a la web de PutsReq http://putsreq.com/ y clicamos en el botn Create a


PutsReq. No hace falta crear ninguna cuenta.
2. Inicialmente vemos una pantalla que nos indica la URL, con un pequeo trozo de cdigo, y
al final el texto No requests found. La parte importante aqu es el texto que hay despus
de http://putsreq.com o sea /zhxDaOGDQQVx6MXpjXot
3. En nuestro SAP, vamos a la SM59 y creamos una conexin tipo G HTTP a servidor ext.
Con el nombre de mquina destino = putsreq.com y PrefVaAcc =
/zhxDaOGDQQVx6MXpjXot, que es el texto que identifica nuestro servidor en PutsReq.
Grabamos.
4. Comprobamos que desde nuestro SAP llegamos al PutsReq, con el botn Test de
conexin:

5. Ya tenemos listo nuestro servidor HTTP de pruebas.

CONFIGURACIN DE LA PUERTA DE SALIDA


Hay que crear en SAP una puerta que ser nuestro destino HTTP. Para ello:

1. Vamos a la transaccin WE21 y creamos una puerta XML-HTTP, indicando el destino RFC
que hemos creado en el punto anterior. Indicamos el tipo de contenido text/XML.
CONFIGURACIN DE LOS ACUERDOS DE INTERLOCUTOR
Hay que definir los acuerdos de interlocutor. Para este ejemplo, lo haremos con el IDOC de
maestro de materiales, el MATMAS:

1. Hay que crear primero el sistema lgico. Transaccin OMTX:

2. Definimos los acuerdos de interlocutor para el sistema lgico, indicando las clases de
mensaje de salida que vayamos a necesitar. Transaccin WE20:
PROVAR EL ENVO
1. En nuestro caso, como estamos probando el envo del MATMAS, debemos configurar
primero el modelo de distribucin ALE. Transaccin BD64:

2. Usamos la transaccin BD10 para enviar datos maestros de material:


3. Veamos el resumen de IDOCs. Transaccin WE02. Semforos verdes en principio quiere
decir que est yendo bien:

4. Comprobamos que el servidor HTTP ha recibido los IDOCs correctamente. Vamos al


navegador donde tenamos nuestro PutsReq, y clicamos sobre el botn UPDATE. Debemos
poder ver la ltima peticin que el servidor ha recibido, tendra que cuadrar con la
fecha/hora actual:

5. Vemos tambin que hay una cabecera con datos inequvocamente enviados desde SAP:
6. Y en el cuerpo (body) vemos el IDOC en formato XML como una larga ristra de texto:

7. Copiamos este texto entero, y lo pegamos en el bloc de notas de Windows, y lo grabamos


como IDOC_MATMAS_01.XML por ejemplo:
8. Para ver mejor el IDOC XML, lo arrastramos a una pestaa nueva del navegador (con el
Google Chrome funciona bien):
RECEPCIN DE IDOCS POR HTTP EN FORMATO XML
Aprovechando que en el paso anterior hemos generado un IDOC en XML, lo que haremos
ahora es modificarlo un poco para usarlo como un IDOC de entrada. Como tratbamos el
MATMAS, significa que, si lo enviamos hacia SAP de entrada, nos crear un material en SAP.

CONFIGURACIN DE LOS ACUERDOS DE INTERLOCUTOR


1. Definimos los acuerdos de interlocutor para el sistema lgico, indicando las clases de
mensaje de entrada que vayamos a necesitar. Transaccin WE20:

CONFIGURAR SAP PARA LA RECEPCIN VIA HTTP


Para configurar esto, hay que seguir este blog: http://scn.sap.com/community/pi-and-soa-
middleware/blog/2012/01/14/post-idoc-to-sap-erp-over-http-from-any-application

Copio a continuacin los pasos:


Step 1
Create inbound IDoc configuration in your system as normally. Define a new logical system if required,
create a partner profile entry for inbound messages of the desired type, assigning the related process
code.

Step 2
Check the configuration of the Internet Communication Framework (t-code SICF) in your system. What is
really important is the Information on Port and Host (Ctrl+Shift+F12) button:

In my case, the configuration looked like that:


If you need further assistance in SICF configuration, check this link:
http://help.sap.com/saphelp_nw04/helpdata/en/69/ac75addb6811d6b2ca00508b5d5c51/frameset.htm

Step 3
You can make a connection test from SICF. Find the sap\\public\\ping service on the list, right-click on it
and choose "Test service". In the popup window that appears, choose to allow connection (for instante,
"Always allow"). Your internet browser's window will be called with the following path:
http://[server]:[port]/sap/public/ping?sap-client=[client]
The [server] and [port] will be equal to what you've seen in Step 2, and [client] will be your system's client.
As a result, you should see a simple HTML page saying: "Server reached successfully".

Performing this step is not required, but can help you verify that your configuration is really working and
you most probably will not experience problems in further steps.

En mi caso, me enconctr con que haba que activar un Servicio addicional en la SICF, el
idoc_xml: default_hostsapbc idoc_xml
Step 4
Prepare your application that will post the IDocs to the SAP system. Use the path:
http://[server]:[port]/sap/bc/idoc_xml?sap-client=[client]
to pass the data from your application to SAP

En nuestro caso, la URL es http://sappw6.seidor.es:8000/sap/bc/idoc_xml?sap-client=201

Step 5
Usaremos un programa llamado POSTMAN que nos permite probar el envo. Para ello
necesitamos Google Chrome. Vamos a extensiones y buscamos postman, y lo instalamos:
Ejecutamos el Postman:

Hay que seleccionar POST en el desplegable (vamos a enviar datos por HTTP).
Tenemos que indicar el servicio (en nuestro ejemplo:
http://sappw6.seidor.es:8000/sap/bc/idoc_xml?sap-client=201).
En el cuerpo (body) hay que indicar tipo RAW y XML. Pegamos el texto del IDOC que
tenamos en formato XML del paso anterior. Para que entre el IDOC, modificamos lo
siguientes valores de campos.
o El caso concreto del campo DOCNUM, debe ser un nmero que no se repita, a
pesar de que el nmero de IDOC lo va a generar SAP; es una manera de no
permitir duplicados.
o En el segmento de cabecera del IDOC:
<DOCNUM>0000000000013604</DOCNUM> *** nmero no repetido
<DIRECT>2</DIRECT> *** 2 = idoc de entrada a SAP
<SNDPOR>PUTSREQ</SNDPOR> *** Puerta remitente
<SNDPRT>LS</SNDPRT> *** Tipo de interlocutor EDI del remitente
<SNDPRN>PUTSREQ</SNDPRN> *** Interlocutor EDI del remitente
<RCVPOR>SAPPW6</RCVPOR> *** nuestro sistema SAP
o En el segmento E1MARAM, hay que escoger un cdigo de material que no
exista, para que lo pueda crear de cero:
<MATNR>HT-PAL02</MATNR>
Luego, vamos a la pestaa Authorization e indicamos type Basic Auth y nuestro usuario y
password de SAP:

Nos aseguramos tambin que en la pestaa Headers aparezcan estas dos lneas:
Clicamos sobre el botn SEND

Por alguna razn, a veces la primera vez falla, as que probamos de nuevo. Si todo va bien, el
resultado es:

Step 6
Ahora lo comprobamos en SAP. Primero, en la transaccin WE02, debera aparecernos el IDOC
entrante:
Este nos ha quedado en estado pendiente. Podemos forzar que se procese con la transaccin
BD87:

Ahora ya lo vemos en la transaccin WE02 en verde:

Y tambin vemos el maestro de material:

También podría gustarte