ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:24.75KB ,
资源ID:27657381      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27657381.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SAP ABAP编程规范V1251SAP教育中心.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SAP ABAP编程规范V1251SAP教育中心.docx

1、SAP ABAP编程规范V1251SAP教育中心编程规X版本 修订历史记录日期版本说明作者2006/03/311.0完成初稿、计划在试运行中不断进行完善,获取正式版本李剑2008-1-111.1修正李剑2008-3-41.2修正了Tcode的命名方式李剑一、编码规则1.程序命名规则1.1 报表规则格式: Z程序类型_模块名称_序列号程序类型: RPT模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 程序简称(6个字符)例: ZRPT_SD_STOALV如有特殊情况,可加版本号例: ZRPT_SD_STOALV_V11.2 子程序规则格式: Z程序类型_模块名称_序列号程序类型: S

2、UB模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 程序简称(6个字符)例: ZSUB_SD_STOALV1.3 Include规则格式: Z程序类型_模块名称_序列号程序类型: INC模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 程序简称(6个字符)例: ZINC_SD_STOALV1.4 Query/CATT规则格式: Z程序类型_模块名称_序列号程序类型: QUE/CAT:Query/CATT模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 简称(6个字符)例: ZQUE_SD_STOALV / ZCAT_SD_STOALV1.5 Form规则格

3、式: Z程序类型_模块名称_序列号程序类型: FRM模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 简称(6个字符)例: ZFRM_SD_STOALV1.6 Smartform 规则格式: Z程序类型_模块名称_序列号程序类型: SMF模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 简称(6个字符)例: ZSMF_SD_STOPRT1.7 Function规则格式: Z程序类型_模块名称_序列号程序类型: FUN模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 程序简称(6个字符)例: ZFUN_SD_STOALV1.8 Function Group规则

4、格式: Z程序类型_模块名称_序列号程序类型: FUG模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 程序简称(6个字符)例: ZFUG_SD_STOALV1.9 SCREEN规则格式: Z程序类型_模块名称_序列号程序类型: SCR模块名称: 模块名称(MM/PP/FI/CO/SD)序列号: 程序简称(6个字符)例: ZSCR_SD_STOALV2.内部定义规则TYPES定义 : TYP_ (最长30字节)内表定义 全局: TAB_G_ (最长30字节) 局部: TAB_L_ (最长30字节)参数调用内表定义 : L_TAB_ (最长30字节)工作区 全局: REC_G_ (最

5、长30字节) 局部: REC_L_ (最长30字节)参数调用工作区: L_REC_(最长30字节)PARAMETERS: P_ (最长8字节)SELECT-OPTIONS: S_ (最長8字节)变量(含全局变量): G_ (最长 8字节): G_T_ : G_FLG_ : G_KBN_ 常量: G_C_ (最长30字节)变量(参数调用) : L_ (最长30字节): L_T_ counter: L_FLG_ flag常量(参数调用): L_C_ (最长30字节)RANGE: RG_ (最长30字节)Form 传递参数 : L_P_ (最长30字节)Filed symbol(文件符号) :(最长

6、30字节)3.消息类3.1 消息类名固定以字母”Z” 开头,形式为Z+模块名称nnn ( 以程序所属的功能模块划分消息类,如MM模块相关的消息类就以 ZMM开头 )3.2 Type: A:终止当前事 务E:错误 ,系统等待 新输入数据I:信息 ,处理 ENTER 之后,系统 继续处理S:确认 ,消息出现 在下一屏上W:警告 ,可以更改 输入数据或 通过按 ENTER 继续3.3 消息号nnnnnn为000-999连续数字。4.SAP SCRIPT4.1 FORM固定以字母”ZSF” 开头,形式为ZSFnnnnnnnn为0000-9999连续数字4.2 STYLE固定以字母”ZSS” 开头,形式

7、为ZSSnnnnnnnn为0000-9999连续数字4.3 TEXT固定以字母”ZST” 开头,形式为ZSTnnnnnnnn为0000-9999连续数字二、程序规则1程序属性的设置(1)程序名称的填写必须是copy设计书里的程序名称(2)根据设计书上的要求选择程序的种类(3)程序状态都选择用户生成程序,如果是自己写的测试程序就选择测试用程序(4)程序应用选择用户开发(个别管理)(5)在指定开发类的时候按照命名规则里的规定来指定,学习或者测试的程序放到TMP临时对象中。测试程序等非正式程序以Y开头。2文本元素(1) 文本符号一般情况下不要使用,只有在需要用代码来改变画面上的内容才可以使用(2)选

8、择文本输入画面上所需输入的字段名称都要由选择文本来标识,select-options和parameters所用的变量名长度不得超过8个字符(3)报表窗口的头部包括标题栏在内按照设计书上所要求的需要来设置3程序结构3.1 即时报表程序/批处理程序程序里所用到的变量定义及事件记述的顺序如下REPORTTYPE-POOLS(类型池定义)TYPES(数据类型定义)TABLE(透明表定义)DATA(全局变量定义)DATA(内表定义)DATA(结构体定义)PARAMETERSSELECT-OPTIONSCONSTANTS(常数定义)INITIALIZATIONAT SELECT-SCREEN(处理选择屏幕

9、)START-OF-SELECTIONGETEND-OF- SELECTIONSELECT TOP-OF-PAGEEND-OF-PAGEAT LINE-SELECTIONAT USER-MANDFORMENDFORM3.2Dialog 程序程序里所用到的变量定义及事件顺序PROGRAMTYPE-POOLS(类型池定义)TYPES(数据类型定义)TABLE(透明表定义)DATA(全局变量定义)DATA(内表定义)DATA(结构体定义)PARAMETERSCONTROLS(Table control 定义)MODULEENDMODULEFORMEMDFORM3.3 共通模块共通模块处理内容记述在i

10、nclude程序中要按照以下的顺序FUNCTION处理内容ENDFUNCTIONFORM处理内容ENDFORM*共通模块定义变量用的include程序要按照下以顺序来写TYPE-POOLS(类型池定义)TYPES(数据类型定义)TABLE(透明表定义)DATA(全局变量定义)DATA(内表定义)DATA(结构体定义)PARAMETERSSELECT-OPTIONSCONSTANTS(常数定义)3.4 模块化处理程序开发使用精练语句,尽量做到功能强大代码简单。避免出现垃圾代码从而降低程序运行速度,公共代码尽量模块化以减少代码重复编写,提高开发速度。但是尽量避免form 里面再套form,否则程序

11、可读性不好。 START-OF-SELECTION.PERFORM GET_DATA.PERFORM PROCESS_DATA.END-OF-SELECTION.PERFORM OUT_DATA. FORM GET_DATA. ENDFORM. FORM PROCESS_DATA. ENDFORM. FORM OUT_DATA. ENDFORM. 程序逻辑清晰,每功能段都要以子程序的形式开发,以增加程序的可读性3.5 FORM/内部子程序在程序内会经常使用到的功能代码块必须以FORM的形式来出现。不允许在FORM使用或者修改全局变量,如果一定要用必须把全局变量作为实际参数传递给FORM里的局部

12、变量形式参数再作处理传出为全局变量所接受。FORM所用的USING参数和CHANGING参数必须一个参数占一行分行写FORM内使用的局部变量要在该FORM内定义FORM的形式参数和调用FORM所用的实际参数的名称必须不相同,其中形式参数的类型必须定义。FORM里的文本包括代码和注释在内不应该超过300行。3.6 缩进缩进的标准是两个半角空格即TAB键一次按下相同层次的代码块必须保持缩进的整齐3.7 注释除了中文的注释以外必须以半角的形式出现在整个程序中所有以”开头的注释必须对齐屏幕程序主程序的头部注释头部形式*-* Program ID : * Program Name : *-* Date

13、Created : * Created By : * Description : *-* Modification : * Date Modified: * Modified By : * Description : * Request : *-*共通模块的头部注释头部形式*”-*”*”共通模块ID *” IMPORTING *” VALUE(参数名) LIKE 参照项目名 DEFAULT値 *” EXPORTING *” VALUE(参数名) LIKE 参照项目名 *” CHANGING *” VALUE(参数名) LIKE 参照项目名 DEFAULT値 *” TABLES *” 内表名 S

14、TRUCTURE 参照结构名 *” EXCEPTIONS *” 例外参数名 *”-*” Program ID : *” Program Name : *-* Date Created : * Created By : * Description : *-* Modification : * Date Modified: * Modified By : * Description : * Request : *-*FORM的头部注释举例*&-*&Form: F_READ_T00001*&-*-* *-*在功能处理逻辑和错误捕捉逻辑前要写上相应的注释对以前的程序进行修正要加代码修改注释,格式如下例

15、* Start of correction by *if sy-subrc 0.* exit. *endif. If sy-subrc = 4.Message e001. Endif.* End of correction by 变量注释DATE_FROM LIKE ADRC-DATE_FROM, “有效日期 NAME1 LIKE ADRC-NAME1, “名称1 NAME2 LIKE ADRC-NAME2, “名称2 REGION LIKE ADRC-REGION, “地址CITY1 LIKE ADRC-CITY1, “城市 子程序注释*客户数据处理PERFORM F_MOD_CUST US

16、ING REC_ZSF957对于开发中的子程序,MODULE,INCLUDE,FUNCTION都要详细注释说明,对于变量、内表、屏幕等涉及到的字段都要做引用注释。3.8 变量定义的规则在程序内一次都没有使用过的变量不要定义在定义变量的右侧用简单明了的文字来注释变量的长度和类型不要省略,即使是逻辑型也一样日期使用D型而时刻使用T型输入输出文件所用的变量不要用I型、P型、F型与透明表相关的变量必须要用like来定义输入文件和输出文件所用的layout都要用工作区来组织在变量命名的时候不要使用中划线,要使用下划线变量名太长会导致程序可读性降低,要使用省略的字符,使用有意义的名字来命名如果存在有几本程

17、序都要使用的相同的变量应该登录到数据字典中以下举例说明几种数据对象的定义方式相同类型的数据对象请分组定义(即定义在同一区域,并且使用冒号省略关键字DATA,不同类型数据对象则要另写一个DATA关键字来定义)透明表引用例DATA: NCX_T001 TYPE T001,BSEG TYPE BSEG.变量和定量例DATA: PLANT_CD LIKE T001W-WEKRS.DATA: NCX_S_TRUE(1) TYPE C VALUE X,NCX_S_FALSE(1) TYPE C VALUE .内表例TYPES: BEGIN OF TYP_YG_PRODUCT.MATNR LIKE MARA

18、V-MATNR,END OF TYP_YG_PRODUCT.DATA: TAB_TG_PRODUCT TYPE STANDARD TABLE OF TYP_YG_PRODUCT .工作区例DATA: BEGIN OF TYP_LONG_DATE,YEAR(4)TYPE N,MONTH(2)TYPE N,DAY(2) TYPE N,END OF TYP_LONG_DATE.PARAMETERS如果是必须输入项目要加上OBLIGATORY如果是标志位项目和开关项目要使用checkbox例PARAMETERS: NCX_P_FL_NM(30) TYPE CDEFAULT usr/sap/output

19、.dat OBLIGATORY,P_FLG_T AS CHECKBOX DEFAULT X.SELECT-OPTIONS即时报表如果存在默认输入值或者需要F4输入帮助的必须要带有MEMORY ID和MATCHCODE OBJECT选项,如果是必须输入的还要加上OBLIGATORY例SELECT-OPTIONS: NCX_S_P_C FOR BKPF-BUKRS MEMORY ID BUK,NCX_S_POST_D FOR BKPF-BUDATDEFAULT SY-DATUM OBLIGATORY,NCX_S_XREF_D FOR BKPF-XBLNRMATCHCODE OBJECT ZZBK.

20、如果是开发人员自定义的标志位、开关或者返回值请具体在注释里解释各个值的含义3.9 SQL文规则相关所有SQL文用OPEN SQL的规则来写,不要使用其它SQL规则在SQL的WHERE条件中不要指定集团号在写SELECT语句要注意以下几点在同一段SQL文中最多只能使用三次JOIN每个输出字段占一行,后面必须写注释每个JOIN条件占一行每个WHERE条件占一行SELECT内嵌套SELECT是作为原则来禁止的,复杂的嵌套可以用VIEW来代替,简单的话可以直接放在内表当所有的主键都指定了的时候要使用SELECT SINGLE尽量不要使用SELECT * 或者是SELECT SINGLE *加锁和解锁时

21、要注意以下几点在更新数据库里的记录时,应该以一个记录为单位进行加解锁处理在进行加解锁处理的时候要使用数据字典里的锁对象处理内表时要注意以下几点尽量避免把海量的数据放在内表里按照特定条件来循环内表的时候要使用WHERE语句而不要使用CHECK命令正确LOOP AT I_TAB WHERE K = V_KEY.ENDLOOP.错误LOOP AT I_TAB1. CHECK I_TAB-K = V_KEY.ENDLOOP.当内表里的记录没有必要是唯一的或者不存在重复输入的可能的时候正确INSERT WA_TAB INTO TABLE I_TAB错误COLLECT WA_TAB INTO I_TAB在

22、内表进行更新操作的时候要使用MODIFY命令例LOOP AT I_TAB. I_TAB-ABABA = C_ABABA. MODIFY I_TAB.ENDLOOP.对内表进行排序的时候一定要指定对哪列进行排序,否则效率会很低要统计内表里记录数时要使用DESCRIBE命令例DESCRIBE TABLE I_TAB LINES CTR_LINES.存在大内表的场合,一旦后续处理不再使用该内表则要及时清空例FREE I_TAB.对画面输入字段进行验证时要注意以下几点根据标准功能进行更新处理前都要对全部参数进行验证所有的输入字段的验证处理都要在AT SELECTION-SCREEN事件中进行正PARA

23、METERS : P_YD LIKE BKPF-GJHAR.AT SELECTION-SCREEN. IF P_YD SY-DATUM(4). MESSAGE E901. ENDIF.如果是写了OBLIGATORY选项的字段就不要验证它是否已经输入了如果验证没有通过就要报错让用户再次输入在即时报表中涉及到AT LINE-SELECTION和AT USER-MAND同时使用的时候要用CHECK命令例AT LINE-SELECTION. CHECK NOT BKPF IS INITIAL. CHECK SY-UM C_FNC_DISP. PERFORM F_SUBWIN_DISP.加减乘除等运算符

24、号要使用常用符号而不是ADD和PUTE等命令正确CTR_IN = CTR_IN + 1,错误ADD 1 TO CTR_IN.逻辑运算也要使用常用符号而不是EQ、NT等符号正确IF SY-SUBRC = 0.错误IF SY-SUBRC EQ 0.MESSAGE E900(ZZ) WITH I_BSEG-BUKRS.取得光标的位置使用WRITE输出后再用HIDE命令可以使字段隐藏并保留使用GET CURSOR命令来取得光标的列坐标例WRITE : / BKPF-BELNR, BKPF-GJHAR.HIDE BKPF. AT LINE-SELECTION.GET CURSOR FIELD V_KMK

25、. CHECK NOT V_KMK IS INITIAL. CASE V_KMK. WHEN BKPF-BELNR. WHEN BKPF-GJHAR. ENDCASE.3.10 其它内容连接字符串时要使用CONCATENATE命令正确V_PREF = C_TOKYO.V_CITY = C_YOKKAICHI.CONCATENATE V_PREF V_CITY INTO V_ADR SEPARATED BY SPACE.错误V_PREF = C_TOKYO.V_CITY = C_YOKKAICHI.V_LEN1 = STRLEN( V_PREF ).MOVE : V_PREF TO V_ADR, V_CITY TO V_ADR+V_LEN1.字符串逻辑比较运算符参照以下列表结构式内容x CO y (Contains Only)X包含yx NA y (

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1