테이블에서 값들을 가져와 백잡을 자동으로 생성하는 프로그램을 만들었습니다.
그리고 이제 생성과 동시에 바로 실행되도록 하려고 하는데(병렬개념일 수 있겠습니다.)
JOB_CLOSE 함수에서 direct_start 에 'x'를 주면 되는 줄 알았더니 아니네요...
검색해봐도 쉬운거라 그런지 안나오고...@_@;
질문을 올리게 됐습니다.
rb_serl5 선택시엔 스케쥴 대기 상태로 있고 아닐 시에는 즉시실행을 하도록 만들려고 합니다.
백잡을 만들어 놓는 것은 잘 됐어서, 즉시실행&병렬실행을 하기위한 방법을 알고싶습니다......ㅠㅠ
LOOP AT gt_list INTO gs_list.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = gs_list-zjobname
IMPORTING
jobcount = g_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
SUBMIT (gs_list-zpgmid) VIA JOB gs_list-zjobname NUMBER g_jobcount
USING SELECTION-SET gs_list-zjobid
AND RETURN.
IF rb_sel5 = 'X'.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = g_jobcount
jobname = gs_list-zjobname
strtimmed = ' '
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9.
ELSE.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = g_jobcount
jobname = gs_list-zjobname
direct_start = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9.
ENDIF.
댓글 5
-
정군
2009.05.28 01:30
-
SAP폐인
2009.05.28 17:43
Job Open 하기전에 테이블에서 값을 가져오는 부분을 나눈 다음에 여러번 돌리면서 Job Open해서 백 그라운드로 돌리면 될듯합니다.
데이터 나누기만 잘해주면 크게 문제가 발생하지는 않습니다.
-
sincere
2009.05.28 18:59
백잡만드는 프로그램을 만들어놔서 그걸 활용하려고 이렇게 하려는건데요.
이 프로그램을 돌리면 스케쥴 상태로 백잡이 다 만들어지는데, 이걸 실행은 어떻게 하나요?@_@;;;
백잡 실행하는 명령어? 함수?
ps 이지아밥이랑 ABAP/4 실무가이드 책이 있는데 문제를 해결하는데 필요한 내용은 대부분 없네요..
문법, 함수 같은 것에 대한 참고서적이 있나요?
-
정군
2009.05.28 19:09
job_open , job_close해서 생성해둔 것을 프로그램에서 자동으로 call 하는 방법은 저도 모릅니다.(없다고 표현하고 싶지만;; 있을 수도 ^^)
그래서, 혹시 알게 되시면 꼭 글 남겨주십시오.
-
홍구나라국민
2009.06.02 22:24
권한 확인을 해보시기 바랍니다. 권한이 없으면 해당 background job이 schedule은 되지만 release가 되지 않는 현상이 발생할 수 있습니다.
권한 object S_BTCH_ADM, S_BTCH_JOB 을 확인해 보세요
1. job_open, close하면 SM35에 남는 것으로 압니다... 저희쪽은 바로 실행할 거면 job_open 같은 것을 하지 않고 일반적인 BDC로 그냥 합니다. 그걸 parameter로 설정하는 거지요.
2. 위와 같이 하면 병렬 처리가 안될거 같은데요..
submit한 것이 결과가 돌아올 때 깢지 job_close를 못하고 대기하니까요...
job을 여러개 만들어 두고 나중에 한 번에 실행한다면.. 병렬이랄 수도 있겠지만...
3. 병렬 처리를 위해서는 function을 RFC로 만들고, 그 RFC를 여러번 호출하고 wait 명령으로 기다리는 방식을 씁니다.
다른 방법이 있는지는 모르겠습니다.