You are on page 1of 30

Manual para la creacion de IDOCs

De SAP ABAP en castellano

Saltar a navegación, buscar


Contenido
[ocultar]

• 1 Qué es un Idoc?
• 2 Definición de la estructura de Idocs, segmentos de control, datos y estado.
• 3 Creación de un nuevo tipo de IDoc en SAP.
o 3.1 – Creación de los elementos de datos
o 3.2 – Creación de Segmentos
o 3.3 – Creación del Tipo Base de IDoc
o 3.4 – Liberación del Tipo de Segmento y Tipo Básico de IDoc
o 3.5 – Transporte de Segmentos y Tipo Base de IDocs
• 4 Extensión de un IDoc.
o 4.1 Configuración el procesamiento Outbound
o 4.2 Configuración el procesamiento Inbound
• 5 Creación de destinos RFC, puertos y sistemas lógicos.
o 5.1 Definición de Destinos RFC
o 5.2 Definición de puerta.
o 5.3 Definición de sistemas lógicos
 5.3.1 Asignar sistema lógico a mandante
• 6 Creación de los acuerdos de interlocutores.
• 7 Creación de un nuevo tipo de Mensaje en SAP.
• 8 Relación entre un tipo de Mensaje y un Tipo de IDoc
• 9 Creación de un modelo de distribución.
• 10 (G) Creación de un Idoc de salida
o 10.1 Creación de Idocs desde un programa ABAP
o 10.2 Creación de Idocs utilizando Punteros de Modificación (Change
Pointers)
 10.2.1 Activación de punteros de modificación en forma global
 10.2.2 Activación de punteros de modificación por Tipo de
Mensaje
 10.2.3 Definición de campos relevantes para la generación de
Punteros de Modificación
 10.2.4 Relación entre el Tipo de Mensaje y el Módulo de Función
 10.2.5 Crear un módulo de función para leer los punteros de
modificación y crear los Idocs.
o 10.3 Creación de Idocs desde un Mensaje de Logística
• 11 Creación de un Idoc de entrada
o 11.1 Configuración de Workflow
 11.1.1 Crear un nuevo Objeto de Aplicación Idoc
 11.1.2 Crear una nueva tarea basada en el Objeto de Aplicación
Idoc
o 11.2 - Configuración de la Interfaz de entrada
 11.2.1 Transacción: WE81
 11.2.2 Camino Lógico: Desde el área Tipos de¬ Desarrollo ¬de
menú de EDI (transacción WEDI), seleccionar Menú SAP
mensajes
 11.2.3 Camino Lógico: Desde el área de menú de EDI
(transacción WEDI), seleccionar Menú SAP -> Desarrollo -> Tipo
IDoc / Mensaje
 11.2.4 Definición de Código de Operación

 11.2.5 Definición de Módulo de Función

Title page

Manual para la creación de Idocs


El objetivo de este documento es servir de guía para la creación de interfaces entre dos
sistemas R/3 o entre un R/3 y un legacy, utilizando Idocs.

Qué es un Idoc?
Los IDoc permiten intercambiar información entre distintos sistemas. Se lo puede ver
como un archivo de texto plano, con registros. Un Idoc es por ejemplo los datos de un
proveedor , o una oferta.

Contiene una cabecera y posiciones, pero todos los datos pertenecen a la misma entidad.
O sea, para transmitir datos de más de un proveedor, haría falta más de un IDoc.

Los IDocs se crean y luego se envían. Este envío se realiza en un segundo paso; o sea
que podría haber IDOCs que todavía no se hayan enviado.

Un Idoc, como se mencionó más arriba, está formato por dos bloques:

• Un registro de Control.
• Una tabla con los datos del IDOC .

El registro de control contiene toda la información administrativa del IDOC, como el


origen y el destinatario, y qué tipo de IDOC es. Sería algo así como el sobre que
acompaña a cualquier carta.
Este registro es muy importante ya que es necesario para saber, entre otras cosas, cuál
será el destinatario del IDOC. La tabla SAP donde se guardan es la EDIDC.

Los registros de datos se guardan en la tabla EDID4 en un campo de 1000 caracteres.


Para saber interpretar esa cadena, el registro cuenta con un campo que informa cuál es la
estructura con la que se deben interpretar los datos. El nombre de dicha estructura existe
en SAP y se la puede ver desde la transacción SE11.

Desde la transacción WE30 se puede ver el formato de los Idocs.

Por ejemplo, para el Idoc MATMAS01, el formato es el siguiente:

MATMAS01 Maestro material


E1MARAM Maestro material datos generales (MARA)
E1MAKTM Maestro material - textos breves (MAKT)
E1MARCM Maestro material segmento C (MARC)
E1MARDM Maestro material almacén/segmento lotes (MARD)
E1MARMM Maestro material unidades de medida (MARM)
E1MEANM Maestro mat. números art. europeos (MEAN)
E1MBEWM Maestro material valoración stocks (MBEW)
E1MLGNM Maestro mat. datos por núm.almacén (MLGN)
E1MVKEM Maestro material datos de ventas (MVKE)
E1MLANM Maestro material clasif. impuestos (MLAN)
E1MTXHM Maestro material texto explicativo cabecera
E1MTXLM Maestro material texto explicativo línea

Cada uno de los nombres que acá se muestran son estructuras que se pueden ver desde
la SE11.

O sea que por ejemplo, para un registro de datos que tiene estructura E1MARAM, para
saber cuál es el formato con el que hay que interpretarlos, se puede ir a la transacción
SE11 y ver qué campos componen a esa estructura. Dado que la cadena de 1000
caracteres está formada por los datos de un campo atrás del otro, es solo cuestión de
saber en qué posición de la cadena se encuentra cada campo.

Generalmente, varios registros de estado se adjuntan a un IDOC. El sistema


automáticamente asigna registros de estado durante todo el proceso, a medida que el
IDOC va alcanzando diversos puntos de control.

Contienen información de estado, tal como código de estado, fecha y hora en que el
punto de control es alcanzado. Estos registros de estado existen solamente en SAP y
no son almacenados en el archivo de salida. La estructura de los registros de estado
está definida por la estructura del DDIC EDI_DS40.

La tabla es EDIDS.
Definición de la estructura de Idocs, segmentos de
control, datos y estado.
La estructura de un IDoc consiste de varios segmentos, y los segmentos consisten de
una secuencia de campos. La estructura de un tipo de IDoc define la sintaxis de los
datos al especificar la organización de los segmentos, atributos de los segmentos y
formatos de cada uno de sus campos.

En ejecución, un IDoc consiste de la siguiente secuencia de tres tipos de registros:

a – Un único registro de Control

Contiene toda la información de control del IDoc, incluyendo el número de IDoc,


emisor y receptor, otra información de control tal como el tipo de mensaje que
representa y el tipo de de IDoc. La estructura del registro de control es idéntica para
todos los IDocs y está definida por SAP. Son automáticamente creados e insertados
por el sistema en tiempo de ejecución.

La estructura del registro de contol está definida por la estructura del DDIC
EDI_DC40: Cantidad de campos: 36

Total longitudes de campo: 524

Componente Tipo Long. Tipo Texto breve

______________________________________________________________________
___

CHAR
TABNAM EDI4TABNAM Nombre de la estructura de tabla
10
CLNT
MANDT EDI4MANDT Mandante
3
CHAR
DOCNUM EDI4DOCNUC Número del IDOC
16
CHAR
DOCREL EDI4DOCREL Release SAP del IDOC
4
CHAR
STATUS EDI4STATUS Status del IDOC
2
DIRECT CHAR 1 EDI4DIRECT S
CHAR
OUTMOD EDI4OUTMOD Modo de salida
1
CHAR
EXPRSS EDI4EXPRSS Sustitución en Entrada
1
TEST CHAR 1 EDI4TEST In
CHAR
IDOCTYP EDI4IDOCTP Nombre del tipo base
30
CHAR
CIMTYP EDI4CIMTYP Ampliación (definida por los clientes)
30
CHAR
MESTYP EDI4MESTYP Tipo de mensaje
30
CHAR
MESCOD EDI4MESCOD Variante de mensajes
3
CHAR
MESFCT EDI4MESFCT Función de mensaje
3
CHAR
STD EDI4STD Estándar EDI, indicador
1
CHAR
STDVRS EDI4STDVRS Estándar EDI, versión y release
6

CHAR
STDMES EDI4STDMES Tipo de mensajes EDI
6

CHAR
SNDPRT EDI4SNDPRT Tipo de interlocutor EDI del remitente
2
CHAR
SNDPFC EDI4SNDPFC Función interlocutor EDI del remitente
2
Número del interlocutor EDI del remitente
SNDSAD CHAR 21 EDI4SNDSAD Dirección del r
SNDLAD CHAR 70 EDI4SNDLAD Dirección lógic
RCVPOR CHAR 10 EDI4RCVPOR Puerta del desti
RCVPRT CHAR 2 EDI4RCVPRT Tipo de interloc

destinatario

RCVPFC CHAR 2 EDI4RCVPFC Función de inter

destinatario

RCVPRN CHAR 10 EDI4RCVPRN Nº interlocutor EDI de


CHAR
SNDPRN EDI4SNDPRN RCVSAD CHAR 21 EDI4RCVSAD Dirección del destinat
10
RCVLAD CHAR 70 EDI4RCVLAD Dirección lógica del d
CREDAT DATS 8 EDI4CREDAT Fecha de creación
CRETIM TIMS 6 EDI4CRETIM Hora de creación
REFINT CHAR 14 EDI4REFINT Fic

Interchange)

REFGRP CHAR 14 EDI4REFGRP Grupo de mensaj

Group)

REFMES CHAR 14 EDI4REFMES Mensaje (Me


ARCKEY CHAR 70 EDI4ARCKEY Clave del arc
externo

SERIAL HAR 20 EDI4SERIAL

_________________________________________________________

Los datos del registro de control se almacenan en la tabla SAP EDIDC


mandante (MANDT) y número de Idoc (DOCNUM).

b – Uno o más registros de Datos

Un IDoc puede contener múltiples registros de datos, según haya sido


IDoc. En ejecución, los segmentos son convertidos por el sistema a reg
datos contiene información de la aplicación (maestro de proveedores, p
pedidos, etc.).

La estructura de los registros de datos está definida por la estructura de

Estructura de campo

Cantidad de campos: 7

Total longitudes de campo: 1063

Componente Tipo Long. Tipo

_________________________________________________________

SEGNAM CHAR 30 EDI4SEGNAM Segmento (nom


MANDT CLNT 3 EDI4MANDT Mandante
DOCNUM CHAR 16 EDI4DOCNUC Número del IDO
SEGNUM CHAR 6 EDI4SEGNUC Número de segm
PSGNUM NUMC 6 EDI4PSGNUC Número del seg
HLEVEL CHAR 2 EDI4HLEVEC Nivel de jerarqu
SDATA LCHR 1000 EDI4SDATA Datos de la aplic

_________________________________________________________

La sección de datos es una cadena de 1000 bytes, y es el lugar donde l


sección de datos es mapeada en ejecución a un tipo de segmento, segú
del tipo de IDoc, a fin de interpretar la estructura de los datos en esta c

Los datos de los registros de datos se almacenan en la tabla SAP EDID


mandante (MANDT), el número de IDoc (DOCNUM), y el número de

c – Uno o más registros de Estado

Generalmente, varios registros de estado se adjuntan a un IDoc. E


asigna registros de estado durante todo el proceso, a medida que e
puntos de control. Contienen información de estado, tal como códi
que el punto de control es alcanzado. Estos registros de estado existe
almacenados en el archivo de salida.

La estructura de los registros de estado está definida por la estructura d

Estructura de campo

Cantidad de campos: 24

Total longitudes de campo: 562

Componente Tipo Long. Tipo

_________________________________________________________

TABNAM CHAR 10 EDI4TABNAM Nombre de la estruc


MANDT CLNT 3 EDI4MANDT Man
DOCNUM CHAR 16 EDI4DOCNUC Nú
LOGDAT DATS 8 EDI4LOGDAT Fecha de la informa
LOGTIM TIMS 6 EDI4LOGTIM Hora de la informac
STATUS CHAR 2 EDI4STATUS Status del IDOC
STAMQU CHAR 3 EDI4STAMQU Cualificador para m

status

STAMID CHAR 20 EDI4STAMID Nro. de mensaje para

Clase mensaje

STAMNO NUMC 3 EDI4STAMNO Número de mensaje en


STATYP CHAR 1 EDI4STATYP Tipo de mensaje (A, W,

de status

STAPA1 CHAR 50 EDI4STAPA1 Primer parámetro de un

de status

STAPA2 CHAR 50 EDI4STAPA2 Segundo parámetro

registro de status

STAPA3 CHAR 50 EDI4STAPA3 Tercer parámetro de un

de status
STAPA4 CHAR 50 EDI4STAPA4 Cuarto parámetro de un

de status

STATXT CHAR 70 EDI4STATXT T


UNAME CHAR 12 EDI4UNAME Nombre del usu
REPID CHAR 30 EDI4REPID Programa
ROUTID CHAR 30 EDI4ROUTID Subrutina (rutina

funciones)

SEGNUM CHAR 6 EDI4SEGNUC Número de segmento


SEGFLD CHAR 30 EDI4SEGFLD Campo de segmento
REFINT CHAR 14 EDI4REFINT Fichero de transmisió
REFGRP CHAR 14 EDI4REFGRP Grupo de mensajes (E
REFMES CHAR 14 EDI4REFMES Mensaje (Mensaje ED
ARCKEY CHAR 70 EDI4ARCKEY Clave del archivo de

_________________________________________________________

Los datos de los registros de estado se almacenan en la tabla SAP EDI


mandante (MANDT), número de Idoc (DOCNUM), fecha (LOGDAT)
de registro (COUNTR).

Creación de un nuevo tipo de IDoc en SAP.


Para la creación de un nuevo tipo de IDoc en SAP debe seguirse una s

– Creación de los elementos de datos

Deben crearse los elementos de datos necesarios para la definición de


crear elementos de datos debería ser mínima dado que los datos ya exi
representados por sus propios elementos de datos.

Sin embargo, los segmentos no admiten cualquier tipo dato y por lo ta


elementos en caso que los existentes no sean de alguno de los siguient

_________________________________________________________

Tipo de Datos Descripción

_________________________________________________________

CHAR String de caracteres


CLNT Cliente
CUKY Campo moneda, referenciado por campos CURR
DATS Campo fecha (YYYYMMDD), almacenado como cha
LANG Clave de idioma
NUMC Campo carácter con dígitos solamente
TIMS Campo fecha (HHMMSS), almacenado como char(6)

– Creación de Segmentos

Los segmentos son creados por medio del Editor de Segmentos:

Transacción: WE31.

Camino lógico: Desde el área de menú de EDI (transacción WEDI), S


¬seleccionar Menú SAP

Pasos:

2.1 - Ejecutar la transacción WE31. Ingresar el nombre del tipo de seg


seleccionar la opción Crear (F5).

2.2 – Entrar una descripción breve y los valores para los distintos cam
definición del segmento. El sistema automáticamente asigna un nombr
basado en el nombre del tipo de segmento. Ej.: si el tipo de segmento e
segmento será Z2WKDET.

2.3 – Guardar las entradas. Volver a la pantalla anterior y repetir el mi


segmentos que se necesiten crear para el tipo de IDoc.

– Creación del Tipo Base de IDoc

Una vez creados todos los segmentos, el siguiente paso es crear el Tip
IDocs se crean con el Editor de IDocs:

Transacción: WE30

Camino Lógico: Desde el área de menú de EDI (transacción WEDI),


¬seleccionar Menú SAP

Pasos:

3.1 – Ejecutar la transacción WE30. Ingresar el nombre del tipo base d


Seleccionar la opción Tipo base y Crear (F5).

3.2 – En la siguiente pantalla, seleccionar la opción Crear nuevo e ing


base de IDoc. Presionar Continuar.

3.3 – Posicionar el cursor sobre el nombre del IDoc y seleccionar Crea


continuación el tipo de segmento y sus atributos. Al presionar Enter, e
tipo de segmento al editor de IDoc.

3.4 – Para ingresar más segmentos, repetir el procedimiento del punto


primer segmento, debe indicarse para los restantes el nivel (mismo niv
quiere insertar el nuevo segmento.

3.5 – Guardar el tipo base de IDoc.

– Liberación del Tipo de Segmento y Tipo Básico de IDoc

Una vez terminada la definición de la estructura del IDoc y sus segmen


liberados a fin de que se encuentren disponibles para su transporte a lo
producción. Primero deben liberarse los segmentos y después el tipo b

Para liberar un segmento, ejecutar la transacción WE31. Ingresar el tip


Tratar, Liberar. El sistema automáticamente completa el check box en
segmento.

Para liberar un tipo base de IDoc, ejecutar la transacción WE30. Ingre


seleccionar Tratar, Liberar.

Una vez que el segmento / tipo base de IDoc es liberado, ya no pueden


necesario introducir modificaciones debe cancelarse la liberación. Los
son los mismos a los indicados para la liberación.

– Transporte de Segmentos y Tipo Base de IDocs

Las modificaciones a los tipos base de IDocs y segmentos son automát


orden de transporte. Luego de transportados los objetos, los mismos pu
manualmente desde el editor de segmentos / Transportar. Al transport
seleccionando: Segmento transportan automáticamente todas sus defin
embargo, al transportarse un tipo base de IDoc no se transportan autom

Extensión de un IDoc.
Las ampliaciones de IDocs son componentes que se utilizan para exten
existentes de una forma predefinida. Estas extensiones sólo pueden ser
los tipos de ampliación no son proporcionados por SAP.

Para crear un tipo de ampliación:

Transacción: WE30
Camino Lógico: Desde el área de menú de EDI (transacción WEDI),
¬seleccionar Menú SAP

En el editor de IDOC, elegir el componente Tipo de ampliación e intro


Objeto.

Seleccionar Crear◊ Objeto desarrollo . En éste momento, la ventana d


ampliación se mostrará por pantalla.

Elegir una de las siguientes tres opciones:

• Crear nuevo.
• Crear como copia.
• Crear como sucesor.

Introducir los nombres de la personas responsables así como una breve


ampliación a crear. Seleccionar Continuar.

1. Para añadir segmento ampliado a un segmento de referencia, coloca


referencia siguiente a donde se pretenda añadir el nuevo segmento y se
mensaje indicando que los segmentos creados después de un segmento
creados como segmentos hijos.

La secuencia en la cual aparecen los segmentos de referencia en el tipo


realmente importante es que dichos segmentos existan en el tipo de ID
ampliado.

Las ampliaciones de cliente realizadas utilizando tipos de ampliación p


sistema se actualice a una nueva versión R/3. Los sucesores a tipos de
anteriores se combinan automáticamente con los tipos de ampliación q
se requiere un mantenimiento manual. Los tipos de IDoc base impleme
ampliaciones permanecen sin cambios en la actualización.

Configuración el procesamiento Outbound

Por cada segmento extendido, tiene que haber una extensión en el códi
outbound, que inserte los datos indicados en la extensión del segmento

El programa o función que genere el Idoc puede o no ser un estandar S


insertar el código necesario para manejar las extensiones en una User E
transacción CMOD. Si es un programa Z, solo habrá que actualizarlo p

Por otro lado, habrá que actualizar los Acuerdos de Interlocutores qu


especificando el nombre de la extensión creada.

Configuración el procesamiento Inbound

Por cada segmento extendido, tiene que haber una extensión en el códi
inbound, que considere el tipo de segmento extendido recibido entre lo

El programa o función que genere el Idoc puede o no ser un estandar S


insertar el código necesario para manejar las extensiones en una User E
transacción CMOD. Si es un programa Z, solo habrá que actualizarlo p

Por otro lado, habrá que actualizar los Acuerdos de Interlocutores qu


especificando el nombre de la extensión creada.

Creación de destinos RFC, puertos y sistema


Definición de Destinos RFC

Transacción: SM59

Camino Lógico: Desde el área de menú de EDI (transacción WEDI),


¬seleccionar Menú SAP

Dependiendo del sistema destino, la conexión RFC será de distinto tip


Idocs, se

crean conexiones del tipo TCP/IP, especificando el nombre del servido


destino.

Definición de puerta.

(A lo largo de este documento se usará la palabra Puerto o Puerta, indi

Transacción: WE21

Camino Lógico: Desde el área de menú de EDI (transacción WEDI),


¬seleccionar Menú SAP

Para una descripción detallada, buscar en SAP Library: Port Definition

Los Idocs pueden ser enviados y recibidos a través de diferentes medio


la definición de las características del medio con la aplicación que lo e
accedido vía puertos. En otras palabras, un puerto es un nombre lógico
entrada/salida. Los programas se comunican con un puerto a través de

En vez de definir el medio de comunicación directamente en el Acu


Profile), se asigna un número de puerto, y es este puerto el que des
permite definir las características de los puertos individualmente y
Acuerdos de Interlocutores. Los cambios en un puerto se reflejará
acuerdos que lo estén utilizando.
Al menos un puerto debe existir para cada sistema externo. La siguien
son enviados a dos sistemas vía tres puertos.

Los tipos de puertos más comunes son los siguientes:

Ficheros (File Interface)

Permite intercambiar Idocs a través de archivos del sistema operativo.

El sistema que envía el IDoc crea un archivo en el file system. Luego n


RFC sincrónico que el archivo ha sido transferido, que está localizado
que tiene un determinado nombre.

SAP recomienda no usar nombres de archivos estáticos, dado que el ar


que el Idoc se envía. Se recomienda usar el módulo de funciones
EDI_PATH_CREATE_CLIENT_DOCNUM, el cual genera el nombr
mandante y nro. de Idoc.

RFC Transaccional

Se usa para escenarios de distrubución ALE. El nombre del puerto se p


SAP lo elija. Además del puerto, hay que definir el destino RFC.

Archivo XML

Envía documentos en formato XML. Para utilizar este tipo de puerto, e


puerto, el formato del XML, y el nombre del archivo a generar. Al igu
Fichero, se puede invocar a la función EDI_PATH_CREATE_CLIEN
los nombres del archivo en forma dinámica.

XML-HTTP

En vez de definir el nombre del archivo XML, se especifica un destino

Definición de sistemas lógicos

Transacción: BD54

Camino Lógico: Desde la transacción SALE, seleccionar Preparar sist


Preparar sistemas lógicos ¬receptores y de envío

Asignar sistema lógico a mandante

Cuando el sistema lógico es un R/3, se lo debe asignar a un mandante.


Transacción: SCC4

Camino Lógico: Desde la transacción SALE, seleccionar Preparar sist


un¬ Preparar sistemas lógicos ¬receptores y de envío mandante.

Hacer doble click sobre el mandante que al que se desea asignar, y pos
nombre del sistema lógico.

Creación de los acuerdos de interlocutores.


Transacción: WE20

¬ Gestión ¬Camino Lógico: Desde la transacción WEDI, seleccionar


Interlocutores EDI

Un interlocutor ALE es un sistema SAP remoto o un sistema legac


datos. El acuerdo de interlocutor especifica varias de las caracterís
intercambian incluyendo el modo de operación y la organización o
manejo de los errores. Cuando los datos son intercambiados entre
que el emisor y el receptor estén de acuerdo en la sintaxis y semán
intercambiados. Este acuerdo es lo que se llama Acuerdo de Interl
receptor de la estructura de los datos enviados y cómo los contenid

La datos definidos en un acuerdo de interlocutor son:

• Tipo de Idoc y Tipo de mensaje, los cuales son el identificador


interlocutor.
• Nombre del Emisor y Receptor que intercambiarán los Idocs p
• Puerto por el cual el emisor y el receptor se comunicarán.

En el interlocutor se definen datos específicos de cada mensaje a trans


o entrada según corresponda.

Mediante la transacción WE20 se crea el acuerdo de interlocutor con e

Creación de un nuevo tipo de Mensaje en SA


Transacción: WE81

Camino Lógico: Desde el área de menú EDI (transacción WEDI), sele


Desarrollo ¬Menú SAP

En este paso se asigna un tipo de mensaje a los contenidos de datos a s


mensajes de usuario deben ser nombrados comenzando con Z.
Relación entre un tipo de Mensaje y un Tipo
Transacción: WE82

Camino Lógico: Desde el área de menú de EDI (transacción WEDI),


¬seleccionar Menú SAP

En este paso se asigna el tipo de mensaje creado en el paso anterio


asociación no sólo sirve a fin de documentar el mensaje en que está
sino que además verifica esta asociación el momento en que el IDo

Creación de un modelo de distribución.


La relación entre sistemas lógicos, tipos de mensajes, BAPIs y filtros e
Distribución. Las aplicaciones y la capa ALE usan el modelo de distrib
receptores y para controlar la distribución de datos.

Los escenarios de distribución definen los tipos de IDocs y los pare


participan en una distribución ALE. El escenario de distribución es
datos serán replicados y quienes serán los receptores.

El modelo de distribución es compartido entre todos los interlocut


solo puede ser mantenido en uno de los sistemas, el cual lo podemo
uno de los sistemas es el sistema líder, pero puede ser seteado para
interlocutores en cualquier momento, aún si el escenario ya se enc

Puede haber varios escenarios para diferentes propósitos. Por otro lado
escenario. Lo más recomendable es crear un escenario por administrad
ALE, no tiene mucho sentido tener más de un escenario. Pero si hay v
diferentes requerimientos, será más útil crear un escenario por departa

Pasos para crear un Modelo de Distribución:

Transacción: BD64

Camino Lógico: Desde la transacción SALE, seleccionar Aplication L


implementar modelos empresariales ¬Enabling (ALE) modelos de Di

-Ir a la transacción BD64

-Pasar al modo modificación

-Presionar el botón Crear Modelo Vista (Ctrl+F4)


Aparecerá la siguiente ventana:

-Completar el texto breve y el nombre técnico para el modelo de distri

-Seleccionar el registro recién creado y presionar el botón Insertar Tip

Aparecerá la siguiente ventana:

-Completar el campo Emisor con el nombre del Sistema lógico que tra

-Completar el campo Destinatario con el nombre del Sistema lógico qu

-Completar el campo Tipo de mensaje con el mensaje que se transmiti

Importante

No se puede mantener un tipo de mensaje entre el mismo emisor y rec


distribución.

(G) Creación de un Idoc de salida


Existen tres formas de creación de Idocs:

• Desde un programa ABAP (desarrollo Z).


• Desde un puntero de modificación (Change Pointer).
• Desde mensajes de logística.

Observación:

Los pasos para:

• Crear de un nuevo tipo de IDoc en SAP.


• Extender un Idoc.
• Crear sistemas lógicos, puertos y destinos RFC.
• Crear acuerdos de interlocutores.
• Crear un nuevo tipo de Mensaje en SAP.
• Relacionar un tipo de Mensaje con un tipo base de Idoc.
• Crear de un modelo de distribución.

fueron explicados más arriba, por lo cual solamente se procederá a exp


necesarios para crear un Idoc.

Creación de Idocs desde un programa ABAP


Los pasos a seguir para la creación de un IDoc de salida desde un prog

1- Seleccionar la información de la base de datos de acuerdo a los pará

2- Completar la información correspondiente al registro de control.

3- Completar una tabla interna de tipo EDIDD con los registros de dat
correspondientes.

4- Llamar al servicio de la capa ALE (MASTER_IDOC_DISTRIB


la base de datos.

5- Ejecutar COMMIT WORK.

6- Enviar el Idoc invocando al programa RSEOUT00.

A continuación se detalla un ejemplo con los pasos 2, 3,4 y 5

* DECLARACION DE DATOS

DATA:
c_message_type LIKE edidc-mestyp VALUE 'ZINVRV
c_base_idoc_type LIKE edidc-idoctp VALUE 'ZINVRV
c_invrev_segname(7) TYPE C VALUE 'Z1INVRV',"Nombre
c_rcvprn LIKE edidc-rcvprn VALUE 'SAPBCD

IDOC_CONTROL LIKE EDIDC,


T_COMM_CONTROL LIKE EDIDC OCCURS 0 WITH HEADER LINE
IDOC_DATA LIKE EDIDD OCCURS 0 WITH HEADER LINE

* CAMPOS DE CONTROL DEL IDOC

idoc_control-doctyp = c_message_type."Tipo Mensaje


idoc_control-mestyp = c_message_type."Tipo Mensaje
idoc_control-idoctp = c_base_idoc_type."Tipo de Idoc
idoc_control-serial = space.
idoc_control-direct = '1'.
idoc_control-serial = sy-datum.
idoc_control-serial+8 = sy-uzeit.
idoc_control-rcvprn = c_rcvprn"Nro Interlocutor Desti
idoc_control-rcvprt = 'LS'"Tipo interlocutor dest

APPEND idoc_control.

* CAMPOS DE DATOS DEL IDOC

* Esta sección la repite una vez por cada registro de dat


* en el IDoc.

* Indica cuál es el tipo de segmento


IDOC_DATA-SEGNAM = C_INVREV_SEGNAME."Nombre Segmento

* Completa los datos de la estructura del segmento


CLEAR Z1INVRV.
Z1INVRV-CAMPO_01 = VALOR_01
...
...
...
Z1INVRV-CAMPO_NN = VALOR_NN

* Mueve la estructura con los datos del segmento al único


IDOC_DATA-SDATA = Z1INVRV."Datos del Segmento

* Inserta el registro actual a la tabla interna de datos


APPEND IDOC_DATA.

*--- Call the distribute function with the required param


CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL =
TABLES
COMMUNICATION_IDOC_CONTROL =
MASTER_IDOC_DATA =
EXCEPTIONS
ERROR_IN_IDOC_CONTROL
ERROR_WRITING_IDOC_STATUS
ERROR_IN_IDOC_DATA
SENDING_LOGICAL_SYSTEM_UNKNOWN = 4
OTHERS

if sy-subrc = 0.
COMMIT WORK.
endif.

Una vez completados estos pasos, queda creado el Idoc. El mismo se g


EDIDC y EDID4. Se lo puede ver desde la transacción WE05.

Para enviar el Idoc a su destinatario, se invoca al programa RSEOUT0

Creación de Idocs utilizando Punteros de Modificación (Ch

Toda vez que se crean o modifican datos maestros, tal como datos
proveedores, etc., el sistema escribe "punteros de modificación" (c
de cada una de estas modificaciones para cada documento. El repo
ejecutado a fin de procesar todas las entradas en la tabla de punte
generar los IDocs, este programa llama a un módulo de función es

Los pasos a seguir para la creación de un Idoc de salida utilizando Pun


siguientes:

• Activar los punteros de modificación en forma global.


• Activar los punteros de modificación para nuestro tipo de mens
• Definir los campos relevantes para la generación de punteros d
• Relacionar el tipo de mensaje con el módulo de función.
• Crear un módulo de función para leer los punteros de modifica
Activación de punteros de modificación en forma global

Transacción: BD61

Camino Lógico: Desde la configuración de ALE en el IMG (transacció


Configurar¬seleccionar Modelar e Implementar procesos empresariale
datos modificados ¬distribución de datos maestros Activación genera

Marcar el Flag: Puntero modificación general activado y grabar.

Activación de punteros de modificación por Tipo de Mensaje

Transacción: BD50

Camino Lógico: Desde la configuración de ALE en el IMG (transacció


Configurar¬seleccionar Modelar e Implementar procesos empresariale
datos modificados ¬distribución de datos maestros Activar puntero m

Agregar una entrada para el mensaje deseado, y marcarla como activa.

Definición de campos relevantes para la generación de Punteros d

Transacción: BD52

Servicio de¬ IDoc ¬ Desarrollo ALE ¬ ALE ¬Camino Lógico: Herra


relevantes para modificación¬Modificaciones

Ingresar entradas para los campos sobre los cuales se quieran crear Pu

Primero completar el tipo de mensaje y presionar continuar.

Luego se desplegará una pantalla para ingresar los campos:

- Objeto de Modificación

-Tabla

-Campo

Relación entre el Tipo de Mensaje y el Módulo de Función


Transacción: BD60

Filtrado de¬ IDoc ¬ Desarrollo ALE ¬ ALE ¬Camino Lógico: Herra


mediante clases.¬datos

En este paso se relaciona el tipo de mensaje con el módulo de func


analizar/procesar los punteros de modificación. Ejecutar la transa
entrada para el tipo de mensaje deseado, y el módulo de función q
ese Puntero de Modificación.

En otras palabras, cuando se ejecute el programa estandar RBDMIDO


Modificación y se detecte que uno de los campos que se insertaron en
relevantes para la generación de Punteros de Modificación) se modific
está definiendo en este paso.

Crear un módulo de función para leer los punteros de modificació

Esta función contiene la lógica para la generación de los IDocs a partir


invocada desde el programa RBDMIDOC, a partir de la configuración

La lógica del programa contiene los siguientes pasos:

1- Leer los punteros de modificación generados usando la función CH

2- Analizar los punteros de modificación para determinar cuáles docum

3- Determinar la clave del documento de aplicación del paso 2.

4- Seleccionar datos de aplicación de la base de datos, usando la clave


3.

5- Completar la información del registro de control del IDoc.

6- Completar una tabla interna de estructura EDIDD con registros de d

7- Llamar al servicio de la capa ALE (MASTER_IDOC_DISTRIBUT


de datos.

8- Actualizar el estado de los punteros de modificación

9- Ejecutar un COMMIT WORK.

Generalmente se utiliza una función estándar, salvo que se esté extend


caso de estar extendiendo, lo que se hace generalmente es copiar una f
lógica necesaria para que se considere el segmento extendido al mome
Creación de Idocs desde un Mensaje de Logística

El proceso lógico de generación de Idocs de salida desde Mensajes de

es el siguiente:

• Un programa ABAP (desarrollo Z) o transacción estándar crea


• El mensaje es procesado por el programa ABAP estándar RSN
desde la tabla NAST, y llama al módulo de función adecuado p
función MASTERIDOC_DISTRIBUTE.
• El Idoc es enviado a su destinatario al ejecutar el programa RS

Se puede usar el concepto de Mensajes R/3 para disparar la creación d


se dispara la impresión de SapScripts.

La tabla utilizada para esto es la NAST. Esta tabla guarda recordatorio


recordatorios son llamados Mensajes (messages).

Cada vez que una aplicación ve la necesidad de pasar información a un


escrito en la tabla NAST. Un controlador de mensajes (message handl
entradas en esta tabla y ejecutará la acción apropiada. Un mensaje NA
solo registro en la tabla NAST. El registro guarda toda la información
Idoc. Esto incluye, entre otras cosas, una clave de objeto para identific
y receptor del mensaje.

Creación de un Idoc de entrada


La configuración de la interfaz de entrada incluye una sección de Conf
manejo de excepciones.

Podemos dividir esta tarea en dos partes:

1- Configuración de Workflow.

2- Configuración de la Interfaz de entrada.

Configuración de Workflow

La configuración de workflow es necesaria para el manejo de excepcio


pasos que deben llevarse a cabo son:

1 – Crear un nuevo Objeto de Aplicación IDoc en el Business Object B


y de finalización.

2 – Crear una nueva tarea basada en el objeto de aplicación Idoc.

3 – Crear el link de los eventos.


Crear un nuevo Objeto de Aplicación Idoc

Transacción: SWO1

¬ Desarrollo ¬ SAP Business Workflow ¬Camino Lógico: Herramien


Builder¬Herramientas def.

1 – Seleccionar el botón Buscar (ctrl.+F) y expandir las opciones de se


Selecciones (todas). Ingresar IDOCAPPL en el campo Tipo super y Ej

2 – Seleccionar cualquier objeto y seleccionar Business Objects ¬ Cop

El objeto seleccionado debe tener los eventos INPUTERROROCCUR

3 – Asignar un nombre al Tipo de Objeto y al programa

4 – Hacer doble clic sobre la nueva entrada creada. Seleccionar el ícon


Modificar el nombre y descripción del objeto de manera que coincidan
liberar el Tipo de objeto.

Crear una nueva tarea basada en el Objeto de Aplicación Idoc

Observación:

Si al ejecutar este paso, llega a aparecer el mensaje:

Falta entrada para sistema NNN, mandante XXX

el problema es el siguiente:

Las tareas y papeles, así como las definiciones workflow necesitan


sistema y el mandante. De esta manera es posible realizar un trans
sistema a otro, en todo momento y sin restricciones. Desde el punto
uniformidad se realiza mediante un "número prefijo". Para cada
puede definirse un número prefijo propio. Esto se realiza en la tab
La transacción es la OOW4.

Una tarea de workflow define los atributos de la tarea que debe ser eje
aplicación. Una tarea apunta a un método a ser ejecutado y a un evento
tarea.

La mejor opción para definir una nueva tarea es copiar una existente, t
(TS00008046).

1 – Ejecutar la transacción PFTC_COP.


Transacción: PFTC_COP

¬ Desarrollo ¬ SAP Business Workflow ¬Camino Lógico: Herramien


Tareas ¬Herramientas def.

Seleccionar Tarea estándar para el tipo de tarea e ingresar algún núme


tarea. Seleccionar el ícono Copiar.

2 – Ingresar una abreviatura y nombre para la tarea. Presionar Enter. E


Tomar nota del número creado (ejemplo: 90000001).

Ejemplo de Sigla y Denominación:

Sigla: ZQOTE_ERROR

Denominación: ZQOTE Error de Entrada

3 – Ejecutar la transacción PFTC_CHG.

Transacción: PFTC_COP

¬ Desarrollo ¬ SAP Business Workflow ¬Camino Lógico: Herramien


de Tareas ¬Herramientas def.

Seleccionar Tarea estándar como tipo de tarea, y el número de tarea d


Seleccionar Modificar.

4 – Reemplazar el campo Tipo de Objeto con el Objeto de aplicación I


ZIDOCZQOTE.

5 – El siguiente paso es modificar el evento de Triggering. Seleccionar


Desencadenantes. Borrar el/los eventos existentes y crear otro basado

Tipo de Objeto: ZIDOCZQOTE

Evento: INPUTERROROCCURRED

6 – Debe ahora definirse el link de datos entre el evento de triggering y


correspondiente al evento de triggering y presionar el ícono Defin. Flu
propuestos para los campos Expresión y Excepción.

7 – Activar el link

8 – Definir ahora el evento de terminación. Seleccionar la solapa Even

Borrar el eventos existente y crear otro basado en el Tipo de Objeto:


Tipo de Objeto: ZIDOCZQOTE

Evento: INPUTFINISHED

Elemento: WIOBJECT_ID (la única opción disponible)

9 – Definir la tarea como Tarea General de modo tal que pueda ser eje
Datos adicionales ¬ Asign. Responsable ¬ Actualizar. Seleccionar la o

- Configuración de la Interfaz de entrada

Luego de definir la configuración de workflow, deben llevarse a cabo


configuración del proceso de entrada:

1 - Definir un nuevo tipo de mensaje.

2 - Relacionar el tipo de mensaje al tipo de IDoc.

3 - Asignar el módulo de función al tipo de mensaje lógico y Idoc.

4 - Definir los atributos para el módulo de función de entrada.

5 - Definir un nuevo Código de Operación.

6 - Asignar métodos de entrada.

7 - Definir o modificar un acuerdo de interlocutor .

8 - Definir Puerta.

9 - Definir Módulo de Función.

Definición de mensaje

Transacción: WE81

Camino Lógico: Desde el área de menú de EDI (transacción Tipos de mensajes


Menú SAP

En este paso se asigna un tipo de mensaje a los contenidos del IDoc y


Definir un tipo de mensaje. Por ejemplo: ZQUOTE (Oferta).

Ver detalles del procedimiento más arriba en este mismo documento: C


Mensaje

Relación entre el tipo de mensaje y el tipo de Idoc

Transacción: WE82
Camino Lógico: Desde el área de menú de EDI (transacción WEDI), seleccionar
IDoc / Mensaje

En este paso se asigna el tipo de mensaje creado en el paso anterior al

Para este ejemplo, relacionar el tipo de mensaje (ej: ZQUOTE) con el


ZQUOTE01).

Ver detalles del procedimiento más arriba en este mismo documento: R


Mensaje y un Tipo Base de IDoc.

Relación entre el módulo de función y el tipo de mensaje

Transacción: WE57

Camino Lógico: Desde el área de menú de EDI (transacción WEDI), s


Obj.Apl.¬Desarrollo

Esta configuración establece un link entre el módulo de funciones, var


mensaje, variante lógica de mensaje y función lógica de mensaje).

Observación: En el caso de mensajes de salida, esta relación es estable


interlocutor. Para mensajes de entrada, no existe entrada para el tipo d
interlocutor, por lo que esta configuración es usada para establecer un
object válidos para el módulo de función.

1 – Crear un módulo de función (o sea una función). No es recomenda


alguna existente, ya que los parámetros de la función son estándar.

Por ejemplo, copiar el módulo de función IDOC_INPUT_ORDERS a


asignarlo a algún grupo de funciones Z.

2 – Crear una nueva entrada en la transacción WE57.

Los valores de Módulo, Tipo Base, Tipo Mensaje y Tipo Objeto mostr
ejemplo,

pero el Tipo y Sentido se deben respetar.

Módulo: Z_IDOC_INPUT_ZQUOTE
Tipo: F (módulo de función)
Tipo Base: ZQUOTE01

Tipo Mensaje: ZQUOTE

Tipo Objeto: ZIDOCZQOTE


Sentido: 2 (Salida)
font size = "4">Definir atributos del Módulo de Función</font>

Transacción: BD51

Camino Lógico: Herramientas => Desarrollo ALE =¬ALE > IDoc =>
de Funciones => Actualizar atributos

Crear una nueva entrada, con el siguiente detalle:

Módulo de función de entrada: Z_IDOC_INPUT_ZQUOTE

Tipo de Entrada: 2 (Entrada indiv. Con bloqueo de IDoc en transacció

Diálogo posible: X

El flag de diálogo posible indica si el IDoc puede ser procesado en mo


Si esta opción está seteada, el usuario puede reprocesar el juego de dat

Definición de Código de Operación

Transacción: WE42

Camino Lógico: Desde el área de menú de EDI (transacción WEDI), s


proceso de¬ Parametrizaciones Entrada ¬ Desarrollo ¬Menú SAP en

En este paso se asigna el código de operación de proceso al módulo de


de entrada. El código de operación de proceso es un medio indirecto d
función.

Definir el código de operación (Ej: ZQUOT), según el siguiente detall

Descripción: Oferta
Módulo de Función: Z_IDOC_IN
Cantidad máxima de repeticiones: 2

Marcar el flag Proceso con servicio ALE

Marcar el flag Procesamiento c. Módulo de funciones

Asignar métodos de entrada

Transacción: BD67

Este paso crea un link entre el código de proceso definido en el paso p


Además, se definen parámetros adicionales que la componente de wor
errores, así como programación avanzada de workflow.
Definición de Acuerdo de Interlocutor

Transacción: WE20

Camino Lógico: Desde el área de menú de EDI (transacción WEDI), s


Acuerdo entre interlocutores EDI.¬

Crear un Acuerdo de Interlocutor con la siguiente información:

Nro. Interlocutor EDI: Poner el nombre del sistema lógico que


Tipo de Interlocutor EDI: LS (sistema lógico)
Tipo de Autor: US (Usuario)
Autor: (el Id del usuario que lo está creand

Presionar Grabar.

Adicionar parámetro de entrada con la siguiente información:

Opciones de Salida:

Tipo de interlocutor EDI: LS


Función interlocutor EDI: LS
Tipo de mensaje: ZQUOTE
Cód. Oper.: ZQUOT
Verif. Sintax.:
Lanzamiento inmediato: 3

Definición de Puerta

Transacción: WE21

Camino Lógico: Desde el área de menú de EDI (transacción WEDI), s


Puerta¬Gestión

Se crea una puerta, (Ejempo EDI_ZQOT02) de tipo fichero, para defin


vez generado y transmitido a la puerta de salida.

Datos de la puerta de fichero:

1. Directorio físico: X
2. Fichero de salida: ZQUOTE02 "V

Definición de Módulo de Función

Un módulo de función de entrada de Idocs tiene la siguiente secuencia


1 – Leer la información del registro de control. Verificar la informació
el tipo de mensaje es incorrecto, generar una excepción.

2 - Leer los datos para un IDoc.

3 – Procesar cada registro de datos.

5 – Completar los parámetros de retorno.

6 – Si existen otros IDocs, volver al paso 2. Si no, ir al paso 7.

7 – Retornar del módulo de función. Los resultados de la ejecución son

En general, los módulos de funciones que reciben Idocs tienen los sigu

Import parameters Reference field


INPUT_METHOD BDWFAP_PAR-INPUTMETHD
MASS_PROCESSING BDWFAP_PAR-MASS_PROC

Export Parameters Reference field


WORKFLOW_RESULT BDWFAP_PAR-RESUL
APPLICATION_VARIABLE BDWFAP_PAR-APPL_V
IN_UPDATE_TASK BDWFAP_PAR-UPDAT
CALL_TRANSACTION_DONE BDWFAP_PAR-CALLT

Table Parameters Reference field Opt


IDOC_CONTRL EDIDC
IDOC_DATA EDIDD
IDOC_STATUS BDIDOCSTAT
RETURN_VARIABLES BDWFRETVAR
SERIALIZATION_INFO BDI_SER

Exceptions
WRONG_FUNCTION_CALLED

A continuación se detalla genéricamente el código de procesamiento d


puede ver que realiza los pasos mencionados más arriba.

* DECLARACION DE DATOS
DATA: C_SEGNAM(10) TYPE C VALUE 'Z1INVRV'.

*RECORRE EL/LOS IDOC/S DE CABECERA


LOOP AT IDOC_CONTRL.

* RECORRE LOS SEGMENTOS DE DATOS PARA CADA UNA DE LAS


* CABECERAS DE IDOCS (REGISTROS DE CONTROL)
LOOP AT IDOC_DATA
WHERE DOCNUM = IDOC_CONTRL-DOCNUM.

* SEGUN EL SEGMENTO, GUARDA LOS DATOS EN


* UNA DETERMINADA ESTRUCTURA Y LO PROCESA.
CASE IDOC_DATA-SEGNAM.
WHEN C_SEGNAM.

IT_Z1INVRV = IDOC_DATA-SDA
PERFORM F_PROCESAR_XXXX
...
...
...
WHEN C_XXXXXX.

IT_XXXXXXX = IDOC_DATA-SDA
PERFORM F_PROCESAR_NNNN

ENDCASE.

ENDLOOP."LOOP AT IDOC_DATA

* GUARDA EL RESULTADO DE LA EJECUCION PARA EL IDOC


PERFORM UPDATE_IDOC_STATUS.

ENDLOOP."LOOP AT IDOC_CONTRL.

*********************************************************
* FORMS
*********************************************************

FORM F_PROCESAR_XXXX

* Acá insertar la lógica necesaria para el procesamiento

ENDFORM.

*--------------------------------------------------------
* FORM UPDATE_IDOC_STATUS
*--------------------------------------------------------
* ........
*--------------------------------------------------------
FORM UPDATE_IDOC_STATUS.

*--- Now we check the CALL TRANSACTION return code and se


CLEAR IDOC_STATUS.
IF RETURN_CODE = 0.
WORKFLOW_RESULT = '0'.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-UNAME = SY-UNAME.
IDOC_STATUS-REPID = SY-REPID.
IDOC_STATUS-MSGTY = SY-MSGTY.
IDOC_STATUS-MSGID = SY-MSGID.
IDOC_STATUS-MSGNO = SY-MSGNO.
IDOC_STATUS-MSGV1 = SY-MSGV1.
IDOC_STATUS-MSGV2 = SY-MSGV2.
IDOC_STATUS-MSGV3 = SY-MSGV3.
IDOC_STATUS-MSGV4 = SY-MSGV4.
RETURN_VARIABLES-WF_PARAM = 'Processed_ID
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL
APPEND RETURN_VARIABLES.
ELSE.
WORKFLOW_RESULT = '99999'.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-UNAME = SY-UNAME.
IDOC_STATUS-REPID = SY-REPID.
IDOC_STATUS-MSGTY = SY-MSGTY.
IDOC_STATUS-MSGID = SY-MSGID.
IDOC_STATUS-MSGNO = SY-MSGNO.
IDOC_STATUS-MSGV1 = SY-MSGV1.
IDOC_STATUS-MSGV2 = SY-MSGV2.
IDOC_STATUS-MSGV3 = SY-MSGV3.
IDOC_STATUS-MSGV4 = SY-MSGV4.
RETURN_VARIABLES-WF_PARAM = 'ERROR_IDOCS'
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL
APPEND RETURN_VARIABLES.
ENDIF.
APPEND IDOC_STATUS.
ENDFORM." UPDATE_IDOC_STATUS

You might also like