타 프로그램 호출 방법
A프로그램에서 B 프로그램 호출 떄, 사용하는 방법은
CALL TRANSACTION B
SUBMIT B
두 방법이있다.
SUBMIT 을 이용해, 호출 프로그램 MESSAGE 추출
SUBMIT을 사용할 경우는 B프로그램의 MESSAGE를 받을 방법이
EXPORT MEMORY ID 이용하거나,
VIA JOB을 이용하는 방법 두가지...
오늘은
SUBMIT B VIA JOB 을 이용한 방법으로 작성해보겠습니다.
SUBMIT VIA JOB EX.CODE
DATA : LV_JOBCOUNT TYPE TBTCJOB-JOBCOUNT,
LV_JOBNAME TYPE TBTCJOB-JOBNAME VALUE 'JOB_TEST'.
DATA : LT_LOG LIKE TABLE OF TBTC5 WITH HEADER LINE,
LS_LOG LIKE LINE OF LT_LOG.
DATA : LR_DATA TYPE REF TO DATA.
CALL FUNCATION 'JOB_OPEN'
EXPORTING
JOBNAME = LV_JOBNAME
IMPORTING
JOBCOUNT = LV_JOBCOUNT
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DAT = 2
JOBNAME_MISSING = 3
OTHERS =4.
IF SY-SUBRC EQ 0.
SUBMIT (B_PGMID) WITH PA_BUKRS EQ PA_BUKRS
TO SAP-SPOOL
WITHOUT SPOOL DYNPRO
UWER SY-UNAME
VIA JOB LV_JOBNAME NUMBER LV_JOBCOUNT
AND RETURN.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = LV_JOBCOUNT
JOBNAME = LV_JOBNAME
STRTIMMED = 'X'
EXCEPTIONS
CANT_START_IMMEDIATE = 1
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEXT = 6
LOCK_FAILED = 7
INVALID_TARGET = 8
INVALIED_TIME_ZONE = 9
OTHERS =10.
IF SY-SUBRC NE 0.
"JOB CLOSE ERROR
ENDIF.
ELSE.
"SUBMIT ERROR
DATA(LV_MSG) = CL_ABAP_SUBMIT_HANDLING=>GET_ERROR_MESSAGE( ).
ENDIF.
"GET JOG LOG
CALL FUNCTION 'BP_JOBLOG_READ'
EXPORTING
CLIENDT = SY-MANDT
JOBCOUNT = LV_JOBCOUNT
JOBNAME = LV_JOBNAME
TABLES
JOBLOGTBL = LT_LOG "B프로그램의 MEESSAGE 담긴 테이블
EXCEPTIONS
CANT_READ_JOBLOG = 1
JOBCOUNT_MISSING = 2
JOBLOG_DOES_NOT_EXITST = 3
JOLOG_IS_EMPTY = 4
JOBLOG_NAME_MISSING = 5
JOBNAME_MISSING = 6
JOB_DOES_NOT_EXIST = 7
OTHERS = 8.
ENDIF.