출판된 한글판 도서
ERP SAP R/3 ALE, EDI & IDOC 기술 |
Original Book Contents
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해야 할 필요가 있을 수도 있다는 것을 유념하기 바란다. 여기서 논의되는 접근방식은 위의 어느 경우에나 적용될 수 있는 것이다.
특정 application 영역의 ALE 프로세서에 대한 주요 프로그램 코드들은 ABAP/4 function module의 형태로 encapsulate되어 있다. 이 function module들은 message type이나 process code와 연결된다. 따라서 ALE 프로세서는 message type이나 process code와 같은 통제 정보를 점검하고, 지정된 database table에서 해당 IDOC을 처리하기 위해서 호출할 function module의 이름을 찾아 낸다. 이러한 function module들은 통상 Customer Function이라고 불리는 object를 포함하고 있는데, 이들은 SAP에서 enhancement 목적으로 사용되는 user exit으로 생각할 수 있다. 이들은 실제적으로 main program이나 function module이 실행되는 과정에서 특정 시점에 호출되는 function module이며, 그 customer function에 프로그램 코드을 추가함으로써, 그 특정 시점에서의 자료 처리에 영향을 주기 위해서 사용된다. customer function module은 통상의 function module처럼 작동하고, import parameter, export parameter, table(internal table) parameter, exception parameter 등을 가지고 있다. 앞으로 여러분이 보게 되겠지만, 전통적인 user exit과는 다르게, customer function은 function module의 parameter와 internal table을 통해서 여러분에게 주어진 자료만 수정할 수 있도록 하는 기능을 제공한다. 대부분의 ALE/EDI function module에서 customer function이 지원되지만, 전통적인 user exit을 사용하는 ALE/EDI 프로세서도 있다는 사실을 유념하기 바란다. 특정 message type/process code에 대하여 어떤 function module을 enhance해야 하는지를 어떻게 알아내는가? 이것을 알아내는 방법이 몇 가지 있다.
n master data 분배에 대해서는 시작메뉴 [Tools] à [ALE] à [ALE Development] à [Idocs] à [Engineering Change Management] à [Define Function Module for Evaluation]을 실행한다. 목록에서 우리가 예제로 사용하는 message type DEBMAS를 찾는다. 여러분이 목록자료에서 DEBMAS에 대한 입력항목을 찾아서 그 상세내용을 조회해 보면, function module MASTERIDOC_CREATE_SMD_DEBMAS와 연결되어 있는 것을 알수 있다(이러한 자료는 table TBDME에 저장되어 있다). 이 table에 있는 다른 message type에 대한 입력항목들도 자세히 살펴보면, 모든 master data의 message type에 대응되는 function module의 이름이 MASTERIDOC_CREATE_SMD_<MessaeType>과 같은 형식으로 되어 있는 것을 알 수 있을 것이다. 이 function module은 MASTERIDOC_CREATE_DEBMAS 또는 MASTERIDOC_CREATE_<MessageType>의 이름을 가진 다른 function module을 호출한다. 그 function module 내에서 “customer-function” 이라는 단어를 찾아 보면, 그 안에 프로그램 코드를 추가할 수 있는 function module이 여러 개 나타날 것이다.
n inbound인 경우는. transaction WE42를 사용하거나, 시작메뉴 [Tools] à [ALE] à [ALE Development] à [Idocs] à [Inbound Processing] à [Define Process Code]를 사용하거나, transaction WEDI à [Control] à [Inbound Process Codes]를 사용한다. 그러면 process code와 연결되어 있는 function module이 보일 것이다. inbound에 대한 function module의 이름은 통상 IDOC_INPUT_<MessageType>의 형식을 가지는데, 예들 들면 inbound Characteristics Master에 대해서는 IDOC_INPUT_CHRMAS와 같은 이름을 가진다.
n transaction WE57를 사용하거나, transaction WEDI à [Development] à [Message/application Object]을 실행한다. 그러면 inbound ALE/EDI interface에서 사용되는 function module, business object, message type에 대한 목록이 나타날 것이다.
n outbound transaction data의 경우는, transaction WE41를 사용하거나, transaction WEDI à [outbound Process Code] 을 실행한다. 그러면 process code와 연결된 function module이 보일 것이다.
customer function은 단지 ALE/EDI에서만 고유한 것은 아니며, SAP R/3 내에 있는 모든 프로그램과 module에서 공통된 사항이다. customer function은 SAP에서 enhancement 목적으로 사용할 수 있는 component의 하나이며, 이외에 menu enhancement와 screen enhancement도 enhancement을 위해서 사용할 수 있다. 모든 customer function exit은 SAP enhancement에서 관리되고, 이는 transaction SMOD을 사용하여 내용을 파악할 수 있다. transaction SMOD를 실행한 후, enhancement name field에서 pull down(F4)을 하면 enhancement 검색화면이 나온다. 이때 Information system 검색방식과 SAP application 검색방식을 사용하면, 여러분이 SAP에서 이용할 수 있는 모든 enhancement 목록을 볼 수 있을 것이다. SAP enhancement는 내부적으로 application 영역과 연관된 development class에 따라서 분류되어 있다. 검색화면을 이용하여 development class VSV(application development R/3 SD master data distribution)에 속하는 enhancement를 찾아낼 수 있을 것이다. 그 중에서 enhancement VSV00001을 선택해서 그 내용을 조회해 보면, 그 enhancement에 대한 상세정보를 보여주는 화면을 볼 수 있을 것이다(참고 : 현재 version에서는 enhancement VSV00001에는 development class가 지정되어 있지 않다. 하지만 그 enhancement안에 있는 function exit들에는 development class VSV가 지정되어 있다). 다음으로 [Component] 버튼을 눌러보면, function exit에 대한 component를 조회해 볼 수 있다([그림 4-9]를 참조하라). 그러면 아마 4개의 component가 나열되어 있는데, 이들은 모두 function exit이며, 실제로는 그 자체로 하나의 function module이며, ALE function module에서 “CALL Customer-Function ‘001’.”의 형태로 호출된다. 이것은 ABAP/4 문장 “Call …..”의 특수한 형태이다. 그 component에 대한 목록을 자세히 살펴보면, 여러분은 EXIT_SAPLVV01_001 component를 만날 수 있는데, 이것이 우리의 IDOC extension 예제인 outbound Customer Master에 대하여 여러분이 enhancement 처리를 해야 하는 곳이다. Customer Master 자료를 분배할 때 사용되는 ALE function module인 MASTERIDOC_CREATE_DEBMAS 내에 있는 “Call Customer-Function ‘001’.”의 문장은, 내부적으로 변환되어 “EXIT_SAPLVV01_001” component를 호출하게 된다. 이 function exit은 transaction SE37을 이용하여 직접 편집할 수도 있지만, 우리는 보다 이해하기 쉬운 다른 방식을 사용할 것이다.
그림 4‑9 SAP Enhancement와 Component