Notice
Recent Posts
Recent Comments
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- IS-A
- New & Delete(동적할당)
- 맥북 프로
- SESSION MEMEORY
- jQuery
- SAP
- 참조자
- 자식클래스
- SAP MEMROY MANAGE
- ABAP 세션 메모리 관리
- USB 부팅 디스크
- 함수 오버로딩
- abap execl text format
- 가상머신
- abap excel format
- ABAP FUNCTION
- 상속
- VMware
- Reference
- C++
- 부모클래스
- ABAP 날짜 함수
- abap
- 마운틴 라이언 클린 설치
- 디폴트 매개변수
- default parameter
- function overloading
- SAP excel format
- DOM set
- DOM get
Archives
- Today
- Total
IT스러운 공간
SAP E-mail (첨부파일 포함) 전송 로직 및 설정 본문
728x90
외부로 메일 전송할 수 있는 로직
- FUNCTION보다는 CLASS로 사용하도록 SAP에서 권장
예제 샘플) BCS_EXAMPLE_7
1. 메일 설정 SMTP
- T-CODE : SCOT
- 방화벽 해제 및 발신하는 메일 서버의 SMTP 릴레이 설정 필요
2. E-Mail 전송 로직
FORM SEND_EXT_MAIL.
" 1) 변수 선언
DATA : BCS_EXCEPTION TYPE REF TO CX_BCS,
CL_SEND_REQUEST TYPE REF TO CL_BCS,
CL_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
CL_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,
ATTACHMENT_SUBJECT TYPE SOOD-OBJDE, "첨부파일 헤더 구조
SOOD_BYTECOUNT TYPE SOOD-OBJLEN,
SIZE TYPE SO_OBJ_LEN,
MAIL_TITLE TYPE SO_OBJ_DES, "메일제목
T_MAILTEXT TYPE SOLI_TAB, "메일본문
WA_MAILTEXT LIKE LINE OF T_MAILTEXT,
SENDER TYPE REF TO CL_SAPUSER_BCS,
SEND_TO TYPE ADR6-SMTP_ADDR,
SENT TYPE ABAP_BOOL, "전송유무
BINARY_CONTENT TYPE SOLIX_TAB,
ERRORTEXT TYPE STRING. "에러메시지
DATA : TEXT_CONTENT TYPE STRING. "첨부파일 내용
DATA : LT_MAIL LIKE ZSMAIL OUCCURS 0 WITH HEADER LINE. "수신자 리스트
CONSTANTS : CON_TAB TYPE C VALUE CL_BCS_CONVERT=>GC_TAB, "TAB 상수
CON_CRLF TYPE C VALUE CL_BCS_CONVERT=>GC_CRLF. "엔터
" 2) 메일 헤더 및 내용 구성, 첨부파일 헤더 및 내용 구성
MAIL_TITLE = '메일 제목'.
WA_MAILTEXT = '메일 본문 1'.
APPEND WA_MAILTEXT TO MAILTEXT.
CLEAR WA_MAILTEXT.
WA_MAILTEXT = '메일 본문 2'.
APPEND WA_MAILTEXT TO MAILTEXT.
CLEAR WA_MAILTEXT.
CONCATENATE '첨부파일 제목' INTO ATTACHMENT_SUBJECT.
" 엑셀 HEADER 만들기
CONCATENATE '헤더1' CON_TAB
'헤더2' CON_TAB
'헤더3' CON_CRLF
INTO TEXT_CONTENT.
" 엑셀 본문 만들기
CONCATENATE TEXT_CONTET
'본문1' CON_TAB
'본문2' CON_TAB
'본문3' CON_CRLF
INTO TEXT_CONTENT.
" 3) 수신자 리스트(수신자 여러 명일 경우)
" INTERNAL TABLE 및 수신자 리스트 로직
LT_MAIL-NAME = '홍길동'.
LT_MAIL-EMAIL = 이메일주소.
APPEND LT_MAIL TO LT_MAIL[].
" 4) 메일 전송 세팅
TRY.
CL_SEND_REQUEST = CL_BCS=>CREATE_PERSISITENT( ).
"메일 제목 및 본문
CL_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'RAW'
I_TEXT = T_MAILTEXT
I_SUBJECT = MAIL_TITLE ).
"첨부파일 추가 로직
TRY.
CL_BCS_CONVERT=>STRING_TO_SOLIX(
EXPORTING
IV_STRING = TEXT_CONTENT
IV_CODEPAGE = '4103' "MS
IV_ADD_BOM = 'X'
IMPORTING
ET_SOLIX = BINARY_CONTENT
EV_SIZE = SOOD_BYTECOUNT ).
CATCH CX_BCS.
MESSAGE E445(S0).
ENDTRY.
CL_DOCUMENT->ADD_ATTACHMENT(
I_ATTACHMENT_TYPE = 'XLS'
I_ATTACHMENT_SUBJECT = ATTACHMENT_SUBJECT
I_ATTACHMENT_SIZE = SOOD_BYTECOUNT
I_ATTACHMENT_HEADER = T_ATTCHMENT_HEADER ).
CL_SEND_REQUEST->SET_DOCUMENT( CL_DOCUMENT ).
"메일 발신자
SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).
CL_SEND_REQUEST->SET_SENDER( I_SENDER = SENDER ).
"메일 수신자(다 건 가능)
LOOP AT LT_RECEIVER INTO DATA(LS_RECEIVER).
CLEAER SEND_TO.
SEND_TO = LS_RECEIVER-EMAIL.
CL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNAT_ADDRESS( SEND_TO ).
CL_SEND_REQUEST->ADD_RECIPIENT(
I_RECIPIENT = CL_RECIPIENT
I_EXPRESS = 'X' ).
ENDLOOP.
"메일 발송
DATA: STATUS_MAIL TYPE BCS_STML.
STATUS_MAIL = 'N'.
CL_SEND_REQUEST->SET_STATUS_ATTRIBUTES(
I_REQUESTED_STATUS = STATUS_MAIL
I_STATUS_MAIL = STATUS_MAIL ).
"즉시발송 유무
CL_SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
SENT= CL_SEND_REQUEST->SEND(I_WITH__ERROR_SCREEN = 'X' ).
IF SENT = 'X'.
MESSAGE S001 WITH SEND_TO '로 발송되었습니다.'.
ENDIF.
COMMIT WORK.
CATCH CX_BCS INTO BCS_EXCEPTION.
ERRORTEXT = BCS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).
MESSAGE ERRORTEXT TYPE 'I'.
ENDTRY.
ENDFORM.
728x90
'SAP' 카테고리의 다른 글
SAP ABAP 날짜 관련 함수(function) (0) | 2024.01.25 |
---|---|
SAP ABAP으로 Excel 열을 텍스트로 형식 지정 (0) | 2024.01.22 |
SAP Session 메모리 관리 (0) | 2024.01.21 |