I think you should be able to use Inter-record functions to do it. Once you take the date field out, the Year and Month will be grouped, so your Debit and Credit expressions should work as is.
For Beginning Balance, it would be something like:
Above(Debit) - Above(Credit) + Above(BeginningBalance)
You may also be able to use Accumulation and have the Beginning Balance field be:
Above(Debit) - Above(Credit)
EDIT: Actually, the first expression should probably be:
Then set your Null Symbol to 0.
Above(Debit) - Above(Credit) +
If(Above(BeginningBalance) > 0, Above(BeginningBalance), 0)