SAP:Send Mail

47 篇文章 0 订阅
22 篇文章 0 订阅

 DATA: Send_to LIKE SOMLRECI1 OCCURS WITH HEADER LINE.

  DATA: E_MAIL_SUBJECT TYPE SO_OBJ_DES.
  DATA: OBJTXT   LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
  DATA: OBJKEY   TYPE SWO_TYPEID.
  DATA: OBJTYP   TYPE SWO_OBJTYP.


  DATA: t_type  TYPE char3.
  DATA: t_Num   TYPE char10.
*Mail Subject
  if p_port 'SALESORDER'.
    t_type '850'.
*    E_MAIL_SUBJECT = 'New PO(EDI850)#'IDOC_Num-STATXT' from GNN'.
    CONCATENATE 'New PO(EDI850)#'IDOC_Num-STATXT' from GNN' INTO E_MAIL_SUBJECT.
  else.
    t_type '860'.
*    E_MAIL_SUBJECT = 'New PO change(EDI860)#'IDOC_Num-STATXT' from GNN'.
    CONCATENATE 'New PO change(EDI860)#'IDOC_Num-STATXT' from GNN' INTO E_MAIL_SUBJECT.
  endif.

* Mail Body
  OBJTXT 'Dear All:'.
  APPEND OBJTXT.
  OBJTXT 'Please find the sales order in sap.'.
  APPEND OBJTXT.
  OBJTXT ''.
  APPEND OBJTXT.
  OBJTXT 'Sales Order:'.
  APPEND OBJTXT.
  OBJTXT SO_Num.
  APPEND OBJTXT.
  OBJTXT ''.
  APPEND OBJTXT.
  APPEND OBJTXT.
  OBJTXT 'IDOC Number: '.
  APPEND OBJTXT.
  OBJTXT IDOC_Num-DOCNUM.
  APPEND OBJTXT.

  IF SO_Num <> 'ERROR: Fail to find the SO#'.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  SO_Num
      IMPORTING
        output t_Num.

    OBJKEY t_Num.
    OBJTYP 'BUS2032'.

  ENDIF.



* SEND TO
  SELECT MAILADDR FROM ZEDI_MAILLIST INTO TABLE Send_to WHERE CUSTCODE '0000000000203702' AND EDITYPE t_type.

*  Send_to = IT_MAILIST.

  CALL FUNCTION 'ZKZ_SEND_MAIL_WITH_BOR'
    EXPORTING
      MAIL_SUBJECT E_MAIL_SUBJECT
      P_OBJTYP     OBJTYP
      P_OBJKEY     OBJKEY
    TABLES
      MAIL_BODY    OBJTXT
      MAIL_SENDTO  Send_to.

 

FUNCTION ZKZ_SEND_MAIL_WITH_BOR.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(MAIL_SUBJECT) TYPE  SO_OBJ_DES OPTIONAL
*"     VALUE(P_OBJTYP) TYPE  SWO_OBJTYP OPTIONAL
*"     VALUE(P_OBJKEY) TYPE  SWO_TYPEID OPTIONAL
*"  TABLES
*"      MAIL_BODY STRUCTURE  SOLISTI1 OPTIONAL
*"      MAIL_SENDTO STRUCTURE  SOMLRECI1
*"      MAIL_COPYTO STRUCTURE  SOMLRECI1 OPTIONAL
*"----------------------------------------------------------------------


  DATA: DOCDATA    LIKE SODOCCHGI1,
        OBJPACK    LIKE SOPCKLSTI1 OCCURS 10 WITH HEADER LINE,
        OBJHEAD    LIKE SOLISTI1   OCCURS 10 WITH HEADER LINE,
  "      OBJTXT     LIKE SOLISTI1   OCCURS 10 WITH HEADER LINE,
        OBJBIN     LIKE SOLISTI1   OCCURS 10 WITH HEADER LINE,
        OBJHEX     LIKE SOLIX      OCCURS 10 WITH HEADER LINE,
        RECLIST    LIKE SOMLRECI1  OCCURS WITH HEADER LINE.

  DATA: TAB_LINES  TYPE I,
        DOC_SIZE   TYPE I,
        OBJDES(100).

  DATA:
    L_OBJECT      TYPE SWOTOBJID,
    L_OBJHEADER   LIKE SOXOBJ.

  DATA: WA_MAIL_SENDTO TYPE SOMLRECI1,
        WA_MAIL_COPYTO TYPE SOMLRECI1.

* For the BOR attachment
  CONSTANTS:
    C_OBJECT_DESCRIBE LIKE SWOTOBJID-DESCRIBE VALUE '*<OBJECT>*'.

*PARAMETERS:
*  P_OBJTYP TYPE SWO_OBJTYP OBLIGATORY,
*  P_OBJKEY TYPE SWO_TYPEID OBLIGATORY.

*  Mail Subject
*  CONCATENATE 'BOR Object' OBJDES 'as Attachment'
*         INTO DOCDATA-OBJ_DESCR SEPARATED BY SPACE.
*  CONDENSE DOCDATA-OBJ_DESCR.
  DOCDATA-OBJ_DESCR MAIL_SUBJECT.

  IF NOT P_OBJKEY IS INITIAL.
* Mail Body
    MAIL_BODY ''.
    APPEND MAIL_BODY.
    MAIL_BODY 'Please find enclosed linkage to open the object'.
    APPEND MAIL_BODY.
  ENDIF.

  DESCRIBE TABLE MAIL_BODY LINES TAB_LINES.
  READ     TABLE MAIL_BODY INDEX TAB_LINES.
  DOCDATA-DOC_SIZE TAB_LINES 255 STRLENMAIL_BODY ).

* Write Packing List (Main)
  CLEAR OBJPACK-TRANSF_BIN.
  OBJPACK-HEAD_START 0.
  OBJPACK-HEAD_NUM   0.
  OBJPACK-BODY_START 1.
  OBJPACK-BODY_NUM   TAB_LINES.
  OBJPACK-DOC_TYPE   'RAW'.
  APPEND OBJPACK.

  IF NOT P_OBJKEY IS INITIAL.
    CONCATENATE P_OBJTYP '-' P_OBJKEY INTO OBJDES.
    DOCDATA-OBJ_NAME  'BOR Object'.

* Create OBJ attachment
    L_OBJECT-DESCRIBE C_OBJECT_DESCRIBE.
    L_OBJECT-OBJTYPE  P_OBJTYP.
    L_OBJECT-OBJKEY   P_OBJKEY.
    CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
      IMPORTING
        OWN_LOGICAL_SYSTEM             L_OBJECT-LOGSYS
      EXCEPTIONS
        OWN_LOGICAL_SYSTEM_NOT_DEFINED 1
        OTHERS                         2.
*IF SY-SUBRC <> 0.
*  MESSAGE E398(00) WITH 'No Log Sys Found'.
*ENDIF.

    MOVE-CORRESPONDING L_OBJECT TO L_OBJHEADER.
    APPEND L_OBJHEADER TO OBJHEAD.

* Write Packing List (Attachment)
    CLEAR OBJPACK.
    OBJPACK-HEAD_START 1.
    OBJPACK-HEAD_NUM   1.
    OBJPACK-BODY_START 0.
    OBJPACK-BODY_NUM   0.
    OBJPACK-DOC_TYPE   'OBJ'.
    OBJPACK-OBJ_NAME   P_OBJTYP.
    OBJPACK-OBJ_DESCR  OBJDES.
    APPEND OBJPACK.
  ENDIF.

* Create receiver list
  LOOP AT MAIL_SENDTO INTO WA_MAIL_SENDTO.
    RECLIST-RECEIVER WA_MAIL_SENDTO-RECEIVER.
    RECLIST-REC_TYPE 'B'.
    APPEND RECLIST.
  ENDLOOP.

  LOOP AT MAIL_COPYTO INTO WA_MAIL_COPYTO.
    RECLIST-RECEIVER WA_MAIL_COPYTO.
    RECLIST-COPY WA_MAIL_COPYTO.
    RECLIST-REC_TYPE 'B'.
    APPEND RECLIST.
  ENDLOOP.

* Send Message
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              DOCDATA
      PUT_IN_OUTBOX              'X'
"      COMMIT_WORK                = 'X'
    TABLES
      PACKING_LIST               OBJPACK
      OBJECT_HEADER              OBJHEAD
      CONTENTS_BIN               OBJBIN
      CONTENTS_TXT               MAIL_BODY
      RECEIVERS                  RECLIST
    EXCEPTIONS
      TOO_MANY_RECEIVERS         1
      DOCUMENT_NOT_SENT          2
      DOCUMENT_TYPE_NOT_EXIST    3
      OPERATION_NO_AUTHORIZATION 4
      PARAMETER_ERROR            5
      X_ERROR                    6
      ENQUEUE_ERROR              7
      OTHERS                     8.

  IF SY-SUBRC <> 0.
    MESSAGE ID 'SO' TYPE 'W' NUMBER '023'.
  ENDIF.



ENDFUNCTION.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值