ABAP Programming Standards ABAP Programming Standards
Table of Contents INTRODUCTION: ABAP/4 DEVELOPMENT STANDARDS 5 ABAP/4 PROGRAMMING STANDARDS 6 HARD CODING 6 INTERNATIONAL CONSIDERATIONS 6 Date Formats 6 Currency Output Formats 7 Paper Size 7 AUTHORIZATION CHECKING 7 Reports (Read only) 7 Update Programs 8 Adding Authorization Checks 8 COMMENTS 8 STATEMENT FORMATTING 8 Code Formatting 8 Chaining 8 INCLUDE CODE 8 MESSAGES 8 OTHER REPORT STANDARDS 9 DATA ACCESS 9 DATA UPDATE 9 Non-Configuration Tables 10 SUBROUTINES 10 Internal Subroutines (Forms) 10 External Subroutines 10 STANDARDS FOR SPECIFIC STATEMENTS 10 AT PFnn Statement 10 CHECK Statement 10 DATA Statement 10 IF Statement 11 MOVE-CORRESPONDING Statement 11 PARAMETER Statement 12 SORT Statement 12 Batch Data Input 12 Variants 12 Lock objects 12 CHECK, EXIT, REJECT, STOP 12 COLLECT 12 TABLE ACCESS 12 Program Structure 13 Screen Definitions 13 GUI Interfaces 13 Pop-up Windows 13 OK-CODE (SY-UCOMM) 13 CODE EFFICIENCY STANDARDS 14 SELECT: SELECT * VS. SELECT SINGLE* 14 SELECT: SELECT * WITH CHECK 14 SELECT: SELECT STATEMENT "HIT SET" 15 SELECT: SELECTING ENTIRE TABLES 15 SELECT: SELECTING CERTAIN FIELDS 15 SELECT: NESTED SELECTS 15 SELECT: RANGE TABLES 16 SELECT: VIEW VS. NESTED SELECTS FOR JOINS 17 SELECT: TABLE BUFFERING 17 SELECT: COLUMN VS. ROW UPDATES 17 INDEX DESIGN 17 INTERNAL TABLES: READING A SINGLE RECORD 18 INTERNAL TABLES: SORTING 18 INTERNAL TABLES: SELECT INTO VS. APPEND 19 INTERNAL TABLES: SELECT - ENDSELECT VS. INTERNAL TABLE 19 INTERNAL TABLES: LOADING AND READING 19 INTERNAL TABLES: READ BINARY VS. COLLECT 19 INTERNAL TABLES: SEARCHING 20 INTERNAL TABLES: KEY FIELDS ON READ 21 INTERNAL TABLES: NUMBER OF ENTRIES 21 INTERNAL TABLES: EXPLICIT WORK AREAS 21 INTERNAL TABLES: SORTING 23 INTERNAL TABLES: DELETING RECORDS 23 LOGIC: NESTED IFS 23 LOGIC: CASE VS. IF 23 LOGIC: MOVE-CORRESPONDING 23 LOGIC: LOOP/WHERE VS. LOOP/CHECK 24 LOGIC: WHILE VS. DO LOOPS 24 LOGIC: PERFORM WITH INDEX 24 LOGICAL DATABASE 24 GENERAL: DEAD CODE 24 GENERAL: FIELD LENGTH 24 GENERAL: STRLEN AND CHECK SUMS 25 GENERAL: TYPED PARAMETERS 25 GENERAL: TYPED FIELD SYMBOLS 25 GENERAL: FIELD TYPES FOR VARIABLES 25 DON’T MIX TYPES UNLESS ABSOLUTELY NECESSARYABAP LESSONS LEARNED 25 ABAP LESSONS LEARNED 26 ADAPTEC-SPECIFIC STANDARDS 27 MODULE POOL REPORT FORMAT 27 INTERACTIVE REPORT FORMAT 30 BDC PROGRAM FORMAT 33 APPENDIX 37 TEMPLATE SCREEN FLOW LOGIC STRUCTURE 37 Flow Logic 37 Process Before Output Modules 37 Process After input modules 37 DYNPRO PROCESSING LOGIC: ALLOWED KEY WORDS 39 MODULE, FIELD, SELECT AND VALUES 39 MODULE <Module Name> 39 PROCESSING LOGIC COMMANDS 39 PROCESSING CONTROL EXPANDED INFORMATION 40 ON INPUT 40 ON CHAIN-INPUT 40 ON REQUEST 40 ON CHAIN-REQUEST 40 ON *-INPUT 40 AT EXIT-COMMAND 40 AT CURSOR-SELECTION 40 General Rules 40 AT EXIT-COMMAND 41 FIELD <Field Name> 41 ON INPUT 42 ON CHAIN-INPUT 42 ON REQUEST 42 ON CHAIN-REQUEST 42 ON *-INPUT 42 AT CURSOR-SELECTION 42 WITH'xxxx' 42 SELECT 42 FIELD <Field Name> VALUES (<List of Values>). 43 CHAIN. ... . ENDCHAIN 43 LOOP ... ENDLOOP 43 CALLSUBSCREEN 44 CALL CUSTOMER-SUBSCREEN 44 SAP BASIS TRANSACTIONS 45 GLOSSARY OF TERMS AND ACRONYMS 48 MAIN GLOSSARY OF TERMS 48 ALPHABETICAL OVERVIEW OF ABAP/4 51 CLASSIFICATION OF ABAP/4 KEY WORDS BY FUNCTIONAL AREA 58 CLASSIFICATION OF ABAP/4 KEY WORDS BY TYPE 61 Declarative Key Words 61 Event Key Words 61 Control Key Words 62 Comments 66 Include Other Program Components 66 ABAP编程标准是开发高质量、可维护和高效代码的关键指南。以下是一些主要的ABAP编程规范和技术要点的详细说明: 1. **硬编码(Hard Coding)**:应避免在程序中使用硬编码值,因为这降低了代码的灵活性和可重用性。建议使用参数化或配置化的解决方案来替代硬编码。 2. **国际考虑(International Considerations)**:考虑到全球化的需求,程序应支持多种日期格式、货币输出格式以及纸张大小。使用标准的ABAP函数来处理这些格式,确保程序能适应不同的语言和地区设置。 3. **权限检查(Authorization Checking)**:所有数据访问和更新都应进行权限检查,以确保数据安全性。对于只读报告,应在程序开头进行一次权限检查;对于更新程序,应在关键操作点添加授权检查。 4. **注释(Comments)**:良好的注释能提高代码的可读性。每个功能块和复杂逻辑应有清晰的注释,说明其目的和工作方式。 5. **语句格式化(Statement Formatting)**:代码应保持一致的缩进和排列,使用空行分隔不同部分。链式调用(Chaining)应适当使用,避免过深的嵌套。 6. **包含代码(Includes)**:将通用代码片段封装到Include中,以实现代码重用和简化维护。 7. **消息处理(Messages)**:使用标准的消息类型和编号,以保持消息一致性,并方便用户理解和处理。 8. **其他报告标准**:数据访问和更新时应遵循最佳实践。非配置表应有明确的用途,子程序(Subroutines)分为内部(Forms)和外部。 9. **特定语句的标准**:针对特定的ABAP语句,如`AT PFnn Statement`,`CHECK`,`DATA`,`IF`,`MOVE-CORRESPONDING`,`PARAMETER`,`SORT`,批量数据输入,变量等,都有特定的编写规则以优化性能和可读性。 10. **程序结构(Program Structure)**:屏幕定义,GUI接口,弹出窗口,`OK-CODE(SY-UCOMM)`的使用等都应遵循标准,确保用户界面的友好性和一致性。 11. **代码效率标准**:选择正确的数据检索方法,例如: - `SELECT *` vs. `SELECT SINGLE*` - `SELECT * WITH CHECK` - "Hit Set" in SELECT statements - 避免全表扫描 - 使用视图(View)替代嵌套选择(Nested Selects)进行联接 - 表缓冲(Table Buffering) - 列更新(Column Updates) vs. 行更新(Row Updates) 12. **内部表(Internal Tables)**:处理内部表时注意以下几点: - 单个记录的读取 - 排序 - `SELECT INTO` vs. `APPEND` - 读取和加载 - `READ BINARY` vs. `COLLECT` - 搜索 - 键字段在读取时的作用 - 记录数量 - 显式工作区 - 内部表排序 - 删除记录 13. **逻辑控制(Logic)**:优化逻辑结构,例如: - 避免过多嵌套的`IF`s - 使用`CASE` vs. `IF` - 使用`MOVE-CORRESPONDING` - `LOOP/WHERE` vs. `LOOP/CHECK` - `WHILE` vs. `DO`循环 - 使用索引的`PERFORM` 14. **通用规则(General Rules)**:处理死代码,字段长度的一致性,`STRLEN`和校验和的使用,类型化参数,类型化字段符号,变量的字段类型,以及避免混合类型除非绝对必要。 15. **ABAP教训(Abap Lessons Learned)**:从过去的经验中学习,不断改进和优化代码质量。 16. **适配器特定标准(Adapter-Specific Standards)**:根据特定的开发环境或需求,可能有额外的格式和结构要求,如模块池报告格式,交互式报告格式,BDC程序格式等。 17. **流程逻辑(Flow Logic)**:理解并遵循 Dynpro 流程逻辑中的关键词使用,如 Process Before Output 和 Process After Input 模块,以及不同事件处理。 18. **词汇表(Glossary of Terms and Acronyms)**:掌握ABAP相关的术语和缩写,有助于理解并遵循标准。 这些ABAP编程标准旨在提高代码质量,降低维护成本,提升系统性能,并确保团队间的代码一致性。遵循这些标准将使ABAP开发更专业、更有效。
剩余63页未读,继续阅读
- 粉丝: 3
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python对文件名后缀名批量改名
- 基于Swin-Transformer和Unet 项目、自适应多尺度训练、多类别分割:眼镜分割实战
- 基于STM32-ESP826603的远程机房控制系统.zip
- Python爬虫对Boss直聘网站爬取数据
- 分布式驱动电动汽车复合制动控制策略,建立七自由度整车模型、魔术轮胎模型、电机模型、电池模型,研究上下层机电复合控制策略
- 基于SpringBoot及thymeleaf搭建的疫情信息管理系统高分项目+源码.zip
- 认识VLAN(虚拟局域网,Virtual Local Area Network)
- IMG_20241011_215804.jpg
- 基于Simulink的ABS仿真模型,采用PID控制策略的防抱死制动系统进行仿真分析
- 基于SpringBoot和Vue的餐馆点餐系统+高分项目+源码.zip