TRY.
IF P_L_FLAG = 'S'.
DELETE FROM ZTPOS080
WHERE SERVER = 'SAP'
AND WERKS = GT_OUT-WERKS
AND MATNR = GT_OUT-MATNR
AND MEINH = GT_OUT-MEINH
AND EAN11 = GT_OUT-EAN11.
ENDIF.
CATCH cx_sy_open_sql_db.
l_type = 'E'.
ENDTRY.
IF l_type = 'E'.
MESSAGE S000 WITH '테이블 삭제 오류 !! TABLE "ZTPOS080"'.
LEAVE LIST-PROCESSING.
ELSE.
COMMIT WORK.
ENDIF.
===
위의 로직의 문제점이 무엇인지 지적 부탁드립니다.
CATCH cx_sy_open_sql_db.
이후에 COMMIT WORK 처리를 해줘야 하는데 안해준것이 문제일까요?
저 구문이 들어간 프로그램은 CBO 테이블 7개에 MODIFY 한 후 마지막에 저 작업을 진행합니다.
그 프로그램을 백잡으로 여러개 걸어두었을경우
저 TRY 구문 때문에 프로그램 실행 속도 및 다음 작업이 실행되지 못하고 계쏙 버퍼에 떠있다고 하는데요..
저게 맞는 말인가요????
위에 구문이 이상한 점은 leave list-processing 인것 같네요. ^^;
보통은 message 를 'E' type 으로 처리하지 않을 경우 control structure 에
따라서 exit 이나 return 등으로 처리를 하거든요. leave list-processing 은
modal-processing 일 경우 list 처리를 위하여 현재 modal-processing 을 떠나서
list-processing 처리를 하고자 할때 쓰이는 경우가 많습니다. 단순히 try - catch 에서
delete 에 대한 오류점검을 하는 경우에는 맞지 않는 코딩인것 같네요.
leave list-processing 을 exit 이나 return 등으로 제어를 하시는 것이 맞을 것 같습니다.