Preface |
|
17 | (10) |
Part I Architectural Design Patterns |
|
|
|
27 | (12) |
|
1.1 Case Study: Read, Process, Display, and Post |
|
|
28 | (5) |
|
1.2 Passing Select Options |
|
|
33 | (1) |
|
1.3 Distributing Application Logic |
|
|
34 | (1) |
|
|
34 | (1) |
|
|
35 | (4) |
Part II Creational Design Patterns |
|
|
|
39 | (10) |
|
2.1 Case Study: Log Analysis |
|
|
40 | (7) |
|
|
47 | (1) |
|
|
47 | (2) |
|
|
49 | (20) |
|
3.1 Case Study: Jobs for Text Files |
|
|
49 | (17) |
|
|
66 | (1) |
|
|
66 | (1) |
|
|
67 | (2) |
|
|
69 | (8) |
|
4.1 Case Study: FI Documents for Parties |
|
|
69 | (6) |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
76 | (1) |
|
|
77 | (6) |
|
5.1 Case Study: Logging Errors |
|
|
77 | (4) |
|
|
81 | (1) |
|
|
81 | (1) |
|
|
82 | (1) |
|
|
83 | (8) |
|
6.1 Case Study: Vendor Balance |
|
|
84 | (4) |
|
|
88 | (1) |
|
|
88 | (1) |
|
|
89 | (1) |
|
|
89 | (2) |
|
|
91 | (8) |
|
7.1 Case Study: Item Clone |
|
|
91 | (4) |
|
7.2 Changing Class Properties |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
96 | (1) |
|
|
97 | (2) |
|
|
99 | (10) |
|
8.1 Case Study: Subcomponents |
|
|
99 | (7) |
|
8.2 Advantages and Disadvantages |
|
|
106 | (1) |
|
|
106 | (1) |
|
|
106 | (3) |
Part III Structural Design Patterns |
|
|
|
109 | (14) |
|
9.1 Case Study: Project Management Tools |
|
|
109 | (9) |
|
|
118 | (1) |
|
|
118 | (4) |
|
|
122 | (1) |
|
|
122 | (1) |
|
|
123 | (10) |
|
10.1 Case Study: Messaging Framework |
|
|
123 | (8) |
|
|
131 | (1) |
|
|
131 | (2) |
|
|
133 | (14) |
|
11.1 Recursive Programming: A Refresher |
|
|
133 | (4) |
|
11.2 Case Study: HR Positions |
|
|
137 | (7) |
|
|
144 | (1) |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
145 | (1) |
|
|
146 | (1) |
|
|
147 | (8) |
|
12.1 Case Study: Potential Customers |
|
|
147 | (5) |
|
12.2 Redundant Code Prevention |
|
|
152 | (1) |
|
|
153 | (1) |
|
|
153 | (2) |
|
|
155 | (10) |
|
13.1 Case Study: User Exit |
|
|
155 | (6) |
|
13.2 Advantages and Challenges |
|
|
161 | (1) |
|
|
162 | (1) |
|
|
162 | (3) |
|
|
165 | (6) |
|
14.1 Case Study: Bonus Calculation |
|
|
166 | (2) |
|
14.2 When and Where to Use |
|
|
168 | (2) |
|
|
170 | (1) |
|
|
170 | (1) |
|
|
171 | (14) |
|
15.1 Case Study: Negative Stock Forecast |
|
|
171 | (10) |
|
|
181 | (1) |
|
|
181 | (1) |
|
|
182 | (1) |
|
|
182 | (3) |
|
|
185 | (14) |
|
16.1 Case Study: Enhancing an SAP Program |
|
|
185 | (9) |
|
16.2 Static vs. Instance Containers |
|
|
194 | (1) |
|
|
195 | (1) |
|
|
196 | (1) |
|
|
196 | (2) |
|
|
198 | (1) |
|
|
199 | (10) |
|
17.1 Case Study: Sensitive Salary Information |
|
|
199 | (7) |
|
|
206 | (1) |
|
|
207 | (1) |
|
|
207 | (2) |
|
18 Chain of Responsibility |
|
|
209 | (12) |
|
18.1 Case Study: Purchase Order Approver Determination |
|
|
209 | (8) |
|
|
217 | (1) |
|
|
217 | (1) |
|
|
218 | (3) |
Part IV Behavioral Design Patterns |
|
|
|
221 | (10) |
|
19.1 Case Study: SD Documents |
|
|
221 | (8) |
|
19.2 When to Use or Avoid |
|
|
229 | (1) |
|
|
229 | (1) |
|
|
230 | (1) |
|
|
231 | (12) |
|
20.1 Case Study: Stock Movement Simulation |
|
|
232 | (9) |
|
|
241 | (1) |
|
|
241 | (1) |
|
|
241 | (2) |
|
|
243 | (12) |
|
21.1 Case Study: Budget Planning |
|
|
243 | (9) |
|
|
252 | (1) |
|
|
253 | (1) |
|
|
254 | (1) |
|
|
255 | (10) |
|
22.1 Case Study: Target Sales Values |
|
|
256 | (5) |
|
|
261 | (1) |
|
|
261 | (1) |
|
|
262 | (1) |
|
|
263 | (1) |
|
|
264 | (1) |
|
|
265 | (12) |
|
23.1 Case Study: Address Builder |
|
|
266 | (8) |
|
|
274 | (1) |
|
|
275 | (1) |
|
|
275 | (2) |
|
|
277 | (8) |
|
24.1 Case Study: Authorization-Based Class Behavior |
|
|
277 | (6) |
|
|
283 | (1) |
|
|
284 | (1) |
|
|
284 | (1) |
|
|
285 | (20) |
|
25.1 Case Study: Sending Material Master Data |
|
|
286 | (5) |
|
|
291 | (1) |
|
25.3 Passing Data to the Strategy Object |
|
|
291 | (2) |
|
|
293 | (4) |
|
25.5 Intermediate Abstract Classes |
|
|
297 | (5) |
|
|
302 | (1) |
|
|
302 | (3) |
|
|
305 | (18) |
|
26.1 Case Study: Average Transaction Volume |
|
|
306 | (12) |
|
|
318 | (1) |
|
26.3 Advantages and Risks |
|
|
319 | (1) |
|
26.4 Degree of Abstraction |
|
|
320 | (1) |
|
26.5 The "Hollywood Principle" |
|
|
320 | (1) |
|
|
321 | (2) |
|
|
323 | (14) |
|
27.1 Case Study: Incoming Invoice Processing |
|
|
323 | (10) |
|
|
333 | (1) |
|
|
334 | (1) |
|
|
335 | (2) |
Appendices |
|
337 | (48) |
|
A Object-Oriented Programming |
|
|
339 | (22) |
|
A.1 Object-Oriented ABAP Development Environment |
|
|
339 | (2) |
|
|
341 | (2) |
|
|
343 | (2) |
|
|
345 | (6) |
|
|
351 | (4) |
|
|
355 | (4) |
|
|
359 | (2) |
|
|
361 | (10) |
|
|
361 | (1) |
|
B.2 Convention over Configuration |
|
|
361 | (2) |
|
|
363 | (5) |
|
|
368 | (3) |
|
|
371 | (12) |
|
C.1 Object-Oriented Principles |
|
|
371 | (2) |
|
|
371 | (1) |
|
|
371 | (1) |
|
|
372 | (1) |
|
|
372 | (1) |
|
|
372 | (1) |
|
|
373 | (1) |
|
|
373 | (2) |
|
C.2.1 Single Responsibility |
|
|
373 | (1) |
|
|
374 | (1) |
|
C.2.3 Liskov Substitution |
|
|
374 | (1) |
|
C.2.4 Interface Segregation |
|
|
374 | (1) |
|
C.2.5 Dependency Inversion |
|
|
375 | (1) |
|
|
375 | (8) |
|
|
376 | (1) |
|
C.3.2 Copy-Paste Programming |
|
|
376 | (1) |
|
C.3.3 Functional Decomposition |
|
|
376 | (1) |
|
|
377 | (1) |
|
C.3.5 Grand Old Duke of York |
|
|
378 | (1) |
|
|
378 | (1) |
|
|
378 | (1) |
|
|
379 | (1) |
|
|
379 | (1) |
|
|
380 | (1) |
|
C.3.11 Reinvent the Wheel |
|
|
380 | (1) |
|
|
380 | (1) |
|
|
381 | (1) |
|
|
381 | (2) |
|
|
383 | (2) |
Index |
|
385 | |