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

SAP ALE IDOC EDI-Kor_04.3.0 ALE Function Module의 Enhancement

4.3 ALE Function Module의 Enhancement

지금까지 inbound와 outbound 업무영역에서 사용될 IDOC에 추가 field를 포함시키기 위해서 IDOC type을 extend했으므로, 이제는 outbound인 경우에는 추가된 segment에 자료를 보충해 주고, inbound인 경우에는 추가된 segment자료를 application에 반영해 주는 ALE function module의 enhancement 작업을 진행해 보기로 한다. 여러분이 application과 주고 받는 IDOC 자료를 수정할 필요가 있는 경우에는, IDOC extension이 발생하지 않은 상황에서도 ALE function module을 enhance해야 할 필요가 있을 수도 있다는 것을 유념하기 바란다. 여기서 논의되는 접근방식은 위의 어느 경우에나 적용될 수 있는 것이다.

SAP ALE IDOC EDI-Kor_04.2.0 IDOC Extension

4.2 IDOC Extension

IDOC type DEBMAS05는 Customer Master 자료를 송수신하기 위해서 사용된다. 이 IDOC type을 정밀하게 검토해 보면(transaction WE60을 사용하라), 여러분은 그 속에 여러 개의 계층적인 segment들이 있고, 그 각각의 segment 안에 있는 field들에는 고객(customer)과 고객(customer)의 속성들을 설명해주는데 필요한, 거의 모든 자료가 포함되어 있다는 것을 알 수 있을 것이다. 하지만 SAP 내에서 Customer Master프로그램을 이용하여(transaction XD01—Create, XD02—Change, XD03–Display), 고객(customer) 정보, 특히 customer contact person 화면([그림 4-1]을 참조하라)에 있는 정보를 변경해 보면, SAP application에는 contact person의 business address를 입력하여 저장할 수 있는 화면이 있지만([그림 4-2]를 참조하라), IDOC type DEBMAS05에는 contact person의 business address자료를 주고 받을 수 있는 segment나 field가 없다는 것을 인식하게 될 것이다. 이런 경우, 여러분의 업무 상의 필요에 따라 Customer Master에 있는 이러한 business address가 ALE interface를 통하여 다른 시스템으로 전송되어야 한다면, 그때 우리는 DEBMAS05 IDOC type을 extend하고, 그에 대응되는 ALE function module을 enhance해야 한다.

SAP ALE IDOC EDI-Kor_04.1 ALE Enhancement: IDOC Extension과 Reduction 개요

Chapter 4 ALE Enhancement: IDOC Extension과 Reduction

4.1 개요

지금까지 진행해 온 과정을 통하여, 우리는 ALE 방식으로 master data interface와 transaction data interface를 프로토타입(prototype)하는데 익숙해졌기 때문에, 이제는 ALE 기능을 enhance하는데 필요한 여러 가지 기법들에 대하여 주의를 돌려 보기로 하겠다. 특정 application 영역에서 사용되는 ALE interface를 프로토타입(prototype)해 본 후에 그 결과를 검토해 보면, SAP가 기본적으로 제공해 주는 기능이 여러분의 요구사항을 충분히 만족시키지 못하고, 원하는 결과와 일정한 정도의 GAP이 존재하는 경우가 있을 수 있을 것이다. 이런 경우에 여러분은 IDOC과 관련된 ALE function module에 기능을 추가할 수 있다. 예를 들어, outbound interface에서 전송되는 IDOC type이 여러분이 외부시스템으로 전달하고자 하는 모든 자료를 포함하고 있지 않다는 사실을 발견하는 경우, 여러분은 ‘IDOC extension’이라는 방법을 사용하여 추가 field를 포함시키고, ALE function module을 enhance하여 그 추가된 field에 대하여 값을 보충할 수가 있다. 이와 유사하게, inbound interface에서 추가 field를 R/3 application에 반영해야 한다면, 여러분은 역시 IDOC type을 확장(extend)하여 외부시스템이나 translator, 또는 다른 R/3 시스템이 자료를 보충하여 전송할 수 있도록 하고, inbound ALE function module을 enhance하여 추가된 자료를 R/3의 application에 반영할 수가 있다.

SAP ALE IDOC EDI-Kor_03.3.3 Inbound Interface – Interface 작동

3.3.3 Interface 작동

interface에 대한 ALE 설정이 완료되었으므로, 이제는 그것을 테스트해보는 흥미로운 작업을 시작하겠다. outbound interface의 경우에는 SAP 내에 자료가 이미 있거나, 최소한의 노력으로 자료를 생성할 수 있으므로, 설정내용을 테스트해보는 것이 아주 용이했다. 하지만 inbound ALE interface의 경우는 IDOC을 생성해서 SAP 안으로 전송하는 추가적인 작업를 해야 한다. 테스트와 프로토타입핑(prototyping) 목적을 위해서, 간단한 ABAP/4 프로그램을 작성하여 file형태의 IDOC를 생성해 내고, 이것을 정상적인 방법으로 SAP 안으로 전송하면, 이러한 목적을 간단히 달성할 수 있다. Interface를 프로토타입(prototype)한 다음에는, 외부시스템의 record layout과 IDOC type을 비교하여 mapping 문서를 만들어 내는 것이 매우 중요하다. 외부시스템의 record를 IDOC으로 변환시켜주는 mapping 도구이나 translator 소프트웨어를 사용할 수도 있다. ALE/EDI interface에 대하여 SAP에서 인증 받은(certified) mapping 소프트웨어제품들이 많이 있다. 이들 제품들은 또한 외부시스템을 R/3 시스템과 연결시켜주는 ‘ALE Adapter’ 기능을 가지고 있어서, 외부시스템과 R/3 시스템 간의 interface을 완벽하게 처리해 줄 수도 있다. 우리는 mapping 도구의 역할에 대하여 제 6장에서 논의할 것이다.

SAP ALE IDOC EDI-Kor_03.3.2 Inbound Interface – Partner Profile의 관리

3.3.2 Partner Profile의 관리

절차상 다음 단계는 우리가 설정한 logical system에 근거하여 외부시스템에 대한 partner profile을 생성하는 것이다. 이 partner profile은 여러 가지 ALE object들과 설정사항들을 한데 묶어 주고, 통신경로(gateway)를 제공해 준다. 우리의 예제에서는 message control과 outbound parameter가 필요하지 않으므로, inbound parameter만 설정하기로 한다. 여러분은 여러 개의 inbound message와 outbound message에 대하여 하나의 partner profile(그리고 하나의 logical system)만 사용할 수 있다는 것을 유념해야 한다. 다음에 제시된 절차를 따르기 바란다([그림 3-15]를 참조하라).

SAP ALE IDOC EDI-Kor_03.3.1 Inbound Interface – Logical System의 관리

3.3.1 Logical System의 관리

외부시스템을 나타내는 logical system을 생성한다. 이 경우 외부시스템을 나타내는 logical system은 송신시스템이 되고, 반면에 base logical system(FSTCLNT100)은 수신시스템이 될 것이다. 이렇게 하기 위해서는 다음 작업들을 수행한다.

n transaction SALE à [Sending and Receiving Systems] à [Logical Systems] à [Define Logical System]을 실행한다(이 작업은 client-independent한 사항이다).

n [New entries] 버튼을 누른다.

n [Logical system] 필드에 “GOODSMVT01”와 같이 logical system 이름을 입력하고, 설명을 입력한다.

n 자료를 저장한다.

SAP ALE IDOC EDI-Kor_03.3.0 Inbound Interface

3.3 Inbound Interface

이 절에서 우리는 inbound interface를 프로토타입(prototype)할 것인데, 그 내용은 외부 창고관리 시스템(Warehouse Management System)에서 SAP R/3의 재고관리(Inventory Management) module로 자재이동(goods movement)에 대한 transaction을 interface하는 것이다. 여기에서 사용되는 ALE message type은 WMMBXY이고, 이에 대응되는 IDOC type은 WMMBID02이다. 이러한 기능은 원래 창고재고에 대한 mobile data를 SAP에 있는 Warehouse 시스템으로 입력하기 위해서 만들어 졌다. mobile terminal에 자료가 입력됨과 동시에, 외부 소프트웨어가 그 자료를 지정된 server로 전송하면, 그기서 그 자료를 IDOC 형태로 변환하고, 이를 tRFC을 사용하여 SAP R/3안으로 전송하여 application에 반영하는 것이다. 여러분이 이해하고 있는 것처럼, ALE는 transactional RFC 연결(connection)을 사용하여, 외부시스템이나 다른 R/3 시스템에 대하여 실시간(real-time)이나 준 실시간(real-time) 형태로 자료를 interface할 수 있는 능력을 가지고 있다. 여기서 설정하고, 테스트할 자재이동(goods movement) interface는 여러분의 요구사항에 따라 여러 가지 다른 방식으로 설정될 수 있을 것이다. WMMBXY는 강력한 message type으로써, 많은 종류의 이동유형(movement type)과 자재이동(goods movement)을 처리해 주는 transaction들을 지원해 주는데, 여기에는 구매주문(purchase order)을 이용한 자재입고, 구매주문(purchase order)을 이용하지 않는 자재입고, 생산지시(production order)에 대한 자재입고, 재고 손실/이익 발생, 재고 상태 변동(inventory status change)과 같은 것들을 처리해 주는 transaction들이 모두 포함되어 있으며, 또한 여기에 한정되지 않는다.

SAP ALE IDOC EDI-Kor_03.2.6 Outbound Interface – Interface 작동

3.2.6 Interface 작동

구매주문(purchase order) outbound IDOC을 생성하기 위해서 필요한 모든 설정을 완료했기 때문에, 이제는 interface를 테스트해보는 흥미로운 작업를 진행해 나갈 것이다. 이러한 작업은 세 가지 단계로 이루어진다.

1. 구매주문(purchase order)을 생성하거나 수정한다. output type ZNEU에 대하여 output(message)이 생성되어 있는지를 확인하라.

2. IDOC을 생성하기 위해서 앞에서 생성된 output을 처리한다.

3. 생성된 IDOC을 외부시스템으로 전송한다.

구매주문(purchase order)을 생성하기 위해서는 transaction ME21N을 사용하거나, SAP의 시작메뉴 [Logistics] à [Material Management] à [Purchasing] à [Purchasing Order] à [Create] à [Vendor/Supplying Plant Known]을 실행한다. 또한 여러분은 transaction ME25(Vendor unknown)을 사용할 수도 있다. 구매주문(purchase order)을 생성할 때는 message control에서 지정한 그 Document Type을 사용한다. 다른 말로 하면, output determination 설정에서 condition record를 생성할 때 사용된 구매주문(purchase order)의 Document Type을 사용한다. 구매주문(purchase order)에 대하여 자재 번호, 물량, plant, storage location, 단가, 기타 이와 유사한 것들을 입력한다. 이때 구매품목(line item)이 accept되었는지를 반드시 확인할 필요가 있다. output record가 생성되었는지를 확인하기 위해서는 다음 작업을 수행한다. [그림 3-14]를 참조하라.