SAP ALE IDOC EDI-Kor_06.3 Port와 Partner Profile설정

6.3 Port와 Partner Profile설정

우리는 application에서 output determination 설정을 완료했기 때문에, 이제 EDI에 대한 기술적인 설정을 진행해 보기로 하자. 이러한 작업에는 port정의, partner profile 생성, external partner number에 대한 상호참조를 위하여 table EDPAR에 자료를 입력하는 작업 등이 여기에 포함되어 있다.

6.3.1 EDI Subsystem 호출과 Output Mode

outbound 시나리오에서 SAP port와 EDI subsystem 간의 통신에 대한 기본개념을 이해해 보자. port 정의에서 우리가 처리한 설정사항은 file이 전송되는(생성되는) 시점, file이 생성되는 위치, file 이름 등을 동기식 RFC(synchronous RFC)를 통하여 EDI subsystem에게 알려주는 역할을 한다. SAP는 이미 동일한 이름의 file이 있으면, 기존의 IDOC file에 새로운 자료를 append하지 않고 기존 자료를 덮어 쒸우기 때문에, 동적인 file 이름(dynamic file name)을 사용하는 것이 좋다. 이러한 동적인 파일 이름을 사용하게 되면, outbound port 정의에서 지정된 function module에 따라 원하는 형태의 file이름이 생성될 수 있다.

SAP ALE IDOC EDI-Kor_06.2 Output Determination 설정

6.2 Output Determination 설정

SD와 MM module에서 message(output) determination은 output 생성여부를 결정하고, 그 output에 대하여 매체(medium), 시점(timing), 유형(type) 등과 같은 세부사항을 결정하기 위해서 condition technique을 사용한다. 이 output은 SD와 MM module에서 transaction data에 근거하여 output 문서를 생성해 내는데 사용된다. output determination 설정에는 일반적으로 condition table, access sequence, output type, output determination procedure, 그리고 output procedure assignment에 대한 준비작업 등이 포함되어 있다. SAP는 대부분의 경우에 사용할 수 있는 condition table과 access sequence를 기본적으로 제공해 주고 있으며, SAP가 제공하는 output type들을 사용하면 table NAST에 원하는 output record를 생성하고자 하는 요구사항을 대부분 충족시켜 줄 것이다. 하지만 새로운 요소들을 만들어서 동일한 작업을 처리할 수도 있다. 다음은 output determination을 설정하는데 필요한 여러 단계들이다.

SAP ALE IDOC EDI-Kor_06.1 EDI(Electronic Data Interchange) 개요

Chapter 6 EDI(Electronic Data Interchange)

6.1 개요

Electronic Data Interchange(EDI)는 특정 기업이 은행이나 고객, 구매처와 같은 그들의 거래 상대방들과 업무문서를 서로 주고 받을 수 있는 능력을 제공해 주는 기술이다. 이러한 전자문서 Format은 EDIFACT와 ANSI X12와 같은 EDI 산업표준에 의해서 결정된다. EDI는 업무들 간의 상호 연결성을 상당히 향상시켜 주고, 업무 프로세스를 자동화하여, 빠르게 회전할 수 있도록 해 준다. SAP R/3는 R/3 의 다른 application들과 완전히 통합되어 있는 완전한 EDI system을 고객들에게 제공해 준다. 예를 들어, 특정 회사는 자기 고객들에게 EDI 대금청구서(invoice)를 보낼 수 있으며, 구매처(vendor)/고객(customer)과 구매주문(purchase order)/판매주문(sales order)을 주고 받을 수 있으며, 거래하는 구매처(vendor)로부터 납품통지(dispatch advice)를 수신할 수 있고, 거래 은행과 송금통지(remittance advice)를 교환할 수 있다(예제 시나리오에 대해서는 이 책의 도입부를 참조하기 바란다). 사실 그 회사의 거래 상대방과 주고 받는 업무 문서 중에서 비록 전부는 아닐지라도, 거의 대부분에 대하여 EDI를 구축할 수 있다.

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