SAP程序命名规则.docx
《SAP程序命名规则.docx》由会员分享,可在线阅读,更多相关《SAP程序命名规则.docx(14页珍藏版)》请在冰豆网上搜索。
SAP程序命名规则
长虹集团
E-HR项目
SAP程序命名规则
四川虹信软件有限公司
2018年9月5日
项目编号
E-HR
文档名称
SAP程序命名规则
文档序号
001
项目经理
李力,姚宗明
编写人
庞勇
完成日期
2008-12-23
文档修订记录:
日期
修订版本
修订内容
修订人
目 录
第1章目标4
第2章知识对象的命名规范5
2.1程序命名规范(程序的事务代码同理)5
2.2数据字典的命名规范6
第3章代码规范7
3.1代码单元命名规范7
3.2变量命名规则7
3.2.1自定义变量7
3.2.2函数参数命名规则:
7
3.3屏幕编号规则8
3.4Status命名规则8
3.5注释规则8
3.6事件代码参照编写内容及顺序8
3.7共用函数说明规范12
1.目标
规范长虹HR项目程序、数据字典等知识对象的命名规范;
规范长虹HR项目代码开发的书写规范,提高代码的可读性。
2.知识对象的命名规范
2.1程序命名规范(程序的事务代码同理)
ZXXMNNNN注意:
所有命名都必须是大写字母
XX:
应用代码(以下为常用的主模块列表,可根据需要细化到子模块)
⏹SD:
SalesDistribution营销管理
⏹MM:
MaterialManagement资财管理(原材料管理)
⏹PP:
ProductionPlanning生产制造计划
⏹FI:
FinancialAccounting总帐基本会计
⏹CO:
Controlling控制管理会计
⏹AM:
AssetManagement资产管理固定资产管理
⏹HR:
HumanResource人力资源
⏹QM:
QualityManagement质量管理
⏹PM:
PlantManagement设备管理
⏹PS:
ProjectManagement项目管理
⏹PL:
ProductLifecycleManagement产品生命周期管理
⏹WF:
WorkFlow业务流程例如Himas,Onesystem
⏹IS:
IndustrySolution产业研发
⏹OT:
Other其它
M:
程序类型
⏹R:
REPORT报表
⏹F:
FORM(SAPSCRIPT,SMARTFORM)文档格式
⏹U:
Update数据库更新程序
⏹G:
功能程序
⏹I:
INTERFACE接口
⏹E:
ENHANCEMENT增强
⏹B:
BATCHOPERATION批处理
NNNN:
四位数字流水码
示例:
ZHRR0001,即为HR模块的第1个报表程序。
2.2数据字典的命名规范
ZXXMNNNN注意:
所有命名都必须是大写字母
XX:
应用代码(以下为常用的主模块列表,可根据需要细化到子模块)
⏹SD:
SalesDistribution营销管理
⏹MM:
MaterialManagement资财管理(原材料管理)
⏹PP:
ProductionPlanning生产制造计划
⏹FI:
FinancialAccounting总帐基本会计
⏹CO:
Controlling控制管理会计
⏹AM:
AssetManagement资产管理固定资产管理
⏹HR:
HumanResource人力资源
⏹QM:
QualityManagement质量管理
⏹PM:
PlantManagement设备管理
⏹PS:
ProjectManagement项目管理
⏹PL:
ProductLifecycleManagement产品生命周期管理
⏹WF:
WorkFlow业务流程例如Himas,Onesystem
⏹IS:
IndustrySolution产业研发
⏹OT:
Other其它
M:
数据对象类型
⏹Table(T)
⏹View(V)
⏹STRUCTURE(S)
NNNN:
四位数字流水码
示例:
ZHRT0001,即为HR模块的第1个数据表对象。
3.代码规范
3.1代码单元命名规范
对于复杂的程序,可以将其编写为多个INCLUDE(单元),不同作用的代码放在不同的INCLUDE中,各个INCLUDE的名称按下表编写
Events(TOP-OF-PAGE等)ZXXXXE01
Subroutines(Form.routines)ZXXXXF01
PAIModulesZXXXXI01
PBOModulesZXXXXO01
GlobalDataZXXXXTOP
InputHelpZXXXXH01
其中:
ZXXXX为程序名。
3.2变量命名规则
自定义变量
TypeName:
T_
Internaltables(global):
gt_
InternalTables(Local):
it_
工作区(structure):
wa_
全局变量:
g_
局部变量:
l_
Ranges=r_
Selectionscreenparameter:
p_
select-options:
s_
内部表Global:
GT_(local:
LT_)
工作区Global:
GW_(local:
LW_)
结构体Global:
GS_(local:
LS_)
参数P_
选择项S_
范围R_
静态字段ST_
常量C_
函数参数命名规则:
IMPORTINGparametersIM_
EXPORTINGparametersEX_
CHANGINGparametersCH_
返回参数RE_
函数输出参数PI_
函数输出参数PE_
函数引用参数PC_
函数表参数PT_
3.3屏幕编号规则
选择屏幕编号范围:
1000-1999
录入屏幕编号范围:
1-999
子屏幕编号范围:
3000-4999
3.4Status命名规则
Status命名规则为:
Menu+屏幕号,共用的为Menu+Main
3.5注释规则
1)任何全局变量要简单解释作用或使用地方
2)任何函数超过30行的函数或form必须在关键位置加注释,
3)解释操作意图
4)消息提示使用规则
5)消息请使用ZDEV的标准的消息文本;
7)如果标准消息文本中没有的请找XXX增加,不得自行维护;
8)注释里的创建日期和修改日期必须认证为填写的实际日期
3.6事件代码参照编写内容及顺序
***********************************************************************
*ProgramName:
ZXXXXX*
*ProgramTitle:
*
*Createdby:
创建者姓名*
*Createdon:
2006/02/18*
*REQUESTNO.:
DEVKXXXXXX*
*ProgramDescription:
*
*---------------------------------------------------------------------*
*ModificationLog:
*
*---------------------------------------------------------------------*
*No.DateProgrammerREQUESTNO.*
*001YYYY/MM/DD修改者姓名DEVKXXXXXX*
*Description:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*
*---------------------------------------------------------------------*
*No.DateProgrammer*
*002YYYY/MM/DDXXXXXXXX*
*Description:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*
***********************************************************************
[注意:
版本修改信息中设计文档版本有对应的文档则必须填写。
]
***********************************************************************
*DataDeclaration*
***********************************************************************
INCLUDE:
TABLES:
***********************************************************************
*DataDefination*
***********************************************************************
[必须写各变量的定义注释]
*------------------>Structuredefinition<------------------------------*
*------------------>Endofstructuredefinition<-----------------------*
*------------------>Internaltabledefinition<-------------------------*
*------------------>Endofinternaltabledefinition<------------------*
*------------------>Globalvariantsdefinition<------------------------*
*------------------>EndofGlobalvariantsdefinition<-----------------*
*------------------>Constantsdefinition<------------------------------*
*------------------>EndofConstantsdefinition<-----------------------*
***********************************************************************
*ScreenparameterDefination*
***********************************************************************
SELECTION-SCREENBEGINOFBLOCKXXX
WITHFRAME
TITLEXXXX.
SELECTION-SCREENBEGINOFLINE.
SELECTION-SCREENENDOFLINE.
PARAMETERS:
XXXXRADIOBUTTONGROUPXXX.
SELECTION-SCREENCOMMENTX(Y)TEXT-XXX.
PARAMETERS:
XXXXLIKE/TYPEXXXXMODIFIDXXX.
SELECT-OPTIONSXXXXFORXXXXMODIFIDXXX.
SELECTION-SCREENENDOFBLOCKXXX.
***********************************************************************
*Initialization*
***********************************************************************
INITIALIZATION.”初始化选择屏幕数据
***********************************************************************
*Atselectionscreenoutput*
***********************************************************************
[动态选择屏幕控制(PAI)]
***********************************************************************
*Atselectionscreen*
***********************************************************************
***********************************************************************
*Atselection-screenonvalue-request*
***********************************************************************
ATSELECTION-SCREENONVALUE-REQUESTFORXXX.
[搜索帮助]
***********************************************************************
*Topofpage*
***********************************************************************
***********************************************************************
*Startofselection*
***********************************************************************
***********************************************************************
*Atusercommand*
***********************************************************************
***********************************************************************
*Subforms*
***********************************************************************
[子函数]
***********************************************************************
*FormName:
XXXXX*
*Createdby:
DEVXX*
*Createdon:
2006/02/18*
*FormDescription:
*
*ParameterDescription:
*
*
(1)*
*
(2)*
*---------------------------------------------------------------------*
*ModificationLog:
*
*DateProgrammerDescription*
*YYYY/MM/DDXXXXXXXX*
***********************************************************************
3.7共用函数说明规范
***********************************************************************
*FunctionName:
XXXXX*
*Createdby:
DEVXX*
*Createdon:
2006/02/18*
*FunctionDescription:
*
*ParameterDescription:
*
*
(1)*
*
(2)*
*---------------------------------------------------------------------*
*ModificationLog:
*
*DateProgrammerDescription*
*YYYY/MM/DDXXXXXXXX*
***********************************************************************
3.8排版
1)程序块要采用缩进风格编写,缩进的空格数一般为2个。
LOOPATXXX.
IFXXX=XXX.____________________________________
SELECTSINGLE*FROMXXXWHEREXXX=XXX.
IFSY-SUBRCNE0.
PERFORMXXX.
ENDIF.
ENDIF.
ENDLOOP.
2)相对独立的程序块之间、变量结构定义之后说明之后必须加空行。
LOOPATXXX.
…
ENDLOOP.
LOOPATXXX.
…
ENDLOOP.
3)较长的语句(>72字符)要分成多行书写,新行要进行适当的缩进,使排版整齐。
IFIT_PREPARE-POINTER+0
(1)NE'Z'.
SELECT*FROMCEFORMF
WHERE
APPLCLASS='FGR'
ANDSUBCLASS='01'
ANDTABNAME='ZCS'
ANDFORM='ZCS003'
ANDPOINTER=IT_PREPARE-POINTER.
4)一行禁止写多条语句。
XXX='01'.WRITEXXX.
应写成
XXX='01'.
WRITEXXX.
3.9程序优化的注意点
1)在程序中不准使用Hardcode,如果有HardCode请用常量。
2)消息请用text-xxx再建立,不准直接将消息写在程序中,以满足多语种。
3)在定义数据类型时,尽量使用LIKE。
4)使用case语句时,必须有whenothers.
5)使用Select时,如果所选择的字段数量没有超过整个table的2/3时,不准用select*。
6)SELECT后面的字段的顺序必须与表中的字段的顺序保持一致。
7)使用selectsingle时,如果where语句中,不是表的关键字时,尽量换成uprowsto1代替single。
8)在使用了BAPI、RFC、SELECT、Read、UPDATE、MODIFY、INSERT、DELETE等语句后需要检查SY-SUBRC,判断操作是否成功
9)使用forallentriesinitab时,必须保证itab中记录不为0。
10)对SAP系统表中值,不能使用UPDATE、MODIFY、DELETE或INSERT语句,只能通过BAPI或BDC来修改其值。
11)当内表不再使用时,应及时清空内表和对应的工作区或释放内。
12)READTABLE使用BINARYSEARCH进行二分查找前,必须对表进行按关键字排序。
13)Where语句中请尽量用EQ代表“=”、LE代替“<=”、GE代替“>=”。
14)如果可以用CHECK的地方,尽量用CHECK,而不用IF。
15)在对数据量较多时禁止使用SELECT嵌套。
16)如果需要排序的数据量非常大,用ORDERBY在DBServer进行排序而非SORT。
(数据多少以100条记录为标准)。