Firstly,
using a non standard structure makes no difference. In most cases your bespoke ALV coding will use Z structures as you will 'merge' all your data selected to a single point which usually is not standard structure.
So I assume you have created a proper structure in the dictionary correctly (use proper elements and domains NOT predefined if you can) - and I prefer setting the catalogue with the merge function first - then I make an additional tweaks to the fieldcat after that.
Can i advise you to take a step back from the main program you are working on.
Create a temp prog from scratch, ignoring what you have done before.
Even use one of the examples in this thread or my code example - i did that in 3 minutes with a copy and paste of a standard prog and just tweaked the tables and selection. Get that working on your system...see the results. Compare with yours.
Adjust the code/copy the code bit by bit to meet your requirement. Unit test regularly as you go so you can see the impact of the changes you implement.
I think you will easily solve this once you take a step back - I am guessing your 'too close to the problem to see it' with your current solution you are reworking.