SAP HTML을 이용한 E-MAIL 본문 이미지 추가
*선언부
*E-MAIL 이미지 (2022.07.28)
DATA : GV_MR_API TYPE REF TO IF_MR_API.
DATA : GV_CONTENT TYPE XSTRING,
GR_XSTR TYPE XSTRING,
LT_SOLIX TYPE SOLIX_TAB,
LS_SOLIX TYPE SOLIX,
L_DIFF TYPE I,
L_OFFSET TYPE I,
L_LENGTH TYPE I,
LV_GRAPHIC_LENGTH TYPE TDLENGTH,
l_filename TYPE string,
L_CONTENT_ID TYPE string,
* IS_FOLDER TYPE BOOLE_D VALUE 'X',
IS_FOLDER TYPE BOOLE_D,
L_LOIO TYPE SKWF_IO ,
L_OBJ_LEN TYPE SO_OBJ_LEN,
l_subject TYPE so_obj_des,
lt_soli TYPE soli_tab,
ls_soli TYPE soli.
*BCS class for sending mail
DATA: lo_bcs TYPE REF TO cl_bcs,
lo_doc_bcs TYPE REF TO cl_document_bcs,
lo_sender TYPE REF TO if_sender_bcs,
lo_recipient TYPE REF TO if_recipient_bcs,
lo_subject TYPE so_obj_des.
*Class for cobining HMTL & Image
DATA : lo_mime_helper TYPE REF TO cl_gbt_multirelated_service.
* 이메일
* xstring 형식으로 MIME 저장소 에서 이미지 가져오기
IF GV_MR_API IS INITIAL.
GV_MR_API = CL_MIME_REPOSITORY_API=>IF_MR_API~GET_API( ).
ENDIF.
CALL METHOD GV_MR_API->GET
EXPORTING
* i_url = '/SAP/BC/BSP/SAP/thtmlb_styles/sap_skins/default/images/zcod_00.bmp'
I_URL = '/SAP/PUBLIC/processimg.gif'
IMPORTING
E_IS_FOLDER = IS_FOLDER
E_CONTENT = GV_CONTENT
E_LOIO = L_LOIO
EXCEPTIONS
PARAMETER_MISSING = 1
ERROR_OCCURED = 2
NOT_FOUND = 3
PERMISSION_FAILURE = 4
OTHERS = 5.
* 이미지를 xstring 에서 테이블 형식으로 변환합니다
L_OBJ_LEN = XSTRLEN( GV_CONTENT ).
LV_GRAPHIC_LENGTH = XSTRLEN( GV_CONTENT ).
CLEAR GR_XSTR.
GR_XSTR = GV_CONTENT(L_OBJ_LEN).
L_OFFSET = 0.
L_LENGTH = 255.
CLEAR LT_SOLIX[].
WHILE L_OFFSET LT LV_GRAPHIC_LENGTH.
L_DIFF = LV_GRAPHIC_LENGTH - L_OFFSET.
IF L_DIFF > L_LENGTH.
LS_SOLIX-LINE = GR_XSTR+L_OFFSET(L_LENGTH).
ELSE.
LS_SOLIX-LINE = GR_XSTR+L_OFFSET(L_DIFF).
ENDIF.
APPEND LS_SOLIX TO LT_SOLIX.
ADD L_LENGTH TO L_OFFSET.
ENDWHILE.
* Attach image to HTML body
L_FILENAME = 'processimg.gif'.
L_CONTENT_ID = 'processimg.gif'.
CREATE OBJECT LO_MIME_HELPER.
CALL METHOD LO_MIME_HELPER->ADD_BINARY_PART
EXPORTING
CONTENT = LT_SOLIX "Xstring in table form
FILENAME = L_FILENAME "file name to be given to image
EXTENSION = 'GIF' "type of file
DESCRIPTION = 'Graphic in GIF format' "description
CONTENT_TYPE = 'image/gif' "content type / Mime type. If mime type not present in system then need to add through tcode : SMW0
LENGTH = L_OBJ_LEN "length of image
CONTENT_ID = L_CONTENT_ID. "content id would be used in html part
REFRESH LT_SOLI[].
DEFINE $$APPEND_TXT.
APPEND |{ &1 }| TO lt_soli.
END-OF-DEFINITION.
$$APPEND_TXT:
*- Contents
* Style
'<HTML xmlns="http://www.w3.org/1994/xtml" xmlns:xfa="http://www.xfa.org/schema/xfa-template/2.1/">',
'<style>',
'</style>',
'<head>',
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8">',
'<hr style="color : navy; background-color: navy; height: 4px; width: 1200px;">',
'<header style="padding: 0px 20px 0px 20px;">',
'<h1 style="color: navy;">계약 연장 여부 확인 요청</h1>',
'<p><b>안녕하세요, 사업지원팀입니다.</b></p>',
'<p>',
'<span><b>매입 계약 종료일이 도래한 계약 건에 대해</b></span>',
'<span style="color : red;"><b>연장 여부 확인차</b></span>',
'<span><b>안내 메일을 발송해드립니다.</b></span>',
'</p>',
'<p><b>각 담당자분들께서는 고객사와의 매출 계약 연장 여부를 확인해주시고, 다음의 절차대로 진행 부탁드립니다.</b></p>',
'</header>',
'</head>'.
$$APPEND_TXT:
'<body>',
'<br><img alt="[img]" src="cid:processimg.gif" /><br>',
'</body></html>'.
*
* clear ls_soli.
* ls_soli = '<HTML xmlns="http://www.w3.org/1994/xtml" xmlns:xfa="http://www.xfa.org/schema/xfa-template/2.1/"><head></head>'.
* APPEND ls_soli to lt_soli.
*
* clear ls_soli.
* ls_soli = '<body>'.
* APPEND ls_soli to lt_soli.
* clear ls_soli.
* ls_soli = '<br><img alt="[img]" src="cid:processimg.gif" /><br>'.
* APPEND ls_soli to lt_soli.
*
* clear ls_soli.
* ls_soli = '<br></body></html>'.
* APPEND ls_soli to lt_soli.
CALL METHOD LO_MIME_HELPER->SET_MAIN_HTML
EXPORTING
CONTENT = LT_SOLI
FILENAME = 'sapwebform.htm'
DESCRIPTION = 'Test'.
LO_SUBJECT = 'testtest'.
LO_DOC_BCS = CL_DOCUMENT_BCS=>CREATE_FROM_MULTIRELATED(
I_SUBJECT = LO_SUBJECT
I_MULTIREL_SERVICE = LO_MIME_HELPER ).
LO_BCS = CL_BCS=>CREATE_PERSISTENT( ).
LO_BCS->SET_DOCUMENT( I_DOCUMENT = LO_DOC_BCS ).
LO_SENDER = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( 'simplyaccounting@bespinglobal.com' ).
LO_BCS->SET_SENDER(
EXPORTING
I_SENDER = LO_SENDER ).
* LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( I_ADDRESS_STRING = LV_MAIL_RECEIVER ).
LO_BCS->ADD_RECIPIENT( I_RECIPIENT = LO_RECIPIENT ).
LO_BCS->SEND( ).
COMMIT WORK AND WAIT.
아래 사이트를 참고하여 구성 ( 선언부는 사이트에 없음 )
참고사이트 : http://saponlineguides.blogspot.com/2017/09/image-in-mail-body-in-abap.html
'ABAP' 카테고리의 다른 글
ABAP 에서 웹딘 (WD4A) 호출 (0) | 2022.09.16 |
---|---|
[ABAP] VALUE # 구문 (0) | 2022.08.31 |
[ABAP] 스마트폼 Smart Forms 생성해보기 (0) | 2022.07.22 |
[ABAP] 간단한 조회용 POP-UP 창 만들기 REUSE_ALV_POPUP_TO_SELECT (0) | 2022.07.20 |
[ABAP] 인터널테이블 중복 제거 DELETE ADJACENT DUPLICATES (0) | 2022.07.20 |