SAP ALE IDOC EDI-Kor_01.4.3 IDOC Type과 IDOC

출판된 한글판 도서


ERP SAP R/3 ALE, EDI & IDOC 기술


Original Book Contents


1.4.3    IDOC Type IDOC

 

IDOC Type(Intermediate Document Type)이란 message type과 연관되어 있는 자료의 구조를 표현하는 용어이며(message type DEBMAS에 대응되는 DEBMAS05Customer Master, message  type WMMBXY에 대응되는 WMMBID02자재이동 등), 반면 IDOC은 그 안에 특정 message type의 자료를 포함하고 있는 object를 의미한다. IDOC은 지능적으로 작동하는 data container이다. 각각의 IDOC은 단 하나의 business object만 포함하고 있다는 것을 이해하는 것이 중요하다. 다시 말하면, IDOC type SHIPMNT01이고, message type SHPMNT IDOC은 단 하나의 shipment 문서 자료만 포함하고 있다는 것이다. 나중에 배우게 되겠지만, 일반적으로 이야기 하면, IDOC의 구조는 message type과는 독립적인데, 이것은 ALE가 모든 message type에 대해서 IDOC 구조를 재정의할 수 있는 능력을 가지고 있기 때문이다.

 

IDOC은 다음 세 가지의 record type으로 구성되어 있다: (1) control record(EDI_DC), (2) data record(EDI_DD), (3) status record(EDI_DS)가 그것이다. [그림 1-1]을 참조하라.


그림 1‑1 IDOC의 구조

 


그림 1‑2 IDOC Database

 

Control Record structure EDI_DC의 형식을 따르고 있다. control record IDOC에 대한 정보를 나타내는 여러 field를 포함하고 있는 통제 구조로서, IDOC type, message type, 송신자와 수신자에 대한 정보, IDOC의 전달방향(1 outbound를 의미하고, 2 inbound를 의미함) 등과 같은 정보를 포함하고 있다. 이러한 정보는 outbound IDOC에서는 통제자료(control data)를 제공해 주고, inbound IDOC에 대해서는 처리방식(processing option)을 결정해 준다. IDOC client번호(MANDT) IDOC 번호(DOCNUM)를 그 key로 사용한다. IDOC EDI_DC record table EDIDC에 보관된다. 모든 IDOC은 하나의 control record를 가지고 있다.

 

Data Record structure EDI_DD의 형식을 따르고 있으며, application 자료를 포함하고 있다. 모든 EDI_DD record에는 55 byte 길이의 key부분이 있는데, 여기에는 그 record를 설명하는 여러 가지 field이 포함되어 있다. 55 byte key 다음에는 LCHR(long character) 형식으로 정의되어 있는 1000 byte 길이의 SDATA field가 따라온다. SDATA field에는 application 자료가 저장되어 있고, 그것의 실제적인 구조는 key 부분에 있는 SEGNAM(segment name) field에 의해서 결정된다. 하나의 IDOC은 하나 또는 여러 개의 data record로 구성되어 있고, 그 각각의 순서와 구조는 지정된 IDOC type에서 정의되어 있는 segment들의 순서와 구조의 지배를 받는다따라서 각 data record SDATA 부분은 그 data record의 처음 55 byte에 포함되어 있는 segment name, sequence, hierarchy, 기타 사항 등을 규정하고 있는 segment의 구조정보에 따라서 모든 record가 재정의되어 사용된다.  outbound interface에서는 ALE/EDI function module이 이러한 정보를 사용하여 segment application 자료를 채우게 되고, inbound interface에서는 application module(예를 들면 SD,MM)이 이러한 정보를 이용하여 segment에 포함되어 있는 자료를 해석하고, 처리한다. data record cluster EDI30C에 속하는table EDID2에 저장된다.

 

             NOTE

SAP 내에서 data dictionary 관점에서 보면, IDOC segment는 명명규칙을 잘 따르고 있다. segment는 세 부분으로 되어 있는데 segment type에 대해서는 prefix E1, segment definition에 대해서는 prefix E2, segment document에 대해서는 prefix E3를 사용하고 있다. 예를 들면 IDOC type DEBMAS05의 처음 segment E1KNA1M이고, 그것에 대한 definition structure E2KNA1M에 포함되어 있으며, document E3KNA1M에 포함되어 있다. IDOC이 외부에 보여질 때, 우리는 prefix E2로 지정되는 segment 이름을 보는 것이다. 우리가 모든 실제적인 목적상 IDOC segment를 이야기할 때는 단지 E2 prefix만을 사용할 것이다. 또한 대부분의 segment 이름은 data dictionary table을 의미한다는 것에 주의하라(참고 : 하지만 이러한 원칙은 SAP Version 4.0 이전에 생성된 IDOC에서만 유효하며, 그 이후에 생성된 IDOC에 대해서는 prefix E2 prefix E3에 대하여 data dictionary에 별도로 정의되는 것이 없다. 따라서 우리가 segment를 인용할 때는 항상 prefix E1을 사용하며, 설사 Version 4.0 이전에 생성된 IDOC일자라도 동일한 방식으로 처리할 수 있다는 것에 주의하기 바란다).

 

Status Record data dictionary structure EDI_DS의 정의를 따른다. 여기에는 IDOC이 여러 단계의 처리과정을 거쳐감에 따라 계속적으로 변경되어 가는, IDOC의 상태에 대한 정보를 포함하고 있다. STATUS field 2 byte 길이의 CHAR data type으로, outbound IDOC인 경우는 01-41범위의 값을 가지고, inbound IDOC에 대해서는 50-73범위의 값을 가진다(status 값의 목록에 대해서는 부록 C를 참조하기 바란다). status record는 그 상태에 도달한 시점의 날짜와 timestamp정보를 포함하고 있다. 따라서 status record는 그 IDOC status에 대한 모든 과거 이력정보를 유지하고 있다. 하나의 IDOC은 하나 또는 여러 개의 status record를 가질 수 있고, 그 각각은 table EDIDS에 보관된다([그림 1-2]를 참조하라). record는 단지 SAP function module(API)를 통해서만 자료를 읽거나 생성할 수 있고, 외부으로는 전달되지 않는다.

 

             NOTE

기술적으로 이야기하면, IDOC object (1) Basic IDOC type (2) Extension type 으로 분류될 수 있다. 지금 시점에서는 단지 IDOC type이라고만 이야기하고, 4장과 제 5장에 가서 IDOC extension을 만드는 방법과 새로운 Basic IDOC type을 정의하는 방법을 배우도록 하겠다.

 

R/3 시스템에서 IDOC은 고유한 IDOC 번호(DOCNUM field)로 식별할 수 있고, 세 가지 유형의 record type은 모두 이 번호에 함께 연결되어 있다. IDOC 번호에는 SAP에 의해서 내부적으로 일련번호가 부여된다. IDOC의 번호 범위는 SAP에서 별도로 지정할 수도 있다.

 

여러분은 transaction WE61을 실행하거나 R/3 의 시작메뉴 [Tools] à [Business Communication] à [IDOC Basis](*) à [Documentation] à [IDOC Record Type]s을 실행해 보면, IDOC의 세 가지 record type에 대한 정보를 확인할 수 있다. 여러분이 transaction WEDI를 실행하게 되면, 앞 메뉴 중 [IDOC Basis](*) 메뉴에 곧바로 도달할 수 있는데, 이것은 ALE EDI를 탐험하는 과정에서 자주 사용되는 transaction코드이다(IDOC record type에 대한 상세한 설명에 대해서는 부록 E를 참조하기 바란다).

 

여러분은 transaction WE60를 곧바로 실행하거나 transaction WEDI à [Documentation] à [IDOC Type]를 실행해 보면, DEBMAS05, INVOIC02, 기타의 IDOC type에 대한 정보를 확인할 수 있다.