SAP-ABAP-DMS文档管理开发
- 格式:docx
- 大小:119.27 KB
- 文档页数:11
SAP ABAP开发者必备技能SAP是企业级的软件系统,而ABAP是SAP的编程语言。
ABAP的全称是Advanced Business Application Programming,是一种高级商业应用编程语言。
SAP ABAP开发者必备技能是指那些在使用ABAP进行开发时必需的技能和知识。
在本文中,我将探讨SAP ABAP开发者必备技能。
一、扎实的ABAP编程基础要成为一名SAP ABAP开发者,首先必须具备扎实的ABAP编程基础。
ABAP是一种面向对象的编程语言,与其他语言(例如Java、C#)相比,ABAP的应用场景更为专业和特定。
曾经学习过其他编程语言的人们可能会发现ABAP与它们之间存在很多的差距和限制。
因此,建议在学习ABAP之前先了解其基础,包括各种数据类型、控制语句、函数以及模块等等。
同时学习SAP的数据结构和业务流程结构也是非常重要的。
二、掌握SAP的业务逻辑作为企业级软件系统,SAP需要满足多种复杂的业务逻辑。
因此,成为一名SAP ABAP开发者需要了解SAP系统的业务流程,并且需要理解这些业务流程是如何在SAP系统上实现的。
了解业务逻辑对于优化开发工作流程和代码的质量非常重要。
三、良好的数据库基础知识SAP系统最主要的功能是管理企业的各种数据,因此对于SAP ABAP开发人员来说,必须具备良好的数据库基础知识,包括SQL语句的编写和数据库设计。
学习ABAP开发不仅是阅读和编写代码,还涉及到数据库操作、数据导入和导出等方面的知识。
数据的有效管理是SAP ABAP开发工作的关键,它对于SAP系统的各个部分都非常重要,包括数据迁移、调试、性能优化等等。
四、熟悉SAP的层级结构和模块SAP系统具有复杂的层级结构和模块,SAP ABAP开发人员需要理解SAP系统中的每个分层结构和模块的应用方式。
有效的掌握层级结构和模块有助于更好的理解整个系统的技术架构,并且可以快速开发和测试SAP的应用程序。
SAP增强应用实例SAP增强大家都很熟悉,在此不再详细讲解,下面只是通过一个实例来展示一下增强的应用。
系统增强实例为建立工单前进行校验,如没有进行标准成本发布则提示错误信息E。
T-code:CMOD通过增强程序我们可以控制相关应用,如果你不知道到底功能是用到的哪个增强,那么请看我附录上的列表。
我们以ppco0006举例如下:如图2.我们需要的是制定我们的组件,如图3.通过功能退出增加增强语句:如图4:双击程序后加入如下语句~~~~if sy-tcode <> 'CK11N' and sy-tcode <> 'CK40N'.data:begin of l_matnr,matnr like mbew-matnr,VPRSV like mbew-VPRSV,vjvpr like mbew-vjvpr,pprdl like mbew-pprdl,lplpr like mbew-lplpr,end of l_matnr.select single matnr vprsv vjvpr pprdl lplpr from mbew into l_matnrwhere matnr = CAUFVD_IMP-MA TNR* and pprdl <> ''* and lplpr <> ''and bwkey = CAUFVD_IMP-WERKS.* and vjvpr = 'S'.if l_matnr-vprsv = 'V'.exit.elseif sy-subrc <> 0 or ( l_matnr-pprdl is initial and l_matnr-lplpr is initial ).message e888(sabapdocu) with '物料' CAUFVD_IMP-MATNR'没有做成本估算, 不能创建生产订单,请通知SAP 方丈,yeah~~~!'.exit.endif.endif.OK,快去看看你增强后的效果吧~~~~~¥%&%&*(*(SAP所有模块用户出口:用户出口名称短文本描述0VRF0001 客户指定路线确定AAIC0001 IM 总结: 在选择后处理数据AAIC0002 IM 总结: 在选择后处理指定的输入项AAIP0001 IM 追溯: 实际价值对预算类别的分配AAIP0002 IM 追溯: 定义用户定义的指标AAIP0003 IM 追溯: 定义用户定义的特性AAIR0001 IM-IS: 适用请求报表中的用户值字段AAIR0002 IM-FA: 拨款申请的用户字段AAIR0003 IM: 创建拨款申请中的PM 定单时工作场所的分配AAIR0004 IM 追溯: 定义用户定义的特性AAIS0003 投资计量对资产的实际结算AAIS0004 全部计划值或预算值的结算AAPM0001 资产会计和工厂维护的集成ACBAPI01 会计核算: 对BAPI 界面的客户增强功能ACCID001 会计核算的IDoc 过程ACCID002 支出会计的IDoc 处理ACCOBL01 代码块中PAI 和PBO 的客户出口AD010001 更改对象清单及其层次AD010002 定界选择和/或过滤已定数据AD010003 创建自定义动态项目特性AD010005 创建自定义资源AD010006 菜单退出:更改动态项目值AD010007 更改DI 处理信息AFAR0001 External determination of ref. value for dep. calculation AFAR0002 External determination of depreciationAFAR0003 外部转换方式AFAR0004 报废比例值的确定AINT0001 当记帐资产时进行扩展的检查AINT0002 出入流水中冲销帐户的替代...AINT0003 定义投资支持再付款的百分比/金额AINT0004 更改某范围已过帐金额AINT0005 虚拟扩展语法检查. 不使用。
abap 开发手册ABAP(Advanced Business Application Programming)是一种用于SAP系统开发的编程语言。
作为SAP系统的核心开发语言,ABAP 在企业应用中起到了至关重要的作用。
本文将为您提供一份ABAP开发手册,帮助您了解ABAP的基本概念、语法规则以及常用的开发技巧。
一、ABAP简介ABAP是一种面向业务应用的高级编程语言,它基于SAP系统的数据结构和功能模块进行开发。
ABAP可以对SAP系统的各个模块进行定制,实现企业的业务需求。
ABAP开发可以包括数据处理、用户界面设计、报表生成等多个方面。
二、ABAP开发环境1. ABAP开发工具:SAP提供了专门的开发工具集,如ABAP Workbench和Eclipse ABAP Development Tools,用于ABAP程序的创建和管理。
2. ABAP编辑器:开发人员可以使用ABAP编辑器编写ABAP程序代码,并完成调试和维护工作。
3. 数据字典:数据字典是ABAP开发中用于定义和管理数据库结构的工具。
通过数据字典,开发人员可以创建和维护表、数据类型、域以及其他数据库对象。
三、ABAP语法规则1. 关键字和标识符:ABAP语言中有许多关键字,如IF、ELSE、LOOP等,用于实现程序逻辑。
开发人员可以使用自定义的标识符来命名变量、函数等。
2. 数据类型:ABAP提供了多种数据类型,包括整型、字符型、日期型等。
开发人员可以根据需要选择合适的数据类型。
3. 控制结构:ABAP支持各种控制结构,如条件语句(IF、CASE)、循环语句(DO、WHILE)等,用于实现程序的逻辑流程控制。
四、ABAP开发技巧1. 模块化开发:将程序分割成模块化的部分,提高代码的可读性和可维护性。
可以使用函数模块、方法、子程序等实现模块化开发。
2. 错误处理:在ABAP开发中,合理处理错误是至关重要的。
使用TRY...CATCH块、处理类等机制,可以有效捕捉并处理异常情况。
SAP-EAM系统的二次开发仝文革【期刊名称】《中国设备工程》【年(卷),期】2012(000)010【总页数】2页(P9-10)【作者】仝文革【作者单位】中欧博雅信息科技公司【正文语种】中文对SAP-EAM系统功能不足的问题进行了分析总结,并提出相应的二次开发利用的解决方案,以解决企业资产全寿命周期管理过程中所涉及业务的管理需求。
一、SAP-EAM系统概述SAP-EAM系统解决的是资产从投资规划、采购与安装、运行维护直到退役处理的全寿命周期过程中的业务需求问题。
在该过程中,SAP-EAM系统还利用其报表功能,为企业各级领导和用户提供资产管理决策、设备管理统计分析所需的统计报表。
由于SAP系统是以功能模块形式出现的,SAP-EAM系统必然要使用几个模块进行跨模块的功能组合之后才能有效实现资产全寿命周期的业务需求。
在SAP-EAM系统中,主要涉及和使用到SAP系统的PM(设备维护)、CO(成本会计)、AM(资产管理)、PS(项目管理)、MM(物资管理)、DMS(文档管理)等功能模块。
当企业的资产管理水平足够高和足够精细化时,可能还会用到HR(人力资源)、QM(质量管理)等模块。
在上述模块中,PM模块是SAP-EAM系统的核心模块。
二、SAP-EAM系统在企业中的使用状况及存在问题1.使用状况及存在的问题从国内已经实施SAP系统PM模块的企业来看,PM模块的大部分功能由于各种原因而没有很好地利用起来,通常成了为企业财务部门服务的成本收集器和记录设备台账的数据库。
最终的结果就是SAP实施方说PM模块功能强大,可以解决企业设备管理中的绝大多数业务需求;而企业使用方却不太认同,还得配合其他系统来完成设备管理中的绝大部分业务。
就功能和业务要求更加集成的SAP-EAM资产管理系统而言,由于其把SAP系统更多的模块功能和业务流程进行了集成和组合,就要求企业用户和实施顾问要进行更加广泛的业务集成和解决方案讨论工作。
SAP仓库管理操作手册仓库管理操作手册1.介绍本操作手册是为了指导用户正确操作SAP仓库管理系统而编写的。
文档将详细介绍仓库管理系统的各项功能操作,帮助用户掌握系统的使用方法。
2.登录与系统设置2.1 登录在浏览器中输入系统登录地质,并输入用户名和密码进行登录。
2.2 系统设置介绍系统设置功能的各项配置,包括语言设置、用户权限管理等。
3.仓库管理基础知识3.1 仓库概述对仓库管理的基本概念进行介绍,包括仓库类型、存储类型等。
3.2 仓库结构详细描述仓库管理系统中的仓库、存储区、存储单元等组织结构。
3.3 物料主数据介绍物料主数据的创建与维护方法,包括物料类型、基本视图等。
3.4 数量管理介绍如何对仓库中的物料进行入库、出库以及库存盘点等操作。
4.入库管理4.1 入库凭证详细介绍入库凭证的创建过程,包括采购订单入库、生产订单入库等。
4.2 货物移动介绍货物移动过程中的各种类型,包括物料的移动、批次的转移等。
4.3 货物质检详细描述货物质检的过程和方法,包括质检记录的查看与维护等。
5.出库管理5.1 出库凭证介绍出库凭证的创建方法,包括销售订单出库、发货单出库等。
5.2 发货过程详细描述发货过程中的各项操作,包括拣配货物、打包装箱等。
5.3 出库过账介绍出库过账的方法和注意事项,包括库存更新等相关操作。
6.库存管理6.1 库存查询介绍如何进行库存的查询,包括按物料、按仓库等多种方式。
6.2 库存调整详细描述库存调整的过程和方法,包括物料批次的调整等。
6.3 库存盘点介绍库存盘点的操作流程和注意事项,包括盘点方案的创建与执行。
7.报表与分析7.1 库存报表介绍库存报表的和使用方法,包括库存状况报表、库存周转报表等。
7.2 分析工具详细描述系统中提供的各种库存分析工具,包括ABC分析、XYZ 分析等。
8.附件本文档涉及的附件包括相关的截图和示例数据,供用户参考和使用。
9.法律名词及注释本文所涉及的法律名词及其注释,以确保用户对相关法律概念的理解。
SAPABAP开发中常用的方法总结SAP ABAP(Advanced Business Application Programming)是SAP 系统中一种常用的开发语言,用于基于SAP的企业应用程序开发。
在SAP ABAP开发过程中,有一些常用的方法可以帮助开发人员更高效地完成开发任务。
下面是一些常用的SAP ABAP开发方法的总结:1.数据读取方法:-SELECT语句:用于从数据库表中读取数据。
-READTABLE语句:用于从内部表中读取数据。
-GET语句:用于从SAP系统中获取数据。
2.数据修改方法:-UPDATE语句:用于向数据库表中插入、更新或删除数据。
-MODIFY语句:用于修改内部表中的数据。
-MODIFY语句(DATABASE):用于在数据库表中修改数据。
3.数据处理方法:-LOOP语句:用于对内部表中的数据进行循环处理。
-APPLY_FILTER函数模块:用于在内部表中应用过滤条件。
-SORT语句:用于对内部表中的数据进行排序。
4.日期和时间处理方法:-SY-DATUM系统变量:用于获取当前日期。
-SY-UZEIT系统变量:用于获取当前时间。
-CONVERT_TO_TIMESTAMP函数模块:用于将日期和时间字符串转换为时间戳格式。
5.字符串处理方法:-CONCATENATE语句:用于连接多个字符串。
-REPLACE语句:用于替换字符串中的子字符串。
-SPLIT语句:用于将字符串拆分为多个子字符串。
6.异常处理方法:-TRY...CATCH语句:用于捕获和处理异常。
-MESSAGE语句:用于向用户显示错误消息。
-ASSERT语句:用于在代码中插入断言,用于调试和测试。
7.数据类型转换方法:-MOVE语句:用于将一个数据对象的值复制给另一个数据对象。
-CAST语句:用于在不同的数据类型之间进行转换。
8.函数模块方法:-CALLFUNCTION语句:用于调用SAP系统中的函数模块。
sap标准仓库管理系统的流程设计与实现SAP标准仓库管理系统是SAP的一个模块,它提供了一套完整的流程来管理仓库的日常运作和库存管理。
下面是对SAP标准仓库管理系统流程的一个简要设计和实现:1. 仓库内目录管理:- 设定仓库内物料的目录结构和仓位布局,确保物料可以方便地存放和查找。
- 创建物料主数据,在SAP系统中登记物料的基本信息,如物料编号、描述、单位等。
2. 收货管理:- 创建采购订单,将所购物料的信息录入系统。
- 收货时,将实际到货的物料信息登记在系统中,并与采购订单进行比对。
- 确认收货,更新库存数量。
- 生成收货单据。
3. 货物储存管理:- 执行物料的质量检查,并储存到合适的仓位中。
- 确保库存的安全和有序。
4. 库存管理:- 盘点库存,跟踪实际库存和系统库存的差异,并进行调整。
- 进行库存调拨,将物料从一个仓库调拨到另一个仓库。
5. 发货管理:- 创建销售订单,在系统中记录销售的物料信息。
- 按照销售订单出库物料,并更新库存数量。
- 生成发货单据。
6. 运输管理:- 将已出库的物料进行打包并分配到合适的运输方式。
- 创建运输订单,将发货物料的信息录入系统。
- 安排运输工具进行物料的运输。
7. 库存盘点:- 定期或不定期进行全面的库存盘点。
- 将实际库存与系统库存进行比对,找出差异并进行调整。
8. 报表和分析:- 通过SAP系统的报表和分析功能,可生成各种仓库管理相关的报表和统计数据,如库存量、入库率、出库率、库存周转率等。
以上是SAP标准仓库管理系统的基本流程设计和实现方式。
具体的实施过程可能会有一些差异,因此在实际应用中需要根据具体的业务需求和组织结构进行定制化的配置和开发。
工作流开发流程2012年02月14日修改记录目录1文档结构 (1)1.1SAP工作流术语 (1)2BUSINESS OBJECT的创建 (1)2.1什么是B USINESS O BJECT (1)2.2B USINESS O BJECT的组成 (1)2.3创建B USINESS O BJECT的步骤 (2)2.3.1TCode:SWO1,输入BO的名字,点击创建 (2)2.3.2输入BO的属性,其中Application为S (2)2.3.3创建BO的Key,光标放到Key fields上,点击Create,选择NO. (2)2.3.4光标放在Methods上,点击创建,选择NO (3)2.3.5光标放到Events上,点击Create,先创建一个触发工作流的Event (4)2.3.6在Interfaces中,添加一个接口IFAPPROVE (5)2.3.7修改新建的Method,Event状态 (5)2.3.8Business Object已经创建完毕,整体截图 (6)3工作流模板的开发 (6)3.1工作流模板的创建 (6)3.2CE新开发工作流步骤介绍(WS99900049为例) (7)3.2.1排除工作流触发者(类型:Container Operation) (7)3.2.2检查Department字段(类型:Condition) (7)3.2.3Wait for release object to be changed (类型:Fork) (8)3.2.4逻辑删除工作流(类型: Wait) (8)3.2.5check if steps = 0 (类型:Loop) (9)3.2.6根据TransType来执行Rule(类型:Multiple Condition) (9)3.2.7审批任务(类型:Activity) (9)3.2.8同意- 排除当前用户(类型:Container Operation) (10)3.2.9同意- 审批通过Steps减1(类型:Container Operation) (11)3.2.10同意- Current_Step加1(类型:Container Operation) (11)3.2.11同意- 是否是最后的审批(类型:Condition) (12)3.2.12同意- 判断拒绝原因是否为空(类型:Condition) (12)3.2.13同意- 拒绝原因为空–发送成功邮件(类型:Send Mail) (12)3.2.14同意- 拒绝原因不为空–发送审批失败邮件(类型:Send Mail) (13)3.2.15拒绝- 审批被拒绝Steps赋值为0(类型:Container Operation) (13)3.2.16拒绝- 发送审批被拒绝邮件(类型:Send Mail) (13)4审批屏幕的接口定义及调用 (14)4.1接口定义 (14)4.2调用方式 (14)5触发工作FUNCTION MODULE编写 (16)5.1接口的定义 (16)5.2查询E VENT触发需要的参数 (16)5.2.1查询录入合同的详细信息 (16)5.2.2查询录入人的姓名及交易类型 (16)5.2.3查询录入人的所在机构号 (17)5.2.4拼接BO的KEY (17)5.3给E VENT C ONTAINER里面的变量赋值 (17)5.4调用触发工作流的FM (18)文档结构SAP工作流术语SAP 工作流术语简写描述Workflow Template WF SAP工作流模板是用基于SAP平台的工作流而开发出来运行于SAP 系统中的业务工作流,用户可以自定义各种类型的工作流模板。
SAP ABAP DMS文档开发1.用到的BAPI:BAPI_DOCUMENT_CREATE2,ZBAPI_DOCUMENT_CHECKOUTVIEW2,BAPI_DOCUMENT_DELETE_DIRECT2.其中ZBAPI_DOCUMENT_CHECKOUTVIEW2是从标准的BAPI_DOCUMENT_CHECKOUTVIEW2改写(标准的在导出文档时,会自定义一个文档名称);改动代码如下:a)新增函数组ZMM_CVBAPIb)将LCVBAPITOP的定义对象拷贝到LZMM_CVBAPITOPc)在LZMM_CVBAPITOP最后添加如下:INCLUDE lcvbapif01.INCLUDE lcvbapif02.INCLUDE lcvbapif03.INCLUDE lcvbapif04.INCLUDE lcvbapif05.INCLUDE lcvbapif06.INCLUDE lcvbapif07.d)拷贝函数BAPI_DOCUMENT_CHECKOUTVIEW2到新ZBAPI_DOCUMENT_CHECKOUTVIEW2,添加IMPORT参OR,并修改代码。
3.以下为参考代码:* 文档类型CONSTANTS: con_dokar(3) VALUE 'ZQX'.* 存储类别CONSTANTS: con_storage_cat(10) VALUE 'DMS_C1_ST'.FORM frm_creat_file.DATA: lv_rc TYPE i,lt_ TYPE WITH HEADER LINE.DATA: lv_ TYPE filep,lv_path TYPE filep.DATA: lv_docnumber TYPE bapi_doc_aux-docnumber.DATA: ls_documentdata TYPE bapi_doc_draw2,ls_documentdatax TYPE bapi_doc_drawx2, "bapi_doc_draw 2x,lt_objectlinks TYPE TABLE OF bapi_doc_drad WITH HEADER LINE,lt_documentfiles TYPE TABLE OF bapi_doc_files2 WITH HEADER LINE,ls_return TYPE bapiret2.DATA: t_tdwp TYPE TABLE OF tdwp WITH HEADER LINE.DATA: name TYPE draw-filep,ext(64) TYPE c.CALL METHOD cl_gui_frontend_services=>EXPORTINGwindow_title = '选择文件'default_extension = '*'CHANGING= lt_[]rc = lv_rc EXCEPTIONS= 1cntl_error = 2error_no_gui = 3not_supported_by_gui = 4OTHERS = 9.IF lt_[] IS INITIAL.EXIT.ENDIF.READ TABLE lt_ INDEX 1.*解析路径文件PERFORM frm_split_path_lt_-CHANGING lv_ lv_path.name = lv_.WHILE name CA '.'.SPLIT name AT '.' INTO ext name.ENDWHILE.CONCATENATE '.' name INTO name.TRANSLATE name TO LOWER CASE.CALL FUNCTION 'CV120_DOC_GET_APPL'EXPORTINGpf_file = nameTABLESptx_tdwp = t_tdwp.IF t_tdwp[] IS INITIAL.MESSAGE s001 WITH '不支持此类型文件'.ENDIF.READ TABLE t_tdwp INDEX 1.ls_documentdata-documenttype = con_dokar.ls_documentdata-documentversion = '00'.ls_documentdata-documentpart = '000'.ls_documentdata-description = '凭证描述'.ls_documentdata-username = sy-uname.* ls_documentdata-ecnumber = '123'.READ TABLE t_tdwp INDEX 1.lt_document = 'ZQX'.lt_document = con_storage_cat.lt_document = t_tdwp-dappl.lt_document = lv_path.lt_document = lv_.lt_document = 'X'.APPEND lt_documentfiles.CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'EXPORTINGdocumentdata = ls_documentdataIMPORTINGdocumentnumber = lv_docnumberreturn = ls_returnTABLESobjectlinks = lt_objectlinksdocumentfiles = lt_documentfiles.IF ls_return-type = 'E' OR lv_docnumber IS INITIAL.* MESSAGE e001 WITH '上传文件出错,请联系管理员'.MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_retu rn-numberWITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.MESSAGE s001 WITH '上传成功'.ENDIF.wa_ = lv_docnumber.wa_ = lv_.wa_ = wa_xqjh_h-yk_planno.wa_ = name.wa_ = sy-datum.wa_ = sy-uzeit.wa_ = sy-uname.APPEND wa_it_file.IF wa_xqjh_h-yk_planno IS NOT INITIAL.MODIFY ztmm_xqjh_wa_file.COMMIT WORK AND WAIT.ENDIF.ENDFORM. " FRM_UPLOAD_FILE*&---------------------------------------------------------------------* *& Form frm_split_path_file*&---------------------------------------------------------------------* * text拆分路径和文档名*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM frm_split_path_file USING uv_fullname CHANGING cv_ cv_pathn ame.DATA: lt_match TYPE match_result_tab,ls_match LIKE LINE OF lt_match.FIND ALL OCCURRENCES OF '\' IN uv_fullname IN CHARACTER MOD E RESULTS lt_match.IF NOT lt_match IS INITIAL.LOOP AT lt_match INTO ls_match.ENDLOOP.ADD 1 TO ls_match-offset.cv_pathname = uv_fullname(ls_match-offset).cv_ = uv_fullname+ls_match-offset.ENDIF.ENDFORM.*&---------------------------------------------------------------------* *& Form FRM_READ_FILE*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM frm_read_file .DATA: lv_string VALUE 'C:\XQJH1'.DATA: lv_path TYPE string.DATA: lv_result TYPE abap_bool.DATA: lv_rc TYPE i.DATA: lv_line TYPE i.DATA: lv_originalpath TYPE bapi_doc_aux-,lv_or TYPE bapi_doc_aux-.DATA: ls_document bapi_doc_files2,ls_return TYPE bapiret2.lv_result = cl_gui_frontend_services=>directory_exist( directory = lv_file ).IF lv_result <> 'X'.CALL METHOD cl_gui_frontend_services=>directory_createEXPORTINGdirectory = lv_file CHANGINGrc = lv_rc EXCEPTIONSdirectory_create_failed = 1cntl_error = 2error_no_gui = 3directory_access_denied = 4directory_already_exists = 5path_not_found = 6unknown_error = 7not_supported_by_gui = 8wrong_parameter = 9OTHERS = 10.IF lv_rc <> 0 OR sy-subrc <> 0.MESSAGE e001 WITH '文件路径拒绝访问'.ENDIF.ENDIF.GET CURSOR LINE lv_line.READ TABLE it_wa_lv_line.CONCATENATE lv_file '\' INTO lv_originalpath.lv_or = wa_.CALL FUNCTION 'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_documentpart = '000'documentversion = '00'documentfile = ls_documentfileoriginalpath = lv_originalpathor = lv_orIMPORTINGreturn = ls_return.IF ls_return IS NOT INITIAL.MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_retu rn-numberWITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.ENDIF.CONCATENATE lv_originalpath lv_or INTO lv_path.CALL METHOD cl_gui_frontend_services=>executeEXPORTINGdocument = lv_pathsynchronous = 'X'EXCEPTIONScntl_error = 1error_no_gui = 2bad_parameter = 3= 4path_not_found = 5= 6error_execute_failed = 7synchronous_failed = 8not_supported_by_gui = 9OTHERS = 10.IF sy-subrc <> 0.* Implement suitable error handling hereMESSAGE s001 WITH '打开文档失败' DISPLAY LIKE 'E'.ENDIF.ENDFORM. " FRM_READ_FILE*&---------------------------------------------------------------------* *& Form FRM_DOWN_FILE*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM frm_down_file .DATA: lv_ TYPE string.DATA: lv_path TYPE string.DATA: lv_path_c(100) TYPE c.DATA: lv_fullpath TYPE string.DATA: lv_result TYPE abap_bool.DATA: lv_rc TYPE i.DATA: lv_line TYPE i.DATA: lv_originalpath TYPE bapi_doc_aux-,lv_or TYPE bapi_doc_aux-.DATA: ls_document bapi_doc_files2,ls_return TYPE bapiret2.GET CURSOR LINE lv_line.READ TABLE it_wa_lv_line.lv_ = wa_.CALL METHOD cl_gui_frontend_services=>EXPORTINGwindow_title = '选择位置'* default_extension =default_ = lv_* with_encoding =* =* initial_directory =* prompt_on_overwrite = 'X'CHANGING= lv_path = lv_pathfullpath = lv_fullpath EXCEPTIONScntl_error = 1error_no_gui = 2not_supported_by_gui = 3invalid_default_ = 4OTHERS = 5.IF sy-subrc <> 0.EXIT.ENDIF.lv_result = cl_gui_frontend_services=>directory_exist( directory = lv_path ).IF lv_result <> 'X'.MESSAGE e001 WITH '文件路径不存在'.ENDIF.lv_originalpath = lv_path.lv_or = lv_.CALL FUNCTION 'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_documentpart = '000'documentversion = '00'documentfile = ls_documentfileoriginalpath = lv_originalpathor = lv_orIMPORTINGreturn = ls_return.IF ls_return IS NOT INITIAL.MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_retu rn-numberWITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.ELSE.MESSAGE s001 WITH '下载成功'.ENDIF.ENDFORM. " FRM_DOWN_FILE*&---------------------------------------------------------------------* *& Form FRM_DELETE_FILE*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM frm_delete_file .DATA: lv_line TYPE i,ls_return TYPE bapiret2.CALL FUNCTION 'POPUP_TO_CONFIRM'EXPORTINGtitlebar = '消息提示'text_question = '是否删除文档'text_button_1 = '是'text_button_2 = '否'default_button = '1'display_cancel_button = ''start_column = 25start_row = 6* popup_type = 'ICON_MESSAGE_ERROR' IMPORTINGanswer = lv_answer EXCEPTIONStext_not_found = 1OTHERS = 2.IF lv_answer <> '1'.MESSAGE s001 WITH '用户取消操作' DISPLAY LIKE 'E'.EXIT.ENDIF.GET CURSOR LINE lv_line.READ TABLE it_wa_lv_line.CALL FUNCTION 'BAPI_DOCUMENT_ENQUEUE'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_documentpart = '000'documentversion = '00'IMPORTINGreturn = ls_return.IF ls_return IS NOT INITIAL.MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_retu rn-numberWITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.ENDIF.CALL FUNCTION 'BAPI_DOCUMENT_DELETE_DIRECT'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_documentpart = '000'documentversion = '00'IMPORTINGreturn = ls_return.CALL FUNCTION 'BAPI_DOCUMENT_DEQUEUE'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_documentpart = '000'documentversion = '00'.IF ls_return-type <> 'E'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.DELETE it_lv_line.DELETE FROM ztmm_xqjh_doc_id = wa_.MESSAGE s001 WITH '删除成功'.ELSE.MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_retu rn-numberWITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.ENDIF.ENDFORM. " FRM_DELETE_FILE*&---------------------------------------------------------------------* *& Form FRM_DOUBLE_CLICK*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM frm_double_click .DATA: filed TYPE char20.GET CURSOR FIELD filed.IF filed = 'IT_'.GET CURSOR LINE line.READ TABLE it_line.SET PARAMETER ID 'CV1' FIELD it_.SET PARAMETER ID 'CV2' FIELD con_dokar.SET PARAMETER ID 'CV3' FIELD '00'.SET PARAMETER ID 'CV4' FIELD '000'.CALL TRANSACTION 'CV03N' AND SKIP FIRST SCREEN.ENDIF.ENDFORM. " FRM_DOUBLE_CLICK。