My response is under the assumption that the piston fired when enabled and then retracted when you disabled. If all movement took place while disabled, then you have a far more serious problem.
I don't know your level of expertise so I will explain this completely so that others may learn from it.
When the robot is disabled, all OI inputs get to the RC and are processed by your code. However, in that situation, the RC sets all of the outputs to neutral. What it doesn't do is clear any internal variables.
So with your code, you initialize position to closed. With the robot disabled, you press both trigger and top. Your internal variables are now set to the open position, but nothing moves because you're disabled. Now if you enable, you will open because your internal state variable (currently open) is getting mapped to an output.
The way to fix this is to clear your state when you're disabled. Something like this should be what you want.
Code:
if(disabled_mode == ROBOT_DISABLED)
{
ucGripperPosition = 1; //Closed
ucGripperLatch = 1; // de-latched
}
We have run into this a few times over the years. Luckily we caught this each time in testing so that there was no physical danger.
Hope that helps.