Foro de programación ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: damlaplata en 09 de Febrero de 2012, 03:30:43 pm
-
Es posible modificar una tabla Z, con una tabla interna con cabecera?....aca les dejo el codigo de ejemplo:
REPORT ZPTICABECERA.
TABLES: ztfacturas.
DATA: BEGIN OF st_facturas OCCURS 0,
idfactura TYPE ztfacturas-idfactura,
idcliente TYPE ztfacturas-idcliente,
fechafact TYPE ztfacturas-fechafact,
importe TYPE ztfacturas-importe,
moneda TYPE ztfacturas-moneda,
fechapago TYPE ztfacturas-fechapago,
END OF st_facturas.
SELECT SINGLE *
FROM ztfacturas
WHERE idfactura = 5 AND idcliente = 3.
SELECT *
FROM ztfacturas
into TABLE st_facturas.
WRITE:/ ztfacturas-idfactura,
ztfacturas-idcliente,
ztfacturas-fechafact,
ztfacturas-importe,
ztfacturas-moneda,
ztfacturas-fechapago.
SKIP 3.
SORT st_facturas BY idfactura idcliente.
READ TABLE st_facturas WITH KEY idfactura = 5 idcliente = 3 BINARY SEARCH.
IF sy-subrc EQ 0.
st_facturas-fechafact = '20120208'.
st_facturas-importe = '200,00'.
st_facturas-moneda = 'EUR'.
st_facturas-fechapago = '20120208'.
MOVE st_facturas TO ztfacturas.
UPDATE ZTFACTURAS.
ó
modify ztfacturas from st_facturas
"igual ninguno de estos dos funca", alguna idea?, Se puede?porque me parece que solo con working-area nomas?
ENDIF.
WRITE:/ st_facturas-idfactura,
st_facturas-idcliente,
st_facturas-fechafact,
st_facturas-importe,
st_facturas-moneda,
st_facturas-fechapago.
SKIP 3.
FORMAT COLOR 4.
WRITE 'AHORA CON LOS CAMBIOS'.
SKIP 2.
WRITE:/ ztfacturas-idfactura,
ztfacturas-idcliente,
ztfacturas-fechafact,
ztfacturas-importe,
ztfacturas-moneda,
ztfacturas-fechapago.
-
Hola, que tal estas?
Veo cosas raras en el código... pero según intuyo lo que quieres hacer aquí te dejo el codigo.
Observa los cambios y nos cuentas que tal.
TABLES: ztfacturas.
DATA: BEGIN OF st_facturas OCCURS 0,
idfactura TYPE ztfacturas-idfactura,
idcliente TYPE ztfacturas-idcliente,
fechafact TYPE ztfacturas-fechafact,
importe TYPE ztfacturas-importe,
moneda TYPE ztfacturas-moneda,
fechapago TYPE ztfacturas-fechapago,
END OF st_facturas.
*Leemos la tabla de la BBDD...
SELECT SINGLE * FROM ztfacturas
WHERE idfactura = 5
AND idcliente = 3.
IF sy-subrc = 0.
*...y la pintamos.
WRITE:/ ztfacturas-idfactura,
ztfacturas-idcliente,
ztfacturas-fechafact,
ztfacturas-importe,
ztfacturas-moneda,
ztfacturas-fechapago.
SKIP 3.
SELECT * FROM ztfacturas INTO TABLE st_facturas.
SORT st_facturas BY idfactura idcliente.
READ TABLE st_facturas WITH KEY idfactura = 5
idcliente = 3
BINARY SEARCH.
IF sy-subrc EQ 0.
st_facturas-fechafact = '20120208'.
st_facturas-importe = '200,00'.
st_facturas-moneda = 'EUR'.
st_facturas-fechapago = '20120208'.
WRITE:/ st_facturas-idfactura,
st_facturas-idcliente,
st_facturas-fechafact,
st_facturas-importe,
st_facturas-moneda,
st_facturas-fechapago.
MOVE-CORRESPONDING st_facturas TO ztfacturas.
MODIFY ztfacturas.
ENDIF.
SKIP 3.
FORMAT COLOR 4.
WRITE 'AHORA CON LOS CAMBIOS'.
SKIP 2.
* Tienes que volver a leer la tabla de la BBDD.
SELECT SINGLE * FROM ztfacturas
WHERE idfactura = 5
AND idcliente = 3.
* ...y pintarla
WRITE:/ ztfacturas-idfactura,
ztfacturas-idcliente,
ztfacturas-fechafact,
ztfacturas-importe,
ztfacturas-moneda,
ztfacturas-fechapago.
Un saludo.
-
Ya esta resuelto. Gracias de todos modos!! 8)
La cosa era un error en las declaraciones: declararla como data y type una tabla standart con cabecera ejejejj....
Saludos.