현재 세션에서 무한루프돌면 덤프날거 같은데
별도 함수같은걸 다른 세션으로 호출시키고
그 안에서 무한루프 돌면서 특정 DB값이 추가되는지 계속 체크하도록 할 수 있을까요?
이런식으로 실시간 데이터 갱신을 구현한걸 예전에 어디선가 본거 같은데요
실시간 현황판 같은거 구현한 사례였던거 같은데 관련해서 아시는 분 계시는지 궁금합니다.
댓글 4
-
초특급
2023.06.27 18:38
-
로우랜즈
2023.06.27 22:05
답변 감사합니다. 백잡을 1분단위로 돌리면 시스템에 부하문제는 없을까요? 비즈니스 오브젝트로 이벤트 거는 기능은 들어보긴 했는데 실제 종종 사용되는걸까요? 정보가 별로 없어서요
-
Hwable
2023.06.28 02:31
안녕하세요.
1. DB 측면
- DB 레벨에서 특정 테이블에 트리거를 설정하면 특정 데이터가 들어왔을때 프로그램을 실행하게 가능합니다. (ORACLE, MS-SQL)
2. APP 측면
1) 수동적인 방식 : 체크 프로그램을 짧은 인터벌로 배치잡으로 설정하는 방법이 있습니다. (배치잡 로그가 많이 쌓이는 문제 발생)
2) 능동적인 방식 : 데이터를 넣어주는 쪽에서 데이터 삽입 후 체크 프로그램을 호출시키는 방법이 있습니다.
3) 현대방식 : ABAP Daemon 을 사용하시면 됩니다. ABAP 752이상 필요. T-Code : SMDAEMON 으로 모니터링 및 제어합니다.
(참고 URL : https://blogs.sap.com/2021/09/22/create-a-simple-daemon-in-abap/)
4) 꼼수 : 종료되지 않는 로직(WHILE(1=1)) 내에서 WAIT 구문으로 1초에 1번씩 체크로직을 넣고 해당 프로그램을 백그라운드로 실행.
쉽게 말해, 하나의 프로그램이 백그라운드로 영원히 상주하는 개념으로 프로세스 관점에서 계속 Active 상태라는게 문제입니다.
-
로우랜즈
2023.06.28 03:54
상세한 답변 감사합니다! 여러 방식을 고려해봐야겠네요.
ABAP 프로그램을 백그라운드 작업으로 최소단위인 분단위 등록해서 계속 돌려야 하지 않을까요?
ABAP 프로그램 안에서는 1분 정도 루프 돌리면서 DB 수정사항이 있는지 확인을 해야겠군요.
또는 클래스의 이벤트 기능을 사용해보려면, business object(SWO1)를 고려해보는 것도 필요하겠네요