ABAP 发邮件程序1
abap,oo发送邮件
lo_send_request->add_recipient(
EXPORTING
i_recipient = lo_recipient
i_express = 'X' ).
endloop.
endif.
try.
** Send email
*" VALUE(RECIPIENT_UID) TYPE SYUNAME OPTIONAL
*" VALUE(SENDER_MAIL) TYPE ADR6-SMTP_ADDR OPTIONAL
*" VALUE(RECIPIENT_MAIL) TYPE ADR6-SMTP_ADDR OPTIONAL
endif.
lo_send_request->add_recipient(
EXPORTING
i_recip#39;X' ).
else.
loop at recipients into ls_recipient.
if ls_recipient-iusrid is not initial.
lv_recipient_uid = ls_recipient-iusrid.
lo_recipient = cl_sapuser_bcs=>create( lv_recipient_uid ).
endtry.
* Set recipients
if recipients[] is initial.
if recipient_mail is not initial.
lo_recipient = cl_cam_address_bcs=>create_internet_address( recipient_mail ).
通过ABAP程序发邮件源代码
*&---------------------------------------------------------------------**& Report Z7258_MAIL_EXCEL * *& * *&---------------------------------------------------------------------**& Example of sending external email via SAPCONNECT **& * *&---------------------------------------------------------------------*REPORT z7258_mail_excel .TABLES: ekko.PARAMETERS: p_email TYPE somlreci1-receiverDEFAULT 'sunlu@'.TYPES: BEGIN OF t_ekpo,ebeln TYPE ekpo-ebeln,ebelp TYPE ekpo-ebelp,aedat TYPE ekpo-aedat,matnr TYPE ekpo-matnr,END OF t_ekpo.DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,wa_ekpo TYPE t_ekpo.TYPES: BEGIN OF t_charekpo,ebeln(10) TYPE c,ebelp(5) TYPE c,aedat(8) TYPE c,matnr(18) TYPE c,END OF t_charekpo.DATA: wa_charekpo TYPE t_charekpo.DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0WITH HEADER LINE.DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0WITH HEADER LINE.DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,w_cnt TYPE i,w_sent_all(1) TYPE c,w_doc_data LIKE sodocchgi1,gd_error TYPE sy-subrc,gd_reciever TYPE sy-subrc.************************************************************************ *START_OF_SELECTIONSTART-OF-SELECTION.* Retrieve sample data from table ekpoPERFORM data_retrieval.* Populate table with detaisl to be entered into .xls filePERFORM build_xls_data_table.************************************************************************ *END-OF-SELECTIONEND-OF-SELECTION.* Populate message body textPERFORM populate_email_message_body.* Send file by email as .xls speadsheetPERFORM send_file_as_email_attachmentTABLES it_messageit_attachUSING p_email'Example .xls documnet attachment''CSV''12345.CSV''1'''''CHANGING gd_errorgd_reciever.* Instructs mail send program for SAPCONNECT to send email(rsconn01) PERFORM initiate_mail_execute_program.*&---------------------------------------------------------------------**& Form DATA_RETRIEVAL*&---------------------------------------------------------------------** Retrieve data form EKPO table and populate itab it_ekko*----------------------------------------------------------------------*FORM data_retrieval.SELECT ebeln ebelp aedat matnrUP TO 10 ROWSFROM ekpoINTO TABLE it_ekpo.ENDFORM. " DATA_RETRIEVAL*&---------------------------------------------------------------------**& Form BUILD_XLS_DATA_TABLE*&---------------------------------------------------------------------** Build data table for .xls document*----------------------------------------------------------------------*FORM build_xls_data_table.* CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode* con_tab TYPE x VALUE '09'. "OK for non Unicode*If you have Unicode check active in program attributes thnen you will *need to declare constants as follows*class cl_abap_char_utilities definition load.CONSTANTS:con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.* CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'* INTO it_attach SEPARATED BY con_tab. CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'INTO it_attach SEPARATED BY ','.CONCATENATE con_cret it_attach INTO it_attach.APPEND it_attach.LOOP AT it_ekpo INTO wa_charekpo.* CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp* wa_charekpo-aedat wa_charekpo-matnr* INTO it_attach SEPARATED BY con_tab.CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelpwa_charekpo-aedat wa_charekpo-matnrINTO it_attach SEPARATED BY ','.CONCATENATE con_cret it_attach INTO it_attach.APPEND it_attach.ENDLOOP.ENDFORM. " BUILD_XLS_DA TA_TABLE*&---------------------------------------------------------------------**& Form SEND_FILE_AS_EMAIL_ATTACHMENT*&---------------------------------------------------------------------** Send email*----------------------------------------------------------------------*FORM send_file_as_email_attachment TABLES pit_messagepit_attachUSING p_emailp_mtitlep_formatp_filenamep_attdescriptionp_sender_addressp_sender_addres_typeCHANGING p_errorp_reciever.DATA: ld_error TYPE sy-subrc,ld_reciever TYPE sy-subrc,ld_mtitle LIKE sodocchgi1-obj_descr,ld_email LIKE somlreci1-receiver,ld_format TYPE so_obj_tp ,ld_attdescription TYPE so_obj_nam ,ld_attfilename TYPE so_obj_des ,ld_sender_address LIKE soextreci1-receiver,ld_sender_address_type LIKE soextreci1-adr_typ,ld_receiver LIKE sy-subrc.ld_email = p_email.ld_mtitle = p_mtitle.ld_format = p_format.ld_attdescription = p_attdescription.ld_attfilename = p_filename.ld_sender_address = p_sender_address.ld_sender_address_type = p_sender_addres_type.* Fill the document data.w_doc_data-doc_size = 1.* Populate the subject/generic message attributesw_doc_data-obj_langu = sy-langu.w_doc_data-obj_name = 'SAPRPT'.w_doc_data-obj_descr = ld_mtitle .w_doc_data-sensitivty = 'F'.* Fill the document data and get size of attachmentCLEAR w_doc_data.READ TABLE it_attach INDEX w_cnt.w_doc_data-doc_size =( w_cnt - 1 ) * 255 + STRLEN( it_attach ).w_doc_data-obj_langu = sy-langu.w_doc_data-obj_name = 'SAPRPT'.w_doc_data-obj_descr = ld_mtitle.w_doc_data-sensitivty = 'F'.CLEAR t_attachment.REFRESH t_attachment.t_attachment[] = pit_attach[].* Describe the body of the messageCLEAR t_packing_list.REFRESH t_packing_list.t_packing_list-transf_bin = space.t_packing_list-head_start = 1.t_packing_list-head_num = 0.t_packing_list-body_start = 1.DESCRIBE TABLE it_message LINES t_packing_list-body_num. t_packing_list-doc_type = 'RAW'.APPEND t_packing_list.* Create attachment notificationt_packing_list-transf_bin = 'X'.t_packing_list-head_start = 1.t_packing_list-head_num = 1.t_packing_list-body_start = 1.DESCRIBE TABLE t_attachment LINES t_packing_list-body_num. t_packing_list-doc_type = ld_format.t_packing_list-obj_descr = ld_attdescription.t_packing_list-obj_name = ld_attfilename.t_packing_list-doc_size = t_packing_list-body_num * 255. APPEND t_packing_list.* Add the recipients email addressCLEAR t_receivers.REFRESH t_receivers.t_receivers-receiver = ld_email.t_receivers-rec_type = 'U'.t_receivers-com_type = 'INT'.t_receivers-notif_del = 'X'.t_receivers-notif_ndel = 'X'.APPEND t_receivers.CALL FUNCTION 'SO_DOCUMENT_SEND_API1'EXPORTINGdocument_data = w_doc_dataput_in_outbox = 'X'sender_address = ld_sender_addresssender_address_type = ld_sender_address_typecommit_work = 'X'IMPORTINGsent_to_all = w_sent_allTABLESpacking_list = t_packing_listcontents_bin = t_attachmentcontents_txt = it_messagereceivers = t_receiversEXCEPTIONStoo_many_receivers = 1document_not_sent = 2document_type_not_exist = 3operation_no_authorization = 4parameter_error = 5x_error = 6enqueue_error = 7OTHERS = 8.* Populate zerror return codeld_error = sy-subrc.* Populate zreceiver return codeLOOP AT t_receivers.ld_receiver = t_receivers-retrn_code.ENDLOOP.ENDFORM. "send_file_as_email_attachment*&---------------------------------------------------------------------**& Form INITIATE_MAIL_EXECUTE_PROGRAM*&---------------------------------------------------------------------** Instructs mail send program for SAPCONNECT to send email. *----------------------------------------------------------------------*FORM initiate_mail_execute_program.WAIT UP TO 2 SECONDS.SUBMIT rsconn01 WITH mode = 'INT'WITH output = 'X'AND RETURN.ENDFORM. " INITIA TE_MAIL_EXECUTE_PROGRAM*&---------------------------------------------------------------------**& Form POPULATE_EMAIL_MESSAGE_BODY*&---------------------------------------------------------------------** Populate message body text*----------------------------------------------------------------------*FORM populate_email_message_body.REFRESH it_message.it_message = 'Please find attached a list test ekpo records'.APPEND it_message.ENDFORM. "populate_email_message_body。
abap 数据传输流程
abap 数据传输流程Data transmission in ABAP is a crucial process that enables the exchange of information between different systems and applications. This process involves sending, receiving, and processing data in a secure and efficient manner. ABAP provides various methods fordata transmission, such as remote function calls (RFC), web services, and data exchange using files or databases.ABAP 数据传输是一个至关重要的过程,它使不同系统和应用程序之间的信息交换成为可能。
这个过程涉及以安全有效的方式发送,接收和处理数据。
ABAP提供了各种数据传输方法,例如远程函数调用(RFC),web服务,以及使用文件或数据库进行数据交换。
Remote Function Calls (RFC) is a common method used in ABAP for data transmission between SAP systems or between SAP and non-SAP systems. RFC allows for the execution of functions or programsin a remote system by invoking remote function modules. This method enables real-time communication between different systems and ensures the seamless transfer of data.远程函数调用(RFC)是ABAP中常用的一种方法,用于在SAP系统之间或在SAP和非SAP系统之间进行数据传输。
如何使用ABAP代码发送邮件到指定邮箱试读版
如何使用ABAP代码发送邮件到指定邮箱试读版零基础 ABAP 学习教程系列文章的目录•ABAP 标准培训教程BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍•ABAP 标准培训教程BC400 学习笔记之二:Cross-client 和Client-specific 的区别•ABAP 标准培训教程BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素•ABAP 标准培训教程BC400 学习笔记之四:ABAP 编程语言的数据类型•ABAP 标准培训教程BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号ABAP 基础知识•通过实际的例子,介绍SAP ABAP 里的Repository Information System 的使用技巧•ABAP function module 的使用•ABAP subroutine 的定义和使用•ABAP 中的变量和常量•ABAP 编程语言中的系统字段(System Fields)•什么是 ABAP Field Symbol•ABAP 引用类型介绍•最浅显易懂的 SAPGUI 里 ABAP 调试器的使用方法介绍•如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上)•如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)•用 ABAP 读取本地文本文件内容•26 行 ABAP 代码使用 HTTP_GET 函数下载百度网站的首页数据•ABAP 如何解析 JSON 数据•如何从本地文件里拷贝某个 ABAP 类到 SAP 系统•面向对象的 ABAP 编程初探 - 什么是类,实例,和 Public 方法•SAP ABAP 报表的用户输入功能•使用 ABAP 事物码 SM59 创建 Destination 来读取外网的数据•通过一个具体的例子,讲解 SAP BDC 技术的使用步骤•从解读 BDC 自动生成的代码谈起,讲解 SAPGUI 的程序组成部分•如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储•如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称•一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤•SAP ABAP 字符串变量容易疏忽和混淆的一些知识点•SAP ABAP 处理Excel 的标准函数TEXT_CONVERT_XLS_TO_SAP 介绍•授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储•SAP ABAP 系统进行数据库表查询的几种常用方法•如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求•一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧•如何使用 saplink 安装其他网站上提供的 ABAP 程序•ABAP 报表中如何给报表的输入参数增添 F4 Value Help•ABAP 报表中如何以二进制方式上传本地文件•ABAP 里文件操作涉及到中文字符集的问题和解决方案•如何对 ABAP 数据库表通过 ABAP 代码进行更新和删除操作•如何让 ABAP 报表在后台作业的模式下运行•如何使用 ABAP 代码解析 XML 文件•如何使用 ABAP 代码发送邮件到指定邮箱•更多文章正在写作中Office 专题•用 ABAP 新建本地 Excel 文件并写入数据•如何使用 ABAP 创建包含不同字体大小的 Word 文档•更多文章正在写作中ALV 开发专题•27 行代码开发一个最简单的 SAP ALV 报表•48 行代码给 ABAP ALV 报表的数据行增添颜色效果•77 行代码实现ABAP ALV 中的双击事件处理•SAP ABAP ALV 层次顺序表如何使用双表头(Multiple Headers)进行数据输出•如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值更多文章正在写作中本教程前面的步骤,我们介绍了如何在 ABAP Editor 里一步步创建包含自定义 Screen 的 ABAP 程序的详细方法。
SAP采购订单核发完自动发邮件需求开发说明
最终确认:
职责/角色
签名
日期
关键用户
顾问
项目经理(甲方)
项目经理(乙方)
开发需求说明书
基础信息:
模块:
MM
说明书编号:
022
功能名称:
采购订单核发完自动发邮件功能
程序名:
事务代码:
更改记录:
版本
更新日期
更改人
更改内容
需求确认:
职责/角色
签名
日期
关键用户
顾问
项目经理(甲方)
项目经理(乙方)
报表/功能目标:
采购订单核发完自动发邮件
优先级别:
□高 □中 □低
频率:
□每天 □每周 □每月 □其他(随时)
Z332
标准件采购订单
采购
自动发邮件
Z333
生产辅料采购订单
采购
自动发邮件
Z334
安全库存采购订单
采购
自动发邮件
Z335
全工序外购件采购订单
外发
自动
Z337
多工序外发采购订单
外发
自动发邮件
Z339
精密带工序外发采购订单
外发
自动发邮件
2.供应商主数据根据邮箱地址自动发邮件给供应商:
执行模式:
□在线 □后台
开发天数:
计划2天 ; 实际 天
业务需求:
一. 开发概要
二.功能需求分析
1.采购订单最后一级审批完,针对供应商主数据维护了邮箱地址,将自动发邮件给供应商和采购员
三. 使用范围
1.采购订单类型自动发邮件功能如下:
订单类型
订单订单
系统制作部门
ABAP message的创建及使用
ABAP 的message 的创建及使用2010-05-18 10:44:22| 分类:ABAP学习笔记|字号大中小订阅 se91创建一个message,图1:图2:*测试message。
SELECTION-SCREEN begin of BLOCK bk2 WITH FRAME TITLE text-002.parameters: p_budget type n,p_area type c,p_wemge type n.SELECTION-SCREEN END OF BLOCK bk2.IF p_budget IS NOT INITIAL.MESSAGE I000(zfi01) WITH p_budget p_area p_wemge.endif." ‘ I ’是类型;(zfi01)对应的是图1:message class;000 是对应的图2的message下的消息号:000;with 后的是三个变量,单价、面积、预算。
运行代码图3:弹出结果。
因为类型是‘I’,所以是弹出来的对话框,也可以设置为类型‘e’等。
图4:PS: 不创建message ,直接运用message:lMESSAGE 'Test message type I' TYPE 'I'.结果:图5PS:所有的消息都存储在系统数据表T100中,包含四个字段,语言代码,消息类,消息序列号,消息文本。
进入消息的初始界面的事务代码为SE91。
消息类型(与消息类不同)共六种,A,E,I S,W,X。
系统消息类为00。
例:MESSAGE S001(ZMM01) WITH 'Data was not found'."S是消息类型,001是消息文本,在此处为&占位符,所以需要WITH文本来替代,ZMM01是消息类。
TYPES: BEGIN OF task_type,name TYPE string,dest TYPE string,END OF task_type.DATA: snd_jobs TYPE i,rcv_jobs TYPE i,exc_flag TYPE i,info TYPE rfcsi,mess TYPE c LENGTH 80,indx TYPE c LENGTH 4,name TYPE c LENGTH 8,task_list TYPE STANDARD TABLE OF task_type,task_wa TYPE task_type.DO 10 TIMES.indx = sy-index.CONCATENATE 'Task' indx INTO name.CALL FUNCTION 'RFC_SYSTEM_INFO' STARTING NEW TASK nameDESTINATION IN GROUP DEFAULT PERFORMING rfc_info ON END OF TASK EXCEPTIONSsystem_failure = 1 MESSAGE mess communication_failure = 2 MESSAGE messresource_failure = 3.CASE sy-subrc.WHEN 0.snd_jobs = snd_jobs + 1.WHEN 1 OR 2.MESSAGE mess TYPE 'I'.WHEN 3.IF snd_jobs >= 1 ANDexc_flag = 0.exc_flag = 1.WAIT UNTIL rcv_jobs >= snd_jobsUP TO 5 SECONDS.ENDIF.IF sy-subrc = 0.exc_flag = 0.ELSE.MESSAGE 'Resource failure' TYPE 'I'.ENDIF.WHEN OTHERS.MESSAGE 'Other error' TYPE 'I'.ENDCASE.ENDDO.WAIT UNTIL rcv_jobs >= snd_jobs.LOOP AT task_list INTO task_wa.WRITE: / task_wa-name, task_wa-dest.ENDLOOP.FORM rfc_info USING name.task_wa-name = name.rcv_jobs = rcv_jobs + 1.RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO' IMPORTINGrfcsi_export = infoEXCEPTIONSsystem_failure = 1 MESSAGE messcommunication_failure = 2 MESSAGE mess.IF sy-subrc = 0.task_wa-dest = info-rfcdest.ELSE.task_wa-dest = mess.ENDIF.APPEND task_wa TO task_list.ENDFORM.。
ABAP_message的创建及使用
ABAP 的message 的创建及使用2010-05-18 10:44:22| 分类:ABAP学习笔记|字号大中小订阅 se91创建一个message,图1:图2:*测试message。
SELECTION-SCREEN begin of BLOCK bk2 WITH FRAME TITLE text-002.parameters: p_budget type n,p_area type c,p_wemge type n.SELECTION-SCREEN END OF BLOCK bk2.IF p_budget IS NOT INITIAL.MESSAGE I000(zfi01) WITH p_budget p_area p_wemge.endif." ‘ I ’是类型;(zfi01)对应的是图1:message class;000 是对应的图2的message下的消息号:000;with 后的是三个变量,单价、面积、预算。
运行代码图3:弹出结果。
因为类型是‘I’,所以是弹出来的对话框,也可以设置为类型‘e’等。
图4:PS: 不创建message ,直接运用message:lMESSAGE 'Test message type I' TYPE 'I'.结果:图5PS:所有的消息都存储在系统数据表T100中,包含四个字段,语言代码,消息类,消息序列号,消息文本。
进入消息的初始界面的事务代码为SE91。
消息类型(与消息类不同)共六种,A,E,I S,W,X。
系统消息类为00。
例:MESSAGE S001(ZMM01) WITH 'Data was not found'."S是消息类型,001是消息文本,在此处为&占位符,所以需要WITH文本来替代,ZMM01是消息类。
READ_CUSTOMIZED_MESSAGE 使用方法PO在有发票校验后禁止修改价格,假设无PO release策略,使用User-exit步骤如下:(1)找合适的用户出口发现EXIT_SAPMM06E_017比较合适,SMOD 输入enhancement name :MM06E005(2)编写代码.*&---------------------------------------------------------------------**& Include ZXM06U42 **&---------------------------------------------------------------------*DATA : ZWATEKPO like BEKPO ,ZIEINFO LIKE EINFO OCCURS 0 WITH HEADER LINE,TABLES EKBE .***TEKPO records all the old PO item date .*** I_EKPO records currently processed PO item .READ TABLE TEKPO INTO ZWATEKPO WITH KEY EBELP = I_EKPO-EBELP . ***只对ME22N才生效.CHECK SY-TCODE = 'ME22N '.***EKBE是PO history 表,如有Q,R表示有发票校验历史,不允许更改价## SELECT SINGLE * FROM EKBEWHERE EBELN = I_EKPO-EBELnAND EBELP = I_EKPO-EBELPAND ( BEWTP = 'Q' OR BEWTP = 'R').CHECK SY-SUBRC = 0 .***如果SY-SUBRC =0表示发票已经校验,不允许更改价格,否则还是可更改价格## IF I_EKPO-NETPR <> ZWATEKPO-NETPR .*** Change e017(ZFIMSG) accordingly* MESSAGE e017(ZFIMSG)."使用下面函数代替.CALL FUNCTION 'READ_CUSTOMIZED_MESSAGE'EXPORTINGI_ARBGB = 'ZFIMSG'I_DTYPE = ''I_MSGNR = '017'IMPORTINGE_MSGTY = SY-MSGTY.CHECK SY-MSGTY NE '-' .REFRESH ZIEINFO.ZIEINFO-MSGID = 'ZFIMSG'.ZIEINFO-MSGNO = '017' .ZIEINFO-MSGV1 = 'VAR1'.ZIEINFO-MSGV2 = 'VAR2'.APPEND ZIEINFO .CALL FUNCTION 'MESSAGE_GET_TEXT'EXPORTINGIEINFO = ZIEINFOILANGU = SY-LANGUIMPORTINGMESSAGE ZERMSG TYPE SY-MSGTY . ENDIF.。
传输问题(ABAP)
1.实际的需求中,传输比较频繁,一些情况传输比较紧急.不可能按照MAKE ESAY上理想的情况下传输.因此,在时间上,可以按照顾问需求传输,同时为了防止有传输引起的以下问题:不一致问题,传输终止,最坏情况下,导致SAP系统DOWN,必须的重启.限制传输内容是一个比较好的手段----这些传输内容必须是在传输过程中,不被用户调用的.2.传输的方法:第一类是同SYSTEM,不同CLIENT:SCC1->输入请求号和源集团,记住打勾->立即执行第二类是不同SYSTEMSTMS->点小汽车图标->PRD->在传输队列中找到请求号->点小汽车图标,单个传输->输入目标集团->一直打勾到底.等待一会儿,OK!3.传输队列中,没有找到客户需要传输的请求号.有以下原因:第一.你眼神不好,请用望远镜.第二.没有刷洗传输队列,每次传输必先刷一次.第三.顾问没有释放.打电话CALL他第四.顾问已经释放,但是由于是本地更改请求这种情况下,方法较复杂,需要重置该传输号的状态,如下:SE38->程序: TH_E070E->F8.如下图按照自己的需求,修改各个参数.例如:4. 关于程序的TH_E070E介绍如下:-SAP中request 记录在table E070中- 对于已经release的request可以通过程序TH_E070E重置状态,这样可以重新release生成文件.- 生成的文件在/usr/sap/trans/data, /usr/sap/trans/cofiles 中Name of comfile/TR/corr. :DEVK......Function (R,S,T,K,C,P) : WStatus (D,R,..) : DTarget system of comfi le/TR : PRDUSER : USERNAMEUPDATE : N (J) 是用JTR_DATUM : 2007.01.26TR_ZEIT : 15:10:09UPD_DZ : 要选中下面为主要选项说明type(Function)K Workbench request **W Customiz ing requestC Relocation of objects without development class changeO Relocation of objects with development class changeE Relocation of a complete developme nt classT Transport of copies **S Development/correctionR RepairX Unclassified taskQ Customizing taskG Piece list for CTS projectM Client transport requestP Piece list for upgradeD Piece list for Support PackageF Piece listStatusD Modifiable **L Modifiable, protectedA Modifiable, protectedO Releas e startedR Released **N Released (with import protection for repaired objects)。
abap message的用法
ABAP Message的用法一、什么是ABAP MessageABAP(Advanced Business Application Programming)是一种面向SAP系统的编程语言,用于开发SAP应用程序。
在ABAP中,ABAP Message是一种用于在程序中传递消息和错误信息的机制。
ABAP Message可以通过不同的方式生成和处理,为开发人员提供了一种有效的方式来管理程序中的消息和错误。
二、ABAP Message的生成方式ABAP Message可以通过以下几种方式生成:1. 使用消息类消息类是一种用于管理ABAP Message的对象。
开发人员可以在消息类中定义不同的消息编号、消息类型和消息文本。
通过调用消息类的方法,开发人员可以生成不同类型的ABAP Message。
2. 使用消息函数模块消息函数模块是一种预定义的ABAP函数模块,用于生成ABAP Message。
开发人员可以调用消息函数模块,并传递相应的参数来生成ABAP Message。
3. 使用系统消息ABAP系统中内置了一些预定义的ABAP Message,开发人员可以直接使用这些系统消息。
系统消息通常用于标准的系统错误或警告信息。
三、ABAP Message的类型ABAP Message可以分为以下几种类型:1. Error(E)Error类型的ABAP Message表示程序中的错误。
当程序执行遇到错误时,可以生成Error类型的ABAP Message,并将其显示给用户或其他程序进行处理。
2. Warning(W)Warning类型的ABAP Message表示程序中的警告信息。
当程序执行遇到一些不符合预期但不会导致程序中断的情况时,可以生成Warning类型的ABAP Message。
3. Information(I)Information类型的ABAP Message表示程序中的一般信息。
当程序需要向用户提供一些提示或说明时,可以生成Information类型的ABAP Message。
使用VBA进行邮件发送
使用VBA进行邮件发送在现代社会中,邮件已成为人们日常通信的重要方式之一。
无论是工作上还是个人生活中,邮件的使用频率都非常高。
在许多商业场景中,我们需要根据特定的条件自动发送邮件,这就需要使用VBA来编写邮件发送的代码。
VBA(Visual Basic for Applications)是一种可以用于Microsoft Office套件中各个应用程序的宏编程语言。
通过使用VBA,我们可以自动执行许多重复的任务,节省时间和劳动力。
下面我们将探讨如何使用VBA进行邮件发送。
首先,我们需要打开要发送邮件的应用程序,比如Microsoft Outlook。
在VBA中,可以使用`CreateObject`函数来创建一个Outlook应用程序对象。
以下是一个简单的代码示例:```vbaDim objOutlook As ObjectSet objOutlook = CreateObject("Outlook.Application")```接下来,我们需要创建一个邮件项,并设置相关的属性,比如发件人、收件人、主题和正文等。
以下是一个示例代码:```vbaDim objMail As ObjectSet objMail = objOutlook.CreateItem(0) ' 创建新邮件With objMail.Subject = "这是一封测试邮件" ' 设置主题.Body = "这是一封测试邮件的内容" ' 设置正文.To="*********************"'设置收件人邮箱地址.Send ' 发送邮件End With```上述代码中,我们使用了`.Subject`来设置邮件的主题,使用`.Body`来设置邮件的正文,使用`.To`来设置邮件的收件人。
最后,我们使用`.Send`方法来发送邮件。
abap email格式检查函数
在SAP中,ABAP是一种广泛使用的编程语言,用于开发和定制各种业务应用程序。
在日常工作中,我们经常会涉及到发送电流信箱的操作,而对于电流信箱位置区域的格式检查就显得至关重要。
在ABAP 中,有一些内置的函数可以帮助我们进行电流信箱格式的检查,其中就包括了“检查电流信箱位置区域格式”的功能模块。
在本文中,我将会从深度和广度的角度,结合个人观点和理解,探讨ABAP中的电流信箱格式检查函数,并为您介绍如何使用该功能模块。
1. 了解电流信箱格式检查的重要性在进行电流信箱位置区域的输入和存储时,很容易出现格式错误或者不规范的情况。
而这样的错误往往会导致发送邮件失败或者无法正常接收邮件。
及时进行电流信箱格式的检查就显得至关重要。
ABAP中提供的“检查电流信箱位置区域格式”功能模块,就是为了解决这一问题而设计的。
2. 使用检查电流信箱位置区域格式的函数在ABAP中,我们可以通过调用函数“EM本人L_CHECK”来对电流信箱位置区域进行格式检查。
该函数接收一个字符串类型的参数,即待检查的电流信箱位置区域。
在调用该函数后,系统会根据预定义的规则来判断输入的电流信箱位置区域是否符合标准格式。
如果符合,函数会返回TRUE;如果不符合,则返回FALSE。
3. 个人观点与理解在我看来,“检查电流信箱位置区域格式”功能模块在ABAP开发中具有非常重要的作用。
它可以帮助我们在程序中对用户输入的电流信箱位置区域进行实时检查,有效避免了因格式错误而导致的邮件发送失败的问题。
该功能模块的使用简单方便,不需要开发人员花费过多的时间和精力去编写复杂的检查逻辑。
总结通过本文的介绍,我们了解到了ABAP中的“检查电流信箱位置区域格式”功能模块的重要性和使用方法。
这个功能模块可以帮助我们轻松而准确地对电流信箱位置区域进行格式检查,保证了邮件发送的稳定性和可靠性。
在实际的开发过程中,我们应该充分利用这一功能,避免因电流信箱格式错误而带来的不必要麻烦。
使用VBA自动发送和处理电子邮件的方法
使用VBA自动发送和处理电子邮件的方法随着电子邮件的普及和广泛应用,人们对于快速发送和处理邮件的需求也越来越高。
使用VBA可以帮助我们实现自动发送和处理电子邮件的功能,提高工作效率。
本文将介绍使用VBA自动发送和处理电子邮件的方法,并提供示例代码供参考。
一、使用VBA自动发送电子邮件1. 首先,我们需要打开VBA编辑器,可以通过按下ALT + F11快捷键来打开VBA编辑器。
2. 在VBA编辑器中,选择您想要创建代码的工作簿或模块。
3. 在选定的工作簿或模块中,点击“插入”菜单,在下拉菜单中选择“模块”。
4. 在新建的模块中,编写以下代码:```VBASub SendEmail()Dim OutlookApp As ObjectDim OutlookMail As Object' 创建Outlook应用程序对象Set OutlookApp = CreateObject("Outlook.Application") ' 创建邮件对象Set OutlookMail = OutlookApp.CreateItem(0)' 设置邮件的发送人、收件人、主题和正文内容With OutlookMail.Subject = "这是邮件的主题".To = "收件人的邮箱地址".Body = "这是邮件的内容"' .Attachments.Add "附件的文件路径" (如果需要添加附件,可以取消注释此行代码,并将文件路径替换为实际附件的路径)' 发送邮件.SendEnd With' 释放资源Set OutlookMail = NothingSet OutlookApp = Nothing' 弹出提示框,显示邮件发送成功MsgBox "邮件已成功发送!"End Sub```5. 将代码中的邮件主题、收件人邮箱地址、邮件正文内容等信息替换为您需要发送的内容。
SAP邮件发送
SAP邮件发送此邮件发送为附件XLS⽂档,也可将参数设置为PDF,可发送PDF附件。
⼀、新建⾃定义表,如下: 存储邮箱地址。
若邮箱地址可直接从系统抓取则可忽略⼆、数据定义****-----------------------------------邮件发送---------------------------------------------CONSTANTS:gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab, "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TABgc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf. "CL_ABAP_CHAR_UTILITIES=>CR_LFDATA: i_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,i_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE, "receiversi_sendmail LIKE zsendmail OCCURS 0 WITH HEADER LINE,i_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE, "ASCII contents of object and attachments i_contents_hex LIKE solix OCCURS 0 WITH HEADER LINE, "Binary contents of object and attachments i_contents_bin LIKE solisti1 OCCURS 0 WITH HEADER LINE,i_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE, "attachments namew_doc_data LIKE sodocchgi1.DATA: c_mimetype TYPE char64 VALUE 'APPLICATION/MSEXCEL;charset=utf-16le'.DATA: v_xattach TYPE xstring.DATA: lv_string TYPE string.DATA: tab_lines LIKE sy-tabix,w_sent_all(1) TYPE c,w_error TYPE sy-subrc.DATA:num1 TYPE i.三、相关代码START-OF-SELECTION.PERFORM getdata.DESCRIBE TABLE gt_data LINES num1.IF num1 NE 0.IF sy-batch = 'X'.PERFORM send_mail.ELSE.PERFORM display_data.ENDIF.ENDIF.IF num1 EQ 0.MESSAGE '没有符合条件的数据 ' TYPE 'I'.ENDIF.FORM send_mail .PERFORM get_send_mail.***define mail main context****PERFORM define_mail_header.***dfine attachment*******************PERFORM define_mail_attachment.***get mail receiver*****************PERFORM get_receivers.*Send email message, although is not sent from SAP until mail send*program has been executed(rsconn01)PERFORM send_email_message.ENDFORM.FORM get_send_mail.SELECT * FROM zsendmailINTO CORRESPONDING FIELDS OF TABLE i_sendmail.IF matnr[] IS INITIAL .DELETE i_sendmail WHERE ztype NE '1'."成品ELSE.DELETE i_sendmail WHERE ztype NE '2'."复配料ENDIF.ENDFORM. " GET_SPFLI_DATAFORM define_mail_header .DATA: tmp_date LIKE sy-datum.DATA: tmp_char(30).tmp_date = sy-datum.CONCATENATE 'Overdue Batch ' sy-datum INTO tmp_char.********define subject and priority************IF matnr[] IS INITIAL.w_doc_data-obj_descr = '成品库存货龄表'. "Email Subject.ELSE.w_doc_data-obj_descr = '复配料库存货龄表'. "Email Subject.ENDIF.w_doc_data-priority = 1. "mail PRIORITY¡A 1 is highestw_doc_data-obj_langu = sy-langu.w_doc_data-obj_name = 'OFFER'. "Name of document..w_doc_data-sensitivty = 'O'. "Document sensitivity.********mail main context***********************i_contents_txt = '各位主管、同仁:'.APPEND i_contents_txt.i_contents_txt = ' '.APPEND i_contents_txt.IF matnr[] IS INITIAL.i_contents_txt = ' 附件为成品库存货龄表!'.ELSE.i_contents_txt = ' 附件为复配料库存货龄表!'.ENDIF.APPEND i_contents_txt.i_contents_txt = ' 此邮件为系统发送,不需要回复'.APPEND i_contents_txt.i_contents_txt = ' 如果您有任务疑问,请联系SAP管理员'.APPEND i_contents_txt.i_contents_txt = ' '.APPEND i_contents_txt.i_contents_txt = tmp_date.APPEND i_contents_txt.DESCRIBE TABLE i_contents_txt LINES tab_lines.READ TABLE i_contents_txt INDEX tab_lines.w_doc_data-doc_size = ( tab_lines - 1 ) * 255 + strlen( i_contents_txt ). ********count lines by man context*************CLEAR i_packing_list-transf_bin.i_packing_list-transf_bin = space. "ASCII format/binary formati_packing_list-head_start = 1.i_packing_list-head_num = 0.i_packing_list-body_start = 1.i_packing_list-body_num = tab_lines.i_packing_list-doc_type = 'RAW'.APPEND i_packing_list.ENDFORM. " DEFINE_MAIL_HEADERFORM define_mail_attachment .CONCATENATE lv_string'物料描述' gc_tab'物料组' gc_tab'⼯⼚' gc_tab'库存描述' gc_tab'批次' gc_tab'⾮限制库存数量' gc_tab'冻结库存数量' gc_tab'质检库存数量' gc_tab'单位' gc_tab'保质期(天)' gc_tab'货龄天数' gc_tab'距离失效天数' gc_crlfINTO lv_string.IF matnr[] IS NOT INITIAL.SELECT * FROM zmm028 INTO TABLE @DATA(lt_zmm028). SORT lt_zmm028 BY matnr.ENDIF.LOOP AT gt_data INTO gs_data ."增加前导零CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGinput = gs_data-matnrIMPORTINGoutput = gs_data-matnr.IF matnr[] IS INITIAL.CASE gs_data-extwg.WHEN '101' OR '103' OR '104' OR '106' OR '107' OR '190'. CHECK gs_data-hlts > 7.WHEN '102'."3CHECK gs_data-hlts > 3.WHEN '105'."30CHECK gs_data-hlts > 30.WHEN OTHERS.CONTINUE.ENDCASE.ELSE.READ TABLE lt_zmm028 INTO DATA(ls_zmm028)WITH KEY matnr = gs_data-matnr .IF sy-subrc NE 0.CONTINUE.ELSE.CHECK gs_data-hlts >= ls_zmm028-zday.ENDIF.ENDIF."去除前导零CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTINGinput = gs_data-matnrIMPORTINGoutput = gs_data-matnr.lv_string = lv_string &&gs_data-maktx && gc_tab &&gs_data-ewbez && gc_tab &&gs_data-werks && gc_tab &&gs_data-lgobe && gc_tab &&gs_data-charg && gc_tab &&gs_data-clabs && gc_tab &&gs_data-cspem && gc_tab &&gs_data-cinsm && gc_tab &&gs_data-meins && gc_tab &&gs_data-mhdhb && gc_tab &&gs_data-hlts && gc_tab &&gs_data-sxts && gc_crlf.ENDLOOP.* Convert string to xstring type* 'APPLICATION/MSEXCEL;charset=utf-16le'CALL FUNCTION 'SCMS_STRING_TO_XSTRING'EXPORTINGtext = lv_stringmimetype = c_mimetypeIMPORTINGbuffer = v_xattachEXCEPTIONSfailed = 1OTHERS = 2.* Add the file header for utf-16le. .IF sy-subrc = 0.CONCATENATE cl_abap_char_utilities=>byte_order_mark_littlev_xattach INTO v_xattach IN BYTE MODE.ENDIF.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGbuffer = v_xattachTABLESbinary_tab = i_contents_hex.***set attachment name, count size*******************DESCRIBE TABLE gt_data LINES tab_lines.tab_lines = tab_lines .i_packing_list-transf_bin = 'X'.i_packing_list-head_start = 1.i_packing_list-head_num = 0.i_packing_list-body_start = 1.i_packing_list-body_num = tab_lines.i_packing_list-doc_type = 'XLS'.i_packing_list-obj_name = 'ATTACHMENT'.i_packing_list-obj_descr = 'Finished Stock'. "成品库存货龄表修改为英⽂i_packing_list-doc_size = tab_lines * 255.APPEND i_packing_list.ENDFORM. " DEFINE_MAIL_ATTACHMENTFORM get_receivers .* Add the recipients email addressCLEAR i_receivers.REFRESH i_receivers.* SELECT * FROM zszmail.LOOP AT i_sendmail.* I_RECEIVERS-RECEIVER = 'pandeng@'."Email Addressi_receivers-receiver = i_sendmail-receiver.i_receivers-rec_type = 'U'. "Internet addressi_receivers-notif_read = ''.i_receivers-com_type = 'INT'.i_receivers-notif_del = ''.i_receivers-notif_ndel = ''.APPEND i_receivers.ENDLOOP.* ENDSELECT.ENDFORM. " GET_RECEIVERSFORM send_email_message.DATA: w_subrc LIKE sy-subrc.* Call the FM to post the message to SAPMAILCALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'EXPORTINGdocument_data = w_doc_data "Attributes of new documentput_in_outbox = 'X' "Flag: Move document to outbox after sendcommit_work = 'X' "An explicit COMMIT WORK is to be setIMPORTINGsent_to_all = w_sent_allTABLESpacking_list = i_packing_list "Information about structure of data tables object_header = i_object_headercontents_hex = i_contents_hexcontents_txt = i_contents_txt "ASCII contents of object and attachments receivers = i_receivers "Document recipients with send attributes EXCEPTIONStoo_many_receivers = 1document_not_sent = 2document_type_not_exist = 3operation_no_authorization = 4parameter_error = 5x_error = 6enqueue_error = 7OTHERS = 8.w_subrc = sy-subrc.WAIT UP TO 2 SECONDS.IF w_subrc EQ 0.SUBMIT rsconn01 WITH mode = 'INT' WITH output = spaceAND RETURN.ENDIF.ENDFORM. " SEND_EMAIL_MESSAGE。
ABAP 邮件发送 Jobs中Spool为附件
*&---------------------------------------------------------------------* *& Report YHCNCALC0_MAIL*&*&---------------------------------------------------------------------* *&*&*&---------------------------------------------------------------------*report yhcncalc0_mail.parameter: jobcount like tbtcm-jobcount,jobname like tbtcm-jobname,p_email1 like somlreci1-receiver,p_sender like somlreci1-receiver,p_delspl as checkbox.*DATA DECLARATIONdata: gd_recsize type i.* Spool IDstypes: begin of t_tbtcp.include structure tbtcp.types: end of t_tbtcp.data: it_tbtcp type standard table of t_tbtcp initial size 0,wa_tbtcp type t_tbtcp.* Job Runtime Parametersdata: gd_eventid like tbtcm-eventid,gd_eventparm like tbtcm-eventparm,gd_external_program_active like tbtcm-xpgactive,* gd_jobcount LIKE tbtcm-jobcount,* gd_jobname LIKE tbtcm-jobname,gd_stepcount like tbtcm-stepcount,gd_error type sy-subrc,gd_reciever type sy-subrc.data: w_recsize type i.data: gd_subject like sodocchgi1-obj_descr,it_mess_bod like solisti1 occurs 0 with header line,it_mess_att like solisti1 occurs 0 with header line,gd_sender_type like soextreci1-adr_typ,gd_attachment_desc type so_obj_nam,gd_attachment_name type so_obj_des.* Spool to PDF conversionsdata: gd_spool_nr like tsp01-rqident,gd_destination like rlgrap-filename,gd_bytecount like tst01-dsize,gd_buffer type string.* Binary store for PDFdata: begin of it_pdf_output occurs 0.include structure tline.data: end of it_pdf_output.constants: c_dev like sy-sysid value 'DEV',c_no(1) type c value ' ',c_device(4) type c value 'LOCL'.************************************************************************ *START-OF-SELECTION.start-of-selection.* Write statement to represent report output. Spool request is created * if write statement is executed in background. This could also be an* ALV grid which would be converted to PDF without any extra effort* WRITE 'Hello World'.new-page.commit work.new-page print off.if sy-batch eq 'X'.* PERFORM get_job_details.perform obtain_spool_id.*************************************** Alternative way could be to submit another program and store spool *** id into memory, will be stored in sy-spono.*submit ZSPOOLTOPDF2* to sap-spool* spool parameters %_print* archive parameters %_print* without spool dynpro* and return.************************************* Get spool id from program called above* IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.perform convert_spool_to_pdf.perform process_email.if p_delspl eq 'X'.perform delete_spool.endif.if sy-sysid = c_dev.wait up to 5 seconds.submit rsconn01 with mode = 'INT'with output = 'X'and return.endif.else.skip.write:/ 'Program must be executed in background in-order for spool', 'request to be created.'.endif.*---------------------------------------------------------------------* * FORM obtain_spool_id **---------------------------------------------------------------------* form obtain_spool_id.check not ( jobname is initial ).check not ( jobcount is initial ).select * from tbtcpinto table it_tbtcpwhere jobname = jobnameand jobcount = jobcount* AND stepcount = gd_stepcountand listident <> '0000000000'order by jobnamejobcountstepcount.read table it_tbtcp into wa_tbtcp index 1.if sy-subrc = 0.message s004(zdd) with gd_spool_nr.gd_spool_nr = wa_tbtcp-listident.message s004(zdd) with gd_spool_nr.else.message s005(zdd).endif.endform.**---------------------------------------------------------------------* ** FORM get_job_details * **---------------------------------------------------------------------* *FORM get_job_details.** Get current job details* CALL FUNCTION 'GET_JOB_RUNTIME_INFO'* IMPORTING* eventid = gd_eventid* eventparm = gd_eventparm* external_program_active = gd_external_program_active* jobcount = jobcount* jobname = jobname* stepcount = gd_stepcount* EXCEPTIONS* no_runtime_info = 1* OTHERS = 2.*ENDFORM.*---------------------------------------------------------------------* * FORM convert_spool_to_pdf * *---------------------------------------------------------------------* form convert_spool_to_pdf.call function 'CONVERT_ABAPSPOOLJOB_2_PDF'exportingsrc_spoolid = gd_spool_nrno_dialog = c_nodst_device = c_deviceimportingpdf_bytecount = gd_bytecounttablespdf = it_pdf_outputexceptionserr_no_abap_spooljob = 1err_no_spooljob = 2err_no_permission = 3err_conv_not_possible = 4err_bad_destdevice = 5user_cancelled = 6err_spoolerror = 7err_temseerror = 8err_btcjob_open_failed = 9err_btcjob_submit_failed = 10err_btcjob_close_failed = 11others = 12.check sy-subrc = 0.* Transfer the 132-long strings to 255-long stringsloop at it_pdf_output.translate it_pdf_output using ' ~'.concatenate gd_buffer it_pdf_output into gd_buffer.endloop.translate gd_buffer using '~ '.do.it_mess_att = gd_buffer.append it_mess_att.shift gd_buffer left by 255 places.if gd_buffer is initial.exit.endif.enddo.endform.*---------------------------------------------------------------------* * FORM process_email * *---------------------------------------------------------------------* form process_email.describe table it_mess_att lines gd_recsize.check gd_recsize > 0.perform send_email using p_email1.* perform send_email using p_email2.endform.*---------------------------------------------------------------------* * FORM send_email * *---------------------------------------------------------------------* * --> p_email * *---------------------------------------------------------------------* form send_email using p_email.check not ( p_email is initial ).refresh it_mess_bod.* Default subject mattergd_subject = 'Subject'.gd_attachment_desc = '工资计算日志'.* CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.it_mess_bod = '您好;'.append it_mess_bod.clear it_mess_bod .append it_mess_bod.工资计算结果日志'check p_delspl <> c_no.call function 'RSPO_R_RDELETE_SPOOLREQ'exportingspoolid = ld_spool_nr.endform.*&---------------------------------------------------------------------* *& Form SEND_FILE_AS_EMAIL_ATTACHMENT*&---------------------------------------------------------------------* * Send email*----------------------------------------------------------------------* form send_file_as_email_attachment tables it_messageit_attachusing p_emailp_mtitlep_formatp_filenamep_attdescriptionp_sender_addressp_sender_addres_typechanging p_errorp_reciever.data: ld_error type sy-subrc,ld_reciever type sy-subrc,ld_mtitle like sodocchgi1-obj_descr,ld_email like somlreci1-receiver,ld_format type so_obj_tp ,ld_attdescription type so_obj_nam ,ld_attfilename type so_obj_des ,ld_sender_address like soextreci1-receiver,ld_sender_address_type like soextreci1-adr_typ,ld_receiver like sy-subrc.data: t_packing_list like sopcklsti1 occurs 0 with header line,t_contents like solisti1 occurs 0 with header line,t_receivers like somlreci1 occurs 0 with header line,t_attachment like solisti1 occurs 0 with header line,t_object_header like solisti1 occurs 0 with header line,w_cnt type i,w_sent_all(1) type c,w_doc_data like sodocchgi1.ld_email = p_email.ld_mtitle = p_mtitle.ld_format = p_format.ld_attdescription = p_attdescription.ld_attfilename = p_filename.ld_sender_address = p_sender_address.ld_sender_address_type = p_sender_addres_type.* Fill the document data.w_doc_data-doc_size = 1.* Populate the subject/generic message attributes w_doc_data-obj_langu = sy-langu.w_doc_data-obj_name = 'SAPRPT'.w_doc_data-obj_descr = ld_mtitle .w_doc_data-sensitivty = 'F'.* Fill the document data and get size of attachment clear w_doc_data.read table it_attach index w_cnt.w_doc_data-doc_size =( w_cnt - 1 ) * 255 + strlen( it_attach ).w_doc_data-obj_langu = sy-langu.w_doc_data-obj_name = 'SAPRPT'.w_doc_data-obj_descr = ld_mtitle.w_doc_data-sensitivty = 'F'.clear t_attachment.refresh t_attachment.t_attachment[] = it_attach[].* Describe the body of the messageclear t_packing_list.refresh t_packing_list.t_packing_list-transf_bin = space.t_packing_list-head_start = 1.t_packing_list-head_num = 0.t_packing_list-body_start = 1.describe table it_message lines t_packing_list-body_num.t_packing_list-doc_type = 'RAW'.append t_packing_list.* Create attachment notificationt_packing_list-transf_bin = 'X'.t_packing_list-head_start = 1.t_packing_list-head_num = 1.t_packing_list-body_start = 1.describe table t_attachment lines t_packing_list-body_num.t_packing_list-doc_type = ld_format.t_packing_list-obj_descr = ld_attdescription.t_packing_list-obj_name = ld_attfilename.t_packing_list-doc_size = t_packing_list-body_num * 255. append t_packing_list.* Add the recipients email addressclear t_receivers.refresh t_receivers.t_receivers-receiver = ld_email.t_receivers-rec_type = 'U'.* t_receivers-com_type = 'INT'.t_receivers-com_type = 'TELFAX'.t_receivers-notif_del = 'X'.t_receivers-notif_ndel = 'X'.append t_receivers.call function 'SO_DOCUMENT_SEND_API1'exportingdocument_data = w_doc_dataput_in_outbox = 'X'sender_address = ld_sender_addresssender_address_type = ld_sender_address_type commit_work = 'X'importingsent_to_all = w_sent_alltablespacking_list = t_packing_list。
ABAP_Message_操作手册V1
[ABAP开发技术指南-消息(Message)] 2012年02月01日修改记录1 引言1.1 目的及范围本文档主要介绍SAP ABAP程序中有关MESSAGE的类型及使用方法,可适用于ABAP开发人员,分析人员使用。
1.2 参考资料•定义消息是SAP系统中常见单行简短信息,也可以视为是系统对程序的一种交互过程,用于在应用程序运行过程中向用户说明程序流程、提供错误信息或者结束提示。
消息一般出现在弹出对话框或者屏幕的状态栏中。
1.3 文档结构文档的各章节介绍的内容如下:•第2节消息类型•第3节消息创建•第4节消息调用格式•第5节消息的显示方式及对程序的影响•第6节消息涉及到的表和系统变量2 消息类型消息类型决定了消息在运行时的表现形式(例如状态栏信息、对话框信息和运行时错误等)和对程序流的影响方式(例如据需运行程序或中止程序等)。
每一个消息都能够以各种不同形式出现在报表程序中(因为消息类型不是预先定义的,而是使用时指定的)。
消息类型共有六种(必须为大写):◆I:Information message(提示消息)Information messages are normally displayed in a dialog box.◆S:Status message(成功消息)Status messages are displayed in the window of the subsequent dynpro in the status bar.◆E:Error message(错误消息)“E”类型的消息出现在屏幕PAI处理中,从而确保屏幕上的输入字段准备输入。
Error messages during the PAI processing of screens make input fields on screens ready for input.◆W:Warning(警告消息)“W”类型的消息出现在屏幕PAI处理中,从而确保屏幕字段再次输入。
abap message的用法
abap message的用法ABAP Message的用法ABAP Message是SAP系统中常用的一种消息提示方式,可以在程序中输出各种类型的消息,如信息、警告、错误等。
在SAP系统中,ABAP Message可以用于向用户提供程序执行的状态信息,也可以用于向用户提示程序执行过程中的异常情况。
ABAP Message的语法格式如下:MESSAGE {type} {msgno} {msgv1} {msgv2} {msgv3} {msgv4}.其中,type表示消息的类型,包括以下几种:- I:信息消息- W:警告消息- E:错误消息- A:中断消息msgno表示消息的编号,通常是一个四位数字,用于标识不同的消息。
msgv1、msgv2、msgv3、msgv4表示消息的参数,用于向用户提供更详细的信息。
下面是一个简单的ABAP Message的例子:DATA: lv_num TYPE i.lv_num = 10.IF lv_num > 5.MESSAGE 'The number is greater than 5.' TYPE 'I'.ELSE.MESSAGE 'The number is less than or equal to 5.' TYPE 'W'. ENDIF.在上面的例子中,如果lv_num大于5,则输出一条信息消息,否则输出一条警告消息。
除了直接在程序中使用ABAP Message外,还可以通过SE91事务代码来管理ABAP Message。
在SE91中,可以创建、修改和删除ABAP Message,也可以查看系统中已有的ABAP Message。
总之,ABAP Message是SAP系统中非常重要的一种消息提示方式,可以帮助用户更好地理解程序执行的状态和异常情况。
在编写SAP程序时,应该充分利用ABAP Message来提高程序的可读性和可维护性。
abap message的用法
abap message的用法
ABAPMessage是SAPABAP编程中常用的一种技术,用于进行信息传递、错误处理和提示。
在ABAP程序中使用ABAP Message,可以帮助开发者更好地控制程序流程,提高程序的可靠性和可维护性。
ABAP Message的使用方法比较简单,一般包括以下几个步骤: 1. 定义Message Class:定义一个Message Class,用于存放所有ABAP Message。
2. 定义Message Type:在Message Class中定义Message Type,包括Information、Warning、Error等。
3. 定义Message Number:在Message Type中定义Message Number,用于标识不同的ABAP Message。
4. 生成Message文本:在Message Class中生成ABAP Message 的文本信息。
5. 调用ABAP Message:在程序中调用ABAP Message,在需要提示信息或者处理错误的地方使用ABAP Message输出信息。
除了以上基本用法,ABAP Message还支持多语言、替换参数等高级用法,可以满足更多的应用需求。
- 1 -。
基于ABAP的FTP操作
基于ABAP的FTP操作ABAP(Advanced Business Application Programming)是一种面向业务应用程序开发的编程语言,由德国软件公司SAP开发和推广。
通过ABAP语言,开发人员可以在SAP系统中编写和修改各种业务逻辑和功能。
FTP(File Transfer Protocol)是一种用于在网络上传输文件的协议。
ABAP提供了一些功能模块和类,用于在SAP系统中进行FTP操作。
在ABAP中,可以使用以下功能模块进行FTP操作:1.FTP_CONNECT:可以使用此功能模块在SAP系统和FTP服务器之间建立连接。
需要提供FTP服务器的主机名、端口号、用户名和密码。
3.FTP_DISCONNECT:可以使用此功能模块断开与FTP服务器的连接。
需要提供已建立的连接ID。
以下是一个使用ABAP进行FTP操作的示例代码:DATA: lv_connection TYPE n,lv_server TYPE string,lv_user TYPE string,lv_password TYPE striNG.lv_user = 'ftp_user'.lv_password = 'ftp_password'.CALLFUNCTION'FTP_CONNECT'EXPORTINGserver = lv_serveruser = lv_userpassword = lv_passwordIMPORTINGconnection = lv_connectionEXCEPTIONSCALLFUNCTION'FTP_COMMAND'EXPORTINGconnection = lv_connectionEXCEPTIONSENDIF.CALLFUNCTION'FTP_DISCONNECT'EXPORTINGconnection = lv_connectionEXCEPTIONS需要注意的是,FTP操作可能涉及到网络传输和文件访问,因此需要确保在访问FTP服务器时具有适当的权限和网络连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i_objpack-body_num = v_lines_bin.
i_objpack-doc_type = 'XLS'.
i_objpack-obj_name = 'text'.
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc = 0.
DATA: tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
enter(2) TYPE c VALUE cl_abap_char_utilities=>cr_lf,
n TYPE i.
DATA: BEGIN OF headtab OCCURS 0 ,
APPEND headtab.
ENDLOOP.
DESCRIBE TABLE headtab LINES n.
LOOP AT intab ASSIGNING <f_intab>.
DO n TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE <f_intab> TO <f_field>.
ELSE.
CONDENSE str.
ENDIF.
ELSE.
* SHIFT str LEFT DELETING LEADING '0' .
ENDIF.
CONCATENATE str2 tab str INTO str2.
*& Form itabtostr
*&---------------------------------------------------------------------*
FORM itabtostr TABLES intab
USING outstr TYPE string.
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
*&---------------------------------------------------------------------*
*& Form send_mail
*&---------------------------------------------------------------------*
REPORT ZTEST01.
DATA: i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
object_header = v_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
receivers = i_reclist
DATA: tmpstr TYPE string .
CLEAR: tmpstr,i_record,i_record[].
PERFORM itabtostr TABLES itab_text USING tmpstr.
PERFORM strtorecord TABLES i_record USING tmpstr filelen.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
i_objpack-body_num = v_lines_txt.
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
**内表作为邮件附件
v_docchgi-sensitivty = 'F'. "Functional object
v_docchgi-doc_size = v_lines_txt * 255.
v_docchgi-obj_descr = 'Mail标题'.
i_objtxt = 'Line1第一行'.
APPEND LINES OF i_record TO i_objbin.
DESCRIBE TABLE i_record LINES v_lines_bin.
DESCRIBE TABLE i_objbin LINES v_lines_bin_all.
i_objpack-transf_bin = 'X'.
length TYPE i ,
decimals TYPE i,
type_kind TYPE c,
name(30) TYPE c,
END OF headtab.
DATA descr_ref TYPE REF TO cl_abap_structdescr.
ff1(20) ,
ff2(40) ,
ff3 TYPE i,
END OF itab_text.
START-OF-SELECTION.
itab_text-ff1 = 'skdfksd'.
itab_text-ff2 = '第一行'.
* text
*----------------------------------------------------------------------*
FORM send_mail .
v_docchgi-obj_name = 'Text'.
v_docchgi-expiry_dat = sy-datum + 2 . "过期日期
EXPORTING
document_data = v_docchgi
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = i_objpack
APPEND i_objtxt.
i_objtxt = 'Line2第二行'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
i_objpack-transf_bin = ''.
i_objpack-head_start = 1.
v_lines_bin TYPE i,
v_docchgi TYPE sodocchgi1,
v_lines_bin_all TYPE i ,
filelen TYPE i.
DATA: BEGIN OF itab_text 0 , "内表作为邮件附件
itab_text-ff3 = 123.
APPEND itab_text.
itab_text-ff1 = 'ksssd'.
itab_text-ff2 = '第二行'.
itab_text-ff3 = 456.
APPEND itab_text.
PERFORM send_mail.
i_objpack-doc_size = v_lines_bin * 255.
CONCATENATE 'itab_attch.xls' '' INTO i_objpack-obj_descr."附件名
APPEND i_objpack.
**接收人
CLEAR i_reclist.
i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
v_objhead TYPE soli_tab ,
v_lines_txt TYPE i,
FIELD-SYMBOLS: <comp_wa> TYPE abap_compdescr ,
<f_field> ,
<f_intab> TYPE ANY .
DATA:str TYPE string,
str2 TYPE string ,
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.
ENDIF.
ENDFORM. " send_mail
*&---------------------------------------------------------------------*
SEARCH str FOR '-'.
IF sy-subrc = 0 AND sy-fdpos <> 0.
SPLIT str AT '-' INTO str text1.