SAP ALE IDOC EDI-Kor_11.2 Message Type과 IDOC Type

11.2 Message Type과 IDOC Type

SAP에서 지원하고 있는 message type 목록을 확인하려면, transaction WE81 을 실행하거나 또는 transaction WEDI à Development à Message Types을 실행해 보면 된다. SAP 상에서 IDOC type에 대한 message type 할당 내용을 확인해 보려면 transaction WE82 을 실행하거나 또는 transaction WEDI à Development à IDoc Type / Message 을 실행해 보면 된다. 이러한 Messge Type 및 IDOC type의 숫자는 SAP Version이 올라감에 따라 점차 증가할 것이다.

다음 목록은 SAP에 있는 내용 중 일부를 예로서 제시하는 것이며, 여기에 제시되지 않은 것은 위에서 제시된 방법을 이용하여 SAP R/3에서 직접 그 내용을 확인해 볼 수 있다.

SAP ALE IDOC EDI-Kor_11.1 자주 사용되는 ALE/EDI Transactions

11.1 자주 사용되는 ALE/EDI Transactions

다음은 자주 사용되는 ALE and EDI transactions 목록이다. 시작메뉴에서 다음 transaction을 그대로 사용하거나, 특정 화면을 종료하고, 원하는 transaction을 실행하려면 /N + transaction (example /nBALE)의 형태을 사용하거나 또는 새로은 session을 열어 원하는 transaction을 실행하려면 /O + transaction (example /oBD21) 형태를 사용하라.

SAP ALE IDOC EDI-Kor_05.9 Interface 작동

5.9 Interface 작동

우리가 여기서 하는 작업은, Customer Hierarchy와 관련하여 우리가 구축하고 연결시킨 모든 구성요소들이 원래 의도했던 대로 정확하게 작동하여, master data상에 발생하는 변동사항에 근거하여 IDOC을 생성해 내는지를 점검하는 것이다. 새로운 Basic IDOC type이 생성되었고, 새로운 message type이 그것에 연결되었다. 기존에 이미 존재하는 change document object에 근거하여 change document update function module을 생성하고, SAP의 application 프로그램에 그것을 삽입하였다. 새로운 message type에 대한 change pointer 정보를 수집하고, IDOC을 생성하여 분배해 주는 기능을 가진 두 개의 ALE function module이 작성되었다. IDOC segment field와 change document field를 연결시키는 설정과 함께, change document field에 대하여 change pointer가 생성될 수 있도록 활성화(activate)하는 ALE 설정이 이루어졌다. 우리는 실제 구동되는 ALE function module을 새로운 message type과 연결시켜, change pointer가 처리될 때 호출될 수 있도록 하였다. 마지막으로, 우리는 logical system, customer distribution model, port, partner profile, change pointer 활성화(activation)에 대하여 정의하고, 서로 연결함으로써, ALE 설정을 완료하였다.

SAP ALE IDOC EDI-Kor_05.8 Change Pointer 생성 활성화(Activation)와 기타 ALE 설정사항

5.8 Change Pointer 생성 활성화(Activation)와 기타 ALE 설정사항

앞에서 우리는 SAP application 프로그램에서 change document를 생성해 내는 프로그램 코드를 작성하는 방법에 대하여 배웠다. ALE 목적상, 이러한 change document field에 대하여 change pointer가 생성되도록 처리되어야 한다. 더 나아가, 우리는 IDOC field를 change document field에 할당해야 한다. 또한 앞에서 설명한 것처럼, 우리가 생성한 message type을 그에 대응되는 ALE function module과 연결시켜서, RBDMIDOC과 같은 프로그램이 실행될 때, 우리가 생성한 function module이 호출되어 IDOC을 생성하고 분배해 줄 수 있도록 해야 한다. 이를 위해 우리는 다음 세 가지 항목을 설정해야 한다.

1. change document field에 대하여 change pointer가 생성되도록 활성화(activate)한다.

2. IDOC field를 change document field에 할당한다.

3. function module을 message type에 연결한다.

SAP ALE IDOC EDI-Kor_05.7 ALE Function Module의 생성

5.7 ALE Function Module의 생성

Customer Hierarchy에 대하여 change document를 생성해 낼 수 있도록 SAP application프로그램을 enhance 했으므로, 이제는 Customer Hierarchy와 관련된 change pointer를 읽어서, 우리가 이미 생성한 IDOC type ZKNVHM01에 값을 채워서 IDOC을 생성해 내는 ALE function module을 작성할 필요가 있다. 대부분의 master data에 대한 ALE function module은 표준적인 접근방식을 따르고 있는데, 이들은 먼저 필요한 자료를 수집하고, IDOC이 필요로 하는 값을 채워서 IDOC을 만들고, 만들어진 IDOC을 분배하는 절차를 거친다. 먼저, 특정 message type에 대해서 아직까지 처리되지 않은 모든 change pointer자료를 수집하고, 그 각각에 대하여 key값을 찾아서 internal table로 만들어 주는 표준 function module이 있다. 이렇게 해서 생성된 internal table은 다른 function module로 전달되어, 그에 대응하는 IDOC type에서 필요로 하는 값을 결정하여 IDOC을 생성하게 되고, 이렇게 생성된 IDOC은 표준 ALE function module을 사용하여 통신계층(communication layer)으로 전송되는 것이다.

SAP ALE IDOC EDI-Kor_05.6 SAP Application 프로그램 Enhancement

5.6 SAP Application 프로그램 Enhancement

우리가 생성한 function module KUNHIER_WRITE_DOCUMENT은 실제로 Customer Hierarchy 자료를 관리하는 SAP application 프로그램과 하나로 통합될 필요가 있다. transaction VDH1(maintenance)와 VDH2에 의해서 호출되는 프로그램 RVKNVH00 이 Customer Hierarchy자료를 처리하는 과정에서, 적절한 시점에 그 update function module을 호출하도록 해야 한다. 프로그램 RVKNVH00을 살펴보면, SAP가 VDH1의 해당 session에서 발생한 변경사항을 table KNVH에 갱신해주는 function module CUSTOMER_HIERARCHY_UPDATE을 호출한 직후에, 이 update function module을 호출할 수 있다는 것을 알 수 있다. 여러분은 이 호출이 “IN UPDATE TASK” 방식으로 처리되고 있고, 또한 우리의 update function module도 “IN UPDATE TASK” 방식으로 처리할 필요가 있다는 것에 주의하라. 프로그램 RVKNVH00 은 두 개의 internal table XVKNVH와 YVKNVH를 이용하여 customer hierarchy 자료에 대한 새로운 자료와 이전 자료를 보관하고 있다. 우리는 update function module을 호출하여 table CDHDR과 CDPOS를 갱신하기 위해서 이 두 개의 internal table을 이용할 것이다.

SAP ALE IDOC EDI-Kor_05.5 Change Document Object/Update function module 생성

5.5 Change Document Object/Update function module 생성

Change Document Object는 R/3 시스템에서 master data, table, application object에서 발생하는 변경사항을 포착해 낸다. SAP는 시스템 내에서 수 백개 정도의 object에 대하여 변경사항을 포착해 낼 수 있을 정도로 change document service를 광범위하게 사용하고 있는데, 이러한 서비스는 change document object와 Change Document Update Function Module/Program이라고 알려진 구성요소를 통하여 이루어진다. CD(change document) object에 근거한 change document는 table CDHDR(CD header정보)와 CDPOS(CD detail정보)에 저장된다. 대부분의 change document는 변경사항에 대한 정보를 field수준까지 기록해 준다. Change document는 table name과 field name 이외에, 입력, 변경, 삭제와 같은 변경의 성격에 대한 정보뿐만 아니라, table에 대한 key정보를 동시에 저장하고 있다. 앞에서 우리가 배웠듯이, ALE는 change pointer라고 알려진 object를 이용하여, master data에서 발생하는 변경사항을 포착하기 위해서 shared master data(SMD)를 통하여 change document service를 이용한다. table BDCP와 table BDCPS에 저장되어 있는 change pointer는 실제로 application의 change document update function module에 의해서 생성된 change document를 가리키고 있다. ALE API는 이러한 정보를 수집하고, 그 table에 대한 key값과 변경 유형에 따라 IDOC segment를 생성해 낸다. 이렇게 해서 생성된 IDOC이 통신 계층(communication layer)를 통하여 분배되는 것이다.

SAP ALE IDOC EDI-Kor_05.4 IDOC Type과 Message Type 연결하기

5.4 IDOC Type과 Message Type 연결하기

다음 단계는 우리가 생성한 두 개의 object인 Basic IDOC type과 message type을 서로 연결하여, 그 message type에 연결되어 있는, 앞으로 우리가 생성할 ALE function module이 IDOC segment에 정확한 application자료의 값을 채울 수 있도록 하는 것이다. 이것은 다음과 같은 작업을 통하여 쉽게 처리할 수 있다. [그림 5-2]를 참조하라.

n transaction WE82을 실행하거나 transaction WEDI à [Development] à [IDOC Type / Message]을 실행한다.

n [Display ßà CHANGE] 버튼을 눌러 변경화면으로 전환한다.

n 화면 위에 있는 [New entries] 버튼을 누른다.

n [Message type] 필드에 “ZDEBHI”를 입력하고, [Basic IDOC type] 필드에는 “ZKNVHM01”을 입력한다. [Extension type] 필드는 공란으로 둔다. [Release] 필드에는 여러분의 SAP release 번호를 입력한다.

SAP ALE IDOC EDI-Kor_05.3 새로운 Message Type 생성하기

5.3 새로운 Message Type 생성하기

다음 단계는 새로운 message type을 생성하는 것이다. message 기반 구조(message-based-architecture)인 ALE에서, Message Type은 IDOC interface를 통해서 송수신되는 정보의 종류를 나타낸다. 우리는 SD Customer Hierarchy Master 자료를 나타내는 새로운 message type을 정의하고, 이미 우리가 생성한 IDOC type과 이것을 연결시켜야 한다. 이 message type은 나중에 우리가 생성할 ALE function module을 호출하기 위해서 사용될 것이다. 따라서, message type은 ALE interface에서 중요한 역할을 담당하고 있다. 이 단계의 작업을 진행해 보자. [그림 5-1]을 참조하라.