MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Como NO sobreescribir un fichero (foro/showthread.php?t=10085)

nachosds 08/01/08 11:13:19

Como NO sobreescribir un fichero
 
Muy buenas!

Me gustaria saber si hay alguna orden para abrir in fichero en modo escritura pero de manera que no sobreescriba lo que habia ya antes.

Esque, al poner el siguiente codigo, primero lo que hago es leer un fochero ya existente y cargar sus datos en los registros, y luego escribo en otro fichero. Pues bien, si ejecuto el programa 2 veces y cambio los datos del fichero de lectura (fic), luego al pasarlo al fichero de salida (fic2), éstos se me machacan.
¿Habria alguna forma de hacerlo para que no sobreescriba?

El codigo en cuestion es este:


REPORT Z_PFICHERO.

****************************
* creamos variables *
****************************
DATA: BEGIN OF REC,
valor1(5) TYPE c,
valor2(4) TYPE c,
END OF REC.

****************************
* abrimos fichero *
* leemos y rellenamos REG *
****************************
OPEN DATASET 'd:/fic.txt'.

READ DATASET 'd:/fic.txt' INTO REC.
IF SY-SUBRC = 8.
WRITE:/ 'vamonos'.
EXIT.
ENDIF.
WRITE:/ REC-valor1,REC-valor2.
CLOSE DATASET 'd:/fic.txt'.


****************************
* creamos fic2 salida *
****************************
OPEN DATASET 'd:/fic2.txt'
FOR OUTPUT
IN TEXT MODE.
****************************
* escribimos los valores *
* de REG en el nuevo fic2 *
****************************
TRANSFER REC TO 'd:/fic2.txt'.

CLOSE DATASET 'd:/fic2.txt'.

robert_milan 08/01/08 11:23:38

por que no creas el fichero 2 variable y le agregas la fecha y hora para que distingas los ficheros.

lo puedes hacer con la instruccion concatenate.

Saludos y espero te sirva.

nachosds 08/01/08 11:24:32

Perdon por el sangrado de los asteriscos, pero no se como hacerlo bien...:p

robert_milan 08/01/08 11:29:08

facil:
var1 (15) type c,
var2 (15) type c.

concatenate 'd:\fic2\' sy-date sy-uzeit '.txt into var1

y en la instruccion OPEN DATASET VAR1

TRANSFER REC TO var1

CLOSE DATASET var1

asi todo lo enviaras a un fichero fic2con fecha de procesamiento y hora de procesamiento por lo que nunca se sobreescribira.

Mauricio Hidalgo 08/01/08 11:43:04

Si quieres agregar datos aun fichero sin perder lo que ya existe. Tienes que abrir el archivo con APPENDING.

OPEN DATASET <dsn> FOR APPENDING.....

nachosds 08/01/08 13:15:20

Muchas gracias, eso del apending funciona perfecto!

Otra preguntita...

¿Se podria hacer un menu para pedir datos por teclado, realice una accion y que vuelva al menu?

Por ejemplo:

Menu:
1)Suma
2)Resta

Introduzca opcion: __

Bego86 08/01/08 13:59:17

hola alguien tiene ejercicios propuestos para poder practicar????

GRACIAS :D

Mauricio Hidalgo 08/01/08 14:03:28

Eso Lo Puedes Hacer Con Una Pantalla De Seleccion...seria Algo Así Como

Program Ztest3.

Parameters Suma Type C Radiobutton Group Radi.
Parameters Resta Type C Radiobutton Group Radi.

Start-of-selection.
If Suma = 'x'.
Perform Suma.
Endif.

If Resta = 'x'.
Perform Resta.
Endif.

*---------------------------
* R U T I N A S
*---------------------------

Form Suma.
Endform.

Form Resta.
Endform.

nachosds 08/01/08 14:24:46

OK, pero lo malo que esto solo lo pide una vez... ¿Como se haria para que cuando terminara, te lo volviera a pedir?

Gracias!

Bego86 08/01/08 14:31:50

Mira intento obtener datos por teclado pero me gustaria q me preguntara mas de una vez.

yo por ejemplo pido dos numeros con
PARAMETERS y realizo una operacion pero quiero q me vuelva a pedir de nuevo otros numeros distintos para hacer otra sucesivamente hasta alguna condicion.

GRACIAS ;)


Husos Horarios son GMT. La hora en este momento es 03:39:08.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web