ABAP开发规范
一、数据库操作
1.禁止修改系统标准表。
2.如果使用到FOR ALL ENTRIES IN语句取数,一定要校验关联内表非空性。
3.禁止一条SELECT关联的表超过5张,需要多表取值的时候建议分开取数。
4.查询条件和关联关系尽量使用主键或者索引项。
二、内表操作
1.LOOP取数,使用LOOP AT <internal table> into <work area> 模式。
2.禁止LOOP + SELECT SINGLE 语法,要求LOOP + READ TABLE BINARY SEARCH 语
法。二分法查找,表取数前需要按照查询KEY值进行排序。
3.禁止LOOP+SORT 语法,SORT语句须放在LOOP外。
4.禁止LOOP+DELETE <internal table> 语法,可采用表内增加删除标记字段,用LOOP +
READ TABLE BINARY SEARCH来更新删除标记,然后再DELETE 有删除标记的内容。
5.禁止LOOP+LOOP语法,统计汇总内容可以先COLLECT取数内容,然后再LOOP + READ
TABLE BINARY SEARCH语法来获取汇总内容。
6.使用loop + at end <Filed>/at new <Filed> 语法时注意,要根据包含<Filed>前所有的字段排
序。
三、对象定义
1、内表及工作区的创建,以参考结构的方式。
TYPES:BEGIN OF typ_log,
aufnr TYPE aufnr,
ztype TYPE bapi_mtype,
zmessage TYPE bapi_msg,
END OF typ_log.
DATA ls_log TYPE typ_log.
DATA it_log TYPE TABLE OF typ_log.
2、程序命名规则:
对象 |
命名规则 |
说明 |
表(Database table) |
Z[ac]_TAB_[Description] |
|
结构(Structure) |
Z[ac]_STR_[Description] |
|
视图(View) |
Z[ac]_V_[Description] |
|
数据元素(Data element) |
ZE_[Description] |
|
数据域(Domain) |
ZD_[Description] |
|
搜索帮助(Search help) |
ZH_[Description] |
|
锁(Lock object) |
EZ_[Description] |
|
类型组(Type group) |
ZY_[Description] |
|
表类型(Table Type) |
ZTT_[Description] |
|
开发类(Package) |
Z[ac] |
|
信息类(Message class) |
Z[ac]_MC_[Description] |
|
函数组(Function group) |
Z[ac]_[Description] |
|
函数(Function) |
Z[ac]_(FUN,BAPI)_[Description] |
优先调用标准的BAPI,反之用FUN |
SAPScript |
Z[ac]_SC_[Description] |
|
Smart Forms |
Z[ac]_SF_[Description] |
|
Smart Styles |
ZXFONT |
|
Area menu(区域菜单) |
Z[ac] |
|
报表(Report) |
Z[ac]R[Description] |
[Description]使用流水码 |
Include程序 |
Z[ac]_IN_[Description] |
|
Business Object |
Z[ac]_BO_[Description] |
|
Parameter ID |
Z[Description] |
|
BADI增强 |
Z[Description] |
|
CMOD增强 |
Z[ac][Description] |
|
Number Range |
Z[ac][Description] |
|
TCODE |
Z[ac][Description] |
[Description]使用流水编码 |
Webservers |
Z[ac]_WS_[Description] |
|
内表(internal table) |
IT_[Description] |
|
工作区(work area) |
WA_[Description]/LS_[Description] |
三、接口定义
1、接口程序命名规范
对象 |
命名规则 |
说明 |
表 |
Z[ac]_TAB_[Description] |
|
结构 |
Z[ac]_STR_[Description] |
|
函数组 |
Z[ac]_[Description] |
|
函数 |
Z[ac]_(FUN,BAPI)_[Description] |
参看5.3.1接口名称规范 |
程序 |
Z[ac]R[Description] |
[Description]使用流水码 |
TCODE |
Z[ac][Description] |
[Description]使用流水编码 |
Webservers |
Z[ac]_WS_[Description] |
2、输入输出参数命名规范
参数 |
命名规则 |
说明 |
输入 |
IP_[Description] |
|
输出 |
EP_[Description] |
特别的关于返回报错消息,统一定义:EP_TYP 返回消息类别(参考BAPI_MTYPE),EP_MSG 返回消息文本(参考BAPI_MSG) |
输入表 |
IT_[Description] |
|
输出表 |
ET_[Description] |
特别的关于返回错误消息,统一定义:ET_LOG 返回错误消息(参考BAPIRET2) |
3、闸口程序
DATA flag TYPE char1.
CALL FUNCTION 'Z_OPEN_INTERFACE'
EXPORTING
im_name = '*******'”接口名称
IMPORTING
lv_flag = flag. IF flag = 'N'.
ep_typ = 'E'.
ep_msg = '请先打开接口控制闸口'.
EXIT.
ELSEIF flag IS INITIAL.
ep_typ = 'E'.
ep_msg = '接口控制闸口未维护'.
EXIT.
ELSEIF flag = 'Y'.
*************”接口正文
ENDIF.
ABAP开发规范的更多相关文章
- ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
Jerry进入SAP成都研究院前,一直是用C/C++开发,所以刚接触ABAP,对于她在某些语法环境下大小写敏感,某些环境下不敏感的特性很不适应.那时候Jerry深深地怀念之前在C/C++编程时遵循的驼 ...
- SAP官方发布的ABAP编程规范
最近有朋友在公众号后台给我留言,"Jerry啊,你最近写的都是一些SAP研究院里面用到的新技术,能不能写点SAP传统的开发技术比如ABAP相关的东西"? 其实Jerry在刚开始写这 ...
- 我的公司培训讲义(1):.NET开发规范教程
这是1年多以前我在公司所做讲座的讲义,现在与园友们分享,欢迎拿去使用.一起讨论.文中有若干思考题,对园友们是小菜一碟.另有设计模式讲义一篇,随后发布.博文上了首页,感谢博客园团队推荐,也感谢所有园友的 ...
- 转载:移动web开发规范
本文来源:http://blog.csdn.net/joueu/article/details/44329825 以下是规范建议,均是日常在开发当中的的一些经验,仅供参考. 移动web开发规范 一.头 ...
- php与数据库代码开发规范
php与数据库代码开发规范 1/25/2016 6:00:31 PM php对各类变量命名规范 目录名 文件命名 局部变量命名 使用英文动词名词,用下划线作为单词的分割,所有字母均使用小写 目录 up ...
- 【敏捷开发】Android团队开发规范
这里说的开发规范分成目录规范,项目和包名的命名规范,类,方法,变量和常量的命名规范这几种. 目录规范 目录规范——在开发中整体文件夹组织结构. Requirement——需求文档文件夹 Design— ...
- 从零开始编写自己的C#框架(3)——开发规范
由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直 ...
- 从零开始编写自己的C#框架(3)——开发规范(转)
由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直 ...
- Web前端开发规范文档(google规范)
(Xee:其实没什么规范约束,但是养成一种好习惯,何乐而不为?) 区分大小写 xhtml 区分大小写,xhtml要求 标签名 属性名 值都要小写,并且要有双引号和 标签闭合. css 元素名称以及i ...
随机推荐
- Linux 常用性能分析命令
性能分析 vmstat 虚拟内存统计 用法 Usage: vmstat [options] [delay [count]] Options: -a, --active active ...
- NLP一些工程应用模型
发现一个DL的博客,对文章分类归纳做的比较好:第三篇文章中的模型可以重点参考 “自然语言学习资料的汇总” 综述 | 一文读懂自然语言处理NLP(附学习资料) 用深度学习(CNN RNN Attenti ...
- [STM32F103]定时器中断
l 使能定时器时钟. RCC_APB1PeriphClockCmd(); l 初始化定时器,配置ARR,PSC. TIM_TimeBaseInit(); l 开启定时器中断,配置NVIC. void ...
- 常见cmd命令,开发人员必备
运行程序 notepad--------打开记事本 calc-----------启动计算器 regedit.exe-------注册表 write----------写字板 mmc--------- ...
- add-migration Build failed.
>add-migration JczInfoDateTimeBuild failed. 1编译解决方案,看是否报错,不管哪个有错误都会迁移失败 2重启vs
- 前端人员使用notepad++基本配置
截图说明: 以上截图说的很明确了,基本满足基本的开发. notepad++前端配置版支持Emmet快速完成:支持Explorer目录管理:支持cmd控制台命令:支持MarkDown编辑预览:其他想用的 ...
- kylin配置
hadoop 2.7.4,hive 2.1.1,hbase 1.4.4 配置好的情况下 下载apache-kylin-2.1.0-bin-hbase1x.tar.gz 解压后,配置环境变量 expor ...
- servlet对象的生命周期
servlet对象默认第一次访问的时候创建,服务器关闭的时候销毁.当servlet对象创建的时候会调用init方法,当对象销毁的时候,会调用destroy方法,每次访问servlet时,都会调用ser ...
- js,jquery分别怎么判断页面元素是否存在
1JS判断方法:if(document.getElementById("XXX")){ console.log("存在") } 2Jquery判断方法:if ...
- 《2018面向对象程序设计(Java)课程学习进度条》
周次 (阅读/编写)代码行数 发布博客量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 50/40 1/0 6/4 九九乘法表 第二周 100/80 1/0 6/8 实验5,6, ...