SAP ABAP DMS文档管理开发
SAP软件功能开发说明书如何编写-报表类

SAP软件功能开发说明书如何编写(报表类功能开发说明)我们知道SAP项目实施和国内一些ERP软件的实施不太一样的地方,SAP实施顾问是分业务顾问和开发顾问的,他们各司其职,业务顾问只要精通业务不需要对开发非常熟悉,而开发顾问不需要非常熟悉业务,只要能按业务顾问的要求通过代码去实现某个功能就行。
因为业务顾问和开发顾问不是同一个人,那么他们之间应该如何沟通,才能保证顺畅和高效呢?当然不能靠口头去沟通,他们之间进行有效沟通的基本工具就功能开发说明书。
关于SAP的功能开发说明书应该如何编写,每个公司写法也不一样,有些公司要求比较简单,只要把你的功能需求用文字描述清楚就行了,剩下的就交给ABAP 程序员去搞定,但这样开发出来的东西,简单功能可能还好,稍微复杂一点,问题肯定非常多,而且后期也需要不断修改,并且很难澄清是那方面的问题,所以作为SAP业务顾问,写出一份逻辑清晰、表述合理的功能开发说明书,是必备的重要的技能之一。
因为经常有刚入行的业内朋友问我,有没有写功能开发说明书的教程之类的分享下,说实在的我真没见过这方面的官方标准教程,各大论坛也比较少这方面的内容,我本人曾经做过SAP ABAP开发和业务顾问两个角色,也看过不少世界500强、民企、国企的开发说明书,所以我想结合下我个人工作经验,介绍下SAP功能开发说明书一般应该如何写,希望对大家有点帮助,本文先介绍报表类开发说明书,因为报表类开发需求在项目中,应该至少占85%以上。
对于功能开发说明书来,各大公司和负责实施的咨询公司一般都有自己定义好基本格式(模板),在实际项目中,我们只需要按照既定的格式去写就行了,但无论哪个公司的模板,我认为一份合格完整功能开发说明书,一般至少需要包含这几个方面信息:基本信息,设计维护记录(修改日志),业务需求,功能设计、取数逻辑、用户签字这6大部分。
下面我就结合一个简单例子并使用某世界顶尖咨询公司的功能开发说明书的编写模板,全面介绍下功能开发说明书应该如何编写。
SAP精编DM海尔6S管理开发修订稿

S A P精编D M海尔6S管理开发集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]S A P A B A P D M S文档开发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参ORFILENAME,并修改代码。
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_filetable TYPE?filetable WITHHEADERLINE.DATA:lv_filename 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_draw2x,lt_objectlinks TYPETABLEOF bapi_doc_drad?WITHHEADERLINE,lt_documentfiles TYPETABLEOF bapi_doc_files2?WITHHEADERLINE, ls_return TYPE?bapiret2.DATA:t_tdwp TYPETABLEOF tdwp WITHHEADERLINE.DATA:name?TYPE?draw-filep,ext(64)TYPE?c.CALLMETHOD cl_gui_frontend_services=>file_open_dialog EXPORTINGwindow_title=?'选择文件'default_extension=?'*'CHANGINGfile_table=?lt_filetable[]rc=?lv_rcEXCEPTIONSfile_open_dialog_failed=?1cntl_error=?2error_no_gui=?3not_supported_by_gui=?4OTHERS?=?9.IF?lt_filetable[]IS?INITIAL.EXIT.ENDIF.READTABLE lt_filetable INDEX?1.*解析路径文件PERFORM?frm_split_path_file USING?lt_filetable-filename CHANGING?lv_filenamelv_path.name=?lv_filename.WHILE?name?CA?'.'.SPLIT?name?AT?'.'INTO?ext?name.ENDWHILE.CONCATENATE?'.'name?INTO?name.TRANSLATE?name?TOLOWERCASE.CALLFUNCTION'CV120_DOC_GET_APPL'EXPORTINGpf_file=nameTABLESptx_tdwp=?t_tdwp.IF?t_tdwp[]IS?INITIAL.MESSAGE?s001?WITH?'不支持此类型文件'.ENDIF.READTABLE 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'.READTABLE t_tdwp INDEX?1.lt_documentfiles-documenttype=?'ZQX'.lt_documentfiles-storagecategory=?con_storage_cat. lt_documentfiles-wsapplication=?t_tdwp-dappl.lt_documentfiles-docpath=?lv_path.lt_documentfiles-docfile=?lv_filename.lt_documentfiles-checkedin=?'X'.APPEND?lt_documentfiles.CALLFUNCTION'BAPI_DOCUMENT_CREATE2'EXPORTINGdocumentdata=?ls_documentdataIMPORTINGdocumentnumber=?lv_docnumberreturn?=?ls_returnTABLESobjectlinks=?lt_objectlinksdocumentfiles=lt_documentfiles.IF?ls_return-type?=?'E'OR?lv_docnumber IS?INITIAL.*MESSAGEe001WITH'上传文件出错,请联系管理员'.MESSAGEID ls_return-idTYPE ls_return-typeNUMBER ls_return-numberWITH?ls_return-message_v1?ls_return-message_v2?ls_return-message_v3?ls_return-message_v4.ELSE.CALLFUNCTION'BAPI_TRANSACTION_COMMIT'.MESSAGE?s001?WITH?'上传成功'.ENDIF.wa_file-doc_id=?lv_docnumber.wa_file-dname=?lv_filename.wa_file-yk_planno=?wa_xqjh_h-yk_planno.wa_file-dtype=?name.wa_file-credat=?sy-datum.wa_file-ctime=?sy-uzeit.wa_file-cname=?sy-uname.APPEND?wa_file TO?it_file.IF?wa_xqjh_h-yk_planno ISNOTINITIAL.MODIFY?ztmm_xqjh_file FROM?wa_file.COMMITWORKANDWAIT.ENDIF.ENDFORM."FRM_UPLOAD_FILE*&---------------------------------------------------------------------* *&Formfrm_split_path_file*&---------------------------------------------------------------------* *text拆分路径和文档名*----------------------------------------------------------------------* *-->p1text*<--p2text*----------------------------------------------------------------------* FORM?frm_split_path_file?USING?uv_fullname?CHANGING?cv_filename?cv_pathn ame.DATA:lt_match TYPE?match_result_tab,ls_match LIKELINEOF lt_match.FINDALLOCCURRENCESOF'\'IN?uv_fullname?IN?CHARACTER?MODE?RESULTS?lt_match.IFNOT lt_match IS?INITIAL.LOOPAT lt_match INTO?ls_match.ENDLOOP.ADD?1?TO?ls_match-offset.cv_pathname=?uv_fullname(ls_match-offset).cv_filename=?uv_fullname+ls_match-offset.ENDIF.ENDFORM.*&---------------------------------------------------------------------* *&FormFRM_READ_FILE*&---------------------------------------------------------------------* *text*----------------------------------------------------------------------* *-->p1text*<--p2text*----------------------------------------------------------------------* FORM?frm_read_file.DATA:lv_file TYPE?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-filename,lv_orfilename TYPE?bapi_doc_aux-filename.DATA:ls_documentfile TYPE?bapi_doc_files2,ls_return TYPE?bapiret2.lv_result=?cl_gui_frontend_services=>directory_exist(directory?=?lv_file ?).IF?lv_result<>'X'.CALLMETHOD cl_gui_frontend_services=>directory_createEXPORTINGdirectory=?lv_fileCHANGINGrc=?lv_rcEXCEPTIONSdirectory_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.GETCURSORLINE lv_line.READTABLE it_file INTO?wa_file INDEX?lv_line.CONCATENATE?lv_file'\'INTO?lv_originalpath.lv_orfilename=?wa_file-dname.CALLFUNCTION'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTINGdocumenttype=?con_dokardocumentnumber=wa_file-doc_iddocumentpart=?'000'documentversion=?'00'documentfile=?ls_documentfileoriginalpath=?lv_originalpathorfilename=?lv_orfilenameIMPORTINGreturn?=?ls_return.IF?ls_return ISNOTINITIAL.MESSAGEID ls_return-idTYPE ls_return-typeNUMBER ls_return-number WITH?ls_return-message_v1?ls_return-message_v2?ls_return-message_v3?ls_return-message_v4.ENDIF.CONCATENATE?lv_originalpathlv_orfilename INTO?lv_path. CALLMETHOD cl_gui_frontend_services=>executeEXPORTINGdocument=?lv_pathsynchronous=?'X'EXCEPTIONScntl_error=?1error_no_gui=?2bad_parameter=?3file_not_found=?4path_not_found=?5file_extension_unknown=?6error_execute_failed=?7synchronous_failed=?8not_supported_by_gui=?9OTHERS?=?10.IF?sy-subrc<>0.*ImplementsuitableerrorhandlinghereMESSAGE?s001?WITH?'打开文档失败'DISPLAY?LIKE?'E'.ENDIF.ENDFORM."FRM_READ_FILE*&---------------------------------------------------------------------* *&FormFRM_DOWN_FILE*&---------------------------------------------------------------------* *text*----------------------------------------------------------------------* *-->p1text*<--p2text*----------------------------------------------------------------------* FORM?frm_down_file.DATA:lv_filename 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-filename,lv_orfilename TYPE?bapi_doc_aux-filename.DATA:ls_documentfile TYPE?bapi_doc_files2,ls_return TYPE?bapiret2.GETCURSORLINE lv_line.READTABLE it_file INTO?wa_file INDEX?lv_line.lv_filename=?wa_file-dname.CALLMETHOD cl_gui_frontend_services=>file_save_dialogEXPORTINGwindow_title=?'选择位置'*default_extension=default_file_name=?lv_filename*with_encoding=*file_filter=*initial_directory=*prompt_on_overwrite='X'CHANGINGfilename=?lv_filenamepath=?lv_pathfullpath=?lv_fullpathEXCEPTIONScntl_error=?1error_no_gui=?2not_supported_by_gui=?3invalid_default_file_name=?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_orfilename=?lv_filename.CALLFUNCTION'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTINGdocumenttype=?con_dokardocumentnumber=wa_file-doc_iddocumentpart=?'000'documentversion=?'00'documentfile=?ls_documentfileoriginalpath=?lv_originalpathorfilename=?lv_orfilenameIMPORTINGreturn?=?ls_return.IF?ls_return ISNOTINITIAL.MESSAGEID ls_return-idTYPE ls_return-typeNUMBER ls_return-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*&---------------------------------------------------------------------* *&FormFRM_DELETE_FILE*&---------------------------------------------------------------------* *text*----------------------------------------------------------------------* *-->p1text*<--p2text*----------------------------------------------------------------------* FORM?frm_delete_file.DATA:lv_line TYPE?i,ls_return TYPE?bapiret2.CALLFUNCTION'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_answerEXCEPTIONStext_not_found=?1OTHERS?=?2.IF?lv_answer<>'1'.MESSAGE?s001?WITH?'用户取消操作'DISPLAY?LIKE?'E'.EXIT.ENDIF.GETCURSORLINE lv_line.READTABLE it_file INTO?wa_file INDEX?lv_line.CALLFUNCTION'BAPI_DOCUMENT_ENQUEUE'EXPORTINGdocumenttype=?con_dokardocumentnumber=wa_file-doc_iddocumentpart=?'000'documentversion=?'00'IMPORTINGreturn?=?ls_return.IF?ls_return ISNOTINITIAL.MESSAGEID ls_return-idTYPE ls_return-typeNUMBER ls_return-number WITH?ls_return-message_v1?ls_return-message_v2?ls_return-message_v3?ls_return-message_v4.ENDIF.CALLFUNCTION'BAPI_DOCUMENT_DELETE_DIRECT'EXPORTINGdocumenttype=?con_dokardocumentnumber=wa_file-doc_iddocumentpart=?'000'documentversion=?'00'IMPORTINGreturn?=?ls_return.CALLFUNCTION'BAPI_DOCUMENT_DEQUEUE'EXPORTINGdocumenttype=?con_dokardocumentnumber=wa_file-doc_iddocumentpart=?'000'documentversion=?'00'.IF?ls_return-type?<>?'E'.CALLFUNCTION'BAPI_TRANSACTION_COMMIT'.DELETE?it_file INDEX?lv_line.DELETEFROM ztmm_xqjh_file WHERE?doc_id=?wa_file-doc_id.MESSAGE?s001?WITH?'删除成功'.ELSE.MESSAGEID ls_return-idTYPE ls_return-typeNUMBER ls_return-numberWITH?ls_return-message_v1?ls_return-message_v2?ls_return-message_v3?ls_return-message_v4.ENDIF.ENDFORM."FRM_DELETE_FILE*&---------------------------------------------------------------------* *&FormFRM_DOUBLE_CLICK*&---------------------------------------------------------------------* *text*----------------------------------------------------------------------* *-->p1text*<--p2text*----------------------------------------------------------------------* FORM?frm_double_click.DATA:filed?TYPE?char20.GETCURSORFIELD filed.IF?filed?=?'IT_FILE-DOC_ID'.GETCURSORLINEline.READTABLE it_file INDEX?line.SETPARAMETERID'CV1' FIELD?it_file-doc_id. SETPARAMETERID'CV2' FIELD?con_dokar. SETPARAMETERID'CV3' FIELD?'00'. SETPARAMETERID'CV4' FIELD?'000'. CALLTRANSACTION'CV03N' ANDSKIPFIRSTSCREEN. ENDIF. ENDFORM."FRM_DOUBLE_CLICK。
ABAP开发规范_V1.0

ABAP 开发规范说明书修正历史此开发规范,是为了提高SAP系统上ABAP开发实施的高性能,一致性以及形式的统一性而制定,便于统一管理,阅读及简化后续更改难度.目录1 命名 (3)1.1.应用代码 (3)1.2.开发类别 (3)1.3.开发类(Package) (4)1.4.ABAP 自开发程序 (4)1.5.变量命名规约 (6)1.6.移送号管理 (8)1.7.消息类别 (8)2 注释 (9)2.1.修改代码注释 (9)2.2程序头部注释 (11)2.3表/结构定义时的注释 (11)2.4 Form的注释 (12)2.5 对于程序中,大段的逻辑处理的地方必须有注释 (12)3 规范打印机 (13)4 程序开发指导 (14)4.1. 一般规则 (14)4.2.模块化 (17)4.3.选择屏幕 (18)4.4.数据库读取,WHERE 语句 (18)4.5.内表 (20)4.6.性能考虑 (21)1 命名1.1.应用代码使用两位编码来对应应用程序模块,通常程序名的第二、三位反映此编码。
具体编码如下:1.2.开发类别程序名的第四位编码必须反映程序的类型,如下:接口I表单 F数据转换(主要指BDC/BAPI批导程序) BDialog功能开发 D1.3.开发类(PACKAGE)使用一个总的开发类1.4.ABAP 自开发程序程序命名规范1开发程序Z<A><B><C><D>10位字符组成,Z<A><B><C>为必须部分,<D>为附加部分。
Z:1位,固定文本,说明是客户定制化程序<A>: 2位,功能模块(FI/MM等)<B>:1位,程序类型(报表:R,批导:B)<C>:3位,流水码<D>: 3位,其它公司copy原有的程序时用,比如ZMMB014_JP2 COPY 标准程序Z + SAP原程序名3 包含程序对于一般程序的包含程序,使用和程序相同的程序名,加上<A>后缀<A>:3位,包含内容指示符<A>抬头,全局定义TOP功能模块form F+2位数字PAI事件I+2位数字PBO事件O+2位数字Ex: ZSDR0005F01或ZSDR005TOP4 函数组Z<C><NN>,其中<C>是2位功能模块,具体值参照前面,<NN>是3位流水码。
SAP文档管理(DMS)[指南]
![SAP文档管理(DMS)[指南]](https://img.taocdn.com/s3/m/05ec74d1ab00b52acfc789eb172ded630b1c986b.png)
SAP 文档管理(DMS)SAP 文档管理(DMS)培训:SAP 的文档管理方案有一个突出的优点,就是它可以把管理文档工作和业务流程紧密结合起来。
SAP 的几乎所有业务对象--定单,物料,工艺流程,客户,供应商,联系人,设备,工作中心。
客观上都有大量描述性文档以支持企业全面的管理业务。
SAP 的文档管理还是很多后续深入应用的基础。
如:产品数据管理,产品生命周期管理,质量管理,客户关系管理,协同商务,协同工程设计制造,协同质量控制,配方管理,实验室开发研究管理,工作流,工程系统集成,因特网应用,知识管理...如果你要长期推行 SAP,希望从实施 SAP 的投资中充分获得回报,那么充分挖掘 SAP 的巨大潜力是明智的。
事实上,大量功能已经在你的 SAP 软件系统中,只是还没有开展应用而已。
这不是太浪费了吗?一个其他厂商的文档管理方案,不可能达到 SAP 自己的文档管理方案所能达到的效益和应用深度。
这是一个长期投资获得长期回报,稳步提高企业综合竞争能力的好方案。
我们上门提供免费的两小时文档管理原理和概述讲座,听讲对象为企业管理中高层干部。
讲解目标是让管理层干部理解文档管理的原理,作用,效益,组织实施以及基础准备工作。
我们上门提供为期两天的文档管理培训班。
听讲对象为业务关键用户和中层管理干部。
讲解目标是让学员掌握 SAP 文档管理系统的原理,操作,和各方面业务的关联操作,分类系统的建立,文档业务处理工作流概念。
建议贵单位各业务部门均派关键用户二人参加。
课程结束后,各业务部门关键用户应能基本理解文档管理的原理、对企业的效益和目前文档管理现状存在的问题,并能提出各自部门的文档管理业务需求,配合咨询顾问开始实施 SAP 文挡管理工作。
培训班可以达到准备好在贵单位开始实施 SAP 的文档管理模块的目的。
可请外部咨询顾问或自己按 ASAP 实施方法有效进行文档管理模块实施工作。
要求贵单位已经安装有 IDES 系统并有培训教室、投影机等条件。
SAPABAP入门教程参考手册

WebDynpro报表开发方法
01
02
03
04
05
WebDynpro概 述
WebDynpro使 用…
WebDynpro开 发…
WebDynpro高 级…
WebDynpro优 化…
了解WebDynpro的基本概 念、架构和组件。
掌握WebDynpro适用的业 务场景和报表类型。
学习WebDynpro报表的开 发流程,包括创建 WebDynpro组件、定义数 据源、设计界面、实现业务 逻辑等。
文件定位与指针
可以使用文件指针在文件中进行定位和操作。ABAP 提供 了 SEEK 和 TELL 等语句用于文件指针的定位和获取当前 位置。
03
SAPABAP开发环境搭建
安装与配置SAP GUI
下载与安装SAP GUI
01
从SAP官方网站下载最新。
配置连接参数
Web应用开发
SAPABAP支持Web应用开发,可以 通过Web Dynpro等技术实现Web 应用的开发和部署。
02
SAPABAP基础知识
数据类型与变量
03
数据类型
变量声明
变量赋值
SAP ABAP 中有多种数据类型,包括基本 数据类型(如 C、N、D、T 等)、结构数 据类型和引用数据类型等。
后台任务调度
使用SAP系统的任务调度功能,可以定时启动或周期性执行后台任务。可以根据业务需求设置任务的执行频率和时间窗口。
错误处理和日志记录 在批处理程序中添加错误处理和日志记录逻辑,以便在任务执行过程中出现问题时能够及时发现并进行 排查。可以将错误信息记录到日志文件中,方便后续分析和处理。
07
调试与性能优化技巧
SAPABAP开发中常用的方法总结

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标准仓库管理系统的流程设计与实现 (4)

sap标准仓库管理系统的流程设计与实现SAP标准仓库管理系统是SAP的一个模块,它提供了一套完整的流程来管理仓库的日常运作和库存管理。
下面是对SAP标准仓库管理系统流程的一个简要设计和实现:1. 仓库内目录管理:- 设定仓库内物料的目录结构和仓位布局,确保物料可以方便地存放和查找。
- 创建物料主数据,在SAP系统中登记物料的基本信息,如物料编号、描述、单位等。
2. 收货管理:- 创建采购订单,将所购物料的信息录入系统。
- 收货时,将实际到货的物料信息登记在系统中,并与采购订单进行比对。
- 确认收货,更新库存数量。
- 生成收货单据。
3. 货物储存管理:- 执行物料的质量检查,并储存到合适的仓位中。
- 确保库存的安全和有序。
4. 库存管理:- 盘点库存,跟踪实际库存和系统库存的差异,并进行调整。
- 进行库存调拨,将物料从一个仓库调拨到另一个仓库。
5. 发货管理:- 创建销售订单,在系统中记录销售的物料信息。
- 按照销售订单出库物料,并更新库存数量。
- 生成发货单据。
6. 运输管理:- 将已出库的物料进行打包并分配到合适的运输方式。
- 创建运输订单,将发货物料的信息录入系统。
- 安排运输工具进行物料的运输。
7. 库存盘点:- 定期或不定期进行全面的库存盘点。
- 将实际库存与系统库存进行比对,找出差异并进行调整。
8. 报表和分析:- 通过SAP系统的报表和分析功能,可生成各种仓库管理相关的报表和统计数据,如库存量、入库率、出库率、库存周转率等。
以上是SAP标准仓库管理系统的基本流程设计和实现方式。
具体的实施过程可能会有一些差异,因此在实际应用中需要根据具体的业务需求和组织结构进行定制化的配置和开发。
SAP 项目凭证文档管理配置(DMS)

SAP 项目凭证文档配置(DMS)
可在[以前的 1]·
SAP 项目凭证文档配置(DMS)
对象:设置文 档可连接的 对象。 创建文档:控 制文档的创 建路径。一般 选择 2 后便可 通过事务代 码创建。
3.定义文档特性
菜单路径:SAP 菜单->交叉应用组件->分类系统->主数据->CL02 类
登记后删除文件控制附件上传 到文档服务器后,是否删除本
地电脑里的附件。
1 代表显示,2 代表更改, 3 代表打印。
应用(路径和 程 序 名 称 ): 一般启用自 动路径,符号 为%AUTO%。
2/7
2.定义文档类型
SAP 项目凭证文档配置(DMS)
菜单路径:IMG->跨应用组件->文档管理->控制数据->定义凭证类型
版本分配: 设置该类型 文档是否需 要进行版本 管理。
注意:已使用 保管服务器 来存放文档 附件后,不能 选择使用知 识提供方。 状态更改:设 置该类型文 档是否需要 状态进行管 理。 默认应该用 程序:可设置 在找文件时 默认找何种 后缀的文件。
类别种类:在附加数据选项 卡处,设置文档特性。一般 使用 017 类文档管理。
1/7
1.定义上传附件
SAP 项目凭证文档配置(DMS)
菜单路径:IMG->跨应用组件->文档管理->通用数据->定义工作站应用程序
启用授权控制该后 缀的附件能否上传 到文档服务器上。
注意:在存档 文件标识选 择“*”系统 将自动选择 和判断该后 缀的附件。
不能重新命名临时 文件控制打开该后 缀的附件所产生的 副本是否可以重新 命名。
5/7
SAP 项目凭证文档配置(DMS)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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参ORFILENAME,并修改代码。
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_filetable TYPE filetable WITH HEADER LINE.DATA: lv_filename 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=>file_open_dialogEXPORTINGwindow_title = '选择文件'default_extension = '*'CHANGINGfile_table = lt_filetable[]rc = lv_rc EXCEPTIONSfile_open_dialog_failed = 1cntl_error = 2error_no_gui = 3not_supported_by_gui = 4OTHERS = 9.IF lt_filetable[] IS INITIAL.EXIT.ENDIF.READ TABLE lt_filetable INDEX 1.*解析路径文件PERFORM frm_split_path_file USING lt_filetable-filenameCHANGING lv_filename lv_path.name = lv_filename.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_documentfiles-documenttype = 'ZQX'.lt_documentfiles-storagecategory = con_storage_cat.lt_documentfiles-wsapplication = t_tdwp-dappl.lt_documentfiles-docpath = lv_path.lt_documentfiles-docfile = lv_filename.lt_documentfiles-checkedin = '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_file-doc_id = lv_docnumber.wa_file-dname = lv_filename.wa_file-yk_planno = wa_xqjh_h-yk_planno.wa_file-dtype = name.wa_file-credat = sy-datum.wa_file-ctime = sy-uzeit.wa_file-cname = sy-uname.APPEND wa_file TO it_file.IF wa_xqjh_h-yk_planno IS NOT INITIAL.MODIFY ztmm_xqjh_file FROM 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_filename cv_pathname.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_filename = uv_fullname+ls_match-offset.ENDIF.ENDFORM.*&---------------------------------------------------------------------* *& Form FRM_READ_FILE*&---------------------------------------------------------------------* * text*----------------------------------------------------------------------* * --> p1 text* <-- p2 text*----------------------------------------------------------------------* FORM frm_read_file .DATA: lv_file TYPE 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-filename,lv_orfilename TYPE bapi_doc_aux-filename.DATA: ls_documentfile TYPE 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_file INTO wa_file INDEX lv_line.CONCATENATE lv_file '\' INTO lv_originalpath.lv_orfilename = wa_file-dname.CALL FUNCTION 'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_file-doc_iddocumentpart = '000'documentversion = '00'documentfile = ls_documentfileoriginalpath = lv_originalpathorfilename = lv_orfilenameIMPORTINGreturn = 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_orfilename INTO lv_path.CALL METHOD cl_gui_frontend_services=>executeEXPORTINGdocument = lv_pathsynchronous = 'X'EXCEPTIONScntl_error = 1error_no_gui = 2bad_parameter = 3file_not_found = 4path_not_found = 5file_extension_unknown = 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_filename 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-filename,lv_orfilename TYPE bapi_doc_aux-filename.DATA: ls_documentfile TYPE bapi_doc_files2,ls_return TYPE bapiret2.GET CURSOR LINE lv_line.READ TABLE it_file INTO wa_file INDEX lv_line.lv_filename = wa_file-dname.CALL METHOD cl_gui_frontend_services=>file_save_dialogEXPORTINGwindow_title = '选择位置'* default_extension =default_file_name = lv_filename* with_encoding =* file_filter =* initial_directory =* prompt_on_overwrite = 'X'CHANGINGfilename = lv_filenamepath = lv_pathfullpath = lv_fullpath EXCEPTIONScntl_error = 1error_no_gui = 2not_supported_by_gui = 3invalid_default_file_name = 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_orfilename = lv_filename.CALL FUNCTION 'ZBAPI_DOCUMENT_CHECKOUTVIEW2'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_file-doc_iddocumentpart = '000'documentversion = '00'documentfile = ls_documentfileoriginalpath = lv_originalpathorfilename = lv_orfilenameIMPORTINGreturn = 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_file INTO wa_file INDEX lv_line.CALL FUNCTION 'BAPI_DOCUMENT_ENQUEUE'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_file-doc_iddocumentpart = '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_file-doc_iddocumentpart = '000'documentversion = '00'IMPORTINGreturn = ls_return.CALL FUNCTION 'BAPI_DOCUMENT_DEQUEUE'EXPORTINGdocumenttype = con_dokardocumentnumber = wa_file-doc_iddocumentpart = '000'documentversion = '00'.IF ls_return-type <> 'E'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.DELETE it_file INDEX lv_line.DELETE FROM ztmm_xqjh_file WHERE doc_id = wa_file-doc_id.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_FILE-DOC_ID'.GET CURSOR LINE line.READ TABLE it_file INDEX line.SET PARAMETER ID 'CV1' FIELD it_file-doc_id.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(范文素材和资料部分来自网络,供参考。