IDOCs

Es un Formato SAP estándar para el intercambio electrónico de datos entre sistemas.

La sigla IDOC es “documento intermedio“ o “Intermediate Document”. 

Los IDOCs permiten intercambiar información entre distintos sistemas. Se lo puede ver como un archivo de texto plano con registros.

Un IDOC esta compuesto por un “IDOC Basic Type” o “Tipo Básico” y “Segments” o “Segmentos”.

Composición de un IDOC:

Un segmento define el formato y estructura de un registro de datos. Los segmentos son reusables con lo cual se pueden usar en mas de un tipo básico de IDOC.

Un segmento consiste de varios campos que representan el dato a enviar.

En el ejemplo anterior si hacemos doble click sobre el segmento veremos lo siguiente:

El nombre, un campo indicando si es mandatorio o no, y un Máximo y Mínimo de cantidad de veces que se puede repetir el registro en el segmento.

Si hacemos click en “Segment Editor” podemos ver en mas detalle la composición.

En el editor de segmentos vemos como esta compuesto.

Vemos que tiene los campos con sus correspondientes tipo.

Un IDOC tiene los siguientes atributos técnicos:

Dirección: Puede ser de Salida (Outbound) o de Entrada (Inbound)

Status: El status actual del IDOC, OK, Error, etc.

Tipo Básico: El tipo básico con el cual se definió el IDOC.

Extensión (Opcional): Un IDOC ya existente se puede extender con campos de otro.

Partner No: Un partner representa a un sistema, ya sea el que envía o recibe.

Partner Type: Representa el tipo de sistema, por ejemplo, Sistema Lógico.

Port: Un puerto es un nombre lógico que se usa en combinación con el Partner para definir a donde enviar o recibir un IDOC.

Por lo general un message type describe un documento de negocio, por ejemplo:

  • INVOIC –> Factura
  • ORDERS –> Sales / Purchase Orders
  • WHSORD –> Stock Order

Los message types se crean de la transacción WE81

Con un Message Type y Basic Type definidos debemos asociarlos.

Esto se hace de la transacción WE82

Definir sistemas lógicos:

Un sistema lógica representa un ambiente al cual nos queremos conectar.

Se definen desde la transacción BD54.

En la imagen de abajo tenemos definidos dos sistemas lógicos, para este caso como solo tenemos un solo sistema, vamos a asumir que cada mandante representados por los sistemas lógicos A4HCLNT001 y A4HCLNT002 son sistemas diferentes.

Creación de un sistema Lógico:

1)Hacemos click en editar

2)Hacemos click en New Entries

3) Ingresamos los datos y hacemos click en guardar (Nos pedirá una orden de transporte)

Definimos los puertos:

Se definen desde la transacción WE21.
En la imagen de abajo tenemos definidos dos puertos, como vimos antes simulando sistemas separados.

Creación de un nuevo puerto:

1)Nos paramos sobre el tipo de puerto a crear, por ejemplo “Transactional RFC” y hacemos click en Nuevo.

2)En la siguiente ventana tenemos la opción de elegir un nombre para el puerto o que el mismo sea autogenerado.

3)Completamos la descripción, le asignamos una RFC y lo grabamos.

Las RFC o Remote Function Call, básicamente son modulos de funciones común y corrientes con la particularidad de
que estos se pueden llamar desde otro SAP.

Las RFC se crean y modifican desde la transacción SM59, por lo general la creación o modificación de una RFC es tarea del equipo de BASIS, pero se pueden dar casos donde también lo hagan los ABAPers.

Para configurar una RFC mínimamente debemos llenar los siguientes campos:

Usamos el Process Code para determinar a que modulo de función llamar en la WE20.

Los Process Code se pueden definir de dos transacciones diferentes dependiendo de si son de Inbound u Outbound

WE41 –> Outbound Process Code

WE42 –> Inbound Process Code

Partners:

Los partners se crean desde la transacción WE20.

Un partner puede tener asociado (Entre otras cosas) un sistema lógico, y a su vez, este sistema lógico tiene asociado:

Para Outbound: -Message Type: Un identificador. -Message Code/Variant: Son también identificadores que sirven para segregar mas la funcionalidad. -Message Function: Idem Anterior. -Port: El puerto del sistema remoto al que nos estaremos conectando. –

Para Inbound: -Message Type: Idem anterior. -Message Code/Variant: Idem anterior. -Message Function: Idem anterior -Process Code: Idem anterior. –

Ejemplo:

Podemos tener:

Message Type: INVOIC

Message Code: CRE

Message Function: FACT

Process Code: PR1


Message Type: INVOIC

Message Code: MOD

Message Function: FACT

Process Code: PR2

Partners:

Para ver o buscar IDOCs podemos usar las transacciones WE02 / WE05, desde la pantalla de selección podemos filtrar, por numero de IDOC, estado, fecha / hora, message type, etc.

Para copiar y procesar un IDOC ya existente podemos usar la transacción WE19, entre algunos de los parámetros que podemos usar esta el numero de IDOC, basic type, etc.

Dependiendo de si queremos procesar un Outbound o Inbound hacemos click en el botón correspondiente y confirmamos el popup que nos aparece.

Para reprocesar un IDOC se usa la transacción BD87, ingresando con un numero de IDOC.

Ejemplo de codigo de programa para enviar IDOCs:

REPORT zcrear_banco.
PARAMETERS: p_pais TYPE bnka-banks,
            p_key  TYPE bnka-bankl.
DATA: lwa_idoc_ctrl     TYPE edidc,
      lt_idoc_comm      TYPE TABLE OF edidc,
      lt_idoc_Data      TYPE TABLE OF edidd,
      lwa_idoc_data     TYPE edidd,
      lwa_E1BANK_CREATE TYPE e1bank_create,
      lwa_dir           TYPE e1bp1011_address.

lwa_idoc_ctrl-direct = 1. "Outbound.
lwa_idoc_ctrl-outmod = 1. "Transferir el IDOC inmediatamente.
lwa_idoc_ctrl-rcvpor = 'A000000002'. "Puerto de recepcion.
lwa_idoc_ctrl-rcvprt = 'LS'. "Partner type de recepcion.
lwa_idoc_ctrl-rcvprn = 'A4HCLNT002'. "Partner de recepcion.
lwa_idoc_ctrl-stdmes = 'BANK_CREATE'. "Message Type.
lwa_idoc_ctrl-mescod = 'BCR'. "Message Variant.
lwa_idoc_ctrl-mesfct = 'CRT'. "Message Function.
lwa_idoc_ctrl-sndprt = 'LS'. "Partner Type de envio.
lwa_idoc_ctrl-SNDPRn = 'A4HCLNT001'. "Partner de envio.
lwa_idoc_ctrl-mestyp = 'BANK_CREATE'. "Message Type.
lwa_idoc_ctrl-idoctp = 'BANK_CREATE01'. "Basic Type.

lwa_idoc_data-segnam = 'E1BANK_CREATE'. "Nombre del segmento.

lwa_e1bank_create-bank_ctry = p_pais.
lwa_e1bank_create-bank_key = p_key.

lwa_idoc_data-sdata = lwa_e1bank_create.
APPEND lwa_idoc_data TO lt_idoc_data.
CLEAR lwa_idoc_Data.

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
  EXPORTING
    master_idoc_control            = lwa_idoc_ctrl
  TABLES
    communication_idoc_control     = lt_idoc_comm
    master_idoc_data               = lt_idoc_data
  EXCEPTIONS
    error_in_idoc_control          = 1
    error_writing_idoc_status      = 2
    error_in_idoc_data             = 3
    sending_logical_system_unknown = 4
    OTHERS                         = 5.
IF sy-subrc EQ 0.
  COMMIT WORK.
ENDIF.

END-OF-SELECTION.

Message Types:

Message TypeIDOC TypeDescription
BENREPBENEFIT1Benefits Participation
Benefits Retirement Plan
CREADVPEXR2001, PEXR2002Credit Memo Display
DEBADVPEXR2001, PEXR2002Debit Advice
DELFORDELFOR01Delivery Schedule
DELINSDELFOR01Forecast Delivery Schedule
DELJITDELFOR01Just-In-Time Delivery Schedule
DELORDORDERS03, ORDERS04, ORDERS05Delivery Order (Pickup sheet)
DESADVDELVRY01, DELVRY02, DELVRY03 (previously: DESADV01)Delivery Shipping Notification
EXPINVEXPINV01, EXPINV02, EXPINV03Foreign Trade Billing Document
FINSTAFINSTA01Bank Statement
GSVERFGSVERF01Self-Billing procedure
IMPINVIMPINV01Import Basis IDOC
INVOICINVOIC01Invoice
LOCKBXFINSTA01Lockbox
ORDCHGORDERS01, ORDERS02, ORDERS03,
ORDERS04, ORDERS05
Sales Order Change
Purchase Order Change
ORDERSORDERS01, ORDERS02, ORDERS03,
ORDERS04, ORDERS05
Sales Order
Purchase Order
ORDRSPORDERS01, ORDERS02, ORDERS03,
ORDERS04, ORDERS05
Sales Order Confirmation
Purchase Order Confirmation
PAYEXTPEXR2001, PEXR2002Extended Payment Order
PRICATPRICAT01Price List/Catalog
PROACTPROACT01Stock and Sales Data
QUOTESORDERS01, ORDERS02, ORDERS03,
ORDERS04, ORDERS05
Quotation
REMADVPEXR2001, PEXR2002Payment Advice
REQOTEORDERS01, ORDERS02, ORDERS03,
ORDERS04, ORDERS05
Inquiry
SHPADVSHPMNT03Shipping Notification
SHPCONDELVRY01Shipping Confirmation
SHPMNTSHPMNT01, SHPMNT02, SHPMNT03, SHPMNT04Shipment Notification
SHPORDDELVRY01Delivery: Dispatch Order
TXTRAWTXTRAW01, TXTRAW02Message for free text in SAP office format
WHSORDDELVRY01Delivery: Stock Order

Programas:

• RBDMIDOC –> Generar IDOCs a partir de punteros modif.

• RSEOUT00 –> Proceso de todos los IDOCs seleccionados.

• RBDAPP01 –> Proceso de IDOCs entrantes dispuestos a ser transferidos.

• RSARFCEX –> Ejecutar llamadas aún no ejecutadas.

• RBDMOIND –> Conversión status si ejecución correcta del TRFC.

• RBDMANIN –> Lanzar tratamiento de errores para IDOCs no contabilizados.


Transacciones:

WE05: IDOC List Overview 

WE19: Herramientas de test para el proceso de IDOC (Copia IDOCs) 

WE20: Partners, destinos lógicos. 

WE21: Puertos 

WE30: Creación de Tipo Base/Extensión 

WE31: Creación de segmentos 

WE41: Outbound process code 

WE42: Inbound process code 

WE57: Asociar Basic Type, Message Type y Function Module 

WE81: Creación de mensajes Lógicos 

WE82: Asignación de mensaje Lógico, Tipo Base y Extensión 

BD51: Inbound Function Modules 

BD54: Definir sistemas logicos. 

BD64: Distribution Model.

BD87: Inbound IDoc reprocessing. 

BD88: Outbound IDoc reprocessing. 

BDM2: IDoc Trace.

SM59: Creación / Modificación de RFCs.

Leave a Reply