首页 > 其他分享 >ABAP开发规范V1.0

ABAP开发规范V1.0

时间:2024-11-27 17:35:24浏览次数:4  
标签:Name 规范 V1.0 ABAP 复制 内容 模块 无法 加载

1. 概要

1.1目的

该文档定义了在开发与维护ABAP程序过程中必须遵守的规范与标准。该文档应当被视为一个动态的文档,该文档会根据需要进行增补和修订。

开发规范的重要作用在于保持整个开发团队的开发风格一致,提高程序质量,降低维护压力。

1.2适用范围

所有ABAP开发及系统配置人员。

2. 程序命名规范Naming Rule

2.1.目的

系统设计及开发过程中,需要遵守的命名规则规定的相关标准。

2.2.命名规范标准

制作Naming Rule时根据以下制作标准编写。

2.2.1.命名规范基本结构

命名规范的基本结构如下所示:

'Z' + (模块标识符) + (标识符:一至两个字母) +(序号四位)。

命名一个对象的时候以 'Z'开头。

模块标识符,用来指明所属模块。

标识符,用来区分该对象的类别。

使用这种基本结构为Naming Rule的原则,无法应用Naming Rule的情况可以使用其他例外结构。

2.2.2.流程模块命名

流程模块命名为2至4位字符,以按业务流程来区分,跨业务流程模块的以服务提供方作为流程模块命名。

(1)模块命名规则

流程模块 名称
SD 销售
PP 生产
FI 财务
MM 后勤
HR 人事
PM 设备
MDM 主数据
PS 项目管理
…… ……

2.2.3.Package 开发包

(1)Z + 流程模块名(各流程模块用一个)

EX:ZFI、ZPM。。。。

Package由开发负责人统一创建,需要的可以提出申请。

²注意:S4/HANA中所有接口及增强都放在Package:ZNT下面

²国贸个性化需求放ZGM包下

2.2.4.ABAPDictionaryObject

(2)Object 类型

标识 类型 含义
T Table 数据库表
V View 数据库视图
S Structure 结构
LT Table Type 使用Line Type来定义表的时候使用
TG Type Group 类型组
SH Search Help 搜索帮助

(3)Tables Name

1)字段的定义必须用Data Element,不能使用原始类型。

对象 Table
命名规范 Z + FI + T + NNNN
说明 Z 表示自建
FI 流程模块
T 表示Table
NNNN 4个数字的组合,数字的递增是1为单位,表的编号XXXX应和该表所对应的主程序的编号保持一致。ex:ZFIT0001 当后期业务需要加入跟该表有关联的新表时,在后面加入字母A/B/C。。。来区分 ex:ZFIT0001A
范例 ZFIT0001 : FICO模块的第一张自建表 ZFIT0001A: FICO 模块的第一张自建表的关联表
描述 [流程模块] + 该表用途的描述(尽量详细明了)

(4) Configuration table

对象 Table
命名规范 Z + FI + T + _ + CFG + NNN
说明 Z 表示自建
FI 流程模块
T 表示Table
NNN 3个数字的组合,数字的递增是1为单位,表的编号XXXX应和该表所对应的主程序的编号保持一致。ex:ZFIT_CFG001
范例 ZFITCFG001 : FICO模块的第一张配置表
描述 [流程模块] + 该表用途的描述(尽量详细明了)

(5)Structure Name

所有字段的Data Element中,没有特殊原因一定要分配Data Element。(不使用Predefined type .)

对象 Structure
命名规则 Z + FI + S + NNNN
说明 Z 表示自建
FI 流程模块
S Structure
NNNN 4个数字的组合,数字的递增是1为单位
举例 ZFIS0001
Description [流程模块] + Structure 用途描述(尽量详细明了)

对于增强结构,以ZAS开头,后加有意义的字符区分,即:ZAS+ 有意义的字符

(6)View Name

无法复制加载中的内容

Table type

无法复制加载中的内容

(7)Search Help Name

无法复制加载中的内容

(8)Type Group Name

无法复制加载中的内容

2.2.5.Class Definition & Implementation

(9)Class Name

无法复制加载中的内容

(10)Interface

无法复制加载中的内容

(11)BADI Enhancement Spot Name

无法复制加载中的内容

(12)BADI Name

无法复制加载中的内容

(13)BAdI Implementation Name

无法复制加载中的内容

2.2.6.ABAP Programming Object

(14)概要

对于与ABAP 程序相关的Object规定命名规则。

  • 命名规则使用重复的情况(例:是BDC,是 Report 程序的情况命名规则):

按DialoguE (第1级), Interface (第2级), Report(第3级) , BDC(第4级),Conversion(第5级),Form(第6级)的顺序,依次套用命名规则。

无法复制加载中的内容

(15)Dialog Program Name

无法复制加载中的内容

(16)Report Program Name

无法复制加载中的内容

(17)Interface Program Name

无法复制加载中的内容

(18)Includes programs

主程序ID + TOP/FRM/_screen No.

(19)Function Group Name

无法复制加载中的内容

(20)Function Module Name

无法复制加载中的内容

(21)Screen Name

无法复制加载中的内容

(22)Menu Name( GUI-Status (PF-Status) )

无法复制加载中的内容

(23)GUI title

无法复制加载中的内容

(24)Subroutines

无法复制加载中的内容

(25)Transaction Code

与程序名称相同。(Module Pool 程序的情况'SAPM'除外)

(26)Form Name

无法复制加载中的内容

2.2.7.其他命名规范

(27)消息类开发需遵循以下开发规范:

a) 必须使用预定义的MESSAGE(SE91定义),不得直接抛出硬编码的text消息,或不使用消息类抛出消息;

b) 新建消息类须遵循消息类命名规则,Z+FI(流程模块)+XX;

c) 板块消息类和跨板块(全局)消息类需严格区分,避免板块和全局消息类传输时相互覆盖。

(28)Message Class Name

无法复制加载中的内容

Message Text 使用时Parameter有两个以上的情况,在 Parameter上可以区分顺序。

例) session&1正被用户 &2处理中

(29)Project Name

用户自定义的User Exit,适用本标准。

无法复制加载中的内容

(30)Number Ranges (Object)

Number Range Object按各模块使用序列号并创建。

无法复制加载中的内容

(31)权限对象命名规范

Authorization Fields

无法复制加载中的内容

Authorization Object Classes

无法复制加载中的内容

Authorization Objects

无法复制加载中的内容

(32)传输请求号

传输请求理论上对应开发清单,一个功能模块创建一个传输请求,不允许一个请求号嵌套多人子请求号。

无法复制加载中的内容

3. Coding Convention

3.1.变量声明

通常在定义变量的时候,冒号后面要用一个空格。

例: DATA:MATNR LIKE VBAP-MATNR,

WERKS LIKE VBAP-WERKS.

在多个程序中共同使用的变量和类型,使用Type Group或者Include文件来减少重复的定义。

如果可能,尽量使用本地变量以减少全局变量的定义个数。

如果可能,尽量不让变量持续的运行在程序中。

3.2.变量的命名规范

一般规则:变量范围(g/l)+变量类型(v/s/t)+'_'+ xx.xxx

如:

全局变量 gv+_+xx.xxxeg: data gv_count type i.

全局结构 gs+_+xx.xxx

全局内表 gt+_+xx.xxx

本地变量 lv+_+xx.xxxeg:data lv_count type i.

本地结构 ls+_+xx.xxx

本地内表 lt+_+xx.xxx

n全局变量的定义

无法复制加载中的内容

n本地变量的定义

无法复制加载中的内容

nTypes 定义

  • Program 内部 Global Types 定义

  • User Predefined Types

  • Refer to Existing types

  • Reference Types

  • Structured Types

  • Table Types

  • Ranges Table Types

无法复制加载中的内容

n全局内表的定义

无法复制加载中的内容

n本地内表的定义

无法复制加载中的内容

n Perform Parameter 定义

无法复制加载中的内容

n User Interface定义

  • Selection Screen的user interface中要使用的parameters/select-options的相关定义

  • 各个相关的Label text:利用相关 program的text elements tool进行管理

nParameters

无法复制加载中的内容

n Select-Options

无法复制加载中的内容

nConstant常量定义

无法复制加载中的内容

n Range变量 公布

无法复制加载中的内容

n集的定义

无法复制加载中的内容

nText Symbols

所有program 内的 text一定要使用Text Symbol

Hard conding text时一定要进行向text symbol的变化。在 program中使用的所有text要使用ABAP Text Element tool进行管理。

无法复制加载中的内容

nField Symbols

Field Symbols区分Global/Local。

要指定Type,指定特别type困难的情况使用'TYPE ANY'。

无法复制加载中的内容

n Table Control

Table Control作Global定义.

无法复制加载中的内容

nCustom Control

Control Object使用通过Container Screen Layout的Custom Control

无法复制加载中的内容

nLocal Class Definition (Program 内部)

与通过Class Builder创建的global class object不同,是在程序内部定义。

无法复制加载中的内容

n参考变量(Reference Variables for Class/Interfaces)

无法复制加载中的内容

4. 程序注释的命名规范

以下定义注释相关的标准事项。

4.0一般规则

注释分为程序 main header 注释, Line注释, Block注释三种。

①一定要在适当的位置上进行注释.

②注释基本上使用中文。

③所有程序上都要附上main header 注释。

④所有子模块routine上都要附上注释。

⑤程序的所有注释,为了方便第三者理解都要进行详细描述。

⑥有效代码行与注释的比例不得低于100:7

4.1注释的格式

无法复制加载中的内容

4.1.1标题/程序头的注释

所有程序要包含与以下信息相关的注释。

main header 注释的位置位于main Include的上端。

程序修改时与变更编号一起管理变更内容,并且在程序coding部份也要通过注释描述变更编号,便于后期管理。

无法复制加载中的内容

4.1.2修改程序的注释

程序修改时程序下端的程序main header 注释中一定要描述变更历史,修改的子模块 routine也要注释,需要增加 **** XX BY 用户名 AT 日期 For 申请者 Begin***;

**** Add BY 用户名 AT 日期 For 申请者 End ***。

XX:新增Add 修改 Modify 删除 Delete,

删除时直接注释源代码,不需要物理删除。

无法复制加载中的内容

5. 程序结构

主程序结构应该简洁明了。

主程序应该至少采用:

XXXTOP

XXXXFRM的模式。

XXXX表示主程序ID。

程序主体逻辑部分应该至少分为:

FRM_GET_DATA

FRM_PRC_DATA两部分。

²ALV输出保持统一风格,参考示例如下:
img

²修改内表行时不使用MODIFY关键字,而是使用FIELD-SYMBOLS指针

LOOP AT gt_ ASSIGNING FIELD-SYMBOLS(<g_acdoca>).

<g_acdoca >-hslalt = 1000.

<g_acdoca >-kslalt = 2000.

<g_acdoca >-oslalt = 3000.

<g_acdoca >-vslalt = 4000.

<g_acdoca >-bslalt = <g_acdoca >-oslalt + <g_acdoca >-vslalt.

ENDLOOP.

标签:Name,规范,V1.0,ABAP,复制,内容,模块,无法,加载
From: https://www.cnblogs.com/amadeuslee/p/18572720

相关文章

  • 数据库开发规范v1.0
    一、建表规约【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否)。说明:任何字段如果为非负数,必须是unsigned。正例:表达逻辑删除的字段名deleted_flag,0表示删除,1表示未删除。【强制】表名、字段名必须使用小写字母或......
  • Node开发规范v1.0
    一、空格与格式(一)缩进采用2个空格缩进,而不是tab缩进。空格在编辑器中与字符是等宽的,而tab可能因编辑器的设置不同。2个空格会让代码看起来更紧凑、明快。变量声明永远用var声明变量,不加var时会将其变成全局变量,这样可能会意外污染上下文,或是被意外污染。在ECMAScript5的s......
  • API开发与管理规范v1.0
    1.协议规范为了确保不同业务系统之间以及前后端的的数据交互的快捷性,通讯协议统一约定如下:对内调用的API接口统一使用HTTP协议对外互联网发布的API建议使用HTTPS协议也可以使用HTTP新的API接口必须使用标准的HTTP报文并使用JSON作为统一的数据传送标准如无特殊情况禁止在......
  • .NET开发规范v1.0
    一、编程规范(一)命名风格命名要找更有表现力的词,更专业的词,比如获取数据不用get而使用fetch别害怕长名称,长而具有描述性的名称比短而令人费解的名称好为作用域大的名字采用更长的名字,作用域小的使用短名字给变量名带上重要的细节,比如加上单位ms等。【强制】严禁......
  • JAVA开发规范v1.0
    01-中铜国贸JAVA开发规范v1.0一、编程规约(一)命名风格【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name/_name/$Object/name/name$/Object$【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的......
  • Java代码之美,从遵循样式规范开始
    作者:京东零售刘仲伟 在软件开发的世界里,代码不仅是程序的基石,更是程序员交流的通用语言。而Java,作为一门广泛应用于企业级应用的编程语言,其代码的可读性和一致性对于项目的长期维护和团队协作至关重要。本文将带你探索Java代码的美学,揭示那些能够让你的代码既美观又高效的样......
  • 自动检测工作人员工服穿戴规范行为
    自动检测工作人员工服穿戴规范行为利用现场安装的高清摄像机,自动检测工作人员工服穿戴规范行为对采集到的视频进行预处理,识别出图像中的员工,并检测其工服穿戴情况,一旦系统判断出工服穿戴异常,将立即发出警报,通知管理人员或自动启动相应的安全措施。通过实时监测,及时发现并纠正工服......
  • SAP-ABAP开发-第一代增强示例
             以SD用户出口为例(SD及MM较多的程序都是基于源码控制来实现增强的)基于销售订单,当选择ZUSS类型的销售订单时,PO编号必输。开发类:VMOD出口程序:include中需要申请accesskey才能更改的,相当于修改了SAP的标准程序T-code:spro进入后台配置目录,找到用户出口,找......
  • 【ABAP——批量导入】
    文章目录BAPI数据导入更改采购订单BDC数据导入更改采购订单程序中调用BAPI更改采购订单程序中使用BDC更改采购订单在SAP系统中,如果想对一个事物码(TCODE)进行反复操作,从而达到批量数据处理的目的,这就是批量导入。批量导入的目的是重复的操作一类数据,从而用程序模拟业......
  • ABAP开发学习——二分法查找问题记录
    在ABAP中使用二分法查找之前需要注意内表需要提前经过排序,尤其注意根据哪个字段使用BINARYSEARCH,就要针对哪个字段进行排序。使用两个及以上字段更要注意这一点,不可以用AB排序,再用BC去二分法查找,这样通常是读不到所需数据的。TYPES:BEGINOFty_data,field1TYP......