We use cookies to provide essential features and services. By using our website you agree to our use of cookies .

×

Warehouse Stock Clearance Sale

Grab a bargain today!


Official ABAP Programming Guidelines
By

Rating

Product Description
Product Details

Table of Contents

  • Foreword 13
  • Acknowledgments 15
  • 1 Introduction 17
  • 1.1 What Are Programming Guidelines 17
  • 1.2 Why Programming Guidelines 18
  • 1.3 Which Guidelines Are Involved Here 18
  • 1.4 Target Audience 19
  • 1.5 How to Use This Book 20
  • 2 General Basic Rules 23
  • 2.1 Separation of Concerns 23
  • 2.2 KISS Principle 32
  • 2.3 Correctness and Quality 34
  • 3 ABAP-Specific Basic Rules 41
  • 3.1 ABAP Objects as a Programming Model 41
  • 3.2 Program Type and Program Attributes 50
  • 3.2.1 Program Type 51
  • 3.2.2 Program Attributes 55
  • 3.2.3 Original Language 60
  • 3.3 Modern ABAP 62
  • 3.4 Checks for Correctness 65
  • 3.4.1 Syntax Check 65
  • 3.4.2 Extended Program Check 69
  • 3.4.3 Code Inspector 72
  • 3.4.4 ABAP Test Cockpit 76
  • 4 Structure and Style 79
  • 4.1 Source Code Formatting 80
  • 4.1.1 Case Sensitivity 80
  • 4.1.2 Statements per Program Line 84
  • 4.1.3 Using the Pretty Printer 86
  • 4.1.4 Line Width 89
  • 4.2 Naming 91
  • 4.2.1 Selecting the Language 92
  • 4.2.2 Descriptive Names 94
  • 4.2.3 Names of Repository Objects 101
  • 4.2.4 Program-Internal Names 106
  • 4.3 Comments 115
  • 4.3.1 Selecting the Language 115
  • 4.3.2 Content 117
  • 4.3.3 Arrangement in the Source Code 120
  • 4.4 Program and Procedure Structure 123
  • 4.4.1 Global Declarations of a Program 124
  • 4.4.2 Local Declarations 127
  • 4.5 Source Code Organization 130
  • 4.5.1 Source Code Modularization 130
  • 4.5.2 Multiple Use of Include Programs 132
  • 4.6 Alternative Notations 135
  • 4.6.1 Alternative Language Constructs in Statements 135
  • 4.6.2 Chained Statements 137
  • 4.6.3 Method Calls 141
  • 4.6.4 Assignments and Calculations 143
  • 4.6.5 Calculation Expressions 145
  • 4.7 Complexity 146
  • 4.7.1 Expressions 147
  • 4.7.2 Nesting Depth 149
  • 4.7.3 Procedure Volume 150
  • 4.7.4 Class Size 151
  • 4.7.5 Dead Code 153
  • 5 Architecture 155
  • 5.1 Object-Oriented Programming 155
  • 5.1.1 Encapsulation 156
  • 5.1.2 Modularization 157
  • 5.1.3 Static Classes and Singletons 161
  • 5.1.4 Inheritance 166
  • 5.1.5 Class References and Interface References 167
  • 5.1.6 Local Types for Global Classes 169
  • 5.1.7 Instance Constructor 171
  • 5.2 Error Handling 172
  • 5.2.1 Reaction to Error Situations 172
  • 5.2.2 Classical and Class-Based Exceptions 174
  • 5.2.3 Exception Categories 178
  • 5.2.4 Exception Texts 180
  • 5.2.5 Using Exception Classes 183
  • 5.2.6 Handling and Propagating Exceptions 185
  • 5.2.7 Cleanup After Exceptions 186
  • 5.2.8 Catchable Runtime Errors 188
  • 5.2.9 Assertions 190
  • 5.2.10 Messages 191
  • 5.3 User Interfaces 195
  • 5.3.1 Selecting the User Interface Technology 195
  • 5.3.2 Encapsulating Classical User Interfaces 199
  • 5.3.3 Lists 204
  • 5.3.4 Accessibility 207
  • 5.4 Data Storage 208
  • 5.4.1 Persistent Data Storage 208
  • 5.4.2 Database Accesses 210
  • 5.4.3 Client Handling 211
  • 5.4.4 Using the Shared Memory 213
  • 6 Secure and Robust ABAP 217
  • 6.1 Data Types and Data Objects 217
  • 6.1.1 Bound and Standalone Data Types 218
  • 6.1.2 Declaration of Data Types and Constants 220
  • 6.1.3 Declaration of Variables 224
  • 6.1.4 Including Structures 226
  • 6.1.5 Using Types 228
  • 6.1.6 Referring to Data Types or Data Objects 230
  • 6.1.7 Table Work Areas 232
  • 6.1.8 Literals 233
  • 6.1.9 Strings 236
  • 6.1.10 Start Values 238
  • 6.1.11 Data Objects for Truth Values 239
  • 6.2 Assignments, Calculations, and Other Accesses to Data 241
  • 6.2.1 Assignments Between Different Types 241
  • 6.2.2 Avoiding Invalid Values 243
  • 6.2.3 Using Conversion Rules 245
  • 6.2.4 Specification of Numbers 247
  • 6.2.5 Selecting the Numeric Type 249
  • 6.2.6 Rounding Errors 253
  • 6.2.7 Division by Zero 255
  • 6.2.8 Casting 255
  • 6.2.9 Runtime Errors When Accessing Data Objects 257
  • 6.2.10 Anonymous Containers 259
  • 6.2.11 Passing Global Data by Reference 260
  • 6.3 System Fields 262
  • 6.3.1 Access 262
  • 6.3.2 Obsolete and Internal System Fields 264
  • 6.3.3 Evaluation 265
  • 6.3.4 Return Value 267
  • 6.3.5 Using System Fields as Actual Parameters 268
  • 6.3.6 Using System Fields on the User Interface 270
  • 6.3.7 Using System Fields in Operand Positions 272
  • 6.4 Internal Tables 273
  • 6.4.1 Selecting the Table Category 274
  • 6.4.2 Secondary Keys 276
  • 6.4.3 Initial Memory Allocation 280
  • 6.4.4 Sorted Filling 281
  • 6.4.5 Aggregated Filling 283
  • 6.4.6 Output Behavior 284
  • 6.4.7 Loop Processing 286
  • 6.5 Modularization Units 287
  • 6.5.1 Function Modules and Subroutines 288
  • 6.5.2 Type of the Formal Parameters of Procedures 289
  • 6.5.3 Transfer Type of Formal Parameters 292
  • 6.5.4 Passing Output Parameters by Reference 294
  • 6.5.5 Typing of Formal Parameters 296
  • 6.5.6 Internal and External Procedure Calls 298
  • 6.5.7 Exiting Procedures 302
  • 6.5.8 Dialog Modules and Event Blocks 304
  • 6.5.9 Macros 306
  • 6.6 Dynamic Programming Techniques 309
  • 6.6.1 Using Dynamic Programming Techniques 309
  • 6.6.2 Runtime Errors During Dynamic Processing 311
  • 6.6.3 Using Dynamic Data Objects 313
  • 6.6.4 Memory Consumption of Dynamic Memory Objects 315
  • 6.6.5 Administration Costs of Dynamic Memory Objects 318
  • 6.6.6 Accessing Data Objects Dynamically 321
  • 6.6.7 Generic Programming 324
  • 6.7 Internationalization 329
  • 6.7.1 Storing System Texts 329
  • 6.7.2 Translation-Friendly Message Texts 331
  • 6.7.3 Text Environment 333
  • 6.7.4 Character Set of Source Code 335
  • 6.7.5 Splitting Texts 336
  • 6.7.6 Codepages for Files 337
  • A Obsolete Language Constructs 341
  • A.1 Procedures 342
  • Subroutines 342
  • 342
  • A.1.2 Table Parameters 342
  • A.1.3 Typing of Formal Parameters 343
  • A.2 Declarations 343
  • A.2.1 Declaring Type Groups 343
  • A.2.2 Interface Work Areas 343
  • A.2.3 Table Work Areas 344
  • A.2.4 Referring to Data Types 344
  • A.2.5 Declaring Field Symbols 344
  • A.2.6 Typing Field Symbols 345
  • A.2.7 Header Lines of Internal Tables 345
  • A.2.8 Declaring Internal Tables 345
  • A.2.9 Ranges Tables 346
  • A.2.10 Addressing Data Objects 346
  • A.2.11 Loading Classes and Interfaces 346
  • A.3 Object Generation 347
  • A.3.1 Anonymous Data Objects 347
  • A.4 Calls and Exits 347
  • A.4.1 Dialog Modules 347
  • A.4.2 Function Module Exit 347
  • A.4.3 External Subroutine Call 348
  • A.4.4 Exiting Programs 348
  • A.4.5 Exception Handling 348
  • A.5 Program Flow Control 349
  • A.5.1 Relational Operators 349
  • A.5.2 Case Distinction 349
  • A.5.3 Checking the Binding to Actual Parameters 349
  • A.5.4 Checking Changes of Data Objects 350
  • A.5.5 Loops for Memory Content 350
  • A.6 Assignments 350
  • A.6.1 Subfield Access 350
  • A.6.2 Converting Packed Numbers 351
  • A.6.3 Initialization 351
  • A.6.4 Temporary Storage of Data Objects 351
  • A.6.5 Casting 352
  • A.6.6 Dynamic Assignment to a Field Symbol 352
  • A.7 Calculation Statements 352
  • A.7.1 Component-Based Calculations 352
  • A.7.2 Calculations with Memory Content 353
  • A.8 Processing Character and Byte Strings 353
  • A.8.1 Searching in Character and Byte Strings 353
  • A.8.2 Replacements in Character and Byte Strings 353
  • A.8.3 Creating the Nine's Complement 354
  • A.8.4 Translating Characters and Numbers 354
  • A.8.5 Text Editor 354
  • A.9 Internal Tables 355
  • A.9.1 Processing Statements 355
  • A.9.2 Key Specifications 355
  • A.9.3 Deleting a Table 356
  • A.9.4 Formatted Assignment 356
  • HR Infotypes 356
  • 356
  • A.10 Dynpro Flow Logic 357
  • A.10.1 Comparing Values 357
  • A.10.2 Accessing Databases 357
  • A.10.3 Extending Subscreens 357
  • A.10.4 Step Loops 358
  • A.11 Classical List Processing 358
  • A.11.1 Formatting 358
  • A.11.2 List Event 358
  • A.11.3 Print Parameters 359
  • A.11.4 Spool Request 359
  • A.11.5 Extreme Values and Calculations 359
  • A.12 Data Storage 360
  • A.12.1 Open SQL 360
  • A.12.2 Native SQL 360
  • A.12.3 Data Cluster 360
  • A.12.4 Data Clusters in the ABAP Memory 361
  • A.12.5 Data Clusters in the Database 361
  • A.12.6 Work Area for Data Clusters 361
  • A.12.7 Obsolete Database Accesses 362
  • A.13 Contexts 362
  • A.14 External Interfaces 363
  • A.14.1 XML Connection 363
  • A.14.2 CPI-C Interface 363
  • A.14.3 JavaScript Connection 363
  • B Automatic Check of Naming Conventions 365
  • B.1 Naming Conventions in the Code Inspector 365
  • B.2 Type-Specific Prefix Components 366
  • B.3 Prefixes for Procedure-Local Declarations 367
  • B.4 Structured Programming 369
  • B.5 Object-Oriented Programming 370
  • B.6 Assessment of the Naming Conventions 371
  • C Table of Rules 373
  • D Recommended Reading 377
  • E The Authors 379
  • Index 381

About the Author

Dr Horst Keller works in the NetWeaver Developer Tools ABAP group at SAP. As Knowledge Architect he is responsible for documentation and roll-out relating to ABAP and ABAP Objects. He also oversees the programs for preparing and presenting the ABAP documentation including the relating search algorithms.

Wolf Hagen Thummel studied physics at the Karlsruhe University, Germany, and received his doctorate in experimental particle physics. In 2001, he joined SAP AG. He is currently a member of the TD Core AS&DM ABAP group and there focuses on language-related tools in the ABAP environment as well as in the area of mass checks for quality assurance. He assumes responsibility for ABAP checkpoint statements and the related tools, memory analyses, and parts of the ABAP Debugger. Wolf Hagen Thummel also deals with topics regarding the complexity of ABAP programs. He is author of several ABAP-related publications in trade journals and handbooks on programming languages.

Ask a Question About this Product More...
 
Look for similar items by category
This title is unavailable for purchase as none of our regular suppliers have stock available. If you are the publisher, author or distributor for this item, please visit this link.

Back to top