Professional Documents
Culture Documents
Copyright
Copyright 2005 SAP ESPAA. Reservados todos los derechos. Prohibida la distribucin, reproduccin o traduccin de este manual o de parte del mismo, sea cual sea el fin y la forma, sin la autorizacin expresa por escrito de SAP ESPAA. La informacin contenida en este manual puede modificarse o complementarse sin previo aviso. Reservados todos los derechos.
SOAP en ABAP
SOAP en ABAP
Objetivos de la presentacin
Presentamos aqu la forma estndar en la que podemos usar SOAP desde el entorno ABAP, tanto como proveedor de servicios como consumidor. Veremos las implementaciones disponibles en 6.20 y 6.40. nicamente se analiza la parte ABAP: no Java, no XI.
Antes de empezar
Requisitos previos:
Programacin ABAP en general XML, HTTP ABAP Objects
A quien va dirigida:
Programadores ABAP Administradores de sistema SAP WAS (parte ABAP)
Introduccin
Introduccin
SOAP
Conceptos bsicos SOAP (Simple Object Access Protocol) es un lenguaje basado en XML que se utiliza para transmitir mesajes por una red, normalmente a travs de HTTP. SOAP es la base tcnica de los Web Services. La forma de invocar a un servicio SOAP se define con una descripcin del servicio escrita en WSDL (Web Services Description Language). El conjunto de servicios Web disponibles se pueden obtener a travs de un directorio UDDI (Universal Description, Discovery and Integration)
SOAP
Hasta la versin 6.10, la nica forma en que programas externos podan acceder a la funcionalidad de SAP era a travs de RFC. RFC es difcil de programar a bajo nivel y es un protocolo cerrado de SAP. Para ofrecer interconectividad con protocolos estndar, se recurre a conectores externos (Business Connector) y a wrappers de RFC (DCOM, .NET Connector, JCO, etc). A partir de 6.10 SAP puede hablar HTTP de forma nativa: Se construye un servicio sobre ICF que permite acceder a RFC a travs de SOAP, incluyendo una descripcin WSDL del mismo.
SAP 6.20 como proveedor de servicios Web En 6.20 existe un servicio en ICF (Internet Control Framework) para acceder a RFC a travs de SOAP Se puede ofrecer como servicio Web cualquier mdulo de funcin que est disponible para ejecucin remota. Esto incluye todas las BAPIs. El mapeo de funcionalidad SAP a servicios Web se tendr que hacer por tanto por BAPIs y mdulos de funcin.
Procedimiento para crear un servicio Web en 6.20 Marcar el modulo de funcin que se desea habilitar como servicio accesible por RFC:
o el contenido del fichero, es la informacin que necesita quin vaya a conectar con el servicio. Con el WSDL, se podr generar un proxy para .NET, J2EE, ABAP 6.40, XI y otros entornos. El nico sistema de autentificacin disponible es usuario/contrasea de un usuario SAP. Y nicamente a travs de autenticacin bsica HTTP. El punto de contacto del servicio Web es la URL /sap/bc/soap/rfc
SAP ESPAA 2005
Programacion de cliente SOAP en ABAP (ABAP como consumidor de servicios Web) Incluir la definiciones de las clases ABAP para SOAP: INCLUDE SOAPINCL. Generar un objeto para el documento SOAP: data: soapdoc type ref to CSoapDocument create object soapdoc. Generar un objeto para el transporte SOAP: data: soaptrans type ref to CSoapTransportHttp. create object soaptrans.
SAP ESPAA 2005
Crear transporte:
CALL METHOD CSoapTransport=>new_http_transport IMPORTING transport = soaptrans.
Asignar payload:
CALL METHOD soaptrans->set_payload EXPORTING payload = soapdoc.
Las limitaciones de SOAP en 6.20 son: El servicio ICF /sap/bc/soap/rfc es una puerta abierta a todos los mdulos de funcin que estn habilitados para ejecucin remota: no es posible aislar el acceso a un solo servicio Web. Solo soporta autenticacin por ICF (HTTP bsica, o certificados SSL). La programacin de cliente en ABAP es compleja y limitada: no permite utilizar WSDL, no soporta toda la especificacin SOAP, etc.
SAP ESPAA 2005
SOAP en ABAP 6. 40
Mejor integracin SOAP con ABAP SOAP Framework Creacin de servicios Web directamente desde BAPIs, mdulos de funcin o transaccin WSCONFIG. Administracin de servicios Web (WSADMIN) Mecanismos de control de acceso Integracin con SAP J2EE y SAP XI
ABAP como proveedor de servicios Web Se utiliza un servicio ICF: /sap/bc/srt (basado en SOAP Runtime) Es necesario crear directamente los servicios que queremos que sean invocados, esto permite limitar el acceso SOAP slo a aquella funcionalidad necesaria y no a todas las funciones RFC.
ABAP 6.40 como consumidor de servicios Web No es necesario programar a bajo nivel. El acceso se hace a travs de una clase ABAP que reproduce el interfaz del servicio Web. Esta tipo de clase se denomina proxy. Se genera una clase proxy a travs de la definicin WSDL del servicio con el que queremos conectar.
'Z_RFCSYS_PORT'.
TRY. CALL METHOD RFCSYS->RFC_SYSTEM_INFO EXPORTING INPUT = rfcq IMPORTING OUTPUT = rfcresp. CATCH CX_AI_SYSTEM_FAULT . CATCH CX_AI_APPLICATION_FAULT . ENDTRY.
SAP ESPAA 2005
Preguntas?