본문 바로가기
SAP/ABAP

SAP ABAP AT EXIT-COMMAND과 OK_CODE 방식의 차이점

by 꿈청(꿈꾸는청년) 2021. 3. 30.
반응형

SAP ABAP AT EXIT-COMMAND과 OK_CODE 방식의 차이점

 

AT EXIT-COMMAND와 OK_CODE 방식으로 화면 프로그램에서 나올 때 차이점을 알아보도록 하겠습니다.

 

우선, GUI Status에서 EXIT-COMMAND의 설정에 대한 '역할'을 알아보겠습니다.

 

 

GUI Status

GUI Status

Exit Command ( Module AT EXIT-COMMAND )

 

Functional Type : 'E'

 

해당 GUI Status 기능키(Function Key)에 'E' Exit Command ( Module AT EXIT-COMMAND ) 설정을 한 이후에 아래의 모듈에 USER_EXIT AT EXIT-COMMAND. 모듈을 만들어줍니다.

 

자! 그럼 여기서 제가 만들어준 USER_EXIT AT EXIT-COMMAND 어떻게 기능이 작동될까요?

 

위 사진에 Function key에 설정해준 'E' 명령어가 들어왔을 때만! 그리고 AT-EXIT-COMMAND가 있는 모듈만! 실행되게 해주는 것입니다. 이해되셨나요? 

 

 

SCREEN 100

 

 

그럼 화면에서 한번 같이 테스트를 해보죠

( 아차 TYPE-1 실행가능프로그램으로 테스트를 할 경우 스크린1000번에서 하시면 안되고 만들어 놓은 스크린 100번에서 테스트를 해주셔야 합니다. 스크린 1000번은 스탠다드에서 빠져나오는 기능을 제공해줍니다 )

 

 

 

 

각 모듈에 BREAK-POINT를 설정해줍니다.

 

 

 

MODULE TEST_001 

 

 

 

MODULE USER_EXIT

 

 

그리고 FUNCTION_KEY 'E'를 다시 Nomal type으로 변경해줍니다

 

 

스크린(100) 화면에서 BACK 키를 눌러줍니다.

 

 

AT-EXIT-COMMAND가 아닌 젤 상단에 있었던 모듈에 BREAK-POINT가 걸리는 걸 

확인할 수 있습니다.

 

 

 

 

그리고 이어서 바로 아래에 있는 EXIT-COMMAND MODULE을 타는게 아닌

바로 PBO로 가는 것을 볼 수 있습니다. 왜냐하면 FUNCTION KEY 'E'에서 

NOMAL TYPE으로 변경했기 때문이죠.

 

 

 

이제는 AT EXIT-COMMAND의 역할을 아시겠나요? 만약, 위 같은 상황에서 다시 TYPE을 Nomal에서 'E'로 변경했을 시에는 MODULE TEST_001을 무시하고 바로 USER_EXIT AT EXIT-COMMAND로 갈 것입니다. 

 

 

그렇다면 TYPE을 'E'으로 하고 모듈(MODULE)에 AT EXIT-COMMAND 하면 해당 로직을 타는 것 까지는 알겠는데 왜 어떤 모듈 로직에서는 OK_CODE를 사용하고 어떤 로직은 사용을 안해도 되는데 무슨 차이가 있길래 OK_CODE를 쓰는 것일까요?

 

 

이유는 위에서 언급했듯이 Input Field 필드가 필수 값이면 입력하지 않은 이상 프로그램 Funtion key 'E'가 작동하지 않지만 OK_CODE로 했을 시에는 필수 값이어도 프로그램을 빠져나올 수 있습니다. 

 

 

아래의 예시를 보시죠

 

EX) 

 

화면에 Input Field 필드 추가 옵션(possible -> required) 필수 값 설정

 

OK_CODE 사용하지 않고 프로그램을 빠져나오는 LEAVE SCREEN 또는 SCT SCREEN 0 해도 무방

 

 

 

해당 프로그램 화면에서 나오려고 하면 어떻게 될까요? 

 

 

 

결론은 기능키가 먹히질 않습니다.

 

그렇다면 OK_CODE 소스로 해보겠습니다.

 

 

마찬가지로 BACK을 누르면 됩니다. 아니 되야합니다

근데 안됩니다 ㅎㅎ 왜안될까요? 위에 소스를 보시면

BACK OR CANC --> SET SCREEN 0 인 것을 알 수가 있습니다.

 

그렇습니다  Input field가 필수 값이 있을 경우 바로 전 단계화면(스크린1000)으로도

갈 수가 없습니다. 대신에 EXIT( LEAVE PROGRAM) 를 누르게 되면 Input Field가 필수 값이어도 프로그램에서 나갈 수 있습니다 ^^*

 

 

 

기계적으로 소스를 사용하여 무조건 OK_CODE로 사용하지만 한번 쯤은 짚고 넘어가면 좋은 질문이었습니다^^*

 

끝.

 

p.s ( 간혹 기능키가 작동하지 않은 경우가 있는데 관련 문제는 주로 아래의 사진 3개가 제대로 맞는지 확인해봐야 한다 )

 

 

 

반응형

댓글