![ABAP开发规范_V1.0_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/11/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e1.gif)
![ABAP开发规范_V1.0_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/11/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e2.gif)
![ABAP开发规范_V1.0_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/11/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e3.gif)
![ABAP开发规范_V1.0_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/11/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e4.gif)
![ABAP开发规范_V1.0_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/11/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e/6683cb41-ddc1-4efc-bfbf-df8a40f1da9e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SAP项目ABAP开近约ABAP开发规范说明书修正历史版本修正日期修正者修正内容V1.02014/10/27此开发规范,是为了提高SAP系统上ABAPFF发实施的高性能,一致性以及形式的统一性而制定,便于统一管理,阅读及简化后2更改难度 .SAP项目ABAP开发规约目录1命名31.1. 应用代码31.2. 开发类别31.3. 开发类(Package) 41.4. ABAP自开发程序41.5. 变量命名规约 61.6. 移送号管理81.7. 消息类别82注释92.1 .修改代码注释92.2 程序头部注释112.3 表/结构定义时的注释 112.4 Form 的注释122.5 对于程序中,大段的逻
2、辑处理的地方必须有注释 123规范打印机134程序开发指导 144.1. 一般规则144.2. 模块化174.3. 选择屏幕184.4. 数据库读取, WHERE©句 184.5. 内表204.6. 性能考虑21SAP项目ABAP开近约1命名1.1. 应用代码使用两位编码来对应应用程序模块,通常程序名的第二、三位反映此编码。具体编码如下:应用模块财务会计销售和分销生产管理物料管理仓库管理质量管理项目管理人力资源模块CODE(功能码)FISDPPMMWMQMPSHR1.2. 开发类别程序名的第四位编码必须反映程序的类型,如下:程序类型增强指示符ER报表SAP项目ABAP开近约接口表单数
3、据转换(主要指 BDC/BAPI批导程序)Dialog功能开发1.3. 开发类(PACKAGE)使用一个总的开发类1.4. ABAP 自开发程序程序命名规范1开发程序Z<A><B><C><D>1检字符组成,Z<A><B><C>为必须部分,<D>为附加部分。Z: 1位,固定文本,说明是客户定制化程序< A>: 2位,功能模块(FI/MM等)< B>: 1位,程序类型(报表:R,批导:B)< C>: 3位,流水码< D>: 3位,其它公司copy原有的程序
4、时用,比如 ZMMB014_JP2 COPY标准程序Z + SAP原程序名3包含程序对于一般程序的包含程序,使用和程序相同的SAP项目ABAP开近约程序名,加上<A>后缀<A>:3 位,包含内容指示符<A>抬头,全局定义TOP功能模块formF+2位数字PAI事件I+2位数字PBO事件O+2位数字Ex: ZSDR0005F01 或 ZSDR005TOP4函数组Z<C><NN>其中<C混2位功能模块,具体值参 照前圜,<NN>1 3位流水码。Ex: ZSD0045函数30位字符,Z<A>_<B>
5、,其中<A>> 2位功能码, 具体值参照前面,<B>是24位简单功能描述。Ex: ZSD_SALESORDERCHANGE6 表格(Smartforms )9位字符,Z<A>FF<NN>其中<A>2位功能码, <NN>4位流水码。Ex: ZSDFF00227样式8标准文本(SO10)9位字符,Z<A>FF<NN>其中<A>2位功能码,<NN>4位流水码。规则同 6表格一致。Ex: ZSDFF002230位字符,Z<A><NN><C>其
6、中<A>2位功能码,<NN>2位流水码,<C>25位文本描述。SAP项目ABAP开近约Ex: ZSD10CACS012EUR1.5. 变量命名规约建议所有字段名或变量名必须使用英文,并且描述部分尽可能的表达出它的用法或/和内容。在名称中不要使用连字符(减号)。一般变量类型示例与说明FormF_<A>.<A>功能描述说明一般格式:动词+名词。Ex: f_get_dataConstantC_<C>.Ex: c_flg_xField SymbolsFS_<C>.Select optionS_<C>.Par
7、ametersP_<C>.RangeR_<C>.Range work areaR_<C>_lineInternal tableGT_<C>.Field groupsFG_<C>.StructureGS_<C>.SAP项目ABAP开近约FieldGF_<C>Parameter of formCHANG参数:FC_<C>USING参数:FU_<C>TABLE参数:FT_<C>TypesTYP_<C>FlagsFLG_<C>Class, OO ObjectC
8、L_<C>Local VariableL<C>.局部变量在以上规则上加上L.Ex:lt_bkpf. ls_bkpf. Lf_check.主要区别内表、结构、字段三种数据结构数据字典Tables7 个字符,Z<A>T<NNN>.<A>2位功能码,<NNN>3位流水号。Ex: ZSDT001.Table Index4 个字符,ZI<NN>,<NN>2 位流水码。Structure7 个字符,Z<A>S<NNN>.<A>阻功能码,<NNN>3位流水号。Ex:
9、 ZSDS001.Fields30字符,Z<C>,如果是复制SAP标准的,可以不加ZoSAP项目ABAP开近约DomainsZ<C>Data elementsZ<C>Search helpZH_<C>View7 个字符,Z<A>V<NNN>.<A>2位功能码,<NNN>3位流水号。Ex: ZSDV001.Lock Object8 个字符,EZ<A>T<NNN>.<A>2位功能码,<NNN>3 位流水号。Ex: EZSDT001.1.6. 移送号管理将一
10、个开发任务的所有开发工作保存到一个移送号,不同的开发任务不能挂在同一个移送号下面,尤其是增强,要单独挂移送号。不需要移送的移送号删除掉,或者在描述中写明不移送移送号描述的规则移送号的描述按照下面的形式记述模块:客户_模块.基本描述其它如 ZY_MM_change requrest 的描述模块:模块领域(F/CO/SD/MM/PP/WM等)基本描述:程序的名称,程序名或者修改的内容YYYY/MM/DD移送号创建日期公司代码:专为某家新公司上项目用的移送号,加上公司代码(6100/0MB1/AE01等)1.7. 消息类别SAP项目ABAP开发规约Z<A><NNN>,6位字符
11、。其中<A>2位功能码,<NNN>骑流水码。Ex: ZFI001消息号:3位数字流水码2注释2.1. 修改代码注释大量修改程序(修改内容超过原有的代码量三分之一)或者版本升级,首先保留原版本,根据原程序复 制创建备份程序,备份程序名为原有的程序名+_BAK.修改原有的程序。程序代码的修改量比较小时,修改者必须保留修改前的内容,不能自行删除或直接修改;并标识出 修改、新增或删除的内容。修改者都必须填写修改信息,首先必须在当前文件的文件头修改记录中加入修改信息,并且在代码修改处加上修改注释,注释根据不同的修改动作分以下三个方面:新增代码行* Start add by xxx
12、x at yyyymmdd新增代码行* End add by xxxx at yyyymmdd其中xxxx修改者名称yyyymmdd修改世间Ex:* Start add by liuwei at 20150717TYPES:BEGIN OF typ_mara,matnr TYPE mara-matnr,"物料meins TYPE mara-meins,"单位END OF typ_mara.* End add by liuwei at 20150717修改代码行SAP项目ABAP开近约对代码行进行修改,要先删除,再新增,保留原来代码* Start modify by xxxx
13、 at yyyymmdd*原来代码行 新增代码行* End modify by xxxx at yyyymmdd其中xxxx修改者名称yyyymmdd修改世间Ex:'A''U'* Start modify by liuwei at 20140828ISAVEISAVE* End modify by liuwei at 20140828删除代码行* Start delete by xxxx at yyyymmdd*原来代码行* End delete by xxxx at yyyymmdd其中xxxx修改者名称yyyymmdd修改世间Ex:* Start delet
14、e by liuwei at 20150921 * LOOP AT GTSODT INTO GSSODTTEMP.SAP项目ABAP开近约LFTOTALVEMNG.CLEAR: GSSODTTEMP.CLEAR: LF_COUNTS.LFCOUNTS = GSSODTTEMP-VEMNG LFTOTALPLTS /GSSOHD-ZPLTS = GSSOHD-ZPLTS + LFCOUNTS. *ENDLOOP.*End deleteby liuwei at 201509212.2 程序头部注释程序头部注释主要是表明该文件的一些信息,其格式如下:*Program name: ZMMR00XX*D
15、escription : 程序功能的描述*Date/Author : YYYYMMDD/XXXX* MODIFICATION LOG* ChangeDate Programmer RequestDescription* * YYYYMMDD AAA.BBB R3DK999999修改内容描述* REPORT NAME :寸艮表显示名称* *2.3 表/结构定义时的注释定义表/结构时,采用把注释作为代码行的一部分的注释处理方式。例如:*即时库存BEGIN OF typ_mard,matnrTYPEmara-matnr,"物料号werksTYPEmard-werks,"工厂lgo
16、rtTYPEmard-lgort,"库存地点SAP项目ABAP开近约1abstTYPEmard-labst,"即时库存insmeTYPEmard-insme,"质检库存spemeTYPEmard-speme,"冻结库存meinsTYPEmara-meins,"单位END OF typ_mard,2.4 FORM的注释例如:*&*&Form F_GET_DATA*&*读取数据*FORM f_get_data.2.5 对于程序中,大段的逻辑处理的地方必须有注释例如:*出力数据编辑LOOP AT gt_vekp_temp IN
17、TO gs_vekp.物料编码,数量取得判断是否有复数个物料非期初处理团队信息取得第23页共21页判断是否复数个团队ENDLOOP.3规范打印机SAP项目ABAP开发规约调整嵌套的源代码,使用规范化打印机功能,设定如下:程序属性设定如下:package根据具体情况设定SAP项目ABAP开近约4程序开发指导4.1. 一般规则增强中的提示都要用消息类的某个号,方便查找增强。尽量不要在程序中使用硬编码,而是定义常量作为比较运算。Unacceptable:IF I MATKL = '2000' AND I WERKS = 'SZCC' AND ( LS CHAR-CHA
18、RACT= 'B2000007' OR LS_CHAR-CHARACT= 'B2000012').CONTINUE.ENDIF.Acceptable:SAP项目ABAP开近约IF i_matkl = c_matkl_2000AND i_werks = c_werks_szccAND ( ls_char-charact = c_char_b2000007OR ls_char-charact = c_char_b2000012).CONTINUE.ENDIF.在输出Message消息时使用文本元素(Text elements ),使用文本元素可以帮助同一个程序在多语
19、言 环境运行。要尽可能的使用系统值。Unacceptable:CLEAR: ls_field.ls field-name= 'EXIDV'.ls_field-alias = 'EXIDV'.ls field-source='VEKP'.ls_field-label ='柜号'.ls field-index= 1.ls_field-len = 20.口 一APPEND ls_fieldTO lt_fields.Acceptable:ls_fieldcat-fieldname= 'ZLQTY'.ls_fieldcat-
20、scrtext_m= text-006.ls_fieldcat-qfieldname = 'MEINS'.APPEND ls_fieldcat TO lt_fieldcat.CLEAR ls_fieldcat.定义数据时尽可能使用TYPE语法,尽量不使用LIKE.Unacceptable:DATA: BEGIN OF typ_mchb, exidv LIKE vekp-exidv, "柜号Acceptable:DATA:lf_matnrTYPE mara-matnr,"物料SAP项目ABAP开近约在程序传输到生产环境之前,确保所有硬断点和测试代码(例如附加的
21、输出语句)都被删除。在程序运行时设置“软”断点来代替在程序中使用硬编码的断点。Unacceptable:BREAK-POINT.Acceptable:必须为每个定义的变量提供有意义的描述,即变量名称本身应尽可能的表达出它的Unacceptable:Acceptable:限制每一行代码只有一个关键词来提高程序的可读性。Unacceptable:IF I MATKL = '2000' AND I WERKS = 'SZCC' AND (LS CHAR-CHARACT= 'B2000007' ORLS_CHAR-CHARACT= 'B20000
22、12').CONTINUE.ENDIF.Acceptable:IF i matkl= c matkl 2000AND i_werks = c_werks_szccAND ( ls char-charact= c char b2000007OR ls_char-charact = c_char_b2000012).CONTINUE.ENDIF.在任何可能的情况下,使用CASE语句而不是重复的IF语句,可以提高代码的可读性Unacceptable:IF gs_fieldcat-fieldname = 'VEMNG'.gs fieldcat-ref fieldname=
23、39;VEMNG'.gs_fieldcat-ref_tabname = 'VEPO'. gs_fieldcat-decimals_out = 3.ENDIF.IF gs_fieldcat-fieldname = 'CLABS'.SAP项目ABAP开近约gs_fieldcat-ref_fieldname= 'CLABS'.gs_fieldcat-ref_tabname = 'MCHB'. gs fieldcat-decimals out= 3.ENDIF.IF gs_fieldcat-fieldname = 'CIN
24、SM'.gs_fieldcat-ref_fieldname= 'CINSM'.gs_fieldcat-ref_tabname = 'MCHB'. gs_fieldcat-decimals_out = 3.ENDIF.Acceptable:CASE gs fieldcat-fieldname.WHEN 'VEMNG'.gs_fieldcat-ref_fieldname= 'VEMNG'.gs_fieldcat-ref_tabname= 'VEPO'.gs_fieldcat-decimals_out= 3.WH
25、EN'CLABS'.gs_fieldcat-ref_fieldname= 'CLABS'.gs_fieldcat-ref_tabname= 'MCHB'.gs_fieldcat-decimals_out= 3.WHEN 'CINSM'.gs_fieldcat-ref_fieldname= 'CINSM'.gs_fieldcat-ref_tabname= 'MCHB'.gs_fieldcat-decimals_out= 3.WHEN OTHERS.ENDCASE.修改程序之前,先比较一下版本,确保开发
26、机的版本跟生产机的版本一致才能进行修改。程序激活后,传输前,要做扩展检查,尽量去掉所有的err消息。4.2. 模块化使用子程序和Perform 的评价标准是:它是否可以提高程序的可读性和使得逻辑流更加清晰。如果一块代码在 ABAP中多处被调用,它就应该被创建成FORMPERFORMS该被使用在逻辑结构(如CASE, IF )中,与书写多条语句相比,可以提高程序的可读性。建议功能模块form , PAI PBO事件,放到主程序中。SAP项目ABAP开近约4.3. 选择屏幕参数和选择范围应该有一些默认值或必填字段,这样做的目的是防止以错误的方式运行时消耗掉SAP系统过多的资源。尽量使用更多的选择范
27、围来增加过滤条件,这样程序运行的会更快。为块标题和选择项指定具体的文本元素。所有输入必须进行校验并输出合适的错误信息。4.4. 数据库 读取,WHERE语句SELECT吾句的Where选项中尽可能的使用完全约束条件,包括那些不是关键字段的数据字段。Unacceptable:Acceptable:WHER踣句中约束字段的顺序与表中关键字段顺序应一致。Unacceptable:FROM lagpWHERE lgnum = '115'AND lgtyp = 'A00'AND lgpla = lf_field在任何可能的情况下,使用FOR ALL ENTRIES IN都
28、必须判断作为条件的内表不为空Unacceptable:Acceptable:SAP项目ABAP开近约IF lt_mchb口 IS NOT INITIAL. SELECT atnamFROM auspINTO CORRESPONDIN6ELDS OF TABLE 忆auspFORALL ENTRIES IN 忆mchbWHEREauspobjek =代_mchb-cuobj_bm.ENDIF.尽可能的使用主键,指定完整的表关键字段并且使用SELECT SINGLEUnacceptable:Acceptable:SELECT SINGLE anzle INTO lf anzleFROM lagpW
29、HERE lgplaAND lgtyp=lf_field='A00'AND lgnum='115'.SELECT时,禁止三个以上表join.必须从多个表取数据时,可以先读取关键的数据,然后循环数据,从 其他内表中read。Unacceptable:FROM mchb INNER JOIN mara ON mchbmatnr = maramatnr INNER JOIN makt ON mchbmatnr = maktmatnr AND spras = '1' INNER JOIN t001l ON mchblgort= t001llgortANDmchbwerks = t001lwerks LEFTJOINmch1ONmchbmatnr=mch1matnrAND mchbcharg= mch1chargLEFTJOINvepoONmchbmatnr=vepomatnrAND mchbcharg= vepochargWHERE mchbwerks = s_werksSAP项目ABAP开近约SELECT寸可以使用索弓I,但是不建议,不能轻易添加索引。4.5. 内表定义内表时,不能定义带headline的,必须明确定义工作区。Unacceptable:DATA: gt_mchb LIKE gs_mchb OCCURS 0 WITH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个性化健身计划会员服务合同
- 临时借调人员合同范本
- 产品定做合同
- 个人成长培训合同模板
- 个人信用贷款合同及保险附加协议
- 个人消费借款担保合同标准版
- 一卡通充值与结算业务合同
- 中小企业贷款抵押担保合同
- 个人家政服务合同标准版
- 产品全国总经销合同范本
- 小学语文阅读教学落实学生核心素养方法的研究-结题报告
- 一年级的成长历程
- 2024年南京铁道职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 正月十五元宵节介绍课件
- 病毒性肺炎疾病演示课件
- 中考英语语法填空专项练习附答案(已排版-可直接打印)
- 口腔医学中的人工智能应用培训课件
- 软星酒店网络规划与设计
- 自然辩证法概论(新)课件
- 基层医疗机构基本情况调查报告
- 六西格玛(6Sigma)详解及实际案例分析
评论
0/150
提交评论