SAP开发规范目录!1.命名规范21.1.程序命名21.2.程序注释30O!@,Y)e&_$Y1.3.事务代码41.4.变量命名41.5.常量命名5:B+}%g'x8@1.6.内表命名51.7.Range命名51.8.自定义表、视图、数据元素、域命名61.9.函数组64O/X3H1B4b.k1.10.函数67a;Q-O7N7?4m/@/J1.11.子程序71.12.宏7%H:N0i9d.`!P)I3^2R1.13.选择屏幕参数81.14.对象命名82.编码规则92.1.变量、对象规则92.2.子程序规则9(r+tA9B!u(|'q5v7U'[-z0B3.注释规则9%BL4S*}8Q_;R3Z3.1.程序标题注释93.2.程序以下内容必须加注释9,z!\!S:^&@&^6a*G1P%j3.3.程序更改注释93|5n6m6?/t(kO4.SAP报表开发流程104.1开发需求提出。10)G,t3U&]2C5|+d+S:L%p4.2、报表开发。10/^7}*E:~3K:B7Y6[5P4.3、报表测试106[.S0M%o*O6h&u/A;uU&A1.命名规范+T-V*j)AN*~1z7?8f!@0L1.1.程序命名所有用户自己开发的程序均以Z或Y开头,表示用户自开发的程序,其命名规则如下:PREFIX+XX+NNN+T+MM其中:zJ1C9H,Z*H/s(1)PREFIX程序前缀,必须为“Z”或者“Y”,表示自开发的程序;(2)XX表示模块名,其中FI财务会计CO管理会计0g$]8O0Q$y.U,I*y!TAA资产会计TR资金管理PS项目系统EC企业合并!a)QH/u+T/fHR人力资源|!Z4q!{$w5jTD装运管理3G-a6e5h'O6f-o7{&ALMM物料管理SD销售与分销QM质量管理PM设备维护CA跨模块应用8P%\3\p2~/`.Y!\5[BCBASIS(3)NNN表示该开发需求编号,为四位数字;(4)T表示程序类型,其中$|%h.aX0~7[+d(M,k)u:{R表示报表I表示接口h8E:e0_%a9l4tF表示表单B表示BatchinputQ表示QUEYR*e2J,s0Lo2q/u2@3q(5)MM表示该开发需求的子编号,为两位数字,若无子编号,则该部分可无注:程序命名字符长度不得超过30个字符'f/J)}6B.J1r9S示例:6e,@4W9x,G;M4SZMM031R表示MM模块的第31个开发程序,其类型为报表J1H&N6}+L/p;H(JZMM032I01表示MM模块的第32个开发程序,其类型为接口程序,是接口第一部分1.2.程序注释程序源文件开始必须包含有注释,其内容包括:程序名称、作者名称、时间、模块用途、背景介绍等,复杂的算法需要加上流程说明。#O'f0I;N;D+S.x6s主要部分包括:7M:U'm'f5D.F$k,T(1)程序标题(Title):必填,包括程序的名称和简单说明。#lk4H+f'|;c-I5x9^(2)作者名称(Author):必填,作者名称$y2c:?0y!M1o0[-f(3)创建日期(Date):必填,创建日期;@5z:p*V2m*]7z5@!J-W)S5t)b(4)模块用途(Purpose):必填,模块用途,那个部门,哪些人员使用,用来做什么(5)背景资料(Background):必填,包括背景,谁提出,谁批准(6)实现算法(Arithmetic):可选,算法负责需写明(7)修改记录(ModificationHistory):记录文件修改的过程,只记录最主要的修改,写明修改人、修改日期、修改原因等。0X#Q1s3{;Z3U示例:*************************************************************************Copyright2009CHANTZhongShan*5r*T'[0W&C+ek:Or*AllRightsReserved*&R*i/z*D,Y!B-d8j2?+E*----------------------------------------------------------------------**Program(Function)Name:ZXXXXX*s,y7T*p;Y!OR*m$i*Program(Function)Title:*&T7P9O&B:C-U!P%A#j4P3r*Createdby:DEVXX*8D0D9}H5N(X7l(v*Createdon:2006/02/18**Background:**Arithmetic:*Version:1.0**FunctionDescription:***.x,Z)e+u9s1e7r(O)n*----------------------------------------------------------------------*#R.`3q$w:s:Ie'p#F-W-n,EH*u*q*M3^#i1R$p*G*************************************************************************ModificationLog**------------------------------------------------------------------*]+](F)H,r%L2P*Modifiedby:DEVXX**Modifiedon:2009/03/31*/d,Z/I8x*N$y9B*ModifyDescription:***************************************************************************$O3W8j.p$r7a4l!W1.3.事务代码事务代码命名规则如下:5r2i&V:w,T-v1p3K&A&k+RPREFIX+XX+NNN+MM!c){$b3j)[0H8k命名时的所有字符均采用大写,其命名规则与程序命名规则基本一致,其区别在于事务代码不允许带有程序类型,参见1.1示例:)L}0?:U-G9u$K*CZMM031表示MM模块的第31个开发程序对应的事务代码ZMM03201表示MM模块的第32个开发程序的第一部分对应的事务代码1.4.变量命名3A8`0P2\/y3u*~$[:l变量命名规则如下:PREFIX+NAME-b#T2Y5D%?,t4r变量命名时的所有字符均采用小写,其中:!P%td.^9K)D:?(1)PREFIX表示变量前缀,必须为“g_”或“l_”之一,5{5Q-j2i*@9Wg_表示全局变量;F&c,N(L;G(y,A7S!Ml_表示局部变量:I1U,~&uaC&N-V+\3z若所定义的变量为结构类型的变量,则其前缀为:g_s_表示全局变量4](a!^3v2|h7tl_s_表示局部变量4U&b$`:{6A7Q(2)NAME表示变量的名称,必须有具体的意义,禁止用1,2,3等阿拉伯数字表示,多个单词之间用下划线“_”连接。示例:g_bukrs表示公司代码,为全局变量l_bukrs表示公司代码,为局部变量0@*V9T$P7hC%hg_s_mkpf表示物料凭证抬头,为全局变量l_s_mkpf表示物料凭证抬头,为局部变量5\)\9z4~9[*\4J'y1c(]&V1.5.常量命名常量命名规则如下:)i+U4n/p7M2l7R#@PREFIX+NAME3LK7J-K4y;_.[常量命名时的所有字符均采用大写,其中:(1)PREFIX表示前缀,必须为“C_”(2)NAME表示常量的名称,必须有具体的意义,禁止用1,2,3等表示,多个单词之间用下划线“_”连接示例:C_AUART_Z01表示值为Z01的凭证类型常量6E1PM9X$J0J9|1.6.内表命名内部表命名规则如下:4W6O;o6B)u*wPREFIX+NAME变量命名时的所有字符均采用小写,其中:5I.D.w6C.e9I0W9\4h(1)PREFIX表示变量前缀,必须为“g_t”或“l_t”之一,'U8g0F0G;xR0T!j9H!A4Kg_t_表示全局内表变量l_t_表示局部内表变量(2)NAME表示变量的名称,必须有具体的意义,禁止用1,2,3等阿拉伯数字表示,多个单词之间用下划线“_”连接。#V!`%t'O'_0|*R示例:g_t_bukrs表示公司代码内表,为全局内表/P!x$j(u+i;A#d$c5gql_t_bukrs表示公司代码内表,为局部内表)r(D#x2K9Z7Z5].h;`4W(S6?1.7.Range命名Range命名规则如下:(z$K$~*}+}4rPREFIX+NAME变量命名时的所有字符均采用小写,其中:(1)PREFIX表示变量前缀,必须为“g_r”或“l_r”之一,g_r表示全局Range变量#d-A;j2?;N6u6p7p$E.Ol_r表示局部Range变量(2)NAME表示Range的名称,必须有具体的意义,禁止用1,2,3等阿拉伯数字表示,多个单词之间用下划线“_”连接。9K1a8x#S+j:_)?#{6q2W/p:I示例:g_r_bukrs表示公司代码Range,为全局内表l_r_bukrs表示公司代码Range,为局部内表;J!w0B;O%|7U1.8.自定义表、视图、数据元素、域命名自定义表、视图、数据元素、域命名规则如下:PREFIX+XX+NAME;o._;A%S7~命名时的所有字符均采用大写,其中::U.z*A'|;l,n!I(1)PREFIX表示前缀,必须为“Z”或者“Y”,表示自开发的表等。2w5v3j-O`3g5N{+z)}(2)XX表示模块名,具体模块缩写参见1.1。注:自定义的数据库表中,若无特殊情况,均需加上MANDT字段(Client)并设为主键之一。1.9.函数组W:B*f$u)?0P函数组命名规则如下:PREFIX+XX+NNNN函数组命名时的所有字符均采用大写,其中:(1)PREFIX前缀,必须为“Z”或者“Y”,表示自开发的函数组(2)XX表示模块名,具体参见1.14s:x2d(B7q2o(3)NNNN表示该函数组编号,为四位数字1.10.函数函数组命名规则如下:#b)z\%f6c+?8`-q;L,mPREFIX+XX+NAME函数命名时的所有字符均采用大写,PREFIX、XX、NAME之间用下划线“_”连接,其中:'u5k:N8N2L)D7r(1)PREFIX表示前缀,必须为“Z”或者“Y”,表示自开发的函数(2)XX表示模块名,具体参见1.1(3)NAME表示该函数名称,要求有具体的语义含义,多个单词之间用下划线“_”连接1]!E2X*Hj+]'m:w!M7f示例:Y.A,h7H4{+{$K-fY_MM_PO_GETITEMS_OA表示取得采购订单行项目函数,该函数用于OA系统1.11.子程序子程序命名采用“SUB+动词+名词”的格式,全部采用小写字母,单词之间用下划线“_”连接。示例:9\,~p3V-l6z9ksub_fill_final_result表示填充最终的结果sub_output_result表示输出结果若子程序带有参数,则要求所有参数以“p_”开头(PARAMETER的所写),其后带表示具体意义的单词,示例:Ic-t3~8{9k3nformsub_compute_finalusingp_indexlikeg_t_result-indexp_operator.#Hp9N*c:w:X3u……1o'I)A$b-D2o!X*@endform.1.12.宏宏命名规则如下:3m4G.N1Z$f7e/o*`8f%H(\PREFIX+NAMEPREFIX、NAME之间用下划线“_”连接,其中:#m*o&H,h8N[4^(1)PREFIX表示前缀,必须为“M”,表示自开发的宏8b.w*b+U0bS,[(2)NAME表示该宏名称,采用“动词+名词”的格式,要求有具体的语义含义,多个单词之间用下划线“_”连接。示例:M_CHECK_BUKRS表示检查公司代码的宏