un poco de ayuda
donde esta ????? lo haces tu, ya que voy saliendo y no me dio tiempo finalizarlos

Code: Select all | Expand
FUNCTION FieldExist(cFieldName)
LOCAL aFields[FCOUNT()]
afields(aFields)
FOR x:=1 TO len(aFields)
IF aFields[x] = cFieldName
RETURN .t.
ENDIF
NEXT
RETURN .f.
Code: Select all | Expand
FUNCTION InsertField(aField)
LOCAL aStruct:=dbstruct()
LOCAL cAlias := alias()
//agrega al arreglo con la estructura el nuevo campo
aadd(aStruct,aField)
//crea una tabla temporal
dbcreate("_TEMP_",aStruct)
//copia todos los registros de la tabla actual a la tabla nueva
GO TOP
COPY TO _TEMP_
//cierra tabla actual
CLOSE TABLE
//elimina tabla actual
??????
//renombra la tabla nueva con el nombre de la tabla anterior
?????
//abre tabla nueva con el alias anterior
?????
RETURN NIL
Code: Select all | Expand
...
//verifica si existe el campo ENERO07 en la tabla TEMP
IF !TEMP->(FieldExist("ENERO07"))
//altera la tabla agregando el campo
aNewField := {"ENERO07","N",09,02}
TEMP->(InsertField(aField))
ENDIF