Hello Genesis,
your second assumption is right. You do have to close, reconfigure and reopen the object in order to change the data length.
As long as you're using the CAN Object in the 'Transmit Data by Call' mode only, you might want to consider using the Network Interface for transmitting. When you use the Network Interface, you can change the ArbitrationID for each write call.
-B2k