Manual para La Creacion de IDOCs
August 19, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Manual para La Creacion de IDOCs...
Description
Manual para la creacion de IDOCs De SAP ABAP en castellano Saltar a a navegación, 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 3.4 Tipo de Segmento y Tipo 3.5 – – Liberación Transporte del de Segmentos y Tipo Base de Básico IDocs de IDoc 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) 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 Mensaje 10.2.3 Definición de campos relevantes para la generación de Punteros de Modificación 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. Idocs. o 10.3 Creación de Idocs desde un Mensaje de Logística o o
•
•
• • • • •
•
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 Idoc 11.2 - Configuración de la Interfaz de entrada 11.2.1 Transacción: WE81 Lógico: Desde el área Tipos de¬ Desarrollo ¬de 11.2.2 Camino Lógico: menú de EDI (transacción WEDI), seleccionar Menú SAP mensajes mensajes 11.2.3 Camino Lógico: Desde el área de menú de EDI (transacción WEDI), seleccionar Menú SAP -> Desarrollo -> Tipo Tipo IDoc / Mensaje Mensaje 11.2.4 Definición de Código de Operación
o
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. SE11. Desde la transacción transacción WE30 se puede ver el formato de los Idocs. Por ejemplo, para el Idoc MATMAS01, el formato es el siguiente: MATMAS01 E1MARAM E1MAKTM E1MARCM E1MARDM E1MARMM E1MEANM E1MBEWM
Maestro material Maestro material datos generales (MARA) Maestro material - textos breves (MAKT) Maestro material segmento C (MARC) Maestro material almacén/segmento lotes (MARD) Maestro material unidades de medida (MARM) Maestro mat. números art. europeos (MEAN) Maestro material valoración stocks (MBEW)
E1MLGNM E1MVKEM E1MLANM E1MTXHM E1MTXLM
Maestro mat. datos por núm.almacén (MLGN) Maestro material datos de ventas (MVKE) Maestro material clasif. impuestos (MLAN) Maestro material texto explicativo cabecera 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
______________________________________________________________________ ___ TABNAM MANDT DOCNUM DOCREL STATUS DIRECT OUTMOD EXPRSS TEST IDOCTYP CIMTYP
CHAR EDI4TABNAM Nombre de la estructura de tabla 10 CLNT EDI4MANDT Mandante 3 CHAR EDI4DOCNUC Número del IDOC 16 CHAR EDI4DOCREL Release SAP del IDOC 4 CHAR EDI4STATUS Status del IDOC 2 CHAR 1 EDI4DIRECT CHAR EDI4OUTMOD Modo de salida 1 CHAR EDI4EXPRSS Sustitución en Entrada 1 CHAR 1 EDI4TEST CHAR EDI4IDOCTP Nombre del tipo base 30 CHAR EDI4CIMTYP Ampliación (definida por los clientes) 30
I
CHAR EDI4MESTYP 30 CHAR EDI4MESCOD MESCOD 3 CHAR EDI4MESFCT MESFCT 3 CHAR EDI4STD STD 1 CHAR EDI4STDVRS STDVRS 6 MESTYP
STDMES
SNDPRT SNDPFC
Tipo de mensaje Variante de mensajes Función de mensaje Estándar EDI, indicador Estándar EDI, versión y release
CHAR EDI4STDMES Tipo de mensajes EDI 6 CHAR EDI4SNDPRT Tipo de interlocutor EDI del remitente 2 CHAR EDI4SNDPFC Función interlocutor EDI del remitente 2 Número del interlocutor EDI del remitente SNDSAD SNDLAD RCVPOR RCVPRT
CHAR 21 CHAR 70 CHAR 10 CHAR 2
EDI4SNDSAD EDI4SNDLAD EDI4RCVPOR EDI4RCVPRT
Dirección del Dirección lógi Puerta del dest Tipo de interlo
destinatario RCVPFC
CHAR 2
EDI4RCVPFC
Función de inte
destinatario RCVPRN CHAR EDI4SNDPRN RCVSAD SNDPRN 10 RCVLAD CREDAT CRETIM REFINT
CHAR 10 CHAR 21
EDI4RCVPRN EDI4RCVSAD
Nº interlocutor EDI d Dirección del destina
CHAR 70 DATS 8 TIMS 6
EDI4RCVLAD EDI4CREDAT EDI4CRETIM CHAR 14
Dirección lógica del Fecha de creación Hora de creación EDI4REFINT Fic
Interchange) REFGRP
CHAR 14
EDI4REFGRP
Grupo de mensaj
Group) REFMES ARCKEY
CHAR 14 CHAR 70
EDI4REFMES EDI4ARCKEY
Mensaje (M Clave del ar
externo SERIAL
HAR 20
EDI4SERIAL
________________________________________________________ Los datos del registro de control se almacenan en la tabla SAP EDID 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 re datos contiene información de la aplicación (maestro de proveedores, pedidos, etc.). La estructura de los registros de datos está definida por la estructura d Estructura de campo Cantidad de campos: 7 Total longitudes de campo: 1063 Componente
Tipo
Long.
Tipo
________________________________________________________ SEGNAM MANDT DOCNUM SEGNUM PSGNUM HLEVEL SDATA
CHAR 30 CLNT 3 CHAR 16 CHAR 6 NUMC 6 CHAR 2 LCHR 1000
EDI4SEGNAM EDI4MANDT EDI4DOCNUC EDI4SEGNUC EDI4PSGNUC EDI4HLEVEC EDI4SDATA
Segmento (no Mandante Número del ID Número de seg Número del seg Nivel de jerarq Datos de la apli
________________________________________________________
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 Los datos de los registros de datos se almacenan en la tabla SAP EDI mandante (MANDT), el número de IDoc (DOCNUM), y el número d c – Uno o más registros de Estado Generalmente, varios registros de estado se adjuntan a un IDoc.
asigna registros de estado durante todo el proceso, a medida que puntos de control. Contienen información de estado, tal como cód que el punto de control es alcanzado. Estos registros de estado exist almacenados en el archivo de salida .
La estructura de los registros de estado está definida por la estructura Estructura de campo Cantidad de campos: 24 Total longitudes de campo: 562 Componente
Tipo
Long. Tipo
________________________________________________________ TABNAM MANDT DOCNUM LOGDAT LOGTIM STATUS STAMQU
CHAR 10
DATS 8 TIMS 6 CHAR 2 CHAR 3
EDI4TABNAM CLNT 3 CHAR 16 EDI4LOGDAT EDI4LOGTIM EDI4STATUS EDI4STAMQU
Nombre de la estru EDI4MANDT Ma EDI4DOCNUC N Fecha de la inform Hora de la informa Status del IDOC Cualificador para
status STAMID
CHAR 20
EDI4STAMID
Nro. de mensaje par
Clase mensaje STAMNO
NUMC 3
EDI4STAMNO
Número de mensaje en
STATYP
CHAR 1
EDI4STATYP
Tipo de mensaje (A, W
CHAR 50
EDI4STAPA1
Primer parámetro de un
de status STAPA1 de status STAPA2
CHAR 50
EDI4STAPA2
Segundo parámetro
registro de status STAPA3 de status
CHAR 50
EDI4STAPA3
Tercer parámetro de un
STAPA4
CHAR 50
EDI4STAPA4
Cuarto parámetro de un
de status STATXT UNAME REPID ROUTID
CHAR 12 CHAR 30
CHAR 70 EDI4UNAME EDI4REPID
EDI4STATXT Nombre del usu Programa
CHAR 30
EDI4ROUTID
Subrutina (rutin
funciones) SEGNUM SEGFLD REFINT REFGRP REFMES ARCKEY
CHAR 6 CHAR 30 CHAR 14 CHAR 14 CHAR 14 CHAR 70
EDI4SEGNUC EDI4SEGFLD EDI4REFINT EDI4REFGRP EDI4REFMES EDI4ARCKEY
Número de segment Campo de segmento Fichero de transmisi Grupo de mensajes ( Mensaje (Mensaje E Clave del archivo de
________________________________________________________ Los datos de los registros de estado se almacenan en la tabla SAP ED 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 ex representados por sus propios elementos de datos. Sin embargo, los segmentos no admiten cualquier tipo dato y por lo t elementos en caso que los existentes no sean de alguno de los siguien ________________________________________________________ Tipo de Datos
Descripción
________________________________________________________ CHAR CLNT CUKY DATS
String de caracteres Cliente Campo moneda, referenciado por campos CURR Campo fecha (YYYYMMDD), almacenado como ch
LANG NUMC TIMS
Clave de idioma Campo carácter con dígitos solamente 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), ¬seleccionar Menú SAP
Pasos:
2.1 - Ejecutar la transacción WE31. Ingresar el nombre del tipo de se seleccionar la opción Crear (F5).
2.2 – Entrardel una descripción breve yautomáticamente los valores para los distintos cam definición segmento. El sistema asigna un nomb basado en el nombre del tipo de segmento. Ej.: si el tipo de segmento 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 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 Cre continuación el tipo de segmento y sus atributos. Al presionar Enter, 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 ni 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 segme liberados a fin de que se encuentren disponibles para su transporte a l producción. Primero deben liberarse los segmentos y después el tipo Para liberar un segmento, ejecutar la transacción WE31. Ingresar el ti Tratar, Liberar. El sistema automáticamente completa el check box e segmento. Para liberar un tipo base de IDoc, ejecutar la transacción WE30. Ingr seleccionar Tratar, Liberar. Una vez que el segmento / tipo base de IDoc es liberado, ya no puede necesario introducir modificaciones debe cancelarse la liberación. Lo 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á
orden de transporte. Luego de transportados tr ansportados los objetos, los mismos p manualmente desde el editor de segmentos / Transportar. Al transpor seleccionando: Segmento transportan automáticamente tod todas as sus defi embargo, al transportarse un tipo base de IDoc no se transportan auto
Extensión de un IDoc. Las ampliaciones de IDocs son componentes que se utilizan para exte existentes de una forma predefinida. Estas extensiones sólo pueden se 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 intr Objeto. Seleccionar Crear ◊ Objeto desarrollo . En éste momento, la ventana 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 brev ampliación a crear. Seleccionar Continuar . 1. Para añadir segmento ampliado a un segmento de referencia, coloc referencia siguienteque a donde se pretenda añadirdespués el nuevodesegmento ys mensaje indicando los segmentos creados un segment creados como segmentos hijos. La secuencia en la cual aparecen los segmentos de referencia en el tip realmente importante es que dichos segmentos existan en el tipo de I ampliado.
Las ampliaciones de cliente realizadas utilizando tipos de ampliación 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 se requiere un mantenimiento manual. Los tipos de IDoc base implem 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ód outbound, que inserte los datos indicados en la extensión del segment El programa o función que genere el Idoc puede o no ser un estandar insertar el código necesario para manejar las extensiones en una User transacción CMOD. Si es un programa Z, solo habrá que actualizarlo Por otro lado, habrá que actualizar los Acuerdos de Interlocutores q 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ód
inbound, que considere el tipo de segmento extendido recibido entre l El programa o función que genere el Idoc puede o no ser un estandar insertar el código necesario para manejar las extensiones en una User transacción CMOD. Si es un programa Z, solo habrá que actualizarlo Por otro lado, habrá que actualizar los Acuerdos de Interlocutores q especificando el nombre de la extensión creada.
Creación de destinos RFC, puertos y sistem 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 ti Idocs, se crean conexiones del tipo TCP/IP, especificando el nombre del servid destino.
Definición de puerta. (A lo largo de este documento se usará la palabra Puerto o Puerta, ind 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 Definitio Los Idocs pueden ser enviados y recibidos a través de diferentes medi la definición de las características del medio con la aplicación que lo accedido vía puertos. En otras palabras, un puerto es un nombre lógic entrada/salida. Los programas se comunican con un puerto a través d En vez de definir el medio de comunicación directamente en el Ac Profile), se asigna un número de puerto, y es este puerto el que de permite definir las características de los puertos individualmente Acuerdos de Interlocutores. 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 siguie 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 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 a que el Idoc se envía. Se recomienda usar el módulo de funciones EDI_PATH_CREATE_CLIENT_DOCNUM, EDI_PATH_CREATE_ CLIENT_DOCNUM, el cual genera el nomb mandante y nro. de Idoc. RFC Transaccional Transaccional
Se usa para escenarios de distrubución ALE. El nombre del puerto se 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, puerto, el formato del XML, y el nombre del archivo a generar. Al ig Fichero, se puede invocar a la función EDI_PATH_CREATE_CLIE los nombres del archivo en forma dinámica. XML-HTTP
En vez de definir el nombre del archivo XML, se especifica un destin
Definición de sistemas lógicos Transacción: BD54 Camino Lógico: Desde la transacción SALE, seleccionar Preparar sis 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 sis un¬ Preparar sistemas lógicos ¬ receptores y de envío mandante.
Hacer doble click sobre el mandante que al que se desea asignar, y po 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 lega
datos. El acuerdo de interlocutor especifica varias de las caracterí intercambian incluyendo el modo de operación y la organización manejo de los errores. Cuando los datos son intercambiados entr que el emisor y el receptor estén de acuerdo en la sintaxis y semá intercambiados. Este acuerdo es lo que se llama Acuerdo de Inter receptor de la estructura de los datos enviados y cómo los conteni
La datos definidos en un acuerdo de interlocutor son: •
• •
Tipo de Idoc y Tipo de mensaje, los cuales son el identificado 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
Creación de un nuevo tipo de Mensaje en S Transacción: WE81 Camino Lógico: Desde el área de menú EDI (transacción WEDI), sel Desarrollo ¬Menú SAP En este paso se asigna un tipo de mensaje a los contenidos de datos a mensajes de usuario deben ser nombrados comenzando con Z.
Relación entre un tipo de Mensaje y un Tip 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 anteri asociación no sólo sirve a fin de documentar el mensaje en que est sino que además verifica esta asociación asociación el momento en que el ID
Creación de un modelo de distribución. La relación entre sistemas lógicos, tipos de mensajes, BAPIs y filtros Distribución. Las controlar aplicaciones y la capa ALE usan el modelo de distri receptores y para la distribución de datos.
Los escenarios de distribución definen los tipos de IDocs y los par 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 interlocu solo puede ser mantenido en uno de los sistemas, el cual lo podem uno de los sistemas es el sistema líder, pero puede ser seteado par interlocutores en cualquier momento, aún si el escenario ya se en
Puede haber varios escenarios para diferentes propósitos. Por otro lad escenario. Lo más recomendable es crear un escenario por administra ALE, no tiene mucho sentido tener más de un escenario. Pero si hay diferentes requerimientos, será más útil crear un escenario por depart Pasos para crear un Modelo de Distribución: Transacción: BD64 Camino Lógico: Desde la transacción SALE, seleccionar Aplication implementar modelos empresariales ¬ Enabling (ALE) modelos de D -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 distr
-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 tr -Completar el campo Destinatario con el nombre del Sistema lógico q
-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 ex 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 pro
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. 3Completar una tabla interna de tipo EDIDD con los registros de da correspondientes. 4- Llamar al servicio de la capa ALE (MASTER_IDOC_DISTRI 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 c_message_type c_base_idoc_type c_base_idoc _type c_invrev_segname(7) c_rcvprn IDOC_CONTROL LIKE T_COMM_CONTROL LIKE IDOC_DATA LIKE
LIKE LIKE TYPE LIKE
edidc-mesty edidc-mestyp p VALUE 'ZINVR edidc-idoct edidc-idoctp p VALUE 'ZINVR C VALUE 'Z1INVRV',"Nombr edidc-rcvpr edidc-rcvprn n VALUE 'SAPBC
EDIDC, EDIDC OCCURS 0 WITH HEADER LIN EDIDD OCCURS 0 WITH HEADER LIN
* CAMPOS DE CONTROL DEL IDOC idoc_control -doctyp idoc_control-doctyp idoc_control-mestyp idoc_control -mestyp idoc_control-idoctp idoc_control -idoctp idoc_control-serial idoc_control -serial idoc_control-direct idoc_control -direct idoc_control-serial idoc_control -serial idoc_control-serial+8 idoc_control-rcvprn idoc_control -rcvprn idoc_control-rcvprt idoc_control -rcvprt
= = = = = = = = =
c_message_typ c_message_type. e."Tipo Mensaje c_message_typ c_message_type. e."Tipo Mensaje c_base_idoc_t c_base_idoc_type. ype."Tipo de Idoc space. '1'. sy-datum. sy-uzeit. c_rcvprn "Nro Interlocutor Desti 'LS'"Tipo interlocutor dest
APPEND idoc_control.
* CAMPOS DE DATOS DEL IDOC
* Esta sección la repite una vez por cada registro de da * en el IDoc. * Indica cuál es el tipo de segmento IDOC_DATA-SEGNAM IDOC_DATA-S EGNAM = C_INVREV_SEG C_INVREV_SEGNAME. NAME."Nombre Segmento * Completa los datos de la estructura del segmento CLEAR Z1INVRV.
Z1INVRV-CAMPO_01 = VALOR_01 Z1INVRV-CAMPO_01 ... ... ... Z1INVRV-CAMPO_NN Z1INVRV-CAM PO_NN = VALOR_NN
* Mueve la estructura con los datos del segmento al únic 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 para MASTER_IDOC_DISTRIBUTE ' 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_UN SENDING_LOGIC AL_SYSTEM_UNKNOWN KNOWN = OTHERS if sy-subrc = 0. COMMIT WORK. endif.
Una vez completados estos pasos, queda creado el Idoc. El mismo se EDIDC y EDID4. Se lo puede ver desde la transacción WE05. Para enviar el Idoc a su destinatario, se invoca al programa RSEOUT
Creación de Idocs utilizando Punteros de Modificación (C Toda vez que se crean o modifican datos maestros, tal como datos proveedores, proveedore s, etc., el sistema escribe "punteros de modificación" ( de cada una de estas modificaciones para cada documento. El rep ejecutado a fin de procesar todas las entradas en la tabla de punt generar los IDocs, este programa llama a un módulo de función e
Los pasos a seguir para la creación de un Idoc de salida utilizando Pu siguientes: • • • • •
Activar los punteros de modificación en forma global. Activar los punteros de modificación para nuestro tipo de men Definir los campos relevantes para la generación de punteros Relacionar el tipo de mensaje con el módulo de función. Crear un módulo de función para leer los punteros de modific
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 empresarial datos modificados ¬distribución de de datos maestros Activación gener
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 empresarial datos modificados ¬distribución de de datos maestros Activar puntero Agregar una entrada para el mensaje deseado, y marcarla como activa
Definición de campos relevantes para la generación de Punteros
Transacción: BD52
Servicio de¬ IDoc ¬ Desarrollo ALE ¬ ALE ¬Camino Lógico: Herr 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: Herr mediante clases.¬datos En este paso se relaciona el tipo de mensaje con el módulo de fun analizar/procesar analizar/proce sar los punteros de modificación. Ejecutar la trans entrada para el tipo de mensaje deseado, y el módulo de función 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 modifi 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 parti invocada desde el programa RBDMIDOC, a partir de la configuració La lógica del programa contiene los siguientes pasos: 1- Leer los punteros de modificación generados usando la función C 2- Analizar los punteros de modificación para determinar cuáles docu 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 clav 3. 5- Completar la información del registro de control del IDoc. 6- Completar una tabla interna de estructura EDIDD con registros de 7- Llamar al servicio de la capa ALE (MASTER_IDOC_DISTRIBU 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é exten caso de estar extendiendo, lo que se hace generalmente es copiar una lógica necesaria para que se considere el segmento extendido al mom
Creación de Idocs desde un Mensaje de Logística 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 cre El mensaje es procesado por el programa ABAP estándar RS desde la tabla NAST, y llama al módulo de función adecuado función MASTERIDOC_DISTRIBUTE. 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 se dispara la impresión de SapScripts. La tabla utilizada para esto es la NAST. Esta tabla guarda recordatori recordatorios son llamados Mensajes (messages). Cada vez que una aplicación ve la necesidad de pasar información a u
escrito en la tabla NAST. Un controlador de mensajes (message handl entradas en esta tabla y ejecutará la acción apropiada. Un mensaje N solo registro en la tabla NAST. El registro guarda toda la información Idoc. Esto incluye, entre otras cosas, una clave de objeto para identifi y receptor del mensaje.
Creación de un Idoc de entrada La configuración de la interfaz de entrada incluye una sección de Con 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 excepci pasos que deben llevarse a cabo son: 1 – Crear un nuevo Objeto de Aplicación IDoc en el Business Object 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: Herramie Builder ¬Herramientas def.
1 – Seleccionar el botón Buscar (ctrl.+F) y expandir las opciones de s Selecciones (todas). Ingresar IDOCAPPL en el campo Tipo super y E 2 – Seleccionar cualquier objeto y seleccionar Business Objects ¬ Co El objeto seleccionado debe tener los eventos INPUTERROROCCU 3 – Asignar un nombre al Tipo de Objeto y al programa
4 – Hacer doble clic sobre la nueva entrada creada. Seleccionar el íco Modificar el nombre y descripción del objeto de manera que coincida 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 tran sistema a otro, en todo momento y sin restricciones. Desde el punt uniformidad se realiza mediante un "número prefijo". Para cada puede definirse un número prefijo propio. Esto se realiza en la ta La transacción es la OOW4.
Una tarea de workflow define los atributos de la tarea que debe ser ej aplicación. Una tarea apunta a un método a ser ejecutado y a un event tarea. La mejor opción para definir una nueva tarea es copiar una existente, (TS00008046). 1 – Ejecutar la transacción PFTC_COP.
Transacción: PFTC_COP ¬ Desarrollo ¬ SAP
Business Workflow ¬Camino Lógico: Herramie Tareas ¬Herramientas def.
Seleccionar Tarea estándar para el tipo de tarea e ingresar algún núm tarea. Seleccionar el ícono Copiar. 2 – Ingresar una abreviatura y nombre para la tarea. Presionar Enter. 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: Herramie de Tareas ¬Herramientas def.
Seleccionar Tarea estándar como tipo de tarea, y el número de tarea Seleccionar Modificar. 4 – Reemplazar el campo Tipo de Objeto con el Objeto de aplicación ZIDOCZQOTE.
5 – El siguiente paso es modificar el evento de Triggering. Selecciona
Desencadenantes. Borrar el/los eventos existentes y crear otro basado Tipo de Objeto: ZIDOCZQOTE Evento: INPUTERROROCCURRED INPUTERROROCCURRED 6 – Debe ahora definirse el link de datos entre el evento de triggering correspondiente al evento de triggering y presionar el ícono Defin. Fl propuestos para los campos Expresión y Excepción. 7 – Activar el link 8 – Definir ahora el evento de terminación. Seleccionar la solapa Eve Borrar el eventos existente y crear otro basado en el Tipo de Objeto:
Tipo de Objeto: ZIDOCZQOTE Evento: INPUTFINISHED Elemento: WI OBJECT_ID OBJECT_ID (la única opción disponible) 9 – Definir la tarea como Tarea General de modo tal que pueda ser ej Datos adicionales ¬ Asign. Responsable ¬ Actualizar. Seleccionar la
- 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 (transacción Tipos de mensaje 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: 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), selecciona 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 e ZQUOTE01). Ver detalles del procedimiento más arriba en este mismo documento: Mensaje y un Tipo Base de IDoc. Relación entre el módulo de función y el tipo de mensaje
Transacción: WE57 WE57 Camino Lógico: Desde el área de menú de EDI (transacción WEDI), Obj.Apl.¬Desarrollo Esta configuración establece un link entre el módulo de funciones, va 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 establ 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 recomend 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 most ejemplo, pero el Tipo y Sentido se deben respetar. Módulo: Tipo: Tipo Base:
Z_IDOC_INPUT_ZQUOTE F (módulo de función) ZQUOTE01
Tipo Mensaje: ZQUOTE Tipo Objeto: Sentido:
ZIDOCZQOTE 2 (Salida)
font size = "4">Definir atributos del Módulo de Función Transacción: BD51 Camino Lógico: 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 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 m Si esta opción está seteada, el usuario puede reprocesar el juego de da Definición de Código de Operación
Transacción: WE42 Camino Lógico: Desde el área de menú de EDI (transacción WEDI), proceso de¬ Parametrizaciones Entrada ¬ Desarrollo ¬Menú SAP e En este paso se asigna el código de operación de proceso al módulo d de entrada. El código de operación de proceso es un medio indirecto función.
Definir el código de operación (Ej: ZQUOT), según el siguiente detal Descripción: Módulo de Función: Cantidad máxima de repeticiones:
Oferta Z_IDOC_I 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 Además, se definen parámetros adicionales que la componente de wo 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), Acuerdo entre interlocutores EDI.¬ Crear un Acuerdo de Interlocutor con la siguiente información: Nro. Interlocutor EDI: Tipo de Interlocutor EDI: Tipo de Autor: Autor:
Poner el nombre del sistema lógico qu LS (sistema lógico) US (Usuario) (el Id del usuario que lo está crean
Presionar Grabar. Adicionar parámetro de entrada con la siguiente información: Opciones de Salida: Tipo de interlocutor EDI: Función interlocutor EDI: Tipo de mensaje: Cód. Oper.: Verif. Sintax.: Lanzamiento inmediato:
LS LS ZQUOTE ZQUOT 3
Definición de Puerta
Transacción: WE21 Camino Lógico: Desde el área de menú de EDI (transacción WEDI), Puerta¬Gestión Se crea una puerta, (Ejempo EDI_ZQOT02) de tipo fichero, para defi vez generado y transmitido a la puerta de salida. Datos de la puerta de fichero: 1. Directorio físico: 2. Fichero de salida:
ZQUOTE02
X "
Definición de Módulo de Función
Un módulo de función de entrada de Idocs tiene la siguiente secuenci
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 so En general, los módulos de funciones que reciben Idocs tienen los sig Import parameters
Reference field
INPUT_METHOD
BDWFAP_PAR-INPUTMETHD
MASS_PROCESSING
BDWFAP_PAR-MASS_PROC
Export Parameters
Reference field
WORKFLOW_RESULT
BDWFAP_PAR-RESU
APPLICATION_VARIABLE
BDWFAP_PAR-APPL_
IN_UPDATE_TASK
BDWFAP_PAR-UPDA
CALL_TRANSACTION_DONE
BDWFAP_PAR-CALL
Table Parameters
Reference field
IDOC_CONTRL
EDIDC
IDOC_DATA
EDIDD
IDOC_STATUS
BDIDOCSTAT
RETURN_VARIABLES
BDWFRETVAR
SERIALIZATION_INFO
BDI_SER
Exceptions
Op
WRONG_FUNCTION_CALLED A continuación se detalla genéricamente el código de procesamiento 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-S IDOC_DATA-SEGNAM. EGNAM. WHEN C_SEGNAM. IT_Z1INVRV = IDOC_DATA-S IDOC_DATA-SD D PERFORM F_PROCESAR_XXXX
... ... ...
WHEN C_XXXXXX. IT_XXXXXXX = IDOC_DATA-S IDOC_DATA-SD D PERFORM F_PROCESAR_NNNN ENDCASE. ENDLOOP."LOOP AT IDOC_DATA
*
GUARDA EL RESULTADO DE LA EJECUCION PARA EL IDO PERFORM UPDATE_IDOC UPDATE_IDOC_STATUS. _STATUS.
ENDLOOP."LOOP AT IDOC_CONTRL.
******************************************************** * FORMS ******************************************************** FORM F_PROCESAR_XXXX F_PROCESAR_XXXX
* Acá insertar la lógica necesaria para el procesamiento ENDFORM. ENDFORM.
*------------------------------------------------------* FORM UPDATE_IDOC_STATUS UPDATE_IDOC_STATUS *------------------------------------------------------* ........ *-------------------------------------------------------
FORM UPDATE_IDOC_STATUS. UPDATE_IDOC_STATUS.
*--- Now we check the CALL TRANSACTION return code and s CLEAR IDOC_STATUS IDOC_STATUS. . IF RETURN_CODE = 0. WORKFLOW_RESULT WORKFLOW_RES ULT = '0'. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '53'. IDOC_STATUS-UNAME IDOC_STATUSUNAME = SY-UNAME. IDOC_STATUS-REPID = SY-REPID. IDOC_STATUS-REPID IDOC_STATUS-MSGTY IDOC_STATUSMSGTY = SY-MSGTY. IDOC_STATUS-MSGID IDOC_STATUSMSGID = SY-MSGID. IDOC_STATUS-MSGNO IDOC_STATUSMSGNO = SY-MSGNO. IDOC_STATUS-MSGV1 IDOC_STATUSMSGV1 = SY-MSGV1. IDOC_STATUS-MSGV2 IDOC_STATUSMSGV2 = SY-MSGV2. IDOC_STATUS-MSGV3 IDOC_STATUSMSGV3 = SY-MSGV3. IDOC_STATUS-MSGV4 IDOC_STATUSMSGV4 = SY-MSGV4. RETURN_VARIABLES-WF_PARAM = 'Processed_I RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTR APPEND RETURN_VARIABLES. ELSE.
WORKFLOW_RESULT = '99999'. WORKFLOW_RESULT IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-UNAME IDOC_STATUSUNAME = SY-UNAME. IDOC_STATUS-REPID IDOC_STATUSREPID = SY-REPID. IDOC_STATUS-MSGTY IDOC_STATUSMSGTY = SY-MSGTY. IDOC_STATUS-MSGID IDOC_STATUSMSGID = SY-MSGID. IDOC_STATUS-MSGNO IDOC_STATUSMSGNO = SY-MSGNO. IDOC_STATUS-MSGV1 IDOC_STATUSMSGV1 = SY-MSGV1. IDOC_STATUS-MSGV2 IDOC_STATUSMSGV2 = SY-MSGV2. IDOC_STATUS-MSGV3 IDOC_STATUSMSGV3 = SY-MSGV3. IDOC_STATUS-MSGV4 IDOC_STATUSMSGV4 = SY-MSGV4. RETURN_VARIABLES-WF_PARAM = 'ERROR_IDOCS' RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTR APPEND RETURN_VARIABLES. ENDIF. APPEND IDOC_STATUS. ENDFORM." ENDFORM. " UPDATE_IDOC_STATUS
View more...
Comments