so_object_send function을 이용하면 sender에 internet email을 지정하여 전송할 수 있다.




FUNCTION zcm_send_mail.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(IS_SENDER) TYPE  ZQMS_038
*"     VALUE(IV_TITLE) TYPE  ZWF_TITLECO
*"     VALUE(IV_RETURN) TYPE  CHAR1 OPTIONAL
*"  EXPORTING
*"     VALUE(EV_RESULT) TYPE  CHAR1
*"     VALUE(EV_ERR_MSG) TYPE  STRING
*"  TABLES
*"      T_RECEIVER TYPE  ZQMY_0001
*"      T_BODY STRUCTURE  W3HTML
*"  EXCEPTIONS
*"      INVALID_USER_ERROR
*"      NO_EMAILID
*"      INVALID_EMPLOYEE_NUMBER
*"      INVALID_MYSINGLEID
*"      INVALID_ID_TYPE
*"      INVALID_WF_OBJECT
*"----------------------------------------------------------------------

  DATA lv_object_hd     TYPE sood1.
  DATA lv_object_type          TYPE sood-objtp.
  DATA lv_originator  TYPE soos1-recextnam,
         lv_origin_type TYPE soos1-recesc.

  DATA lt_objcont       TYPE STANDARD TABLE OF soli WITH HEADER LINE.
  DATA lt_receivers     TYPE STANDARD TABLE OF soos1 WITH HEADER LINE.
  DATA lt_packing_list  TYPE STANDARD TABLE OF soxpl WITH HEADER LINE.
*
  DATAlv_lines     TYPE i,
        lo_ex_system TYPE REF TO cx_ai_system_fault,
        lo_ex_app    TYPE REF TO cx_ai_application_fault.

  CLEAR ev_resultev_err_msg", ls_en_request.

*--------------------------------------------------------------------*
* 0. Check Input Value
*--------------------------------------------------------------------*
  IF t_receiver[] IS INITIAL ).
    ev_err_msg 'Enter mail receiver (required field)'.
    ev_result  'E'.
    EXIT.
  ELSEIF t_body[] IS INITIAL ).
    ev_err_msg 'Enter mail body (required field)'.
    ev_result  'E'.
    EXIT.
  ENDIF.

*  PERFORM check_mailuser USING    is_sender  iv_return
*                         CHANGING ev_err_msg.
*  IF ev_err_msg IS NOT INITIAL.
*    ev_result = c_e.  EXIT.
*  ENDIF.

*--------------------------------------------------------------------*
* 3. Set Mail Body
*--------------------------------------------------------------------*
  CLEAR lv_object_hd.
  lv_object_hd-objla  sy-langu.
  lv_object_hd-objdes iv_title.
  lv_object_hd-objnam 'MESSAGE'.
  lv_object_hd-objsns 'O'.
  lv_object_hd-file_ext 'HTM'.
  lv_object_hd-objpri '1'.
  lv_object_hd-objcp  'X'.

  lv_object_type 'RAW'.

  LOOP AT t_body.

    lt_objcont-line t_body.
    APPEND lt_objcontCLEAR lt_objcont.

  ENDLOOP.

*  READ TABLE t_body INDEX 1.
*  SEARCH t_body FOR '<HTML>' IN CHARACTER MODE STARTING AT 1 ENDING AT 10.
*  IF sy-subrc EQ 0.
*    ls_en_request-header_helper_csvo-b_html_content_check = 'true'.
*  ENDIF.


*--------------------------------------------------------------------*
* 4. Set Recipient Info
*--------------------------------------------------------------------*
*   i_seq_id (필수값) - 일련번호 (0부터 순차적으로 증가)
*   rec_type (필수값) - 수신형태 (t : 수신, c : 참조, b : 비밀참조)
*   rec_addr (필수값) - 수신자메일주소

  CLEARlt_receiverslt_receivers[].
  LOOP AT t_receiver.

*    PERFORM check_mailuser USING    t_receiver  iv_return
*                           CHANGING ev_err_msg.
*    IF ev_err_msg IS NOT INITIAL  AND iv_return IS INITIAL.
*      ev_result = 'E'.
*      EXIT.
*    ENDIF.

    TRANSLATE  t_receiver-emailid TO LOWER CASE.
    lt_receivers-recextnam  t_receiver-emailid.
    lt_receivers-sndart 'INT'.
    lt_receivers-sndpri '1'.
    lt_receivers-recesc 'U'.

    APPEND lt_receiversCLEAR lt_receivers.
  ENDLOOP.

  lv_originator is_sender-emailid.
  lv_origin_type 'U'.

  CHECK ev_result NE 'E'.

*--------------------------------------------------------------------*
* 5. Set Resource Info
*--------------------------------------------------------------------*
*   email    (필수값) - 발신자메일주소
*   locale   (필수값) - 로케일정보 (ko_KR : 한국, 중국 : zh_CN, 일본 : ja_JP, 나머지 : en_US)
*   encoding (필수값) - 메일인코딩정보 (euc-kr 또는 utf-8)

*--------------------------------------------------------------------*
* 6. Send Mail
*--------------------------------------------------------------------*
*************************&&메일을 전송하는 FUNCTION.....

  TRY.

      CALL FUNCTION 'SO_OBJECT_SEND'
        EXPORTING
          object_hd_change           lv_object_hd
          object_type                lv_object_type
          owner                      sy-uname
          originator                 lv_originator
          originator_type            lv_origin_type
        TABLES
          objcont                    lt_objcont
          receivers                  lt_receivers
        EXCEPTIONS
          active_user_not_exist      1
          communication_failure      2
          component_not_available    3
          folder_not_exist           4
          folder_no_authorization    5
          forwarder_not_exist        6
          note_not_exist             7
          object_not_exist           8
          object_not_sent            9
          object_no_authorization    10
          object_type_not_exist      11
          operation_no_authorization 12
          owner_not_exist            13
          parameter_error            14
          substitute_not_active      15
          substitute_not_defined     16
          system_failure             17
          too_much_receivers         18
          user_not_exist             19
          originator_not_exist       20
          x_error                    21.
    CATCH cx_ai_system_fault INTO lo_ex_system.
      ev_result  'E'.
      ev_err_msg lo_ex_system->if_message~get_text).
    CATCH cx_ai_application_fault INTO lo_ex_app.
      ev_result  'E'.
      ev_err_msg lo_ex_app->if_message~get_text).
  ENDTRY.

  IF sy-subrc 0.
    "SO_OBJECT_SEND 사용시에는 commit work 해줘야 함.
    COMMIT WORK.

    ev_result 'S'.
    EXIT.
  ELSE.
    ev_result sy-subrc.
    EXIT.
  ENDIF.

ENDFUNCTION.

'SAP Program > ABAP' 카테고리의 다른 글

ABAP 7.40 Quick Reference  (0) 2017.10.24
CTE Open sql  (0) 2017.10.12
QM QS24 Call transaction 이용한 조회가 안될경우  (0) 2017.09.13
Smartforms Barcode  (0) 2017.09.01
SAP Memory ID 확인  (0) 2017.09.01

설정

트랙백

댓글