본문 바로가기

개발자愛/SAP

SAP/ABAP 수행중인 BATCH JOB 확인 및 제어하기

머리는 안쓰면 잊게 된다.


개발에 대해서는 손이 먼저 움직일 정도였으나... 이젠 머리를 짜내고 과거에 했던 데이터를 찾아봐야 기억이 난다.


이러다... 찾아봐도 이해가 안되는 날이 오지는 않을지......... ㅠㅠ










아래와 같이 만들어서 체크를 하고~ 이후 로직을 수행함



*수행중인 Batch Check
DATA LV_VALUE(1)"Batch 작업의 유무
PERFORM CHECK_BATCH CHANGING LV_VALUE.





FORM CHECK_BATCH  CHANGING P_VALUE.

*****  "Batch 수행 중인지 확인
  DATA L_CNT TYPE N LENGTH 10"Batch 작업의 갯수
  DATA L_JOBNAME   TYPE BTCJOB.
  DATA GT_TBTCJOB LIKE TABLE OF TBTCJOB WITH HEADER LINE.

*****  MOVE SY-REPID TO L_JOBNAME.
*****  SELECT COUNT(*) INTO L_CNT
*****    FROM TBTCO
*****   WHERE JOBNAME = L_JOBNAME
*****     AND STATUS  = 'R'.

  " 배치실행 여부를 확인하고 JOB.
  CALL FUNCTION 'BP_FIND_JOBS_WITH_PROGRAM'
    EXPORTING
      ABAP_PROGRAM_NAME             SY-REPID
      STATUS                        'R' "실행중
    TABLES
      JOBLIST                       GT_TBTCJOB
    EXCEPTIONS
      NO_JOBS_FOUND                 1
      PROGRAM_SPECIFICATION_MISSING 2
      INVALID_DIALOG_TYPE           3
      JOB_FIND_CANCELED             4
      OTHERS                        5.

  " 실행(Runniung) 중인 Batch Job 이 존재하는지 확인 !!
  CLEARL_CNT.
  DESCRIBE TABLE GT_TBTCJOB LINES L_CNT.

  
" 조건으로 1 이상이 아닌 1 초과인 이유는 체크하며 이미 하나의 Batch를 확인하기 때문

  IF L_CNT > 1.
    P_VALUE ABAP_FALSE.
  ELSE.
    P_VALUE ABAP_TRUE.
  ENDIF.

ENDFORM.                    " CHECK_BATCH