출판된 한글판 도서
ERP SAP R/3 ALE, EDI & IDOC 기술 |
Original Book Contents
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에서 outbound port를 통하여 IDOC이 생성될 때, IDOC의 control record(EDIDC)에 있는 OUTMOD field는 partner profile의 outbound parameter에 있는 [Output mode] 필드에서 우리가 지정한 설정사항에 따라 값이 결정된다. [표 6-1]을 보면 그들에 대한 값과 설명이 나열되어 있다.
|
|
1 | One IDOC written to flat file, EDI subsystem activated immediately |
2 | One IDOC written to flat file, EDI subsystem started on external schedule |
3 | All IDOCs matching selection criteria written to flat file, EDI subsystem activated immediately |
4 | All IDOCs matching selection criteria written to flat file, EDI subsystem started as per external schedule |
표 6‑1 OUTMOD 값과 설명
OUTMOD가 “1”이나 “3”이고, port정의의 [Outbound: Trigger] 탭에서 “automatic start possible” flag가 check 되어 있으면, SAP는 설정사항에서 지정된 command file를 이용여 EDI subsystem를 호출한다. 이때 EDI subsystem으로 전달되는 parameter는 file이 생성되는 directory와 file이름이다. EDI subsystem은 처리가 끝난 후에 그 file을 삭제한다. 또한 OUTMOD값이 “1”이나 “3”인 경우, Subsystem을 성공적으로 호출한 후에는 IDOC status에 “18”(triggering EDI subsystem OK)의 값이 지정되어 있을 것이다. 하지만 이것은 EDI subsystem이 그 IDOC을 성공적으로 처리했음을 나타내는 것은 아니다.
6.3.2 Status File의 생성과 처리
EDI subsystem이 IDOC을 성공적으로 처리했는지의 여부는 EDI subsystem에 의해서 생성된 inbound status file에 의해서 표시된다. outbound EDI IDOC에 대해서는 EDI subsystem이 처리상태를 결정할 수 있다. EDI subsystem이 status file을 생성하고, 자동화된 방식이나 프로그램적인 방식을 통하여 그 file을 SAP안으로 전송하여, outbound IDOC에 대한 status 정보를 갱신하는 것이다. 어느 경우이던지 key정보인 DOCNUM(IDOC 번호)을 상호 간에 이용함으로써, 이러한 작업이 수행된다는 사실에 주의하라. SAP가 status 갱신작업을 완료하면 status file을 삭제한다.
EDI subsystem이 생성한 status file을 SAP로 전송하는 방법에는 두 가지가 있다. 첫 번째 방식은 SAP가 기본적으로 제공하는 프로그램 중에서 SAP외부에서 SAP의 RFC function module을 호출하고자 할 때 사용할 수 있는 “startrfc” program을 이용하는 것이다. 이 경우에 EDI subsystem은 status file을 생성한 다음, “startrfc” program을 이용하여 SAP 시스템의 “EDI_STATUS_INCOMING” function module을 호출하고, status file name을 parameter로 넘겨준다. 이 function module이 실행되면서 status file이 SAP 시스템 안으로 전송되고, 그기에 따라 IDOC의 status가 갱신되는 것이다. 두 번째 방식은 프로그램 RSESTA00이나 transaction WE17을 사용하는 방법이다. 이 경우에 EDI Subsytem은 status file을 생성하는 것으로 모든 처리를 종료하게 되고, SAP 내부에서 프로그램 RSESTA00이나 transaction WE17을 scheduling job으로 만들어 주기적으로 실행하거나, status file이 있을 때 자동적으로 실행되도록 함으로써, status file이 SAP 내부로 전송되어 IDOC의 status가 갱신될 수 있는 것이다.
6.3.3 RFC Destination 정의
다음은 RFC destination을 정의하는 과정을 따라 가 보자. 먼저 우리가 EDI subsystem을 호출하기 위해서는 port 의 [Outbound: Trigger] 탭 설정에서 사용되는 logical RFC destination을 생성할 필요가 있다. transaction SM59를 사용하거나, transaction WEDI à [IDOC] à [RFC Destination]을 사용하라. 커서를 [TCP/IP connection] 위에 놓고, 화면 위에 있는 [Create] 버튼을 누른다. [RFC destination] 필드에 “LRFCEXMPL”을 입력하고, [Connection type] 필드에 TCP/IP connection을 통하여 외부 프로그램을 구동시킨다는 의미의 “T”를 입력하고, 설명을 입력한다. 그런 다음, [Enter] 키를 누른다. 그러면 [그림 6-2]가 나타날 것이다. [Program] 필드에는 프로그램이 존재하고 있는 directory와 program name을 입력한다. 만약 여러분이 특정 host상에 있는 프로그램을 실행하고 싶으면, [Explicit] 버튼을 누르고 적절한 server이름을 입력한다. 그런 다음, 자료를 저장한다. 여기서 사용되는 program은 SAP의 RFC protocol을 지원해야 하고, RFC server로서의 역할을 하면서, SAP의 RFC call에 반응할 수 있어야 한다. 또한 이 프로그램 속에는 function module “RFC_REMOTE_EXEC”이 정의되어 있어야 한다. SAP가 EDI subsystem을 호출할 때는, function module “RFC_REMOTE_EXEC”를 호출하고, EDI subsystem을 기동하기 위해서 port의 command file에 지정한 shell script를 paramter로 넘겨준다. 그러면 그 프로그램 속에 있는 function module이 실행되면서 EDI subsystem을 호출하게 되는 것이다. 여러분은 EDI subsystem을 호출하기 하기 위해서 별도 RFC server 프로그램을 작성하지 않고, SAP가 기본적으로 제공해 주는 “rfcexec”(Window NT server에서는 “rfcexec.exe”) 프로그램을 사용할 수도 있다. 이 프로그램을 이용할 경우의 EDI subsystem 호출체계는 [그림 6-3]을 참조하라.
그림 6‑2 RFC Destination -- Type TCP/IP
그림 6‑3 EDI Subsystem 호출 체계도
6.3.4 Port 정의
다음 단계는 port를 정의하는 것이다. transaction WE21을 사용하거나 WEDI à [IDOC] à [Port Definition]을 사용한다. 화면 왼쪽에서 커서를 [File] 위에 놓고, 화면 위에서 [Create] 버튼을 누른다. [Port] 필드에 “EDIPORT”를 입력하고, 설명을 입력한다. [Outbound: Trigger] 탭을 누른다. [RFC destination] 필드에 앞에서 우리가 생성한 “LRFCEXMPL”을 입력한다. [Directory] 필드에 subsystem의 shell script가 있는 directory를 입력한다. path의 끝에 “/”을 추가하는 것을 잊지 마라(Unix server에서). [Command file] 필드에 shell script이름을 입력한다. 여러분은 “Automatic start possible”라는 checkbox를 check할 수 있는데, 이것을 선택하면, partner profile에서 “Start subsystem”이 선택되어 있는 경우에 EDI subsystem을 자동적으로 가동시켜 준다. [그림 6-4]를 참조하라. 이런 자료들을 입력한 후에, [Outbound file] 탭을 누른다. directory path를 입력하고, file 이름을 입력하거나 dynamic file name을 생성해 주는 표준 function module을 입력한다. [Function module] 필드 상에 있는 pull-down 메뉴(F4)를 누르면, 우리가 사용할 수 있는 function module 목록을 볼 수 있다.
file에 대한 명명규칙의 관점에서 여러분이 독특한 요구사항을 가지고 있다면, 이를 충족시켜 줄 수 있는 새로운 function module을 생성할 수도 있다. 다음 단계는 status file에 대한 parameter를 지정하는 것이다. [Status file] 탭을 누르고, EDI subsystem이 status file을 생성할 directory path와 file 이름 또는 function module을 입력한다.
그림 6‑4 Outbound Port정의의 Outbound: Trigger Parameter
6.3.5 Partner Profile 정의
transaction WE20을 사용하거나, WEDI à [IDOC] à [Partner Profile]을 실행하여 대금 청구서(invoice)를 보낼 payer 고객(customer)에 대한 입력항목을 만든다. 먼저 [Create] 버튼을 누른다. partner number와 partner type을 입력하는데, 고객(customer)에 대해서는 partner type KU를 사용한다. [Post processing: permited agent] 탭에 있는 필드들에 적절한 값을 입력한다. [그림 6-5]를 참조하라. interface 과정에서 오류가 발생할 경우에, 여기에 입력하는 person/position/organization unit이 workflow Item을 수신하게 될 것이다(workflow에 대하여 더욱 상세한 내용을 알고 싶으면 제 8장을 보라). [Classification] 탭을 누르고, [Partner status] 필드에 “A”를 입력한다. 자료를 저장한다. 기본적인 partner profile이 생성되었다. 화면 중간의 outbound parameter 목록자료 밑에 있는 [Create outbound parameter] 버튼을 누른다. 그러면 outbound parameter를 입력할 수 있는 새로운 화면이 나타나는데, 다음과 같은 사항들을 입력하라. [Message type] 필드에 “INVOIC”를, [Message code] 필드에 “810”을, [Partner function] 필드에 “PY”를, [Port name] 필드에는 앞에서 생성한 “EDIPORT”를 입력하고, [IDOC type] 필드에는 “INVOIC02”을 입력한다. [그림 6-6]을 참조하라. [Output mode] 필드에서 “Collect IDOCs”을 선택한다. 이것을 선택하면, 생성된 IDOC이 곧바로 처리되지 않고 한곳에 모이게 되고, 나중에 여러분이 프로그램 RSEOUT00을 scheduling job으로 만들어 실행시키면, port를 통하여 file이 생성된다. “Start Subsystem” 선택버튼을 선택하면, IDOC이 port에서 생성될 때, SAP R/3가 EDI subsystem(또는 translator)을 자동적으로 가동시켜준다. 이것을 가능하게 하기 위해서는, port를 정의할 때 [Outbound: Trigger] 탭에서 shell script가 지정되어 있어야 한다. 자료를 저장한다. [Message Control] 탭을 누른다. [Application] 필드에 “V3”를, [Output type] 필드에 “ZBIL”을, [Message type] 필드에 “INVOIC”을, [Process code] 필드에 “SD09”를 입력한다. 입력한 자료를 저장한다. [그림 6-7]을 참조하라.
그림 6‑5 Partner Profile의 General Parameter
그림 6‑6 Partner Profile의 Outbound Parameter
그림 6‑7 Partner Profile의 Message Control
6.3.6 EDI Partner에 대한 참조표 작성
다음 단계는 외부시스템에 대한 상호 코드 참조를 위해서 table EDPAR에 자료를 입력하는 것이다. table EDPAR은 EDI partner에 대한 입력항목를 저장하고 있으며, SAP의 특정 고객 번호(customer number)에 대하여 partner function별로 그 partner에 대한 외부적인 표현을 내부적인 표현(R/3의 고객 번호)과 대응시켜 준다. 따라서 이 partner conversion table은 partner function number에 대한 외부적인 표현과 내부적인 표현을 서로 변환하고자 할 때 사용된다. 이 table은 EDI로 처리되는 SD의 모든 inbound transaction과 outbound transaction에서 사용된다. [그림 6-8]을 참조하라.
예를 들어, 어떤 고객 “123”이 자기가 거래하고 있는 거래처에 대하여 자체적으로 “ABC”와 “DEF”라는 코드를 부여하고, 우리는 그 거래처에 대하여 각각 “456”과 “789”라는 코드를 사용하고 있는 경우에는, 아래의 table과 같이 입력한다. 그런 다음, 고객 “123”이 EDI를 통해서 자료를 보낼 때 “ABC”라는 코드를 보내면, 이 자료를 받는 R/3 시스템의 EDI처리과정에서 이 코드는 “456”이라는 코드로 변환되어 처리되며, 반대로 R/3 시스템이 고객 “123”에게 자료를 보낼 때 “789”라는 자료를 보내면, EDI 처리과정에서 “DEF”라는 코드로 변환되어 송신되는 것이다.
Customer | Partner function | External number 외부 시스템 코드 | Internal Number SAP 코드 |
123 | WE Ship-to party | ABC | 456 |
123 | RE Bill-to party | DEF | 789 |
outbound 대금청구서(invoice)의 경우는, 수신 partner number를 결정하기 위해서 partner function PY(Payer)와 internal number를 사용하여 external partner number가 있는지를 확인한다. 만약 table EDPAR에 그 SAP 고객(customer)과 partner function PY(payer)에 대한 입력항목이 없으면, 처리 function module은 수신 partner number를 결정하기 위해서 table KNVV의 EIKTO field 를 점검한다. Customer Master의 KNVV-EIKTO field는 sales data view에 있는 “Account at the Customer” field를 나타낸다. 따라서 outbound 대금청구서(invoice)에서는 앞에서 언급한 항목들 중에서 어느 하나의 값이라도 적절하게 관리하는 것이 매우 중요하다. DESADV(납품 통지-Shipping notificatio – Dispatch advice)와 같은 message type이 IDOC type DESADV01과 함께 ALE outbound interface에서 사용될 때도, external partner number를 수신 partner number로 사용한다. table EDPAR을 관리하기 위해서는 IMG à [Sales and Distribution] à [Electronic Data Interchange] à [EDI Messages] à [Configure EDI Partners] à [Convert External To Internal Partner Numbers]을 사용한다. customer number, partner function, external partner number, internal partner number(이는 보통 SAP 고객 번호와 동일하다)를 입력한다. 여러분이 입력한 자료를 저장한다. EDI subsystem이 trading partner를 결정할 때는 external partner number를 사용한다는 것에 유의하라.
그림 6‑8 External Partner Number와 External Partner Number의 대응