300x250

# 시작하기 전 


# 나머지 로직들은.. 

2023.04.14 - [.SAP/..ABAP] - SAP E-Mail(이메일) 발송

 

SAP E-Mail(이메일) 발송

# SAP E-Mail(이메일) 관련 T-CODE# SICF - SMTP 호스트 설정# SCON - SMTP 발송 테스트/발송 정보/Job 스케쥴링# SBWP - 메일함# SOST - 발송 메일 확인  # E-Mail(이메일)을 쓰기 전 # 메일을 보내는 로직 중에 Functi

potato98.tistory.com

 

 

# 이번에 알아볼 것은 기본 이메일 발송 첨부파일이 들어가는 로직을 만드는 것이다.

 

# 첨부파일 들어갈 곳은 다음과 같다. 

 

# 첨부파일 설정



# 첨부파일필요한 정보들은 

1. 파일 명

2. 파일 용량

3. 파일 데이터(16진수) 

이것이 없으면 첨부파일에러 발생할 것이다. 

 

# 첨부파일 엑셀( EXCEL )

*--------------------------------------------------------------------*
*     EXCEL 첨부파일 넣기
*--------------------------------------------------------------------*
      " 파일 명 "
      ATTACHMENT_SUBJECT = '감자_템플릿.xlsx'.

      CONCATENATE '&SO_FILENAME=' ATTACHMENT_SUBJECT INTO WA_ATTACHMENT_HEADER.
      APPEND WA_ATTACHMENT_HEADER TO T_ATTACHMENT_HEADER.
      CLEAR:
        WA_ATTACHMENT_HEADER.

      " 파일 용량 "
      SOOD_BYTECOUNT = '     '.

      " 파일 데이터( 16진수 ) "
      DATA:
        LT_ROWREC TYPE SOLIX_TAB.
      LT_ROWREC = '3571892943827~~'.

      " EXCEL 첨부파일 설정 "
      CL_DOCUMENT->ADD_ATTACHMENT(
        I_ATTACHMENT_TYPE    = 'XLS'
        I_ATTACHMENT_SUBJECT = ATTACHMENT_SUBJECT
        I_ATTACHMENT_SIZE    = SOOD_BYTECOUNT
        I_ATT_CONTENT_HEX    = LT_ROWREC
        I_ATTACHMENT_HEADER  = T_ATTACHMENT_HEADER ).

# 엑셀 첨부파일 같은 경우에는 다음과 같이 넣으면 끝이다. 

 

# 첨부파일( PDF )

*--------------------------------------------------------------------*
*     PDF 첨부파일 넣기
*--------------------------------------------------------------------*
      " 파일 명 "
      ATTACHMENT_SUBJECT = '감자_템플릿.PDF'.

      CONCATENATE '&SO_FILENAME=' ATTACHMENT_SUBJECT INTO WA_ATTACHMENT_HEADER.
      APPEND WA_ATTACHMENT_HEADER TO T_ATTACHMENT_HEADER.
      CLEAR:
        WA_ATTACHMENT_HEADER.

      " 파일 용량 "
      SOOD_BYTECOUNT = '     '.

      " 파일 데이터( 16진수 ) "
      DATA:
        LT_ROWREC TYPE SOLIX_TAB.
      LT_ROWREC = '3571892943827~~'.

      " EXCEL 첨부파일 설정 "
      CL_DOCUMENT->ADD_ATTACHMENT(
        I_ATTACHMENT_TYPE    = 'PDF'
        I_ATTACHMENT_SUBJECT = ATTACHMENT_SUBJECT
        I_ATTACHMENT_SIZE    = SOOD_BYTECOUNT
        I_ATT_CONTENT_HEX    = LT_ROWREC
        I_ATTACHMENT_HEADER  = T_ATTACHMENT_HEADER ).

# 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 ).


*--------------------------------------------------------------------*
*     EXCEL 첨부파일 넣기
*--------------------------------------------------------------------*
      " 파일 명 "
      ATTACHMENT_SUBJECT = '감자_템플릿.xlsx'.

      CONCATENATE '&SO_FILENAME=' ATTACHMENT_SUBJECT INTO WA_ATTACHMENT_HEADER.
      APPEND WA_ATTACHMENT_HEADER TO T_ATTACHMENT_HEADER.
      CLEAR:
        WA_ATTACHMENT_HEADER.

      " 파일 용량 "
      SOOD_BYTECOUNT = '     '.

      " 파일 데이터( 16진수 ) "
      DATA:
        LT_ROWREC TYPE SOLIX_TAB.
      LT_ROWREC = '3571892943827~~'.

      " EXCEL 첨부파일 설정 "
      CL_DOCUMENT->ADD_ATTACHMENT(
        I_ATTACHMENT_TYPE    = 'XLS'
        I_ATTACHMENT_SUBJECT = ATTACHMENT_SUBJECT
        I_ATTACHMENT_SIZE    = SOOD_BYTECOUNT
        I_ATT_CONTENT_HEX    = LT_ROWREC
        I_ATTACHMENT_HEADER  = T_ATTACHMENT_HEADER ).

*--------------------------------------------------------------------*
*     PDF 첨부파일 넣기
*--------------------------------------------------------------------*
      " 파일 명 "
      ATTACHMENT_SUBJECT = '감자_템플릿.PDF'.

      CONCATENATE '&SO_FILENAME=' ATTACHMENT_SUBJECT INTO WA_ATTACHMENT_HEADER.
      APPEND WA_ATTACHMENT_HEADER TO T_ATTACHMENT_HEADER.
      CLEAR:
        WA_ATTACHMENT_HEADER.

      " 파일 용량 "
      SOOD_BYTECOUNT = '     '.

      " 파일 데이터( 16진수 ) "
      DATA:
        LT_ROWREC TYPE SOLIX_TAB.
      LT_ROWREC = '3571892943827~~'.

      " EXCEL 첨부파일 설정 "
      CL_DOCUMENT->ADD_ATTACHMENT(
        I_ATTACHMENT_TYPE    = 'PDF'
        I_ATTACHMENT_SUBJECT = ATTACHMENT_SUBJECT
        I_ATTACHMENT_SIZE    = SOOD_BYTECOUNT
        I_ATT_CONTENT_HEX    = LT_ROWREC
        I_ATTACHMENT_HEADER  = T_ATTACHMENT_HEADER ).


*--------------------------------------------------------------------*
*     수신자 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 VALUE # 정리 ( Append New Syntax )  (4) 2024.11.13
SAP Function Module 에서 Commit Work 하기  (0) 2024.11.11
SAP Function Module - 2 정리  (0) 2024.11.10
SAP 타임스태프( 엑셀 -> SAP ) 변경  (1) 2024.11.09
SAP Package CTS 따기  (0) 2024.11.08