Contents
Preface11
1Introduction =======================================13
1.1The Technical Quality of ABAP Software ===================16
1.1.1Aspects of Technical Quality ==========================17
1.1.2Standards and Guidelines ============================19
1.2ABAP Objects and Unicode-Enabling=====================19
1.2.1ABAP Objects===================================20
1.2.2Unicode-Enabling =================================30
1.3The Structure of This Book ============================32
2 Quality of the Development Organization =================37
2.1Introduction ======================================37
2.1.1What You Need to Organize to Facilitate ABAP Developments ==37
2.1.2Factors That Complicate the Organization of Developments =====38
2.2The Impact of Using ERP Functionality ====================39
2.2.1Testing the Quality in a Complex Environment ==============40.
2.2.2Documenting ABAP Developments =====================42
2.3The Impact of a Multi-System SAP Landscape ==============52
2.3.1Basics of a Multi-System Landscape ====================52
2.3.2Basic Variants of an SAP System Landscape ==============56
2.3.3Pitfalls of Monitoring Transports =======================62
2.4The Impact of a Multi-Application Landscape ===============65
2.4.1Requirements ====================================66
2.5The Impact of Several SAP R/3 Production Systems ===========67
2.5.1Drawbacks of a Roll-Out Scenario =====================68
2.5.2Recommendations ================================69
2.6Summary ========================================71
3 Correctness =====================================73
3.1Typical Correctness Categories ========================73
3.2Selecting Data ===================================74
3.2.1Selecting One Unique Row =========================74
3.2.2Complex WHERE Conditions =======================77
3.2.3Validity of Selected Data ===========================78
3.2.4Selections Based on Database Views ===================82
3.2.5Authorizations ==================================89
3.3Processing Data ==================================91
3.3.1Processing Quantities and Amounts ====================91
3.3.2Rounding Problems ==============================94
3.3.3Misunderstandings About Control Statements =============98
3.3.4Misunderstandings About Interactive Reporting ===========105
3.4 Managing Data in Memory ==========================109
3.4.1Availability of Data Within One Program ================109
3.4.2Availability When Calling an External Subroutine ==========112
3.4.3Shared Availability of Data (TABLES) =================113
3.4.4Availability of Data in Module Pools ==================116
3.4.5Availability of Data Using Function Modules =============120
3.4.6Parameter IDs =================================123
3.4.7 Why ABAP Objects Will Improve Management of Data ====124
3.5Inconsistencies in Database Updates ===================128
3.5.1Avoiding Simultaneous Database Updates ==============128
3.5.2Keeping Updates of Several Tables Consistent ===========136
3.6Checking the Unicity of Interface Data ==================140
3.6.1An Example of Incorrect Data Exchange ===============140
3.6.2Quality Levels for Exchanging Data ==================140
3.6.3Implementing Data Exchange Scenarios ===============142
4 Stability ======================================145
4.1Stability Problems ===============================145
4.2Programming Errors That Promote Instability =============147
4.2.1Field Types ==================================147
4.2.2Endless Loops ================================159
4.3Risks of Dynamic Programming ======================165
4.3.1Dynamic Data ================================166
4.3.2Dynamic Calls ================================180
4.4Changes in an ABAP Program’s Environment ============189
4.4.1User Authorizations ============================189
4.4.2Native OS commands ==========================190
4.4.3Filenames ===================================191
4.4.4Code-Page Use ==============================193
4.4.5Client Applications =============================194
4.5Using an ABAP Program Incorrectly ==================195
4.5.1Restrictions of Dialog Processing ===================196
4.5.2Restrictions for the Distribution of Tasks ==============205
4.5.3Restrictions of Batch Data Communication =============209
4.5.4Questions to Ask in Order to Avoid Wrong Program Use ===217
5 Exceptions and Error Handling =====================219
5.1The Importance of Exception Handling =================219
5.2Implementation of Exception Handling =================221
5.2.1Generating and Intercepting an Exception Signal =========222
5.2.2Implementing the Actual Exception Handling ===========226
5.3Class-Based Exception Handling ====================231
5.3.1Basic Implementation ===========================231
5.3.2Exception Classes =============================232
5.3.3Details of Class-Based Exception Handling ============233
5.3.4Making Existing Exception Handling Class-Based =======240
5.3.5Creating Your Own Exception Classes ==============241
5.4Conclusions =================================243
6 User-Friendliness245
6.1The Importance of Standardization ==============================245
6.2Guidelines for The Look-and-Feel and Behavior of Your Programs ========247
6.2.1Things to Be Standardized in The Look-and-Feel of an ABAP Application ==247
6.2.2Things to Be Standardized in The Behavior of an ABAP Application ======254
6.3Guidelines for Navigation and Support ===========================260
6.3.1Assisting Users During Screen Input ===========================260
6.3.2Limiting Unnecessary Screen Navigation ========================261
6.3.3Avoiding Unnecessary Repetitions of Input ======================263
6.3.4Avoiding Unnecessary Messages =============================264
6.4Conclusion 265
7 Performance ===================================================267
7.1Introduction ===================================================267
7.2Optimizing Processing on the Database Server: Using Indexes ==================269
7.2.1Primary and Secondary Indexes ====================================270
7.2.2What You Can Do to Prevent the Creation of Extra Indexes =================273
7.3Minimizing Data Traffic Between the Database Server and the Application Server =====293
7.3.1Limiting the Number of Rows Selected ===============================295
7.3.2Limiting the Number of Fields Selected ===============================300
7.3.3Limiting the Number of Times That Data Is Selected ======================302
7.4Optimizing Processing on the Application Server ==========================308
7.4.1Performance Issues Related to Internal Table Processing ===================309
7.4.2Basics of Internal Table Types =====================================310
7.4.3How to Use Internal Tables =======================================311
7.4.4When to Choose Which Internal Table Type ============================319
7.4.5Semi-Persistent Memory =========================================321
7.4.6Parallel Processing =============================================324
7.5Minimizing Data Traffic Between the Application Server and a Client =============327
7.5.1Uploads and Downloads =========================================327
7.5.2Control Flushing ==============================================328
7.6Summary ====================================================329
8 Maintainability=====================================331
8.1Maintainability of Standard SAP Software ===================332
8.1.1OSS Notes ======================================332
8.1.2Changes Made by the Customer ========================333
8.2Maintainability of Customized ABAP Software ================336
8.2.1Separating Different Actions ===========================336
8.2.2Improving Recognizability ============================337
8.2.3Reusing Standard SAP Software ========================344
8.2.4Practical Tips ====================================359
8.3Enhancing Maintainability with ABAP Objects ================365
8.3.1Using Subclasses ==================================365
8.3.2Using Interfaces ===================================372
8.4Summary =========================================377
9 Checking Robustness and Troubleshooting ===============379
9.1Changes and New Developments =======================379
9.1.1General Guidelines for Testing ========================380
9.1.2Colleague Checks ================================385
9.1.3Checklists for Testing Robustness =====================390
9.1.4Tools for Testing and Quality Checks ===================402
9.2Troubleshooting Incidents ============================439
9.2.1Basic Incident Analysis ============================439
9.2.2Correctness Incidents =============================443
9.2.3Stability Incidents ================================446
9.2.4Performance Problems ============================449
9.3Summary ======================================455
A A Proposal for Naming Standards =================457
A.1Program Internal Data ========================457
A.2Formal Interface Parameters ===================458
A.3ABAP Dictionary Objects ======================459
A.4 ABAP Workbench Objects ====================459
B Example of an Exception Handling Class============461
C Template for an ALV Report ====================473
D Bibliography ================================493
On Performance ================================493
On Unicode-Enabling ============================494
On Stability and Correctness =======================494
Other Subjects ================================494
Other References ===============================495
Author Portraits ===============================497
Index =======================================499
Download attached file: You must be Loged in to download file