... Introduction ... 15 ... Acknowledgments ... 21 1 ... Introducing the Web Client UI Framework ... 23 1.1 ... Main Components of the Web Client UI ... 24 1.1.1 ... Header Area ... 25 1.1.2 ... Navigation Area ... 28 1.1.3 ... Entry Page ... 30 1.1.4 ... Search Page ... 36 1.1.5 ... Overview Page (OVP ... 39 1.1.6 ... Assignment Blocks ... 41 1.1.7 ... Interaction Concept ... 42 1.2 ... Architecture ... 43 1.3 ... Tools in Web Client UI ... 46 1.3.1 ... Component Work Bench ... 48 1.3.2 ... Skins and Skin Work Bench ... 49 1.3.3 ... Configuration and Personalization ... 53 1.4 ... Extensibility ... 58 1.4.1 ... Overview ... 58 1.4.2 ... Design Layer ... 64 1.4.3 ... Web Service Tool ... 67 1.4.4 ... Groupware ... 68 1.4.5 ... Office and Adobe Integration ... 69 1.5 ... Enterprise Search ... 69 1.5.1 ... Overview ... 69 1.5.2 ... Search Modeling Workbench ... 71 1.6 ... Collaboration ... 72 1.6.1 ... RSS Feeds ... 72 1.6.2 ... Favorites and Tags ... 72 1.6.3 ... Central Sharing Tool ... 73 1.7 ... Sample Business Scenario ... 74 1.8 ... Summary ... 76 2 ... Introducing the GenIL Component ... 79 2.1 ... Introduction ... 80 2.1.1 ... Web Client UI Architecture ... 80 2.1.2 ... Introduction to BOL and GenIL ... 81 2.2 ... Creating your First GenIL Model ... 84 2.2.1 ... GenIL Model Overview ... 85 2.2.2 ... Defining a GenIL Model ... 86 2.2.3 ... Creating a GenIL Model ... 87 2.3 ... Implementing a GenIL Query ... 95 2.3.1 ... Defining the Backend APIs ... 97 2.3.2 ... Implementing GET_DYNAMIC_QUERY_RESULT ... 98 2.3.3 ... Implementing Helper Methods ... 102 2.3.4 ... Conclusion ... 104 2.4 ... Introducing the BOL Browser ... 105 2.5 ... Retrieving a BOL Entity ... 106 2.5.1 ... BOL Splitting ... 107 2.5.2 ... Container Objects ... 107 2.5.3 ... Implementing GET_OBJECTS ... 108 2.5.4 ... Bookings Backend API ... 112 2.5.5 ... Reading Dependent Object Data ... 114 2.5.6 ... Testing the Implementation ... 123 2.6 ... Handling Container Lists and Objects ... 125 2.7 ... Summary ... 129 3 ... Completing Your GenIL Component ... 131 3.1 ... Transaction Behavior ... 132 3.2 ... Requesting a Lock ... 135 3.2.1 ... Implementing LOCK_OBJECT ... 135 3.2.2 ... Backend API ... 136 3.2.3 ... Testing LOCK_OBJECT ... 139 3.3 ... Creating a Root Object ... 139 3.3.1 ... Implementing CREATE_OBJECTS ... 140 3.3.2 ... Backend API ... 141 3.3.3 ... Testing CREATE_OBJECTS ... 143 3.4 ... Implementing the Object Modification Logic ... 144 3.4.1 ... Implementing MODIFY_OBJECTS ... 146 3.4.2 ... Data Modification via Backend APIs ... 151 3.4.3 ... Modifications to Child Objects ... 152 3.5 ... Persisting the Changes ... 160 3.5.1 ... Implementing SAVE_OBJECTS ... 162 3.5.2 ... Backend API for Data Persistence ... 164 3.5.3 ... Testing SAVE_OBJECTS ... 167 3.6 ... Deleting a Root Object ... 168 3.6.1 ... Implementing DELETE_OBJECTS ... 170 3.6.2 ... Backend API ... 172 3.6.3 ... Testing SAVE_OBJECTS ... 174 3.7 ... The Handler Concept ... 174 3.7.1 ... Overview of the GenIL Handler APIs ... 175 3.7.2 ... Handler Factory and Registration ... 177 3.7.3 ... Handler Operations ... 178 3.8 ... Implementing GenIL Handlers and Foreign Relationships ... 181 3.8.1 ... Creating a GenIL Component ... 183 3.8.2 ... Define the GenIL Model and Handler ... 184 3.8.3 ... Implementing Query Operations ... 185 3.8.4 ... Implementing Data Read ... 187 3.8.5 ... Testing the New GenIL Component ... 188 3.8.6 ... Processing Foreign Relations ... 190 3.9 ... Summary ... 196 4 ... Creating a Web Application with Business Server Pages ... 197 4.1 ... Model View Controller in BSPs ... 198 4.1.1 ... Data Binding ... 200 4.1.2 ... Process Flow in a BSP Application ... 202 4.2 ... Building a Search Application Using the BSP Programming Model ... 205 4.2.1 ... The Main Component ... 207 4.2.2 ... The Search View ... 209 4.2.3 ... The Result View ... 216 4.2.4 ... Handling the Search Event ... 219 4.2.5 ... Conclusion ... 222 4.3 ... Presentation Layer of a Web Client Application ... 222 4.3.1 ... Component Concept in Web Client Framework ... 223 4.3.2 ... Model View Controller in Web Client Component ... 224 4.3.3 ... The Layout in a Web Client Component ... 226 4.3.4 ... The Model in a Web Client Component ... 227 4.3.5 ... Controllers in a Web Client Component ... 229 4.3.6 ... The Runtime Repository ... 230 4.4 ... Summary ... 232 5 ... Creating a Web Client Application ... 233 5.1 ... BOL Programming ... 234 5.1.1 ... Overview ... 235 5.1.2 ... Reading Data ... 238 5.1.3 ... Creating and Modifying Data ... 246 5.1.4 ... Deleting Data ... 250 5.1.5 ... Locking ... 251 5.1.6 ... Sorting BOL Collections ... 251 5.1.7 ... Final Recommendations ... 253 5.2 ... UI Component Development ... 253 5.2.1 ... The Anatomy of the Hotel Booking Application ... 254 5.2.2 ... Creating a Component and Defining the Model ... 255 5.2.3 ... Creating a Search Page ... 258 5.2.4 ... Creating a Custom Controller ... 270 5.2.5 ... Creating Form Views ... 273 5.2.6 ... Configuring Form Views ... 275 5.2.7 ... Creating Table Views ... 276 5.2.8 ... Creating an Overview Page ... 279 5.2.9 ... Enabling Navigation inside a Component ... 281 5.3 ... Summary ... 286 6 ... Advanced Web Client Application Development and Integration ... 287 6.1 ... Improving the Web Client Application ... 287 6.1.1 ... Enable Central Editing ... 288 6.1.2 ... Enabling Breadcrumb ... 295 6.1.3 ... Implement Data Loss Pop-Up ... 297 6.1.4 ... Using the GET_X_ and SET_ Methods ... 301 6.1.5 ... Enabling Sorting in Tables ... 305 6.1.6 ... Implement Dropdown List Boxes ... 307 6.1.7 ... Implementing Simple F4 Help ... 310 6.1.8 ... Implementing One-Click Actions ... 316 6.2 ... Integrating a Web Client Application ... 319 6.2.1 ... UI Object Type ... 319 6.2.2 ... Create Entry Points to Application ... 321 6.2.3 ... Work Area Component Repository ... 323 6.2.4 ... Work Center Page ... 323 6.2.5 ... Navigation Bar Profile ... 328 6.2.6 ... Layout, Technical, and Functional Profiles ... 331 6.2.7 ... Define Authorization Role ... 332 6.2.8 ... Business Role Definition ... 333 6.2.9 ... Adjust Authorization Role and Define Organizational Assignment ... 335 6.2.10 ... Direct Link Groups ... 336 6.3 ... Summary ... 338 7 ... Enhancing Existing UI Components ... 341 7.1 ... Enhancement Set Overview ... 342 7.2 ... Create an Enhancement Set ... 344 7.3 ... Enhancing a UI Component ... 345 7.3.1 ... Enhancing a UI Element ... 347 7.3.2 ... Adding a New View ... 353 7.4 ... View Configurations ... 358 7.4.1 ... Configuration Keys ... 358 7.4.2 ... Text Determination ... 360 7.5 ... Cross-Component Navigation ... 361 7.5.1 ... Means of Cross-Component Navigation ... 362 7.5.2 ... Invoking Navigation ... 363 7.5.3 ... Testing the Navigation ... 369 7.6 ... Outbound Plugs Delegation ... 370 7.7 ... Summary ... 371 8 ... Generating UI Components ... 373 8.1 ... Generating a UI Component from BOL ... 374 8.1.1 ... Using the Generation Wizard ... 375 8.1.2 ... Analyzing Generation Results ... 384 8.1.3 ... Testing the Generated UI Component ... 386 8.1.4 ... Modifying the Generated UI Component ... 388 8.2 ... Configuration and Personalization ... 397 8.3 ... Attaching a Design Layer Object ... 402 8.3.1 ... Design Object Assignments ... 403 8.3.2 ... Creating a Design Object ... 404 8.3.3 ... Creating DL Assignment ... 406 8.3.4 ... Testing the DL Assignment ... 407 8.4 ... Reusing Other Components within a Pop-Up ... 408 8.4.1 ... Analyzing the Reusable Component ... 409 8.4.2 ... Value Help Pop-up ... 410 8.4.3 ... Analyzing the Results ... 413 8.5 ... Summary ... 414 9 ... Enhancing Applications with Fields and Tables ... 417 9.1 ... Easy Enhancement Workbench ... 418 9.2 ... Application Enhancement Tool ... 420 9.3 ... Creating New Fields and Tables with the Application Enhancement Tool ... 423 9.3.1 ... Starting the Application Enhancement Tool (AET) ... 424 9.3.2 ... Creating a New Field ... 426 9.3.3 ... Creating New Tables with the AET ... 435 9.4 ... Field Types ... 440 9.5 ... Navigation Fields ... 442 9.6 ... Extending SAP CRM Interactive Reports ... 444 9.7 ... Extending the Design Layer ... 451 9.8 ... Summary ... 455 10 ... Behavioral Extensibility ... 457 10.1 ... Behavior Extensibility via BAdIs ... 457 10.2 ... Adding Logic to Table Enhancements ... 460 10.3 ... Creating a Calculated Field ... 463 10.4 ... Introducing Global Attribute Tags ... 471 10.5 ... Adding Custom BRF+ Operations ... 475 10.6 ... Summary ... 480 11 ... Rapid Applications and Mash-ups ... 481 11.1 ... Rapid Applications ... 482 11.1.1 ... Managing Rapid Applications ... 483 11.1.2 ... Creating a Rapid Application ... 484 11.1.3 ... Using and Configuring Your Rapid Application ... 492 11.1.4 ... Extending the Default Implementation ... 496 11.1.5 ... Web Service-Based Applications ... 500 11.2 ... Application Mash-ups ... 504 11.2.1 ... Mash-ups Overview ... 504 11.2.2 ... Creating a Mash-up ... 504 11.2.3 ... Enabling and Using a Mash-up ... 507 11.3 ... Web Mash-ups ... 508 11.3.1 ... A Mash-up Example ... 509 11.3.2 ... Adding a Web Mash-up ... 509 11.3.3 ... Testing and Enabling a Web Mash-up ... 511 11.4 ... Summary ... 512 12 ... Web Service Tool ... 515 12.1 ... Using the Web Service Tool ... 516 12.2 ... Enabling the Web Service Tool ... 523 12.2.1 ... Implementing the GenIL Adaptations ... 524 12.2.2 ... Creating a Web Service in WST ... 525 12.3 ... Summary ... 528 13 ... SAP CRM Integration with Microsoft Word and Adobe ... 529 13.1 ... Integration Scenarios ... 530 13.2 ... Technologies Involved in Integration ... 532 13.3 ... Design Time and Run time ... 533 13.3.1 ... Design Time ... 534 13.3.2 ... Run Time ... 535 13.4 ... Creating a Template ... 536 13.5 ... Adobe Integration ... 545 13.5.1 ... Creating the Template in Adobe ... 546 13.5.2 ... When to Use Adobe ... 551 13.6 ... Summary ... 552 14 ... Introduction to Client-based Groupware Integration ... 553 14.1 ... Business Processes Covered by cGWI ... 553 14.1.1 ... Account Management ... 553 14.1.2 ... Appointments and Tasks ... 554 14.2 ... cGWI Architecture ... 555 14.3 ... Configuring Client-based Groupware Integration ... 557 14.3.1 ... Preparing the SAP CRM Server ... 557 14.3.2 ... Synchronization Behavior ... 559 14.4 ... Synchronization Profiles ... 561 14.5 ... Installing cGWI on a Client Machine ... 568 14.6 ... Extending the Functionality Offered by cGWI ... 569 14.6.1 ... Extending Activity Transfer between SAP CRM and Microsoft Outlook ... 570 14.6.2 ... Extending Contact Transfer between SAP CRM and Microsoft Outlook ... 572 14.7 ... Summary ... 573 15 ... Additional Topics ... 575 15.1 ... Task-based UI ... 575 15.1.1 ... Creating a Guided Activity Page ... 577 15.1.2 ... Reusable Guided Activity Page ... 578 15.2 ... Field Actions ... 588 15.3 ... Flash Islands ... 593 15.4 ... Transaction Launcher ... 596 15.5 ... Performance Optimization ... 603 15.6 ... Session Management ... 605 15.7 ... Tag Library Overview ... 608 15.8 ... Summary ... 610 ... The Authors ... 611 ... Index ... 613