"screen -X" runs screen commands (such as "screen" and "detach), not shell commands.
That means you want "screen -X -S ac screen /home/ASS...sh"
"screen -R -D -S ac" still blocks, right? My short experiments says that one can run screen in the background.
Do that, and then you probably want to change "screen -d" into "screen -S ac -X detach".
If that fails (and this is ugly), run
$ screen -S foo sh -c "screen -S foo -X screen sleep inf; screen -S foo -X detach"
(assuming you have GNU sleep; run `sleep inf' and wait forever to test it
The 'sleep inf' serves to have one window running when sh terminates, such that the screen session persists.
I think that should work. Hint: use grep -q, that turns off the output but still gives you the exit code.
I think you've reversed the polarity on the last-most "if [ $? ... ]". And I'm unsure whether $? is carried between "if [ $? ... ]"s the way you think it is. But hey, if it works...