• ABAP-HTML-MAIL


    1.邮件-方法类

     2.方法

    2.1 Define

     1 class ZCTR0600 definition
     2   public
     3   final
     4   create public .
     5 
     6 public section.
     7 
     8   types:
     9     begin of ty_html_head,
    10       hfgcolor  type wwwcolor,
    11       hbgcolor  type wwwcolor,
    12       lfgcolor  type wwwcolor,
    13       lbgcolor  type wwwcolor,
    14       size      type w3size,
    15       attrb     type w3html,
    16       tabhd     type w3head,
    17     end of ty_html_head .
    18   types:
    19     begin of ty_html_fcat,
    20     text  type w3head-text,
    21     end of ty_html_fcat .
    22   types:
    23     tt_html_fcat  type table of ty_html_fcat .
    24   types:
    25     tt_html_html  type table of w3html .
    26   types:
    27     begin of ty_mail_head,
    28         sender        type ad_smtpadr,
    29         mailtype      type so_obj_tp,
    30         subject       type so_obj_des,
    31         atta_subject  type so_obj_des,
    32         end of ty_mail_head .
    33   types TY_MAIL_RECE type ADR6 .
    34   types TY_MAIL_ATTA type RMPS_POST_CONTENT .
    35   types TY_MAIL_BODY type SOLI .
    36   types:
    37     tt_mail_rece  type table of ty_mail_rece .
    38   types:
    39     tt_mail_atta  type table of ty_mail_atta .
    40   types:
    41     tt_mail_body  type table of ty_mail_body .
    42 
    43   class-methods SEND_MAIL
    44     importing
    45       value(IS_MAIL_HEAD) type TY_MAIL_HEAD optional
    46       value(IT_MAIL_BODY) type TT_MAIL_BODY optional
    47       value(IT_MAIL_ATTA) type TT_MAIL_ATTA optional
    48       value(IT_MAIL_RECE) type TT_MAIL_RECE optional
    49     exporting
    50       value(ER_ROOT) type ref to ZCX_ROOT .
    51   class-methods MAIL_HTML
    52     importing
    53       value(IS_HTML_HEAD) type TY_HTML_HEAD optional
    54       value(IT_HTML_FCAT) type TT_HTML_FCAT optional
    55       value(IT_HTML_ANY) type ANY optional
    56     exporting
    57       value(ER_ROOT) type ref to ZCX_ROOT
    58       value(ET_HTML) type TT_HTML_HTML .
    59   class-methods MAIL_ATTA
    60     importing
    61       value(IV_STRING) type STRING optional
    62     exporting
    63       value(ES_ATTA) type RMPS_POST_CONTENT
    64       value(ER_ROOT) type ref to ZCX_ROOT .
    View Code

    2.1 SEND_MAIL

     1   method mail_atta.
     2   data: lv_size type so_obj_len.
     3   try.
     4     try.
     5       cl_bcs_convert=>string_to_solix(
     6         exporting
     7           iv_string   = iv_string
     8           iv_codepage = '4103'          "suitable for MS Excel, leave empty
     9           iv_add_bom  = abap_true       "for other doc types
    10         importing
    11           et_solix    = es_atta-cont_hex
    12           ev_size     = lv_size
    13           ).
    14 
    15       "es_atta-docsize = lv_size.
    16       catch cx_bcs into data(lr_cx_bcs).
    17       data(lv_txt) = lr_cx_bcs->get_text( ).
    18       raise exception type zcx_root
    19         exporting
    20           textid = value #(
    21                      msgid = '00'
    22                      msgno = '001'
    23                      attr1 = lv_txt
    24                      ).
    25     endtry.
    26     catch zcx_root into data(lr_root).
    27     er_root = lr_root.
    28   endtry.
    29   endmethod.
    View Code

    2.2 MAIL_HTML

      1   method mail_html.
      2   data: lr_ref    type ref to data.
      3   data: lt_header type table of w3head,
      4         lt_fields type table of w3fields,
      5         lt_html   type table of w3html.
      6 
      7   try.
      8 
      9     data:
     10       lr_any_t  type ref to data,
     11       lr_any_s  type ref to data.
     12     data:
     13       lr_dref   type ref to data,
     14       lr_stru   type ref to cl_abap_structdescr,
     15       lr_table  type ref to cl_abap_tabledescr,
     16       lr_elem   type ref to cl_abap_elemdescr,
     17       lt_para   type cl_abap_structdescr=>component_table,
     18       lt_comp   type cl_abap_structdescr=>component_table.
     19     field-symbols:
     20       <fs_tab>  type any,
     21       <ft_tab>  type standard table.
     22 
     23     try.
     24 
     25       lr_table ?= cl_abap_tabledescr=>describe_by_data( it_html_any ).
     26 
     27 *      loop at lr_stru->components[] into data(ls_comps).
     28 *        if ls_comps-type_kind = 'P'
     29 *        or ls_comps-type_kind = 'X'.
     30 *        else.
     31 *          ls_comps-length = ls_comps-length / 2.
     32 *        endif.
     33 *
     34 *        append initial line to lt_comp assigning field-symbol(<fs_comp>).
     35 *        <fs_comp>-name  =   ls_comps-name.
     36 *        <fs_comp>-type  ?=  cl_abap_elemdescr=>get_by_kind(
     37 *                            p_type_kind = ls_comps-type_kind
     38 *                            p_length = ls_comps-length
     39 *                            p_decimals = ls_comps-decimals ).
     40 *        unassign <fs_comp>.
     41 *      endloop.
     42 *
     43 *      if lt_comp[] is not initial.
     44 *        clear:lr_stru,lr_table.
     45 *        lr_stru   =   cl_abap_structdescr=>create( lt_comp ).
     46 *        lr_table  =   cl_abap_tabledescr=>create( lr_stru ).
     47 *
     48 *        create data lr_any_s type handle lr_stru.
     49 *        assign lr_any_s->* to <fs_tab>.
     50 *
     51 *        create data lr_any_t type handle lr_table.
     52 *        assign lr_any_t->* to <ft_tab>.
     53 *      endif.
     54 
     55       if lr_table is not initial.
     56         create data lr_any_t type handle lr_table.
     57         assign lr_any_t->* to <ft_tab>.
     58       endif.
     59 
     60       move-corresponding it_html_any to <ft_tab>[].
     61 
     62       catch cx_root into data(lr_rt).
     63       data(lv_txt) = lr_rt->get_text( ).
     64       raise exception type zcx_root
     65         exporting
     66           textid = value #(
     67                      msgid = '00'
     68                      msgno = '001'
     69                      attr1 = lv_txt
     70                      ).
     71     endtry.
     72 
     73     loop at it_html_fcat into data(ls_html_fcat).
     74       call function 'WWW_ITAB_TO_HTML_HEADERS'
     75         exporting
     76           field_nr = sy-tabix
     77           text     = ls_html_fcat-text
     78           fgcolor  = is_html_head-hfgcolor
     79           bgcolor  = is_html_head-hbgcolor
     80         tables
     81           header   = lt_header.
     82 
     83       call function 'WWW_ITAB_TO_HTML_LAYOUT'
     84         exporting
     85           field_nr = sy-tabix
     86           fgcolor  = is_html_head-lfgcolor
     87           bgcolor  = is_html_head-lbgcolor
     88           size     = is_html_head-size
     89         tables
     90           fields   = lt_fields.
     91     endloop.
     92 
     93     call function 'WWW_ITAB_TO_HTML'
     94       exporting
     95         table_attributes  = is_html_head-attrb
     96         table_header      = is_html_head-tabhd
     97       tables
     98         html              = lt_html
     99         fields            = lt_fields
    100         row_header        = lt_header
    101         itable            = <ft_tab>[].
    102 
    103     et_html[] = lt_html[].
    104 
    105     catch zcx_root into data(lr_root).
    106     er_root = lr_root.
    107   endtry.
    108   endmethod.
    View Code

    2.3 MAIL_ATTA

     1   method mail_atta.
     2   data: lv_size type so_obj_len.
     3   try.
     4     try.
     5       cl_bcs_convert=>string_to_solix(
     6         exporting
     7           iv_string   = iv_string
     8           iv_codepage = '4103'          "suitable for MS Excel, leave empty
     9           iv_add_bom  = abap_true       "for other doc types
    10         importing
    11           et_solix    = es_atta-cont_hex
    12           ev_size     = lv_size
    13           ).
    14 
    15       "es_atta-docsize = lv_size.
    16       catch cx_bcs into data(lr_cx_bcs).
    17       data(lv_txt) = lr_cx_bcs->get_text( ).
    18       raise exception type zcx_root
    19         exporting
    20           textid = value #(
    21                      msgid = '00'
    22                      msgno = '001'
    23                      attr1 = lv_txt
    24                      ).
    25     endtry.
    26     catch zcx_root into data(lr_root).
    27     er_root = lr_root.
    28   endtry.
    29   endmethod.
    View Code

    3.调用

      1 form frm_mail_send_b  tables   ft_item    structure wa_alv
      2                                ft_return  structure bapiret2
      3                       using    fs_head    like      wa_alv.
      4 
      5   constants: lc_tab   type c value cl_abap_char_utilities=>horizontal_tab.
      6   data: lr_root       type ref to zcx_root.
      7   data: ls_mail_head  type  zctr0600=>ty_mail_head.
      8   data: lt_mail_body  type  zctr0600=>tt_mail_body,
      9         lt_mail_atta  type  zctr0600=>tt_mail_atta,
     10         lt_mail_rece  type  zctr0600=>tt_mail_rece.
     11   data: ls_html_head  type  zctr0600=>ty_html_head.
     12   data: lt_html_fcat  type  zctr0600=>tt_html_fcat,
     13         lt_html_any   like  table of wa_mail,
     14         lt_html       type  table of w3html.
     15   data: lv_string     type  string,
     16         ls_atta       type  zctr0600=>ty_mail_atta.
     17 
     18   check fs_head-smtp_type = 'B'.
     19 
     20   try.
     21 
     22   ls_html_head-hfgcolor   =  'white'.
     23   ls_html_head-hbgcolor   =  'blue'.
     24   ls_html_head-lfgcolor   =  'black'.
     25   ls_html_head-lbgcolor   =  ''.
     26   ls_html_head-size       =  '3'.
     27   ls_html_head-attrb-line =  'BORDER=0'.
     28   ls_html_head-tabhd-text =  text-101.
     29   ls_html_head-tabhd-font =  'Arial'.
     30   ls_html_head-tabhd-size =  '2'.
     31 
     32   loop at ft_item into data(ls_item).
     33     append initial line to lt_html_any assigning field-symbol(<fs_html_any>).
     34     move-corresponding ls_item to <fs_html_any>.
     35     unassign <fs_html_any>.
     36   endloop.
     37 
     38   perform frm_mail_send_fcat tables lt_html_fcat.
     39 
     40   zctr0600=>mail_html(
     41     exporting
     42       is_html_head  = ls_html_head
     43       it_html_fcat  = lt_html_fcat
     44       it_html_any   = lt_html_any
     45     importing
     46       er_root       = lr_root
     47       et_html       = lt_html
     48       ).
     49   if lr_root is not initial.
     50     raise exception lr_root.
     51   endif.
     52 
     53   loop at lt_html into data(ls_html).
     54     lv_string = lv_string && ls_html-line.
     55   endloop.
     56 
     57   zctr0600=>mail_atta(
     58     exporting
     59       iv_string     = lv_string
     60     importing
     61       es_atta       = ls_atta
     62       er_root       = lr_root
     63       ).
     64   if lr_root is not initial.
     65     raise exception lr_root.
     66   endif.
     67 
     68   ls_mail_head-subject      = text-100.
     69   ls_mail_head-sender       = space.
     70   ls_mail_head-mailtype     = 'HTM'.
     71   ls_mail_head-atta_subject = space.
     72 
     73   append initial line to lt_mail_atta assigning field-symbol(<fs_mail_atta>).
     74   <fs_mail_atta>-doc_type = 'HTM'.
     75   <fs_mail_atta>-subject  = text-102.
     76   <fs_mail_atta>-filename = text-102.
     77   <fs_mail_atta>-objtp    = 'HTML'.
     78   <fs_mail_atta>-cont_hex = ls_atta-cont_hex.
     79   unassign <fs_mail_atta>.
     80 
     81   append initial line to lt_mail_rece assigning field-symbol(<fs_mail_rece>).
     82   <fs_mail_rece>-smtp_addr  = fs_head-smtp_addr.
     83   unassign <fs_mail_rece>.
     84 
     85   zctr0600=>send_mail(
     86     exporting
     87       is_mail_head  = ls_mail_head
     88       it_mail_rece  = lt_mail_rece
     89       it_mail_body  = lt_mail_body
     90       it_mail_atta  = lt_mail_atta
     91     importing
     92       er_root       = lr_root
     93       ).
     94     if lr_root is not initial.
     95       raise exception lr_root.
     96     endif.
     97     catch zcx_root into lr_root.
     98     data(lv_err) = lr_root->get_text( ).
     99     perform frm_get_message
    100     tables  ft_return
    101     using   'E'
    102             '00'
    103             '001'
    104             fs_head-smtp_addr
    105             lv_err
    106             space
    107             space.
    108   endtry.
    109 endform.
    View Code
  • 相关阅读:
    SQL Server 循环插入数据
    转:Visual Studio 打开程序提示仅我的代码怎么办
    DevExpress XAF 访问当前视图中选定的对象
    DevExpress安装
    待定位的小bug
    easyui datagrid的toolbar 按钮可以像linkbutton一样设置使能状态
    使用jquery同时设置两个对象的method为同一函数
    首页变黑白的办法
    关于jQueryEasyUI DateBox的基本使用
    好东西分享兼备忘
  • 原文地址:https://www.cnblogs.com/ricoo/p/14666870.html
Copyright © 2020-2023  润新知