I’ve worked on a couple of SAP systems, both the “R” flavors and the BW product. Although I had my learning challenges with them, there was one construct there I really liked. It was the transport mechanism.
Basically what this involved was setting up three instances of the system – one called development, one called testing (or staging), and another called production. That really isn’t unusual, since most of us do that with our database systems. The difference is that if you set it up properly, you can’t write or install code directly on test or production. All development is done in the development system, and then a special transport mechanism is the only thing that is allowed to transfer code to the test system. This is done under the control of an administrator. From there, the testing system’s administrator (could be the same person) is the only one allowed to “certify” the code tested and then it is moved to production.
In small shops, this is a real pain. But in larger, more complicated environs, this is such a lifesaver. Oh, and another interesting feature I had built into the systems I used was a “production snap”, where the production system could automatically refresh the development server. It would track the changes (because of the transport system) and could send back the changes from production to development. Any data marked “sensitive” would be scrambled, so you could still have practice data from the production server without worrying too much about security.
How do you deal with keeping your development, testing and production servers synced?