Report 프로그램에 백그라운드 작업 정보 표시
백그라운드로 정기작업이 실행되는 Report 프로그램의 경우 Selection Screen에 해당 프로그램의 백그라운드 작업 정보를 표시하는 방법입니다.
정기 작업이나 인터페이스에 대해 Selection Screen에 최근 작업의 결과가 바로 표시되니 상당히 편리하였습니다.
#1. 서브루틴 소스코드
"MESSAGE_TO_KOREAN" 서브루틴은 아래 참고
2023.09.19 - [ABAP/Function|Class] - [Function] BAPI_MESSAGE_GETDETAIL - 다른 언어로 메시지 출력
FORM GET_BACK_JOB_INFO USING P_REPID
CHANGING P_TXT_BTCH
P_TXT_BTCHF
P_TXT_BTCHR.
CLEAR: P_TXT_BTCH, P_TXT_BTCHF, P_TXT_BTCHR.
CHECK SY-BATCH IS INITIAL.
"정기작업만 조회
SELECT
A~JOBNAME,
B~JOBCOUNT,
B~STATUS,
A~VARIANT, "변형
A~AUTHCKNAM, "백그라운드 사용자
B~AUTHCKMAN, "클라이언트
B~SDLSTRTDT, "작업시작일
B~SDLSTRTTM, "작업종료일
B~PERIODIC, "정기작업
B~PRDMINS,
B~PRDHOURS,
B~PRDDAYS,
B~PRDWEEKS,
B~PRDMONTHS
FROM TBTCP AS A
INNER JOIN TBTCO AS B ON A~JOBNAME EQ B~JOBNAME AND A~JOBCOUNT EQ B~JOBCOUNT
WHERE A~PROGNAME EQ @P_REPID
AND B~AUTHCKMAN EQ @SY-MANDT
AND B~PERIODIC EQ 'X'
AND B~STATUS IN ( 'S', 'F', 'A' )
ORDER BY SDLSTRTDT DESCENDING, SDLSTRTTM DESCENDING
INTO TABLE @DATA(LT_TBTCO)
UP TO 2 ROWS.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
P_TXT_BTCH = '작업 이름'.
P_TXT_BTCHR = '다음 작업'.
P_TXT_BTCHF = '최근 작업'.
DATA: LV_STR(20) TYPE C,
LT_JOBLOG TYPE STANDARD TABLE OF TBTC5.
CLEAR LV_STR.
"릴리즈된 작업
READ TABLE LT_TBTCO INTO DATA(LS_TBTCO) WITH KEY STATUS = 'S'.
IF SY-SUBRC EQ 0.
P_TXT_BTCH = |{ P_TXT_BTCH } : { LS_TBTCO-JOBNAME }|.
*|{ LV_TIMESTAMP TIMESTAMP = ISO }|.
P_TXT_BTCHR = |{ P_TXT_BTCHR } : { LS_TBTCO-SDLSTRTDT DATE = USER } { LS_TBTCO-SDLSTRTTM TIME = USER }|.
IF LS_TBTCO-PRDMINS IS NOT INITIAL.
WRITE LS_TBTCO-PRDMINS TO LV_STR. CONDENSE LV_STR.
SHIFT LV_STR LEFT DELETING LEADING '0'.
LV_STR = |{ LV_STR }분|.
ELSEIF LS_TBTCO-PRDHOURS IS NOT INITIAL.
WRITE LS_TBTCO-PRDHOURS TO LV_STR. CONDENSE LV_STR.
SHIFT LV_STR LEFT DELETING LEADING '0'.
LV_STR = |{ LV_STR }시간|.
ELSEIF LS_TBTCO-PRDDAYS IS NOT INITIAL.
WRITE LS_TBTCO-PRDDAYS TO LV_STR. CONDENSE LV_STR.
SHIFT LV_STR LEFT DELETING LEADING '0'.
LV_STR = |{ LV_STR }일|.
ELSEIF LS_TBTCO-PRDWEEKS IS NOT INITIAL.
WRITE LS_TBTCO-PRDWEEKS TO LV_STR. CONDENSE LV_STR.
SHIFT LV_STR LEFT DELETING LEADING '0'.
LV_STR = |{ LV_STR }주|.
ELSEIF LS_TBTCO-PRDMONTHS IS NOT INITIAL.
WRITE LS_TBTCO-PRDMONTHS TO LV_STR. CONDENSE LV_STR.
SHIFT LV_STR LEFT DELETING LEADING '0'.
LV_STR = |{ LV_STR }개월|.
ENDIF.
IF LV_STR IS NOT INITIAL.
P_TXT_BTCHR = |{ P_TXT_BTCHR } / { LV_STR } 주기로 반복|.
ENDIF.
ELSE.
P_TXT_BTCHR = |{ P_TXT_BTCHR } : 없음|.
ENDIF.
"최근 완료 작업
DELETE LT_TBTCO WHERE STATUS EQ 'S'.
READ TABLE LT_TBTCO INTO LS_TBTCO INDEX 1.
IF SY-SUBRC EQ 0.
IF P_TXT_BTCH IS INITIAL.
P_TXT_BTCH = |{ P_TXT_BTCH } : { LS_TBTCO-JOBNAME }|.
ENDIF.
P_TXT_BTCHF = |{ P_TXT_BTCHF } : { LS_TBTCO-SDLSTRTDT DATE = USER } { LS_TBTCO-SDLSTRTTM TIME = USER }|.
IF LS_TBTCO-STATUS EQ 'F'.
P_TXT_BTCHF = |{ P_TXT_BTCHF } / 성공|.
ELSE.
CALL FUNCTION 'BP_JOBLOG_READ'
EXPORTING
CLIENT = LS_TBTCO-AUTHCKMAN
JOBCOUNT = LS_TBTCO-JOBCOUNT
JOBNAME = LS_TBTCO-JOBNAME
TABLES
JOBLOGTBL = LT_JOBLOG
EXCEPTIONS
CANT_READ_JOBLOG = 1
JOBCOUNT_MISSING = 2
JOBLOG_DOES_NOT_EXIST = 3
JOBLOG_IS_EMPTY = 4
JOBLOG_NAME_MISSING = 5
JOBNAME_MISSING = 6
JOB_DOES_NOT_EXIST = 7
OTHERS = 8
.
READ TABLE LT_JOBLOG INTO DATA(LS_JOBLOG) WITH KEY MSGTYPE = 'E'.
IF SY-SUBRC NE 0.
READ TABLE LT_JOBLOG INTO LS_JOBLOG WITH KEY MSGTYPE = 'A'.
ENDIF.
IF SY-SUBRC EQ 0.
PERFORM MESSAGE_TO_KOREAN USING LS_JOBLOG-MSGID LS_JOBLOG-MSGNO
LS_JOBLOG-MSGV1 LS_JOBLOG-MSGV2 LS_JOBLOG-MSGV3 LS_JOBLOG-MSGV4
CHANGING LS_JOBLOG-TEXT.
P_TXT_BTCHF = |{ P_TXT_BTCHF } / { LS_JOBLOG-TEXT }|.
ENDIF.
ENDIF.
ELSE.
P_TXT_BTCHF = |{ P_TXT_BTCHF } : 없음|.
ENDIF.
ENDFORM.
#2. 사용 예시
SELECTION-SCREEN BEGIN OF BLOCK BLJ WITH FRAME TITLE TEXT-BLJ.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) TXT_BTCH.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) TXT_BT_F.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) TXT_BT_R.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLJ.
INITIALIZATION.
"백그라운드 작업 정보
PERFORM GET_BACK_JOB_INFO USING SY-REPID
CHANGING TXT_BTCH
TXT_BT_F
TXT_BT_R.
'ABAP > 소스코드' 카테고리의 다른 글
[Report] 일괄 번역 편집기(MASS_TRANSLATE) (3) | 2023.11.15 |
---|---|
[Class] Internal Table 엑셀 다운로드(XLSX 형식) (0) | 2023.11.15 |
[Report] 엑셀 데이터로 Table Insert(Modify) 프로그램 (0) | 2023.09.06 |
[Form] ALV Field catalog(필드 카탈로그) 생성 서브루틴 (0) | 2023.08.28 |
[Report] Customer Exit(SMOD) 및 BAdI 찾는 리포트 (0) | 2023.07.20 |
댓글