![La creación de un IDoc en SAP La creación de un IDoc en SAP](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/255.jpg)
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:
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 control está definida por la estructura del DDIC EDI_DC40.
Los datos del registro de control se almacenan en la tabla SAP EDIDC. La clave de esta tabla es el mandante (MANDT) y número de Idoc (DOCNUM).
Uno o más registros de Datos
Un IDoc puede contener múltiples registros de datos, según haya sido definida la estructura del Tipo de IDoc. En ejecución, los segmentos son convertidos por el sistema a registros de datos. Un registro de datos contiene información de la aplicación (maestro de proveedores, petición de oferta, oferta, pedidos, etc.). La estructura de los registros de datos está definida por la estructura del DDIC EDI_DD40. La sección de datos es una cadena de 1000 bytes, y es el lugar donde los datos realmente residen. La sección de datos es mapeada en ejecución a un tipo de segmento, según haya sido definida la estructura del tipo de IDoc, a fin de interpretar la estructura de los datos en esta cadena. Los datos de los registros de datos se almacenan en la tabla SAP EDID4. La clave de la tabla es el mandante (MANDT), el número de IDoc (DOCNUM), y el número de segmento (SEGNUM).
Uno o más registros de Estado
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. Los datos de los registros de datos se almacenan en la tabla SAP EDIDS. La clave de la tabla es el mandante (MANDT), número de Idoc (DOCNUM), fecha (LOGDAT), hora (LOGTIM), y un contador de registro (COUNTR).
Creación de un Nuevo Tipo de Idoc en SAP
Creación de los Elementos de Datos
Deben crearse los elementos de datos necesarios para la definición de los segmentos. Los segmentos no admiten cualquier tipo dato. Los tipos aceptados son los siguientes:
Tipo de Datos Descripción
CHAR String de caracteres
CLNT Cliente
CUKY Campo moneda, referenciado por campos CURR
DATS Campo fecha (YYYYMMDD), almacenado como char(8)
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.
Pasos a seguir:
a. Ejecutar la transacción WE31. Ingresar el nombre del tipo de segmento (debe comenzar con Z) y seleccionar la opción Crear (F5).
b. Entrar una descripción breve y los valores para los distintos campos. Este paso completa la definición del segmento.
c. Guardar las entradas. Volver a la pantalla anterior y repetir el mismo procedimiento para todos los segmentos que se necesiten crear para el tipo de IDoc.
Creación del Tipo Base del Idoc
Una vez creados todos los segmentos, el siguiente paso es crear el Tipo Base de IDoc. Los tipos base de IDocs se crean con el Editor de IDocs:
Transacción: WE30
Pasos a seguir:
a. Ejecutar la transacción WE30. Ingresar el nombre del tipo base de IDoc (debe comenzar con Z). Seleccionar la opción Tipo base y Crear (F5).
b. En la siguiente pantalla, seleccionar la opción Crear nuevo e ingresar una descripción para el tipo base de IDoc. Presionar Continuar.
c. Posicionar el cursor sobre el nombre del IDoc y seleccionar Crear (Shift F6). Ingresar a continuación el tipo de segmento y sus atributos. Al presionar Enter, el sistema transfiere el nombre del tipo de segmento al editor de IDoc.
d. Para ingresar más segmentos, repetir el procedimiento del punto c. Luego de haber creado el primer segmento, debe indicarse para los restantes el nivel (mismo nivel o nivel hijo) en el cual se quiere insertar el nuevo segmento.
e. Guardar el tipo base de IDoc.
Liberación del Tipo de Segmento y Tipo Básico del Idoc
Una vez terminada la definición de la estructura del IDoc y sus segmentos, ambos objetos deben ser liberados a fin de que se encuentren disponibles para su transporte a los sistemas de testing y producción. Primero deben liberarse los segmentos y después el tipo base de IDoc.
Para liberar un segmento, ejecutar la transacción WE31. Ingresar el tipo de segmento y seleccionar Tratar, Liberar. El sistema automáticamente completa el checkbox en el bloque de definiciones del segmento.
Para liberar un tipo base de IDoc, ejecutar la transacción WE30. Ingresar el tipo base de Idoc y seleccionar Tratar, Liberar.
Una vez que el segmento / tipo base de IDoc es liberado, ya no pueden ser modificados. En caso de ser necesario introducir modificaciones debe cancelarse la liberación. Los pasos para cancelar la liberación son los mismos a los indicados para la liberación.
Extensión de un Idoc
Las ampliaciones de IDocs son componentes que se utilizan para extender tipos de IDoc base ya existentes de una forma predefinida. Estas extensiones sólo pueden ser realizadas por el cliente ya que los tipos de ampliación no son proporcionados por SAP.
Para crear un tipo de ampliación:
Transacción: WE30
En el editor de IDOC, elegir el componente Tipo de ampliación e introducir el nombre en el campo Objeto.
Seleccionar Objeto desarrollo -> Crear. En éste momento, la ventana de diálogo Crear un tipo de ampliación se mostrará por pantalla.
Elegir una de las siguientes tres opciones:
- Crear nuevo.
- Crear como copia.
- Crear como sucesor.
Para añadir segmento ampliado a un segmento de referencia, colocar el cursor sobre el segmento de referencia siguiente a donde se pretenda añadir el nuevo segmento y seleccionar Crear. Aparecerá un mensaje indicando que los segmentos creados después de un segmento de referencia sólo pueden ser creados como segmentos hijos. La secuencia en la cual aparecen los segmentos de referencia en el tipo de ampliación es irrelevante. Lo realmente importante es que dichos segmentos existan en el tipo de Idoc base que está siendo ampliado. Las ampliaciones de cliente realizadas utilizando tipos de ampliación pueden soportarse cuando el sistema se actualice a una nueva versión R/3. Los sucesores a tipos de Idoc base de versiones anteriores se combinan automáticamente con los tipos de ampliación que ya están siendo utilizados. No se requiere un mantenimiento manual. Los tipos de Idoc base implementados por el cliente y sus ampliaciones permanecen sin cambios en la actualización.