Ayuda! pls si alguien se le ocurre como hacerlo
Publicado por ZoRkUoN (2 intervenciones) el 30/03/2006 08:59:31
Se necesita crear un proceso que lea un fichero de texto que contiene los campos por tabla de todas las tablas de ROSS, y crear un nuevo fichero que servirá de script para crear nuevos registros modificando los códigos de compañía y división.
Por ejemplo, dada la tabla:
AP_CHECK_REGISTER_BY_FUND COMPANY_CODE
AP_DIVISION
BANK_CODE
PAYMENT_REFERENCE
SYS_FUND
AP_PAYMENT_CURRENCY
En el fichero resultante se deberá crear lo siguiente:
PROCEDURE_FORM AP_CHECK_REGISTER_BY_FUND &
/SECONDARY &
/STREAM_NAME=COPY &
/TABLE=AP_CHECK_REGISTER_BY_FUND &
/WITH=COMPANY_CODE=#COMPANY_CODE_AUSTRIA
BEGIN_BLOCK CREATE_NEW_RECORS
CLEAR_BUFFER AP_CHECK_REGISTER_BY_FUND
AP_CHECK_REGISTER_BY_FUND(COMPANY_CODE) = #COMPANY_CODE_GREECE
IF(AP_CHECK_REGISTER_BY_FUND(AP_DIVISION)=’1’)
AP_CHECK_REGISTER_BY_FUND(AP_DIVISION) = ‘0’
ELSE
AP_CHECK_REGISTER_BY_FUND(AP_DIVISION) = COPY:AP_CHECK_REGISTER_BY_FUND(AP_DIVISION)
END_IF
AP_CHECK_REGISTER_BY_FUND(BANK_CODE) = COPY:AP_CHECK_REGISTER_BY_FUND(BANK_CODE)
AP_CHECK_REGISTER_BY_FUND(PAYMENT_REFERENCE) = COPY:AP_CHECK_REGISTER_BY_FUND(PAYMENT_REFERENCE)
AP_CHECK_REGISTER_BY_FUND(SYS_FUND) = COPY:AP_CHECK_REGISTER_BY_FUND(SYS_FUND)
AP_CHECK_REGISTER_BY_FUND(AP_PAYMENT_CURRENCY) = COPY:AP_CHECK_REGISTER_BY_FUND(AP_PAYMENT_CURRENCY)
ADD TO AP_CHECK_REGISTER_BY_FUND
END_BLOCK
END_FORM
Así con todas las tables inculidas en el TXT.
Si el campo es COMPANY CODE, asignar siempre el valor de la variable #COMPANY_CODE_GREECE
Si el campo contiene el literal DIVISION, y el valor actual es 1 (UNO), asignar simpre 0 (CERO), si es diferente de 1 (UNO) asignar el valor que contenga.
Si el campo es otro, asignar el misma valor.
Tablas marcadas con el signo ! no se han de tratar.
Por ejemplo, dada la tabla:
AP_CHECK_REGISTER_BY_FUND COMPANY_CODE
AP_DIVISION
BANK_CODE
PAYMENT_REFERENCE
SYS_FUND
AP_PAYMENT_CURRENCY
En el fichero resultante se deberá crear lo siguiente:
PROCEDURE_FORM AP_CHECK_REGISTER_BY_FUND &
/SECONDARY &
/STREAM_NAME=COPY &
/TABLE=AP_CHECK_REGISTER_BY_FUND &
/WITH=COMPANY_CODE=#COMPANY_CODE_AUSTRIA
BEGIN_BLOCK CREATE_NEW_RECORS
CLEAR_BUFFER AP_CHECK_REGISTER_BY_FUND
AP_CHECK_REGISTER_BY_FUND(COMPANY_CODE) = #COMPANY_CODE_GREECE
IF(AP_CHECK_REGISTER_BY_FUND(AP_DIVISION)=’1’)
AP_CHECK_REGISTER_BY_FUND(AP_DIVISION) = ‘0’
ELSE
AP_CHECK_REGISTER_BY_FUND(AP_DIVISION) = COPY:AP_CHECK_REGISTER_BY_FUND(AP_DIVISION)
END_IF
AP_CHECK_REGISTER_BY_FUND(BANK_CODE) = COPY:AP_CHECK_REGISTER_BY_FUND(BANK_CODE)
AP_CHECK_REGISTER_BY_FUND(PAYMENT_REFERENCE) = COPY:AP_CHECK_REGISTER_BY_FUND(PAYMENT_REFERENCE)
AP_CHECK_REGISTER_BY_FUND(SYS_FUND) = COPY:AP_CHECK_REGISTER_BY_FUND(SYS_FUND)
AP_CHECK_REGISTER_BY_FUND(AP_PAYMENT_CURRENCY) = COPY:AP_CHECK_REGISTER_BY_FUND(AP_PAYMENT_CURRENCY)
ADD TO AP_CHECK_REGISTER_BY_FUND
END_BLOCK
END_FORM
Así con todas las tables inculidas en el TXT.
Si el campo es COMPANY CODE, asignar siempre el valor de la variable #COMPANY_CODE_GREECE
Si el campo contiene el literal DIVISION, y el valor actual es 1 (UNO), asignar simpre 0 (CERO), si es diferente de 1 (UNO) asignar el valor que contenga.
Si el campo es otro, asignar el misma valor.
Tablas marcadas con el signo ! no se han de tratar.
Valora esta pregunta


0