-Is the wiring good?
Check CPS signal at the ECM pin, not the sensor. That will confirm good wiring from the sensor and a good signal to the ECM
-Is the coil and wiring good?
Trigger the coil from the ECM output pin.
If no spark: Trigger it at the coil.
If still no spark: Remove it and triple check the ground contact, still no? Buy a coil.
If the coil does fire from the ECM pin. Buy an ECM.

All '03-'07 DDFI-2 ECM's are interchangeable (the XB12 have a center terminal for the IEV not used on a 9). Buy a new one from IDS or SPHDonline that will come with the correct program. Firmware version won't matter.
OR
Buy a used unit and download the correct Firmware matching program yourself. IMO I use a wireless bluetooth dongle to my Android phone using ECMDroid. I got all of it ($45 dongle, FREE ECMDroid, and FREE ECM program) from Buelltooth.com

IMO I think ECMDroid is the easiest tool to use for diagnosis as well. Go to "live data" to check CPS output (it's read at the ECM so you will know the wirings ok) and test the coil (no spark would tell you bad wiring to the coil or bad coil).