viernes, junio 17, 2011

Mensajes de confirmación en proxies asíncronos

Cuando se envía una mensaje de manera asíncrona, puede interesar conocer si el mensaje ha llegado correctamente o si  ha habido algún tipo de error. Este escenario me lo encontré en una comunicación proxy -> jdbc, donde quería conocer si la inserción en la base de datos se hizo correctamente.

Como requisito, es necesario que el sistema origen tenga definido el adaptador proxy de recepción para que pueda recibir el mensaje de confirmación (con esto es suficiente, no es necesario definir nada más como el "Receiver agreement"). En el caso de PI 7.11 en adelante, también será necesario definir en el adaptador de envío, la conexión que utilizará para devolver las confirmaciones (esta conexión debe ser creada previamente en el NWA de PI).


Un aspecto a tener en cuenta es que, en mi caso no servía indicar el path "/MessagingSystem/receive/AFW/XI", ya que me daba un error de servicio no activado. Sin embargo sí me sirvió utilizar el path "/sap/xi/engine?type=receiver" y activar el servicio sap/xi/engine en el sistema ECC (tx: SICF), para que pueda recibir dichas respuestas.

martes, junio 07, 2011

SAP Enterprise Services

En cada EHP, SAP pone a disposición una serie de Enterprise Services con el objetivo de a automatizar procesos de negocio mediante interfaces para otros sistemas. Estos servicios están recogidos en el portal de SDN:
Para poder activar un servicio es necesario descargarlo e importarlo en el sistema. Todo esto viene recogido en el siguiente enlace:

miércoles, mayo 04, 2011

Definición de Sociedades globales

Para que ciertos IDocs se puedan procesar (p.ej. CREMAS) es necesario asignar previamente las sociedades mediante el menú de parametrización. Esta opción se encuentra bajo IMG -> SAP NetWeaver -> Servidor de Aplicación -> Interface IDOC/Application Link Enabling (ALE) -> Modelar e implementar procesos empresariales -> Configurar unidades organizativas globales -> Definir sociedades globales. Ahí habrá que definir en primer lugar las "Sociedades unívocas globales" y a continuación las relaciones correspondientes.

Referencias:

martes, mayo 03, 2011

Pasar fechas en adaptador JDBC

Cuando se utiliza un adaptador JDBC para volcar datos directamente en una base de datos, existen ciertos tipos de datos que hay que tratarlos de manera específica. Uno de estos tipos es el de fecha. Por defecto, al pasar un campo de tipo xsd:dateTime, p.ej., en el proceso de conversión se pasa el contenido de este campo como si fuera una string y la base de datos devuelve un error del tipo "java.sql.SQLException: literal does not match format string". Para que no se pase el contenido a literal, es necesario definir el campo como "xsd:string" y añadirle el parámetro "hasQuot" con el valor por defecto "No".


De este modo indicaremos que no se pase como literal (entre comillas dobles).

jueves, abril 28, 2011

Registrar un programa RFC

A la hora de registrar conexiones TCP/IP, es necesario indicar un ID de programa que se encuentre registrado en el servidor (PI). En el caso de que el programa no se encuentre registrado, en el momento de realizar el test de conexión, el sistema devolverá el error "ERROR: Transaction program not registered". Los programas, se registran a través del NetWeaver Administrator (NWA) en el menú Configuration Management -> Infrastructure -> Jco RFC Provider.

Referencias:

miércoles, abril 20, 2011

Error ATTRIBUTE_IDOC_METADATA

Cuando en el envío de un IDoc aparece este mensaje, hay que comprobar que los metadatos del adaptador IDoc están mantenidos en el sistema (tx: IDX2). En caso de que el dato no aparezca, se podrá cargar pulsando el botón Crear (F5) e indicaremos el tipo de IDoc y el puerto de conexión que se usará para recabar los metadatos.

 

Unable to convert sender service to an ALE logical system name

Este mensaje aparece cuando se va a enviar un IDoc y el sistema no encuentra relación entre un componente de comunicación y un sistema lógico adecuado. La manera de comprobar si el Communication Component tiene asignado correctamente el sistema lógico, bastará hacer doble clic sobre el mismo y seleccionar la opción de menú Communication Component -> Adapter-Specific Identifiers.

 

Mapeos PI - Enlaces interesantes

Buscando por la red, he encontrado este Wiki que recoge un gran número de enlaces a páginas con ejemplos de todo tipo de mapeos PI (XSLT, Java, ABAP,...):

viernes, abril 15, 2011

Registrar componente software y versión en el SLD

Si se quiere desarrollar interfaces bajo un componente sofware propio, primero habrá que crearlo / registrarlo en el SLD. De lo contrario, si importamos objetos a dicho componente (RFCs/IDOCs), cuando vayamos a seleccionarlos dentro del Bussines Service correspondiente, por ejemplo, en el Receiver Agreement, veremos que dichas RFCs/IDOCs no aparecen en el listado de servicios disponibles, por lo que habrá que asignar dicho componente al Bussines Service adecuado. Esto se realiza desde la  URL http://servidor:puerto/sld, en el apartado Software Catalog. En primer lugar definiremos el producto dentro del catálogo de software en la sección "Products" y seguiremos el asistente.

1. En el primero paso indicaremos que vamos a crear un producto nuevo:


jueves, abril 14, 2011

No SLD elements of type SAP_XIAdapterFramework found

Tras la instalación inicial de un PI 7.11 puede que aparezca el mensaje "No SLD elements of type SAP_XIAdapterFramework found" en el momento de definir el adaptador de un canal de comunicación, esto puede deberse a que no se ha realizado el paso de registrar el propio SLD de PI. Para ello habrá que ejecutar la plantilla (template) "PI SLD Self Registration" dentro del asistente de configuración del NetWeaver Administrator (Configuration Management --> Scenarios --> Configuration Wizard).

Enlaces de referencia:

viernes, marzo 25, 2011

miércoles, marzo 02, 2011

Usuario PIRWBUSER bloqueado frecuentemente

En el post Error during communication with SLD: User credentials are invalid or user is denied access indicaba que el principal problema de ese error se debía a que el usuario PIRWBUSER estaba bloqueado. En esta entrada indico cómo solucionar el problema de bloqueo continuo de este usuario.

Para ello, lo más seguro es asignar una nueva contraseña al usuario PIRWBUSER (tx: SU01) y posteriormente actualizar las conexiones de tipo ABAP (3) que empiecen por PMI* en la tx. SM59.

Enlaces de referencia:

martes, febrero 15, 2011

Procesamiento síncrono de ficheros

En alguna ocasión puede ser necesario configurar un escenario en el que de manera síncrona se procese un fichero de entrada desde un servicio externo y, como respuesta, éste devuelva un fichero de respuesta que se desee almacenar en el servidor local.

Un aspecto a tener en cuenta es que los adaptadores de ficheros no soportan los procesos síncronos, por lo que, para que funcione, existen dos posibles modos de configuración:
  1. A través de BPM
  2. Mediante módulos de configuración del propio canal de comunicación

miércoles, enero 19, 2011

Visual Administrator y Config Tool

Posiblemente se traten de las herramientas de administración de J2EE más relevantes. Ambas poseen una interfaz gráfica para configurar los parámetros necesarios.

Para lanzarlos, habrá que ejecutar los siguientes scrips:
  • Config Tool:  /usr/sap/<system_name>/<instance_name>/j2ee/configtool/configtool.sh
  • Visual Administrator: /usr/sap/<system_name>/<instance_name>/j2ee/admin/go
Si deseamos ejecutarlos desde un equipo remoto, necesitaremos una herramienta que nos permita visualizar los programas en el equipo local. Existen varias como son:

jueves, enero 13, 2011

Incluir UsernameToken en cabecera SOAP

Algunos servicios web requieren autenticación mediante Web Service Security en la que se pasen parámetros como usuario y contraseña a través de la cabecera SOAP del mensaje. En principio, esta opción NO está recogida en el adaptador SOAP de XI, pero existen dos alternativas que nos permitirán informar dichos parámetros:
  1. A través del adaptador AXIS (requiere instalación previa y configuración)
  2. Mediante un mapeo XSLT
A continuación mostraré un ejemplo de mapeo XSL que añade la capa SOAP a un mensaje determinado. El objetivo es conseguir transformar el mensaje XML:

jueves, noviembre 25, 2010

Error SLD_NO_OWN_BS

Cuando al intentar realizar una comunicación, el servidor devuelve el error SLD_NO_OWN_BS se puede deber a que el usuario SLDDSUSER esté bloqueado. Esto también será causa de que se produzca un error de acceso al servicio SLD (tx: SLDCHECK):


Al desbloquear el usuario (tx: SU01), se podrá acceder a la interfaz de nuevo.

martes, noviembre 23, 2010

Establecer clave a usuario de tipo comunicación

Cuando se crea un usuario de tipo comunicación y se le asigna una clave, ésta caducará la primera vez que dicho usuario acceda al sistema. El problema está en que si el primer acceso se realiza mediante una interfaz, ésta no obtendrá respuesta (si es que es síncrona). Por ello, una manera de asignar la clave definitiva sería, tras crear el usuario con la clave inicial, acceder a algún servicio web que requiera de control de acceso, por ejemplo el SLD (http://servidor:puerto/sld), indicar como usuario al usuario de comunicación junto con su clave inicial y, a continuación, se nos indicará que la clave ha expirado, momento en el cual podremos introducir la clave definitiva.

lunes, septiembre 27, 2010

Conocer los Objetos de Autorización de una Transacción

A través de las transacciones SU22 y SU24 podremos conocer y editar los objetos de autorización que afectan a las transacciones que indiquemos. La principal diferencia entre ambas transacciones es que la SU22 se encarga de mantener la relación de objetos de autorización de SAP, los cuales se recogen en las tablas USOBT y USOBX, y se mantiene mediante la transacción SU25, mientras que la SU24 está enfocada a los objetos de autorización definidos por el cliente, los cuales se almacenan en las tablas USOBT_C y USOBX_C. (NOTA: Todos los objetos de SAP aparecen también en los objetos del cliente).

jueves, septiembre 16, 2010

Crear ficheros de pruebas para programas Batch Input

La aplicación "Data Transfer Tools" (tx: SXDA_TOOLS) permite generar de manera automática ficheros de prueba necesarios para programas batch input.

Dicho fichero se puede utilizar a modo de plantilla para realizar las pruebas que se deseen. Por ejemplo, si se quiere realizar una actualización de los datos de un acreedor, existe el report estándar RFBIKR00 el cual ejecuta un B-I a partir de un fichero de entrada con una estructura específica. Con el fin de no generar el fichero de prueba a pelo, iríamos a la transacción SXDA_TOOLS e indicaremos que deseamos crear un fichero para el tipo de objeto LFA1 (Vendor), para el programa RFBIKR00 que es de tipo BINP (Batch Input):

miércoles, septiembre 15, 2010

Crear transacción de una vista de actualización

Para crear una transacción de una vista de actualización deberemos, a través de la tx. SE93, crear una "Transacción con parámetros (transacción de parámetros)". En el bloque de valores de propuesta indicaremos que la transacción objetivo es la SM30 y marcaremos el flag "Omitir imagen inicial".


Por último, al final de la pantalla, habrá que añadir los siguientes parámetros:
  • VIEWNAME: (nombre de la vista)
  • UPDATE: X
Existen más parámetros (SHOW, TRANSPORT, etc.), en este caso he indicado que deseo actualizar la vista.

Enlaces de referencia: