sap 发邮件流程简介

这段代码主要展示了在SAP环境中,如何使用SMARTFORM生成报告,将其转换为PDF格式,然后附加到邮件中,通过编程方式发送至指定收件人。过程中涉及到转换控制变量设置、输出选项配置以及邮件发送API的调用。
摘要由CSDN通过智能技术生成

SU01         SCOT

report zsendemail.
"控制变量
data fm_name            type rs38l_fnam.
data:control_parameters type ssfctrlop,
     l_output_options   type ssfcompop.
data job_output_info    type ssfcrescl.
data job_output_options type ssfcresop.

*--------------------------------------------------------------------*
"转OTF
data: gt_otf       like table of itcoo    with header line,
      gt_pdf_line  like table of tline    with header line,
      gt_record    like table of solisti1 with header line.
data: g_len_in     type i,                                              "OTF 文件大小(邮件附件大小)
      g_lines_txt  type i,                                              "邮件文本行数
      g_lines_bin  type i.                                              "邮件附件行数
data: g_benfile    type xstring.                                        "二进制格式的邮件
data: g_object(50) type c.                                              "邮件主题
data  pdf_name     type string.                                         "附件名称
data: gt_objpack   like table of sopcklsti1   with header line,         "邮件内容 正文+附件
      gt_objtxt    like table of solisti1     with header line,         "正文内容
      gt_objbin    like table of solisti1     with header line,         "附件内容
      gt_reclist   like table of somlreci1    with header line,         "收件人
      wa_doc_chng  type sodocchgi1.                                     "邮件属性
*--------------------------------------------------------------------*
"选择屏幕
parameters:p_email type so_recname obligatory default 'Xiaozhang@…….com'.

*--------------------------------------------------------------------*
start-of-selection.
  clear:job_output_options,
        job_output_info,
        g_len_in,
        g_lines_txt,
        g_lines_bin,
        g_benfile.
  clear:gt_otf[], gt_pdf_line[],gt_record[].

  "控制变量赋值
  control_parameters-getotf    = 'X'.   "此参数必须,否则不会导出PDF而直接显示smartform
  control_parameters-no_close  = ''.
  control_parameters-no_dialog = 'X'.   "不显示打印对话框

  "输出参数设置
  l_output_options-tddest      = 'ZPDF'. "选择打印设备,可选
  l_output_options-xsfoutdev   = 'ZPDF'. "选择打印设备,可选
  l_output_options-tdprinter   = 'CNSAPWIN'.


  call function 'SSF_FUNCTION_MODULE_NAME'
    exporting
      formname           = 'ZPDF'
    importing
      fm_name            = fm_name
    exceptions
      no_form            = 1
      no_function_module = 2
      others             = 3.

  check: sy-subrc = 0.
  call function fm_name
    exporting
      control_parameters = control_parameters
      output_options     = l_output_options      "默认打印选项设置传输
*     user_settings      = 'X'                   "是否从用户主记录中获取信息
      i_acct_head        = l_acct_head           "form header data
    importing
      job_output_info    = job_output_info
      job_output_options = job_output_options
    tables
      it_acct_item       = lt_acct_item          "form item data
    exceptions
      formatting_error   = 1
      internal_error     = 2
      send_error         = 3
      user_canceled      = 4
      others             = 5.

  check: sy-subrc = 0.

* convert smartforms to pdf
  "将SMARTFOMR转换成PDF格式
  call function 'CONVERT_OTF'
    exporting
      format                = 'PDF'
    importing
      bin_filesize          = g_len_in                    "文件大小
      bin_file              = g_benfile                   "16进制的文件数据
    tables
      otf                   = job_output_info-otfdata     "由SMARTFORM生成的OTF格式的数据
      lines                 = gt_pdf_line                 "生成的PDF格式的数据
    exceptions
      err_max_linewidth     = 1
      err_format            = 2
      err_conv_not_possible = 3
      err_bad_otf           = 4
      others                = 5.
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.

  if g_benfile is not initial.
    "将16进制的字符串转换成二进制数据
    call function 'SCMS_XSTRING_TO_BINARY'
      exporting
        buffer        = g_benfile
      importing
        output_length = g_len_in                        "邮件附件大小
      tables
        binary_tab    = gt_record.                      "二进制文件数据
  endif.

  refresh:gt_reclist,gt_objtxt,gt_objbin,gt_objpack.
  clear: wa_doc_chng.

  "将转换后的文件添加到邮件附件
  append lines of gt_record to gt_objbin.

  "添加邮件正文
  gt_objtxt = ' '.
  append gt_objtxt.

  gt_objtxt = ' 本邮件由系统自动发出,请勿直接回复!'.
  append gt_objtxt.

  "邮件正文行数
  describe table gt_objtxt lines g_lines_txt.

  g_object = '测试邮件!'.                "邮件主题
  pdf_name = '测试.pdf'.                  "附件名称

**** Mail Attribute
  wa_doc_chng-obj_langu = sy-langu.
  wa_doc_chng-obj_name = 'Email'.
  wa_doc_chng-expiry_dat = sy-datum + 10.
  wa_doc_chng-obj_descr = g_object .  " 邮件主题
  wa_doc_chng-sensitivty = 'F'.
  wa_doc_chng-doc_size = g_lines_txt * 255 + g_len_in.    "邮件大小
  wa_doc_chng-priority = '1'.

* Main Text
  clear gt_objpack-transf_bin.
  gt_objpack-head_start = 1.
  gt_objpack-head_num = 0.
  gt_objpack-body_start = 1.
  gt_objpack-body_num = g_lines_txt.
  gt_objpack-doc_type = 'RAW'.
  append gt_objpack.

* Attachment (pdf-Attachment)
  clear :g_lines_bin.
  gt_objpack-transf_bin = 'X'.
  gt_objpack-head_start = 1.
  gt_objpack-head_num = 1.
  gt_objpack-body_start = 1.
  describe table gt_record lines g_lines_bin.
  "此处附件大小应该按照SCMS_XSTRING_TO_BINARY返回值赋值,如果按照g_lines_bin*225计算,可能出现文件损坏情况
  gt_objpack-doc_size = g_len_in .
  gt_objpack-body_num = g_lines_bin.
  gt_objpack-doc_type = 'PDF'.
  gt_objpack-obj_name = 'PO'.
  gt_objpack-obj_descr = pdf_name.                "附件名称
  append gt_objpack.

  "收件人邮箱
  gt_reclist-receiver = p_email.
  gt_reclist-rec_type = 'U'.
  append gt_reclist.

  " 发送邮件
  call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    exporting
      document_data              = wa_doc_chng  " 邮件属性
      put_in_outbox              = ''
      commit_work                = 'X'
    tables
      packing_list               = gt_objpack  " 邮件内容
      contents_bin               = gt_objbin   " 附件内容(二进制)
      contents_txt               = gt_objtxt   " 邮件内容(直接填入)
      receivers                  = gt_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.
* 考虑系统时延,等待两秒
    wait up to 2 seconds.
* 执行邮件立即发送程序
    submit rsconn01 with mode = 'INT'
                  with output = '' " 不显示发送结果
                  and return.
    message 'send mail successful!' type 'S'.
  else.
    message 'send mail failed!' type 'S'.
  endif.

### 回答1: SAP BPC(SAP Business Planning and Consolidation)是一种专业的企业财务规划和数据分析工具。在使用SAP BPC时,您可以配置电子邮件模板并使用其发送邮件。 要使用电子邮件模板发邮件,首先需要在SAP BPC系统中进行一些配置。可以通过以下步骤来完成此配置: 1. 登录到SAP BPC系统,并导航到Administration(管理)工作区。 2. 在左侧面板中,选择"Email"(电子邮件)。 3. 在电子邮件配置页面上,您可以添加、编辑和删除电子邮件模板。单击"Add"(添加)按钮,然后在弹出窗口中填写相关信息。您可以指定模板名称、主题、正文等内容,并使用变量来动态地添加数据。 4.保存模板配置后,您可以在其他功能区域中使用该模板发送电子邮件。 要使用电子邮件模板发送电子邮件,您可以按照以下步骤进行操作: 1.导航到您想要发送邮件的相关功能区域,例如报告、分析或审批等。 2.选择要发送的数据或报告,并单击"Email"(邮件)选项。 3.在弹出的邮件发送页面上,您可以选择要使用的邮件模板。选择适当的模板后,系统将自动填充电子邮件的主题和正文。 4.检查电子邮件的内容是否正确,并根据需要进行修改。 5.选择要接收邮件的收件人,并可以选择将邮件发送给多个收件人。 6.点击"Send"(发送)按钮以发送电子邮件。 通过配置和使用电子邮件模板,SAP BPC可以帮助用户快速、准确地发送包含所需数据的电子邮件。这在需要根据系统中存储的财务规划和分析数据发送定期报告或通知时非常有用。 ### 回答2: 使用SAP BPC发送电子邮件时,可以使用电子邮件模板来方便地创建和发送邮件。以下是使用电子邮件模板发邮件的步骤: 1. 首先,在SAP BPC中创建一个新的电子邮件模板。可以指定模板的名称、标题、正文内容以及附件等信息。 2. 在模板中可以使用占位符来表示动态内容,例如收件人姓名、发送时间等。可以通过插入相应的占位符来定制邮件内容。 3. 在模板中添加附件。可以将需要发送的文件附加到模板中,确保在发送邮件时能够自动附带这些文件。 4. 保存电子邮件模板并关闭。 5. 在SAP BPC中选择需要发送邮件的报表或者数据,并将其以电子邮件形式导出。 6. 在电子邮件的发送设置中,选择使用电子邮件模板来发送邮件。选择之前创建的模板,并填写收件人、抄送人等邮件相关信息。 7. 点击发送按钮,即可使用电子邮件模板发送邮件。 使用电子邮件模板可以大大简化发送邮件的过程,提高工作效率。当需要发送类似格式的邮件时,可以直接选择合适的模板,避免重复编写邮件内容。此外,可以在模板中添加动态内容和附件,使得邮件内容更加丰富和个性化。 需要注意的是,在使用电子邮件模板发送邮件时,确保邮件内容和附件的格式和内容都是正确的,以免造成误解或者信息丢失。另外,也可以根据实际需要,创建不同的模板,以适应不同的邮件发送需求。 ### 回答3: SAP BPC是一种企业绩效管理工具,可以帮助企业进行财务规划、预算编制和报告分析等方面的工作。在SAP BPC中,我们可以使用电子邮件模板来发送邮件。 首先,我们需要在SAP BPC系统中创建一个电子邮件模板。在创建模板时,可以设置收件人、抄送、密送、邮件主题、正文内容等信息。还可以使用动态变量来添加特定的报表数据或字段。 创建完成后,我们就可以在工作流程或任务中使用这个电子邮件模板了。在需要发送邮件的任务或工作流中,选择电子邮件模板为邮件类型,并填写相应的参数,如收件人、抄送、密送等。 当任务或工作流触发条件满足时,系统会根据设定的电子邮件模板发送邮件。接收者收到邮件后可以查看邮件主题和正文内容,并根据需要进行进一步的操作。 使用电子邮件模板的好处是可以提高工作效率和准确性。通过预先设置好邮件内容和参数,可以简化操作过程并减少手工输入错误的风险。同时,可以确保邮件的一致性和准确性,避免不必要的沟通和误解。 总之,通过在SAP BPC中使用电子邮件模板,可以方便地发送邮件,并且确保邮件内容的准确性和一致性。这将有助于提高工作效率和沟通效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值