1) SM35 is the primary transaction for processing BDC sessions. You can also release a session for execution via program RSBDCSUB. If you want to control screen processing without going through SM35, you can leave out the BDC_OPEN, BDC_INSERT and BDC_CLOSE commands from your program. Instead, after building your BDCDATA table, use the CALL TRANSACTION command to process the data immediately. You’ll have to perform your own error handling.
2) In SM35 you can run the BDC session in foreground which allows you to step through the individual screens. See the Help documentation under “Correcting a Session” for tips and commands that help control execution. If you want to debug a transaction in detail, I suggest doing so directly in the transaction as opposed to via the BDC.
3) While the Initialization Event is most useful for setting select-option values, it can be used for any preliminary processing prior to the selection screen. I’ve used it to set other screen or field attributes (frame title, screen-active, screen-intensity, …), modify select-options via the SELECT_OPTIONS_RESTRICT function module, access a Unix directory to find the most current version of a file, read a control table to get parameters that control program processing, set date ranges, etc.
4) Sorry, I have not used IDocs.