ABAP BDC 프로그램의 Call Transaction 처리에서 MODE와 UPDATE에 대한 설명


특정 트랜잭션을 반복적으로 처리해야 할 경우 일반적으로 BDC 프로그램으로 개발하여 처리하게 됩니다.

예를 들어 자재코드를 일괄로 생성한다든지, 자재코드의 MRP관리자만 일괄적으로 변경한다든지, 영업문서나 구매문서 등을 다른 CBO 프로그램이 실행되는 과정에서 자동으로 생성한다든지 다양한 경우에 BDC 프로그램을 사용하게 됩니다.

BDC 프로그램에서 Call Transaction 처리하는 구문은 아래와 같다.

CALL TRANSACTION ‘MM02’ USING BDCDATA
                         MODE ‘A’ 
                         UPDATE ‘S’.

BDCDATA는 화면 입력 값과 트랜잭션 처리에 대한 일련의 과정들이 들어있는 인터널테이블 입니다.
MODE는 BDC 처리 과정을 화면으로 보여줄 것인지 백그라운드로 처리할 것인지에 대한 지정(Display mode) 입니다.
– UPDATE는 처리될 트랜잭션에서 동기 또는 비동기 업데이트 처리를 지정합니다.

ABAP BDC 프로그램의 Call Transaction 처리에서 MODE와 UPDATE에 대한 설명

이번 글에서는 ABAP BDC 프로그램의 Call Transaction 처리에서 MODE와 UPDATE에 대한 설명 입니다.

ABAP BDC의 MODE Parameter에 대한 설명

CALL TRANSACTION의 BDC에서 MODE에 올 수 있는 3가지 속성에 대한 설명입니다.

A : 트랜잭션 화면이 표시된 상태에서 처리.
     OK Code를 매번 Enter를 치면서 넘어가게 된다.
     장점) 트랜잭션 수행 과정을 직접 확인할 수 있다
     단점) 계속해서 Enter를 눌러줘야 한다.

N : 화면에 아무것도 표시하지 않고 처리.
     트랜잭션 처리 과정이 프로그램 내부적으로 돌아간다.
     장점) 별다른 행위 없이 트랜잭션 처리가 종료될때까지 기다리기만 하면 된다.
     단점) 처리 과정에서 오류가 발생하면 어디에서 오류가 발생했는지 알 수가 없다.

E : 트랜잭션 처리 과정에서 오류가 발생한 경우에 그 시점부터 화면으로 표시된다.
     ‘A’모드와 ‘N’모드의 장단점을 합쳐놓은 것이라 생각하면 된다.

MODE를 지정하지 않으면 디폴트 모드는 ‘A’모드가 됩니다.
프로그램 개발 과정에는 ‘A’ 모드로, 사용자 배포할 때는 ‘N’ 모드로 하는게 좋습니다.
대부분 프로그램에서 모드를 선택할 수 있도록 처리해 놓으면 편리합니다.

ABAP BDC의 UPDATE Parameter에 대한 설명

CALL TRANSACTION의 BDC에서 UPDATE에 올 수 있는 2가지 Mode에 대한 설명입니다.

A : Asynchronous update. (비동기 업데이트)
이 Mode에서 호출된 Transaction은 변경이 완료될 때까지 기다리지 않습니다. 
간단하게 SAP 변경 service에 변경을 넘깁니다. 그러므로 Asynchronous 처리는 대게 Batch input 프로그램을 빨리 끝나게 해 줍니다.
 Asynchronous 처리는 대량 데이터 처리에는 추천되지 않습니다. 그 이유는 Asynchronous updating에서 update module에서 완료에 대한 message를 호출된 transaction이 받지 못하기 때문입니다. 바꿔 말하면 호출한 프로그램은 호출된 프로그램이 Database를 성공적으로 수정하고 끝난 것인지를 알 수 없습니다.
 만일 Asynchronous updating을 사용하면 session 처리 동안 변경이 정상적으로 종료되었는지를 알기 위해 변경 관리 기능(Transaction SM12)을 사용할 필요가 있습니다. 오류 분석과 복구는 Synchronous updating보다 불편 합니다.

S : Synchronous updating. (동기 업데이트)
이 Mode에서 호출된 Transaction은 변경이 완전히 끝날 때까지 기다리게 됩니다. 호출된 Transaction이 변경이 완료될 때까지 기다리게 되므로 실행은 Asynchronous updating보다 느립니다. 그러나, 호출된 Transaction의 오류 message를 프로그램으로 되돌릴 수 있습니다. 그러므로 오류를 분석하고 복구하기가 훨씬 쉽습니다.

UPDATE를 지정하지 않으면 디폴트 모드는 ‘A'(비동기 업데이트) 모드가 됩니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기