300x250
# SAP E-Mail(이메일) 관련 T-CODE
# SICF - SMTP 호스트 설정
# SCON - SMTP 발송 테스트/발송 정보/Job 스케쥴링
# SBWP - 메일함
# SOST - 발송 메일 확인
# E-Mail(이메일)을 쓰기 전
# 메일을 보내는 로직 중에 Function Module도 있으며 여러 가지 로직이 있지만 최대한 간단하고 이해하기 쉬운 로직으로 하고 싶었다.
시작하기 전 순서를 나누겠다.
1. 메일만 보내기.
2. 첨부파일 포함해서 보내기 ( 다음 링크 )
바로 실습으로 가보자.
# SAP Mail(메일) 전송하기( 첨부파일 제외 )
# 메시지만 보내는 로직(첨부파일 제외)은 마지막 더 보기에 있으니 참고 바랍니다.
# 01. 우선 DATA 선언을 다음과 같이 하면 된다.
- 변수에 대한 네이밍룰은... 넘어가기로 하자.
DATA: BCS_EXCEPTION TYPE REF TO CX_BCS,
ERRORTEXT TYPE STRING,
CL_SEND_REQUEST TYPE REF TO CL_BCS,
CL_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
CL_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,
T_ATTACHMENT_HEADER TYPE SOLI_TAB,
WA_ATTACHMENT_HEADER LIKE LINE OF T_ATTACHMENT_HEADER,
ATTACHMENT_SUBJECT TYPE SOOD-OBJDES,
SOOD_BYTECOUNT TYPE SOOD-OBJLEN,
MAIL_TITLE TYPE SO_OBJ_DES,
T_MAILTEXT TYPE SOLI_TAB,
WA_MAILTEXT LIKE LINE OF T_MAILTEXT,
SEND_TO TYPE ADR6-SMTP_ADDR,
SENT TYPE ABAP_BOOL.
# 02. 메일 제목 설정하기 : MAIL_TITLE
*--------------------------------------------------------------------*
* 메일 타이틀
*--------------------------------------------------------------------*
MAIL_TITLE = '메일 타이틀 테스트 '.
MAIL_TITLE은 메일 타이틀이라고 생각하면 된다.
# 03. 메일 글, 내용 설정하기 : T_MAILTEXT
*--------------------------------------------------------------------*
* 메일 글
*--------------------------------------------------------------------*
WA_MAILTEXT = '안녕하세요. 감자입니다.'.
APPEND WA_MAILTEXT TO T_MAILTEXT.
CLEAR WA_MAILTEXT.
WA_MAILTEXT = '감사합니다.'.
APPEND WA_MAILTEXT TO T_MAILTEXT.
CLEAR WA_MAILTEXT.
# 상황에 맞게 문장을 넣고 싶으면 APPEND을 통해서 넣어주면 된다.
# 저는 간단히 만들어보려고 APPEND을 2개밖에 안 했다..
# 04. 메일 제목, 글, 내용 넣기
CL_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
CL_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( I_TYPE = 'RAW'
I_TEXT = T_MAILTEXT " 메일 글 넣기 "
I_SUBJECT = MAIL_TITLE ). " 메일 타이틀 넣기 "
CL_SEND_REQUEST->SET_DOCUMENT( CL_DOCUMENT ).
# 05. 수신자 넣기 : SEND_TO
*--------------------------------------------------------------------*
* 수신자 TO 넣기
*--------------------------------------------------------------------*
SEND_TO = '감자@naver.com'.
CL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( SEND_TO ).
CL_SEND_REQUEST->ADD_RECIPIENT( CL_RECIPIENT ).
# 말 그대로 수신자를 넣어주면 된다.
# 이것 또한 상황에 맞게 수신자 메일을 넣어주면 끝이다.
# 06. 발신하기!
SENT = CL_SEND_REQUEST->SEND( I_WITH_ERROR_SCREEN = 'X' ).
IF SENT = ABAP_TRUE.
COMMIT WORK.
" 성공메시지 "
* MESSAGE S001 WITH send_to '로 발송 되었습니다.' .
ELSE.
ROLLBACK WORK.
" 에러메시지 "
ENDIF.
CATCH CX_BCS INTO BCS_EXCEPTION.
ERRORTEXT = BCS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).
MESSAGE ERRORTEXT TYPE 'I'.
ENDTRY.
# 07. 확인해 보면?
2. SAP Mail(메일) 전송하기( 첨부파일 포함 )
# 다음 링크를 확인해보자.
2024.11.12 - [.SAP/..ABAP] - SAP E-Mail(이메일) 발송 ( EXCEL, PDF 첨부파일 )
# 최대한 쉽고.. 간단하게 해서 메일을 보낼 수 있는 로직이었다 #
전체 로직
더보기
DATA: BCS_EXCEPTION TYPE REF TO CX_BCS,
ERRORTEXT TYPE STRING,
CL_SEND_REQUEST TYPE REF TO CL_BCS,
CL_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
CL_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,
T_ATTACHMENT_HEADER TYPE SOLI_TAB,
WA_ATTACHMENT_HEADER LIKE LINE OF T_ATTACHMENT_HEADER,
ATTACHMENT_SUBJECT TYPE SOOD-OBJDES,
SOOD_BYTECOUNT TYPE SOOD-OBJLEN,
MAIL_TITLE TYPE SO_OBJ_DES,
T_MAILTEXT TYPE SOLI_TAB,
WA_MAILTEXT LIKE LINE OF T_MAILTEXT,
SEND_TO TYPE ADR6-SMTP_ADDR,
SENT TYPE ABAP_BOOL.
*--------------------------------------------------------------------*
* 메일 타이틀
*--------------------------------------------------------------------*
MAIL_TITLE = '메일 타이틀 테스트 '.
*--------------------------------------------------------------------*
* 메일 글
*--------------------------------------------------------------------*
WA_MAILTEXT = '안녕하세요. 감자입니다.'.
APPEND WA_MAILTEXT TO T_MAILTEXT.
CLEAR WA_MAILTEXT.
WA_MAILTEXT = '감사합니다.'.
APPEND WA_MAILTEXT TO T_MAILTEXT.
CLEAR WA_MAILTEXT.
TRY.
CL_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
CL_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( I_TYPE = 'RAW'
I_TEXT = T_MAILTEXT " 메일 글 넣기 "
I_SUBJECT = MAIL_TITLE ). " 메일 타이틀 넣기 "
CL_SEND_REQUEST->SET_DOCUMENT( CL_DOCUMENT ).
*--------------------------------------------------------------------*
* 수신자 TO 넣기
*--------------------------------------------------------------------*
SEND_TO = '감자@naver.com'.
CL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( SEND_TO ).
CL_SEND_REQUEST->ADD_RECIPIENT( CL_RECIPIENT ).
SENT = CL_SEND_REQUEST->SEND( I_WITH_ERROR_SCREEN = 'X' ).
IF SENT = ABAP_TRUE.
COMMIT WORK.
" 성공메시지 "
* MESSAGE S001 WITH send_to '로 발송 되었습니다.' .
ELSE.
ROLLBACK WORK.
" 에러메시지 "
ENDIF.
CATCH CX_BCS INTO BCS_EXCEPTION.
ERRORTEXT = BCS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).
MESSAGE ERRORTEXT TYPE 'I'.
ENDTRY.
728x90
'.SAP > ..ABAP' 카테고리의 다른 글
SAP Selection-Screen(1000번 화면) Toolbar 버튼 추가 (1) | 2023.04.20 |
---|---|
SAP 기능이 제대로 동작을 안 할 때(WAIT문) (0) | 2023.04.19 |
SAP Workarea vs Structure AND Internal Table vs Trasnparent Table 정리 (0) | 2023.04.09 |
SAP Domain Fixed Value(도메인 값) 가져오기 (0) | 2023.03.28 |
SAP BAPI란 (0) | 2023.03.03 |