what I see is that the reset, should be in the vendor header, not in the formula.
so in the group header:
shared stringvar Reason := ""
in the detail section, your formula would remain pretty much the same
shared stringvar Reason;
if {Command.DHWKAD} = 'Y' then Reason := Reason + ' ,Weekly Ad';
if {Command.DHMCHG} = 'Y' then Reason := Reason + ' ,Set up';
if {Command.DHSSFL} = 'S' then Reason := Reason + ' ,Scan Charge';
if {Command.CLBBAM} = 'Y' then Reason := Reason + ' ,Bill Back';
Since this would be growing, you probably want to suppress the detail section and display the result in the group footer:
shared stringvar Reason;
Reason
I believe that someone once said that the Shared was the default behavior, but I like being explicit and leaving as little to CR whim as possible.
HTH