역시 ABAP의 세계는 끝이 없다는 것을 느낍니다.
예전에는 Certi를 어떻게 봤는지.. 지금은 어떻게 일하고 있는지..
다시 개념부터 차근차근 되짚어 가기 위해서 조금씩 공부를 하고 있는데
공식교재 첫부분에 나오는 Dispatcher나 instance에 대해서 궁금해져서 이렇게 질문을 올려봅니다.
Dispatcher나 instance에 대한 동작원리는 BC한테 물어봐야 하는건지요?
아니면 ABAP적으로 두 부분에 대해 동작하는 부분(프로그램이나 트랜잭션,패키지)이 따로 있는지요?
그리고 이 2개부분이 DB에 update하는 부분과(commit이나 rollback부분) 연결되어지는 건지요?
실전이 아닌 이론문제라 좀 질문하기가 그렇지만.. 고수분들의 답변을 기대해도 되겠는지요? ^^*
그럼 SAP하시는 분들 모두 건강하시길 바랍니다.
오늘도 열공!
내용이 아주 많은 부분인데, 중간중간에 필요한 부분만 간추렸습니다
-----------------------------------------------------------------------------------------------------------
Dispatcher(분배기)는 애플리케이션 서버에서 발생하는 Work Process의 모든 Dialog step을 분배하는 중요한 역할을 수행한다.
사용 가능한 Work Process보다 더 많은 사용자가 ABAP Application Server에 접속되어 각 사용자가 동시에 여러 프로그램을 실행할 수 있다.
이 경우 Dispatcher(분배기)가 Work Process를 적절히 분배하는 역할을 담당하게 된다. 작업 중인 정보와 대기 중인 정보는 Shared memory에 저장되어 관리된다.
사용자가 데이터를 변경하기 위해서 저장 버튼을 클릭하면 Dialog Work Process가 할당된다. 프로그램 내부에는 CALL FUNCTION ... IN UPDATE TASK 구문을 이용하여 Function Module이 호출되면, Dialog Work Process가 [그림 1-3-6]과 같이 파라미터 값을 VBLOG 라는 테이블에 저장한다. 이 Function Module 에는 데이터를 변경하는 OPEN SQL이 포함되어 있다. 그리고 프로그램에서 COMMIT WORK 구문을 만나게 되면, Dialog Work Process는 다른 작업을 수행하기 위해 FREE 상태가 되고 Update 정보를 Update Work Process에 전달한다. Update Work Process는 VBLOG 테이블에서 값을 읽어 UPDATE 를 수행하게 한다. 그리고 Update Work Process가 Database에 변경 요청을 하게 되고, Database부터 결과값을 리턴 받아서 분석하게 된다. 만약 UPDATE가 성공하였다면, Database Commit을 호출하고 VBLOG 테이블에서 데이터를 삭제한다. 그러나 메모리 부족과 같은 기술적인 문제가 발생하게 되면, Database Rollback 이 수행되고, 상세 로그 데이터를 VBLOG 테이블에 저장한다. 이러한 로그는 메일로 전달되고 VBLOG 데이터를 분석하여 해결하여야 한다.
COMMIT WORK 를 사용하면 Dialog Work Process는 Update Work Process가 성공하였는지 여부와 관계없이 다른 작업을 수행하게 되는데 이 것을 Asynchronous Update 라고 부른다.
그러나 COMMIT WORK AND WAIT 구문은 Update Work Process가 종료될 때까지 기다린 후에 다음 프로세스가 진행이 된다. 이러한 방식을Synchronous Update 라고 부른다.
예를들어 Asynchronous Update를 사용하여 데이터를 변경한 후에 바로 SELECT 하면 변경되기 이전의 값이 조회될 수 있지만, Synchronous Update 를 사용하게 되면 데이터가 변경될 때까지 기다리기 때문에 최신 데이터를 SELECT 할 수 있다.