본문 바로가기

ABAP

SAP HTML을 이용한 E-MAIL 본문 이미지 추가

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