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]을 참조하라.

SAP ALE IDOC EDI-Kor_05.2 새로운 Basic IDOC Type 생성하기

5.2 새로운 Basic IDOC Type 생성하기

우리가 알고 있는 것처럼, IDOC type은 R/3에서 application 자료를 송수신하기 위해서 사용하는 지능적인 data container이다. 새로운 Basic IDOC type을 구축하기 위해서는, 그 application object에 대한 다양한 자료항목들이 포함될 IDOC segment를 정의해야 하고, 그러기 위해서는 그 application을 면밀히 검토해야 한다. SD Customer Hierarchy의 경우는, 하나의 table KNVH를 이용하여, 고객들과 hierarchy node들 간의 계층적인 관계를 모두 표현하고 있다는 것을 발견하게 될 것이다. customer hierarchy node에 대한 기본 자료들은 Customer Master table에 저장되어 있고, 이들은 SAP가 제공하는 IDOC type인 DEBMAS05와 message type DEBMAS를 이용하여 다른 시스템으로 전송될 수 있다. table KNVH는 16개의 field로 구성되어 있는데, 이들은 hierarchy type, 유효기간 시작(start of validity), 유효기간 종료(end of validity), 상위의 고객, sales organization, distribution channel, division, rebate와 pricing을 위한 구분자, hierarchy level number등이다. Customer Hierarchy를 잘 이해하게 되면, table KNVH의 구조가 그 자체로 customer node들 간의 계층적인 연관관계를 완벽하게 표현하고 있다는 것을 알 수 있을 것이다. 이러한 정보 이외에, 우리는 Customer Hierarchy에 변경을 가한 작업의 종류를 나타내는 “message function” field를 segment에 추가할 필요가 있다.

SAP ALE IDOC EDI-Kor_05.1 새로운 Basic IDOC Type과 ALE기능 생성하기 개요

Chapter 5 새로운 Basic IDOC Type과 ALE기능 생성하기

5.1 개요

앞에서 언급한 것처럼, R/3 시스템에는 ALE와 EDI interface에서 사용될 수 있는 message type이 수백 개 제공되고 있다. 이러한 message type들은 R/3 시스템의 전체 application module에 걸쳐 있고, 대부분의 업무영역에서 ALE/EDI 기능이 지원된다. 하지만 ALE/EDI 기능이 지원되지 않는 업무영역도 존재하며, 이러한 곳에서는 완전히 새로운 ALE/EDI 기능을 구축할 수가 있다. 이 절에서는, SAP의 ALE 기능이 지원되지 않는 master data application 영역 중의 하나인 SD의 Customer Hierarchy를 예로 들어 설명하기로 한다. Customer Hierarchy는 어떤 회사의 고객에 관한 조직자료나 계층구조를 표현하고자 할 때 사용된다. 예를 들면, 어떤 회사가 고객의 상점에 제품을 배송하고 판매하는 경우에, customer/sales organization/distribution channel/division의 조합에 근거하여 그 고객에 대한 조직 구조와 보고체계에 대한 정보를 구축할 필요가 있을 수도 있다. 이러한 각각의 조합은 hierarchy node로서 간주되고, 이는 다른 hierarchy node에 지정(assign)되며, 이렇게 해서 hierarchy chain을 구성하게 되는 것이다. 이러한 지정(assignment)은 또한 그 node에 대한 partner function에 근거를 두고 있는데, 이들 각각의 지정은 유효 기간을 가지고 있다. SAP에서는 미래일자로 지정하거나, 여러 개를 동시에 중첩하여 지정하는 것을 포함하여, 복잡한 chain과 연관관계를 구축할 수 있다. Customer Hierarchy는 transaction VDH1을 통해서 관리할 수 있고, transaction VDH2를 이용하여 조회할 수 있다.

SAP ALE IDOC EDI-Kor_04.4 IDOC Reduction

4.4 IDOC Reduction

우리가 다른 시스템, 즉 다른 R/3 시스템이나 외부시스템으로 master data를 분배하거나 송수신할 때, 통신 경로를 통하여 실제로 전송되는 자료의 양이 매우 대량일 수가 있다. 이러한 경우 처리성능에 문제가 발생할 수 있고, 디스크 공간이나 전송대역폭과 같은 자원을 과도하게 사용할 가능성도 있다. master data에 대한 Basic IDOC type을 면밀히 검토해 보면, 많은 segment자료들이 서로 중복되거나, 또는 전혀 사용되지 않을 수도 있다. 이러한 경우에, 이 IDOC은 IDOC Reduction이라고 불리는 기법을 적용할 수 있는 좋은 대상이 된다. R/3는 Basic IDOC type에서 사용되지 않는 segment나 segment 중에서 필요 없는 field를 제거할 수 있는 기능을 우리에게 제공해 준다. 이것을 적용하는 절차는 상대적으로 간단하고, 적용하기가 매우 쉽다. IDOC reduction은 단지 몇 개의 message type에서만 적용할 수 있는데, message type DEBMAS, CREMAS, GLMAST, MATMAS, 그리고 일부 POS message들이 그기에 해당한다.

SAP ALE IDOC EDI-Kor_04.3.2 Customer Function Enhancements

4.3.2 Customer Function Enhancements

이전에 언급한 것처럼, customer function(function exit)은 ALE function module에 삽입되어, outbound에서 있어서는 IDOC의 생성과 변경에 영향을 주고, inbound인 경우는 추가되거나 변경된 IDOC 자료를 R/3 application에 반영하기 위해서 사용할 수 있다. 이러한 function module은 일반 function module과 비슷하며, import/export parameter, table(internal table) parameter, exception parameter를 가지고 있다. customer function을 개발하는 과정에서 고려해야 할 두 가지의 중요한 요소는 (1) ALE function module에서 function exit이 발생하는 시점과 (2) IDOC의 방향에 따라(inbound/outbound), outbound에서는 IDOC 생성시에 추가 보충되거나 변경되어야 하고, inbound에서는 R/3 application에 추가적으로 반영되어야 할, 해당 자료를 customer function에서 사용할 수 있는가 하는 것이다. 여러 개의 customer function을 가지고 있는 function module이 있기 때문에, 우리가 원하는 특정 enhancement에 꼭 맞는 적절한 function exit을 선택하는 것이 매우 중요하다. function exit이 원래 의도했던 목적이 아닌 다른 목적에 function exit을 사용하려고 시도하지 않기를 바란다.

SAP ALE IDOC EDI-Kor_04.3.1 Transaction CMOD를 이용한 Project생성

4.3.1 Transaction CMOD를 이용한 Project생성

우리가 SAP enhancement와 그 component를 사용할 때는, Project라고 불리는 SAP object를 이용하여 이들을 관리해야 하는데, 이것은 선택된 enhancement와 그 속에 있는 component들을 내부적으로 관리해 주는 포장자(envelope)과 같은 것으로서, component들의 실행 여부를 통제할 수 있도록 해주고, CTS를 통하여 SAP 내에 있는 다른 instance/client로 전송할 수 있도록 해준다. 기본적으로 이 작업과정에는 project를 생성하고, 원하는 enhancement와 component를 포함시키고, component를 편집하고, 그 다음으로 project를 활성화(activate) 하는 작업이 포함되어 있다. IDOC extension에 대한 우리의 예제인 Customer Master IDOC에 대하여 project를 생성하는 작업를 진행해 보자. [그림 4-10]을 참조하라.