CBO에서도 스탠다드에서 뜨는 메세지창처럼 메세지 띄우는 방법
Function Module : C14Z_MESSAGES_SHOW_AS_POPUP
구매오더(PO) 생성 (T-CODE: ME21N) 에 대한 USER-EXIT 수정 하는 업무를 받았는데, 추가요청을 받았다.
USER-EXIT을 수정하면서 추가하면서 에러메세지를 아래와 같이 일반 MESSAGE 구문을 사용해서 보여줬는데,
MESSAGE E016(PH) WITH '문제가 발생하였습니다.'. "예시
MESSAGE E016(PH) WITH '문제가 발생하였습니다.'.
이렇게 스탠다드에서 보여지는 메세지창처럼 띄워달라는 것.
처음에는?????뭐지????하고 당황했는데,
메세지 팝업창 띄워주는 함수(function module)가 있다는걸 알게 됐다!
Function Module : C14Z_MESSAGES_SHOW_AS_POPUP
스탠다드 메세지 클래스인 MESSAGE-ID : PH를 이용했을때를 예를들어 설명하자면,
#1.메세지를 한건만 띄울때.
아래와 같이 코드를 입력하면 된다.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
EXPORTING
I_MSGID = 'PH' "MESSAGE-ID
I_MSGTY = 'E' "메세지유형
I_MSGNO = '016' "메세지번호
I_MSGV1 = 'MSGV1' "&1
I_MSGV2 = 'MSGV2' "&2
I_MSGV3 = 'MSGV3' "&3
I_MSGV4 = 'MSGV4' "&4
I_LINENO = 1
* TABLES
* I_MESSAGE_TAB =
.
결과화면은 다음과 같다.
#2. 메세지를 여러개 보여주는 경우
Function Module C14Z_MESSAGES_SHOW_AS_POPUP의 장점은
여러개의 메세지를 하나의 팝업창에 띄울 수 있다는 것이다.
프로그램을 실행했을때 메세지창은 다음과 같이 보여진다.
여러 메세지들의 타입이 E(Error), S(Success), W(Warning), I(Info), A(Stop) 로 다 다른 경우에도 위와같이 하나의 팝업창에 담아서 보여줄 수 있다!
코드는 다음과 같이 입력하면 된다.
DATA: LT_MESSAGE TYPE ESP1_MESSAGE_TAB_TYPE,
LS_MESSAGE LIKE LINE OF LT_MESSAGE.
*--------------------------------------------------------------------*
PERFORM MESSAGE USING: 'PH' 'E' 16 'ERROR MESSAGE',
'PH' 'S' 16 'SUCCESS MESSAGE',
'PH' 'W' 16 'WARNING MESSAGE',
'PH' 'I' 16 'INFO MESSAGE',
'PH' 'A' 16 'STOP MESSAGE'.
*--------------------------------------------------------------------*
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
* EXPORTING
* I_MSGID = 'PH' "MESSAGE-ID
* I_MSGTY = 'E' "메세지유형
* I_MSGNO = '016' "메세지번호
* I_MSGV1 = 'MSGV1' "&1
* I_MSGV2 = 'MSGV2' "&2
* I_MSGV3 = 'MSGV3' "&3
* I_MSGV4 = 'MSGV4' "&4
* I_LINENO = 1
TABLES
I_MESSAGE_TAB = LT_MESSAGE
.
*&---------------------------------------------------------------------*
*& Form MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0016 text
* -->P_0017 text
* -->P_16 text
* -->P_0019 text
*----------------------------------------------------------------------*
FORM MESSAGE USING P_MSGID
P_MSGTY
P_MSGNO
P_MSGV1.
LS_MESSAGE-MSGID = P_MSGID.
LS_MESSAGE-MSGTY = P_MSGTY.
LS_MESSAGE-MSGNO = P_MSGNO.
LS_MESSAGE-MSGV1 = P_MSGV1.
APPEND LS_MESSAGE TO LT_MESSAGE.
CLEAR LS_MESSAGE.
ENDFORM. " MESSAGE
[참고]
ABAP 프로그램에서 Function Module C14Z_MESSAGES_SHOW_AS_POPUP 을 사용하지 않고 일반 MESSAGE~구문을 사용하여 여러 메세지창을 띄우는 경우,
로직 중간중간에 여러개의 메세지를 넣어 모두 실행화면에 보여주고 싶어서 아래와 같이 여러 메세지를 입력하더라도,
프로그램을 실행하게 되면 가장 마지막 메세지인 MESSAGE S016(PH) WITH '정상적으로 처리 되었습니다'. 메세지창만 화면에 보여지게 된다.
따라서 여러 메세지창을 모두 보여주고 싶을 때에도 Function Module : C14Z_MESSAGES_SHOW_AS_POPUP를 활용하면 된다.
'ABAP' 카테고리의 다른 글
[SAP_ABAP]테이블 유지보수기(Table Maintenance Dialog) #2. Event 추가하여 데이터 추가시 Time Stamp 자동 생성되도록 하는법 (0) | 2022.08.29 |
---|---|
[SAP_ABAP]테이블 유지보수기(Table Maintenance Dialog) #1. 만드는 방법 (1) | 2022.08.28 |
[SAP_ABAP]ERDAT/ ERZET/ ERZZT/ ERNAM/ AEDAT/ AEZET/ AENAM 필드 (0) | 2022.08.19 |
[SAP_ABAP] 유지보수 뷰(Maintenance View) 수정 (0) | 2022.08.16 |
[ABAP_Tip] 로컬오브젝트에 있는 프로그램 패키지로 옮기는 방법 (0) | 2022.08.09 |