SdFat only supports 8.3 file names. This is not a valid 8.3 name.
char fileName[] = "GPS_Teat_01.txt"
You get zero error code from card since this is not a hardware SD card error. sd.card() is the raw block device and doesn't know about files.
sprintf(msg,"Opening file for write failed. Error = %d. Data = %d",sd.card()->errorCode(),
sd.card()->errorData());