0% encontró este documento útil (0 votos)
249 vistas42 páginas

Guía Completa sobre IDOCs en SAP

El documento describe los IDOCs en SAP, que son paquetes de información diseñados para intercambiar datos entre sistemas SAP y externos. Los IDOCs tienen tres partes: un registro de control, segmentos de datos y registros de estado. También explica cómo crear IDOCs, incluidos los pasos de definir tipos de segmento, tipo de IDOC, perfil de socio y más. Finalmente, detalla cómo generar IDOCs desde programas ABAP, punteros de modificación y mensajes de logística.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
249 vistas42 páginas

Guía Completa sobre IDOCs en SAP

El documento describe los IDOCs en SAP, que son paquetes de información diseñados para intercambiar datos entre sistemas SAP y externos. Los IDOCs tienen tres partes: un registro de control, segmentos de datos y registros de estado. También explica cómo crear IDOCs, incluidos los pasos de definir tipos de segmento, tipo de IDOC, perfil de socio y más. Finalmente, detalla cómo generar IDOCs desde programas ABAP, punteros de modificación y mensajes de logística.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

IDOCs

IDOCs - Introducción
El IDOC es un paquete (o contenedor)de información
diseñado para intercambiar datos entre distintos sistemas.

Puede ser utilizado entre:


Sistema SAP  Sistema SAP
Sistema SAP  Sistemas externos (salida)
Sistemas externos  Sistema SAP (entrada)
IDOCs - Introducción
Existen Idocs estándares para transportar datos de los
objetos de negocio más comunes en SAP como por
ejemplo:
• ARTMAS02 (Maestro de materiales)
• CREMAS03 (Datos de proveedores)
• ADRMAS02 (Datos de direcciones)
• ORDERS05 (Ordenes de compra o venta)
IDOCs – Características / Estructura
Un IDOC está compuesto por 3 partes:
IDOCs – Características / Estructura
Es una estructura de tipo edi_dc40
Se deben completar datos tales como:
•Remitente
•Destinatario
•Tipo de mensaje
Es único por cada Idoc.
IDOCs – Características / Estructura
Es una estructura de tipo edi_dd40
Se deben completar:
•Nombre del segmento (define la
estructura del campo datos)
•Mandante
•Datos (campo de 1000 caracteres)
Dependiendo del idoc y la información
que transporta existen distintos
segmentos de datos a completar.
IDOCs – Características / Estructura
Contiene información sobre el estado
del Idoc a lo largo de las distintas
etapas del proceso
Toma valores enter 00 y 41 para Idocs
de salida y 50 a 73 para los de
entrada.
Cada Idoc puede contener uno o más
registros de estado
IDOCs – Transacción WE02/WE05
Permite ver la lista de IDOCs recibidos y enviados y editar segmentos
con error.
IDOCs – Transacción BD87
Nos permite reprocesar un IDOC con error.
IDOCs – Transacción WE19
Similar a BD87 pero a diferencia de esta genera un nuevo IDOC a partir de uno
ya creado. Permite editar los segmentos y enviar o recibirlo según sea de salida
o entrada
IDOCs – Creación – Paso 1 (segment type)
Tx WE31: Son las estructuras que definen que campos va a contener
cada tipo de segmento de datos del IDOC.
En caso de crear segmentos nuevos, estos deben comenzar con Z.
Para definir los campos que componen el segmento se deben definir
los elementos de datos correspondientes, es importante tener en
cuenta solo los siguientes tipos de datos son admitidos en segmentos
de idosc:
IDOCs – Creación – Paso 1 (segment type)
Ejemplo:
IDOCs – Creación – Paso 2 (Idoc Type)
Tx WE30 : El Idoc Type o Tipo Base define:
• Que segmentos contendrá el IDOC (de los definidos en el paso 1)
• El orden entre los segmentos
• La jerarquía entre los segmentos
• Las repeticiones

Se puede crear un tipo base o una extensión de un tipo ya creado


(esto es cuando necesitamos por ejemplo agregar información a
enviar utilizando un idoc standard)
IDOCs – Creación – Paso 2 (Idoc Type)
Ejemplo:
IDOCs – Creación – Paso 3 (Message Type )
Tx WE81 : El Message Type es el tipo de mensaje a transmitir, por
ejemplo orders, que después puede estar asociado a ordenes de
compras ordenes de ventas, etc. Es un elemento agrupador y lo único
que requiere es un nombre y una descripción.
Ejemplo:
IDOCs – Creación – Paso 4 (Relación Message -IDOC )
Tx WE80 : Se debe crear la relación entre el Message Type y el Idoc
Type, esta asociación permite documentar el tipo de mensaje en que
está basado el tipo de IDOC:
Ejemplo:
IDOCs – Creación – Paso 5 (Parthner Profile)
Tx WE20 : Es el acuerdo entre interlocutores, el que emite el mensaje
y el que lo recibe.

El acuerdo especifica varias de las características de los datos que se


intercambian incluyendo el modo de operación y la organización o
persona responsable por el manejo de los errores.

Los datos definidos en un acuerdo de interlocutor son:


• Acuerdo de interlocutores a utilizar.
• Tipo de Idoc y Tipo de mensaje.
• Puerta por el cual el emisor y el receptor se comunicarán.
IDOCs – Creación – Paso 5 (Parthner Profile)
La información a completar en el acuerdo entre interlocutores varía
según el IDOC sea de entrada o de salida.
IDOCs – Creación – Pasos adicionales
En la mayoría de los casos los siguientes elementos ya están definidos
en el sistema por el equipo de basis, pero si fuese necesario podemos
crear nosotros los necesarios para completar la configuración del
IDOC, estos elementos son:

• Logical system (Sistema lógico)

• Distribution Model

• Ports
IDOCs – Creación – Logical System
Tx BD54. Es una definición de cada sistema en sap, identifica a un
ambiente y mandante. En general el nombre está compuesto por
systemIDCLNTclient number por ejemplo IDSCLNT800.
IDOCs – Creación – Logical System
Cada sistema lógico luego se lo asigna a cada mandante de cada
ambiente para poder identificarlo en el momento de realizar la
comunicación. Para ver que sistema lógico tiene asociado un
mandante podemos hacerlo en la transacción SCC4:
IDOCs – Creación – Distribution Model
TX BD64. El Modelo de distribución contiene información sobre el
flujo de los IDOCs, define sistema lógico origen y destino y el tipo de
mensajes que intercambian. Solo es necesario cuando se utilizan
idocs de tipo Master Data como ARTMAS por ejemplo.
IDOCs – Creación – Ports
Tx. WE21. La puerta de entrada/salida define el medio por el cual se
va a enviar o recibir el IDOC, los tipos de puertas más comunes son:
• File: Deja el Idoc en un archivo
• RFC: Permite la comunicación mediante una función RFC
• XML: Al igual que file, genera un archivo con el contenido del idoc
pero en este caso en formato xml
IDOCs – De salida
Existen tres formas de generar Idocs:

• Desde un programa ABAP (desarrollo Z).

• Desde un puntero de modificación (Change Pointer).

• Desde mensajes de logística.


IDOCs – De salida - Programa ABAP
Los pasos a seguir para crear un Idoc desde un programa ABAP son
los siguientes:
• Seleccionar la información de la base de datos de acuerdo a los
parámetros de selección ingresados.
• Completar la información correspondiente al registro de control.
• Completar una tabla interna de tipo EDIDD con los registros de
datos de los segmentos correspondientes.
• Llamar al servicio de la capa ALE (MASTER_IDOC_DISTRIBUTE) para
crear los IDOCs en la base de datos.
IDOCs – De salida - Programa ABAP
Ejemplo – Registro de control:

DATA ls_control TYPE edi_dc40.

ls_control-tabnam = 'EDI_DC40'.
ls_control-mandt = sy-mandt.
ls_control-docrel = sy-saprl.
ls_control-direct = '2'.
ls_control-idoctyp = 'ARTMAS01'.
ls_control-mestyp = 'ARTMAS'.
ls_control-stdmes = 'ARTMAS'.
ls_control-sndprn = 'PERFIL'. "Nº int remitente
ls_control-sndprt = 'US'. "Tp int remitente
ls_control-sndpor+0(3) = 'SAP'.
ls_control-sndpor+3(3) = sy-sysid.
ls_control-rcvprn = 'XX'. “Nº int receptor
ls_control-rcvprt = 'KU'. "Tp int receptor
IDOCs – De salida - Programa ABAP
Ejemplo – Segmentos de datos:

* Tabla que contendrá los segmentos de datos


DATA:
gt_regdd TYPE TABLE OF edi_dd40.
gs_regdd TYPE edi_dd40.

* Estructura con los datos a enviar


DATA:
ls_mathead TYPE e1bpe1mathead.
IDOCs – De salida - Programa ABAP
* Completo los datos en la estructura
ls_mathead-function = '004'.
ls_mathead-material = mara-matnr.
ls_mathead-matl_type = mara-mtart.
ls_mathead-matl_group = mara-matkl.
ls_mathead-matl_cat = mara-attyp.
ls_mathead-logdc_view = 'X'.
ls_mathead-logst_view = 'X'.
ls_mathead-pos_view = ' '.
ls_mathead-ck_no_rnge = ' '.
ls_mathead-all_fields = ' '.
IDOCs – De salida - Programa ABAP
* Paso los datos al segmento de datos
gs_regdd-segnam = 'E1BPE1MATHEAD'.
gs_regdd-mandt = sy-mandt.
gs_regdd-sdata = ls_mathead.

* Agrego el segmento de datos a la tabla de segmentos


APPEND gs_regdd TO gt_regdd.
IDOCs – De salida - Programa ABAP
* Declaro la estructura para el otro segmento de datos
DATA ls_marcrt TYPE e1bpe1marcrt.

* Cargo los datos en la estructura


ls_marcrt-function = '004'.
ls_marcrt-material = lv_mat.
ls_marcrt-plant = lv_plant.
ls_marcrt-sup_source = lv_sup_src. Este segmento necesita marcas
ls_marcrt-pur_status = lv_pur_st. de modificación.
ls_marcrt-pvalidfrom = lv_pvalf.

* Paso los datos al segmento de datos


gs_regdd-segnam = 'E1BPE1MARCRT'.
gs_regdd-mandt = sy-mandt.
gs_regdd-sdata = ls_marcrt.

* Agrego el segmento de datos a la tabla de segmentos


APPEND gs_regdd TO gt_regdd.
IDOCs – De salida - Programa ABAP
* Declaro la estructura para el segmento con las marcas
DATA ls_marcrtx TYPE e1bpe1marcrtx.

* Cargo los datos en la estructura


ls_marcrtx-function = '004'.
ls_marcrtx-material = lv_mat.
ls_marcrtx-plant = lv_plant.
ls_marcrtx-sup_source = ‘X’.
ls_marcrtx-pur_status = ‘X’.
ls_marcrtx-pvalidfrom = ‘X’.

* Paso los datos al segmento de datos


gs_regdd-segnam = 'E1BPE1MARCRT'.
gs_regdd-mandt = sy-mandt.
gs_regdd-sdata = ls_marcrtx.

* Agrego el segmento de datos a la tabla de segmentos


APPEND gs_regdd TO gt_regdd.
IDOCs – De salida - Programa ABAP
Ejemplo – Generación del IDOC: Registro de control

* Llamo a la función que genera el idoc.

CALL FUNCTION 'IDOC_INBOUND_SINGLE‘


EXPORTING Número asignado al
pi_idoc_control_rec_40 = ls_control Nuevo IDOC
IMPORTING
pe_idoc_number = lv_docnum
TABLES
Tabla con los
pt_idoc_data_records_40 = gt_regdd. segmentos de datos
IDOCs – De salida - Punteros
Toda vez que se crean o modifican datos maestros, tal como materiales, proveedores,
etc., el sistema escribe “punteros de modificación” (change pointers) como registro de
cada una de estas modificaciones para cada documento.

Pasos para la generación de IDOCs utilizando los punteros de salida:


• Activar los punteros de modificación en forma global: BD61
• Activar los punteros de modificación para nuestro tipo de mensaje:
BD50
• Definir los campos relevantes para la generación de punteros de
modificación. BD52
• Relacionar el tipo de mensaje con el módulo de función. BD60
• Programar un job con el report RBDMIDOC para crear los Idocs.
IDOCs – De salida - Mensajes
• Se puede usar el concepto de Mensajes R/3 para disparar la
creación de Idocs de la misma manera que se dispara la impresión
de formularios.
• La tabla utilizada para esto es la NAST. Esta tabla guarda
recordatorios escritos por aplicaciones. Estos recordatorios son
llamados Mensajes.
• Se debe parametrizar el nuevo mensaje en la tx NACE
• El mensaje es procesado por el programa ABAP estándar
RSNAST00, el cual lee el mensaje desde la tabla NAST, y llama al
módulo de función adecuado para crear el Idoc, invocando a la
función MASTERIDOC_DISTRIBUTE.
IDOCs – De salida - Mensajes
Ejemplo tx NACE:
IDOCs – De salida - Mensajes
Ejemplo tx NACE:
IDOCs – De salida - Mensajes
Ejemplo tx NACE:
IDOCs – De salida - Mensajes
Ejemplo tx NACE:
IDOCs – De salida - Mensajes
Ejemplo tx NACE:
IDOCs – De salida - Mensajes
Ejemplo acuerdo Interlocutores p/mensaje:
IDOCs – Ejercicio
Crear un Nuevo idoc a partir de uno existente y generarlo como
archivo plano en un directorio del servidor.

1) Utilizar la tx we02 para buscar un idoc existente y tomar nota del


número.
2) Ir a la tx we19 y colocar el nro de idoc identificado
3) Verificar en la tx we21 los puertos de tipo file. Si no existe uno
acorde a las necesidades, crearlo.
4) Volver a la tx we19 y cambiar el segmento de control para colocar
en el destinatario el Puerto identificado en el paso anterior
IDOCs – Ejercicio
5) Procesar el idoc de salida
6) Verificar en la tx we02 si se ejecutó
7) Verificar en la tx al11 que esté el archivo

También podría gustarte