출판된 한글판 도서
ERP SAP R/3 ALE, EDI & IDOC 기술 |
Original Book Contents
4.2.1 새로운 Segment와 Extension Type의 생성
먼저 table ADRC에 있는 field들 중에서 우리의 새로운 segment Z1ADRCX에 추가하고자 하는 field를 결정하자. 우리는 name, street, city, region, 그리고 country에 대한 field를 추가하고자 한다. contact person의 business address을 구성하는 이러한 기본적인 field에 추가하여, address number를 파악하기 위한 몇 개의 field를 추가하고자 한다. ADRNR은 address 자체를 식별해주는 고유한 key로서, table ADRC와 같은 SAP table 상에 있는 field이다. 이 field는 다른 table에서 address에 대한 전체의 내용을 얻기 위해서 table ADRC을 참조할 때도 상호 참조된다. 여기서 정의되는 segment는 master data에 대한 IDOC type에 있는 segment이기 때문에, 새로운 segment의 처음 field로 MSGFN(message function)을 사용할 것이다. Message function field는 수신시스템에게 그 segment에 대하여 어떠한 조치를 취해야 하는지를 알려주는 역할을 한다(더 상세한 내용에 대해서는 제 2장을 참조하기 바란다). 새로운 segment에 값을 보충해 주기 위해서 앞으로 우리가 작성할 프로그램 코드를 보면 알 수 있겠지만, 이 새로운 segment에 있는 message function의 값은 parent segment인 E1KNVKM의 그것과 동일하다. 결국 segment Z1ADRCX에는 모두 합하여 11개 field가 들어가도록 할 것이다. 그 field들에 대한 상세내용에 대해서는 [표 4-1]을 참조하기 바란다.
No | Field Name | Data Element Structure | Field Length | Data Type | Desc |
1 | MSGFN | MSGFN | 3 | CHAR | Message Function |
2 | PARNR | PARNR | 10 | NUMC | Contact Person ID |
3 | ADDRNUMBER | AD_ADDRNUM | 10 | CHAR | Address Number |
4 | TITLE | AD_TITLE | 4 | CHAR | Title Key |
5 | NAME1 | AD_NAME1 | 40 | CHAR | Name 1 |
6 | NAME2 | AD_NAME2 | 40 | CHAR | Name 2 |
7 | STREET | AD_STREET | 60 | CHAR | Street |
8 | CITY1 | AD_CITY1 | 40 | CHAR | City |
9 | REGION | REGIO | 3 | CHAR | Region |
10 | POST_CODE1 | AD_PSTCD1 | 10 | CHAR | Postal code |
11 | COUNTRY | LAND1 | 3 | CHAR | Country key |
표 4‑1 새로운 segment Z1ADRCX에 입력할 field 목록
extension type을 생성하기 위해서는 먼저 새로운 segment를 생성해야 한다. 이를 위해서는 다음 작업을 수행한다. [그림 4-3]과 [그림 4-4]를 참조하라.
n transaction WE31을 사용하거나, transaction WEDI à [Development] à [IDoc Segments]을 실행한다.
n [Segment type] 필드에 “Z1ADRCX”라고 입력하고, 화면위에 있는 [Create] 버튼 누른다.
n 그러면 segment 상세정보를 입력할 수 있는 화면이 나타난다.
n 먼저 [Short text] 필드에 segment에 대한 설명을 입력한다. segment에 포함될 field 정보에 대하여 [Field name]과 [Data element] 필드를 입력한다. 만약 여러분이 ABAP/4 data dictionary에 없는 field를 segment에서 사용하려고 한다면, 그것을 새로운 segment에서 사용하기 전에, domain, data element 등을 먼저 생성해야 한다. 모두 11개의 field에 대하여 동일한 방식으로 해당 필드에 자료를 입력한다. 다음 [Enter] 키를 누르면, [Export length] 필드의 값이 자동으로 지정될 것이다.
n 자료를 저장하면 segment에 대한 관리자의 user ID를 입력하는 팝업화면이 나오고, 그 다음에는 여기서 생성되는 object에 대하여 development class를 입력하는 화면이 나온다. 여러분의 상황에 맞추어 적절한 값을 입력하고, [Enter] 키를 누른다. [Back] 버튼을 눌러 이전화면으로 돌아간다.
n 다음은 생성된 segment를 release해야 한다. 화면의 메뉴 [Edit] à [Set release]를 실행한다. 그러면 자료목록에 있는 segment definition Z2ADRCX000이 있는 행의 [Release] checkbox 필드가 check되어 표시될 것이다.
그림 4‑3 Segment 편집
그림 4‑4 Segment의 Release
이렇게 해서 extension type에 사용할 segment를 정의하였다. 다음에는 extension type을 생성하고, 앞에서 생성된 새로운 segment를 여기에 연결시켜야 한다. 이렇게 하기 위해서는 다음 작업들을 수행한다. [그림 4-5]와 [그림 4-6]을 참조하라.
n transaction WE30을 사용하거나 transaction WEDI à [Development] à [IDOC Types]을 실행한다.
n [Object name] 필드에 “ZDEBMASX”라고 입력한다.
n [Development Object] 필드에서 “Extension” 선택버튼을 선택한다.
n 화면 위에 있는 [Create] 버튼을 누른다.
n 그러면 팝업화면이 나타나는데, 여기서 extension type이 연결될 Basic IDOC type을 지정할 수 잇다. [New Extension] 항목에서 “Create New” 선택버튼을 선택하고, [Linked basic type] 필드에 “DEBMAS05”를 입력하고, 하단부에 있는 설명을 입력한다.
n [Enter] 키를 누른다.
n 화면 첫 줄에 ZDEBMASX와 그것에 대한 설명이 표시되어 있고, 그 아래에 IDOC type DEBMAS05에 포함되어 있는 segment segment E1KNA1M과 다른 segment들이 계층적으로 표시되어 있는 화면이 나타날 것이다. segment E1KNA1M을 확장하면, 그 하위 계층에 있는 여러 자료 중에서 segment E1KNVKM(Customer Master contact person-KNVK)이 있는 것을 발견할 수 있을 것이다. 우리는 이 segment에 새로이 생성될 segment를 연결시킬 것이다.
n 이 행을 click하고, [Create] 버튼을 누른다. 그러면 새로이 생성되는 segment는 E1KNVKM의 child segment가 될 것임을 나타내는 message를 보게 될 것이다. [Enter] 키를 누르면, 새로운 segment를 지정할 수 있는 팝업화면이 나타난다.
n [Segment type] 필드에 “Z1ADRCX”을, [Minimum number] 필드에 “1”을, [Maximum number] 필드에 “1”을 입력한다. [Mandatory segment] 필드는 check되지 않은 상태로 둔다. 이것은 segment E1KNVKM이 나타날 때마다 segment Z1ADRCX은 단지 하나만 있을 수 있고, 또한 이 segment는 필수(mandatory)가 아니라는 것을 의미한다. 만약 parent segment가 필수(mandatory)가 아니라면, child segment는 필수(mandatory) segment가 될 수 없는데, 이는 IDOC을 생성하거나 처리하는 과정에서 syntax 오류가 발생할 수도 있기 때문이다.
n 입력이 완료되면, [Enter] 키를 누른다.
n 자료를 저장한다.
n 그러면 생성되는 object에 대하여 development class를 입력하는 화면이 나온다. 여러분의 상황에 맞추어 적절한 값을 입력하고, [Enter] 키를 누른다.
n 이제 우리는 extension type을 생성하였다.
하나의 extension type 속에서 Basic IDOC type의 관련 parent segment들에 여러 개의 새로운 segment를 연결할 수 있다는 것을 염두에 두기 바란다. 하지만 다음에 배우게 되겠지만, 하나의 extension type에는 단지 하나의 IDOC type만 지정할 수 있다.
그림 4‑5 Extension Type에 새로운 Segment의 추가
그림 4‑6 생성된 Extension Type