What exactly does "it is not running" mean? I assume that means it is not giving the result you expect.
Nothing wrong with the syntax, it compiles and it executes just fine. The logic on the other hand is no good.
What does "to_date('01-APR-'||to_char(SYSDATE,'YYYY'),'DD-MON-YYYY')" give you if sysdate is 23-Feb-2013, for example. And what does "next_day( trunc(sysdate) - interval '7' day, 'SUN')" give you?
Is there ever any value that can be BETWEEN these two?
What you want is; if sysdate is before April, then financial year is LAST year April. The following DECODE statement will achieve that for you: