ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

快速复制用户并邮件通知

2022-06-27 09:03:34  阅读:197  来源: 互联网

标签:gv fnam 用户 fval lt 复制 && TYPE 邮件


  1 CONSTANTS:gv_copyer TYPE usr02-bname VALUE 'XXXX',
  2           gv_user   TYPE usr02-bname VALUE 'XXXX001',
  3           gv_pwd    TYPE string VALUE 'Aa123456789'.
  4 DATA:gv_email  TYPE adr6-smtp_addr VALUE '$$@XXXX.com'.
  5 
  6 PERFORM frm_create_user.
  7 PERFORM frm_get_server_info.
  8 CHECK 1 = 2.
  9 PERFORM frm_send_email.
 10 PERFORM frm_copy_user.
 11 
 12 FORM frm_copy_user.
 13   CALL FUNCTION 'SUSR_USER_COPY'
 14     EXPORTING
 15       user_name_1 = gv_copyer
 16       user_name_2 = gv_user.
 17 
 18   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
 19     EXPORTING
 20       wait = 'X'.
 21 
 22 ENDFORM.
 23 
 24 FORM frm_create_user.
 25   DATA:lt_bdc TYPE TABLE OF bdcdata.
 26   DATA opt TYPE ctu_params.
 27   SELECT SINGLE @abap_true INTO @DATA(lv_subrc)
 28     FROM usr02
 29    WHERE bname = @gv_user.
 30   IF sy-subrc <> 0.
 31     lt_bdc = VALUE #(
 32       ( program = 'SAPLSUID_MAINTENANCE' dynpro = '1050' dynbegin = 'X' )
 33       ( fnam = 'BDC_OKCODE'                           fval = '=COPY' )
 34       ( fnam = 'SUID_ST_BNAME-BNAME'                  fval = gv_user )
 35 
 36       ( program = 'SAPLSUID_MAINTENANCE' dynpro = '1200' dynbegin = 'X' )
 37       ( fnam = 'BDC_OKCODE' fval = '=COPY' )
 38       ( fnam = 'GV_COPY_UNAME_SRC'                    fval = gv_copyer )
 39       ( fnam = 'GV_COPY_UNAME_DST'                    fval = gv_user )
 40       ( fnam = 'GS_COPY_OPTIONS-DEFAULTS'             fval = 'X' )
 41       ( fnam = 'GS_COPY_OPTIONS-PARAMETERS'           fval = 'X' )
 42       ( fnam = 'GS_COPY_OPTIONS-REFUSER'              fval = 'X' )
 43       ( fnam = 'GS_COPY_OPTIONS-ROLES'                fval = 'X' )
 44       ( fnam = 'GS_COPY_OPTIONS-PROFILES'             fval = 'X' )
 45       ( fnam = 'GS_COPY_OPTIONS-USERGROUPS'           fval = 'X' )
 46       ( fnam = 'GS_COPY_OPTIONS-PERS'                 fval = 'X' )
 47       ( fnam = 'GS_COPY_OPTIONS-UCLASS'               fval = 'X' )
 48       ( fnam = 'GS_COPY_OPTIONS-EASY_ACCESS'          fval = 'X' )
 49 
 50       ( program = 'SAPLSUID_MAINTENANCE' dynpro   = '1100' dynbegin = 'X' )
 51       ( fnam = 'BDC_OKCODE'                           fval = '=UPD' )
 52       ( fnam = 'SUID_ST_NODE_LOGONDATA-USTYP'         fval = 'A' )
 53       ( fnam = 'SUID_ST_NODE_PASSWORD_EXT-PASSWORD'   fval = gv_pwd )
 54       ( fnam = 'SUID_ST_NODE_PASSWORD_EXT-PASSWORD2'  fval = gv_pwd )
 55 
 56       ( program = 'SAPLSUID_MAINTENANCE' dynpro = '1050' dynbegin = 'X' )
 57       ( fnam = 'BDC_OKCODE'                           fval = '=UPD' )
 58       ( fnam = 'SUID_ST_BNAME-BNAME'                  fval = gv_user ) ).
 59 
 60     opt-dismode = 'E'.
 61     opt-defsize = 'X'.
 62 
 63     TRY.
 64         CALL TRANSACTION 'SU01' WITH AUTHORITY-CHECK
 65                                 USING lt_bdc OPTIONS FROM opt.
 66       CATCH cx_sy_authorization_error.
 67     ENDTRY.
 68   ENDIF.
 69 ENDFORM.
 70 
 71 FORM frm_get_server_info.
 72 
 73   DATA:l_value TYPE string.
 74   cl_spfl_profile_parameter=>get_value(
 75   EXPORTING
 76     name = 'SAPSYSTEMNAME'
 77   IMPORTING
 78     value = l_value ).
 79 
 80   DATA:list      LIKE  msxxlist OCCURS 0 WITH HEADER LINE,
 81        list_ipv6 LIKE  msxxlist_v6 OCCURS 0 WITH HEADER LINE.
 82   CALL FUNCTION 'TH_SERVER_LIST'
 83     EXPORTING
 84       active_server  = 0
 85     TABLES
 86       list           = list
 87       list_ipv6      = list_ipv6
 88     EXCEPTIONS
 89       no_server_list = 1
 90       OTHERS         = 2.
 91 
 92   DATA:lv_port(20).
 93   LOOP AT list.
 94     CALL FUNCTION 'GWY_SERVNO2STRING'
 95       EXPORTING
 96         servno = list-servno
 97       IMPORTING
 98         string = lv_port.
 99   ENDLOOP.
100 ENDFORM.
101 
102 FORM frm_send_email.
103 
104 **********************************************************************
105   REPLACE ALL OCCURRENCES OF '$$' IN gv_email WITH sy-uname.
106 *发邮件方式一
107   DATA: ls_docdata   TYPE sodocchgi1, "邮件抬头信息
108         lt_packlist  TYPE TABLE OF sopcklsti1 WITH HEADER LINE, "传输内容格式
109         lt_contxt    TYPE TABLE OF solisti1   WITH HEADER LINE, "邮件正文
110         lt_conhex    TYPE TABLE OF solix      WITH HEADER LINE, "二进制内容
111         lt_objbin    TYPE TABLE OF solisti1   WITH HEADER LINE, "附件内容
112         lt_objheader TYPE TABLE OF solisti1   WITH HEADER LINE, "附件名称
113         lt_receivers TYPE TABLE OF somlreci1  WITH HEADER LINE. "收件人信息
114 
115   DATA: lv_tablines TYPE i,
116         lv_string   TYPE string,
117         lv_mimetype TYPE char64 VALUE 'APPLICATION/MSEXCEL;charset=utf-8',
118         lv_xattach  TYPE xstring.
119 
120   CONSTANTS:
121     lc_tab  TYPE c VALUE cl_bcs_convert=>gc_tab,  "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
122     lc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf. "CL_ABAP_CHAR_UTILITIES=>CR_LF
123 
124 ***邮件主题
125   CLEAR ls_docdata.
126   ls_docdata-obj_name  = 'EMAIL'.        "文档名称 名称随便取
127   ls_docdata-obj_descr = 'SAP系统自动创建用户'. "邮件的主题
128 
129 ***邮件正文(手动赋值或取表数据)
130   CLEAR:lt_contxt,lt_contxt[].
131   lt_contxt-line = '<html><body>'.
132   APPEND lt_contxt.
133   lt_contxt-line = '<div><h2>Hello Dear:</h2></div>'.
134   APPEND lt_contxt.
135   lt_contxt-line = '<div>您的SAP账号为<mark>:' && gv_user && '</mark>您的密码为:<mark>' && gv_pwd && '</mark>请登录系统后及时修改初始密码</div>'.
136   APPEND lt_contxt.
137   lt_contxt-line = '<a href="http://vhcals4hci.sapeasyconnect.com:57000/sap/bc/chen/chenhui001?sap-client=100" target="_blank">病毒勿点!!!</a>'.
138   APPEND lt_contxt.
139 
140   lt_contxt-line = '<div align="right">' && sy-datum+0(4) && '年' && sy-datum+4(2) && '月' && sy-datum+4(2) && '日' && sy-uzeit+0(2) && ':' && sy-uzeit+2(2) && ':' && sy-uzeit+4(2) && '</div>'.
141   APPEND lt_contxt.
142   lt_contxt-line = '</body></html>'.
143   APPEND lt_contxt.
144 
145 *添加邮件正文内容格式
146   lv_tablines = lines( lt_contxt[] ).
147   READ TABLE lt_contxt INDEX lv_tablines.
148   ls_docdata-doc_size = ( lv_tablines - 1 ) * 255 + strlen( lt_contxt ). "文档的大小
149 
150   CLEAR:lt_packlist,lt_packlist[].
151   lt_packlist-head_start = 1.
152   lt_packlist-head_num   = 0.
153   lt_packlist-body_start = 1.
154   lt_packlist-body_num   = lv_tablines.
155   lt_packlist-doc_type   = 'HTML'.
156   APPEND lt_packlist.
157 
158 ***收件人(手动赋值或取表数据)
159   CLEAR:lt_receivers,lt_receivers[].
160   lt_receivers-receiver = gv_email.  "接收人邮箱
161   lt_receivers-rec_type = 'U'.       "收件人类型,具体可看字段的域值
162   lt_receivers-express  = 'X'.       "快件
163   APPEND lt_receivers.
164 
165 ***发送邮件
166   CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
167     EXPORTING
168       document_data              = ls_docdata "邮件标题
169       put_in_outbox              = 'X'
170       commit_work                = 'X'
171 * IMPORTING
172 *     SENT_TO_ALL                =
173 *     NEW_OBJECT_ID              =
174     TABLES
175       packing_list               = lt_packlist "传输内容格式
176       object_header              = lt_objheader "附件名称
177 *     CONTENTS_BIN               =
178       contents_txt               = lt_contxt "邮件文字内容
179       contents_hex               = lt_conhex "二进制内容
180 *     OBJECT_PARA                =
181 *     OBJECT_PARB                =
182       receivers                  = lt_receivers "接收人列表
183     EXCEPTIONS
184       too_many_receivers         = 1
185       document_not_sent          = 2
186       document_type_not_exist    = 3
187       operation_no_authorization = 4
188       parameter_error            = 5
189       x_error                    = 6
190       enqueue_error              = 7
191       OTHERS                     = 8.
192 
193   IF sy-subrc NE 0.
194     MESSAGE '邮件发送失败' TYPE 'E'.
195 
196   ELSE.
197 * 如果不自动送,加上执行邮件立即发送程序代码
198     SUBMIT rsconn01 WITH mode = 'INT'
199                     WITH output = 'X' "显示发送结果  可以使用空
200                     AND RETURN.
201     MESSAGE '发送成功' TYPE 'S'.
202   ENDIF.
203 **********************************************************************
204 
205 
206 
207   CHECK  1 = 1.
208 **********************************************************************
209 *发邮件方式二
210   DATA: lv_title      TYPE so_obj_des,
211         send_request  TYPE REF TO cl_bcs,
212         document      TYPE REF TO cl_document_bcs,
213         conlengths    TYPE so_obj_len,
214         html          TYPE STANDARD TABLE OF w3html,
215         wa_html       TYPE w3html,
216         sender_id     TYPE REF TO if_sender_bcs,
217         recipient     TYPE REF TO if_recipient_bcs,
218         sent_to_all   TYPE os_boolean,
219         bcs_exception TYPE REF TO cx_bcs,
220         bcs_message   TYPE string.
221 
222   lv_title = 'SAP系统自动创建用户'.
223   wa_html-line = '<html><body>'.
224   APPEND wa_html TO html.
225 
226   wa_html-line = '<div><h2>Hello Dear:</h2></div>'.
227   APPEND wa_html TO html.
228   wa_html-line = '<div>您的SAP账号为<mark>:' && gv_user && '</mark>您的密码为:<mark>' && gv_pwd && '</mark>请登录系统后及时修改初始密码</div>'.
229   APPEND wa_html TO html.
230   wa_html-line = '<div align="right">' && sy-datum+0(4) && '年' && sy-datum+4(2) && '月' && sy-datum+4(2) && '日' && sy-uzeit+0(2) && ':' && sy-uzeit+2(2) && ':' && sy-uzeit+4(2) && '</div>'.
231   APPEND wa_html TO html.
232 
233   wa_html-line = '</body></html>'.
234   APPEND wa_html TO html.
235 
236   TRY.
237       CLEAR send_request.
238       send_request = cl_bcs=>create_persistent( ).
239 
240       CLEAR document .
241       document =  cl_document_bcs=>create_document( i_type    =  'HTM'
242                                                     i_text    =  html
243                                                     i_length  =  conlengths
244                                                     i_subject = lv_title ).
245 
246       CALL METHOD send_request->set_document( document ).
247 
248       CLEAR:sender_id,recipient .
249       sender_id = cl_cam_address_bcs=>create_internet_address( gv_email ).
250       recipient = cl_cam_address_bcs=>create_internet_address( gv_email ).
251 
252 *   Set sender
253       CALL METHOD send_request->set_sender
254         EXPORTING
255           i_sender = sender_id.
256 
257 
258       CALL METHOD send_request->add_recipient
259         EXPORTING
260           i_recipient = recipient
261           i_express   = 'X'.
262 
263 *   Set E-mail sending options
264       CALL METHOD send_request->set_status_attributes
265         EXPORTING
266           i_requested_status = 'E'
267           i_status_mail      = 'E'.
268       CALL METHOD send_request->set_send_immediately( 'X' ).
269 
270 
271       CALL METHOD send_request->send(
272         EXPORTING
273           i_with_error_screen = 'X'
274         RECEIVING
275           result              = sent_to_all ).
276 
277       IF sent_to_all = 'X'.
278         MESSAGE '邮件发送成功' TYPE 'S'.
279       ENDIF.
280       COMMIT WORK.
281 
282     CATCH cx_bcs INTO bcs_exception.
283       bcs_message = bcs_exception->get_text( ).
284       MESSAGE bcs_exception TYPE 'E'.
285       EXIT.
286   ENDTRY.
287   SUBMIT rsconn01 WITH mode = 'INT'
288                   WITH output = 'X' "显示发送结果  可以使用空
289                   AND RETURN.
290 
291 ENDFORM.
View Code

 

标签:gv,fnam,用户,fval,lt,复制,&&,TYPE,邮件
来源: https://www.cnblogs.com/1187163927ch/p/16415057.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有