PDA

Ver la Versión Completa : Modificar tabla BSEG (agregarle un dato)


RAMONES
16/04/09, 18:10:15
Una consulta amigos saperos, tengo que modificar un dato de la tabla BSEG, la cosa es asi en una determinada transaccion, el usuario va a ingresar una fecha (este campo lo agregue yo), y cuando se ejecuta la transaccion tengo que ir a la bseg (campo ZFBDT) y modificar el dato existente por el que el haya ingresado.
Como puedo hacerlo?? Me urge!! Les agradezco su ayuda!!

Saludos!!

RAMONES
16/04/09, 20:21:07
Lo logre solo, no es recomendable, pero es lo que me pedian...

hice lo siguiente:

DATA: it_bseg TYPE TABLE OF bseg,
wa_bseg TYPE bseg.

IF BSEG-ZFBDT IS INITIAL.

* si el campo es vacio que no haga nada, de lo contrario me modifica el
* campo y lo guarda vacio.

ELSE.

SELECT SINGLE *
FROM bseg
INTO wa_bseg "selecciono la posicion a modificar segun las condiciones
WHERE bukrs = payr-zbukr
AND belnr = payr-vblnr
AND gjahr = payr-gjahr
AND bschl = '39'
AND umskz = 'R'.

IF sy-subrc = 0.

wa_bseg-zfbdt = BSEG-ZFBDT. "copio de la screen a la WA
MODIFY bseg FROM wa_bseg. "grabo los cambios a la tabla BSEG

ENDIF.
ENDIF.





espero que a alguien le ayude esto....saludos!!

Jonathan Barrio Rodriguez
17/04/09, 00:17:56
Ey Ey Ey... espero haberte entendido bien pero vamos... bajo mi opinion ni se te ocurra hacer eso:

Esos datos se archivan en el sistema mediantes las transacciones STANDAR. Si lo haces directamente sobre la tabla standar te estarás saltando todos los pasos de validación y carga de otras tablas dependiente que hace R/3 para asegurar la consistencia e integridad de los datos... Si solo lo cargas en esa tabla, al visualizar el documento saldrá bien... pero es posible que en otros datos, otras pantallas no te los muestre o haga calculos erroneos si carece de esa fecha... podría valer esa fecha para calcular impuestos en otras tablas...

Creo recordar que la BSEG es una tabla de posiciones de la MSEG y son datos maestros (lo cual toma más importancia ) ¿cargados por la tx FB01?

Si es así haz un Batch input por la FB02 (modificación).Si necesitas más ayuda escribe, creo recordar que tenía algún programilla por ahí y te lo podría enviar.

Contrasta lo que te digo con tu superior. Si alguien cree que estoy equivocado... por favor!! corríjanme.

Saludos.

DavidXD_XD
17/04/09, 03:14:20
Apoyo lo que menciona Jonathan, un UPDATE o MODIFY a una tabla standard no es para nada recomendable, hasta t pueden correr si alguien se entera :p , lo que quieres hacer me suena a una sustitucion (OBBH) ya que quieres sustituir el campo de la BSEG con otro dato, puedes usar tecnicas de memoria (EXPORT MEMORY) y jalarlo dentro de la sustitucion

bisonye
17/04/09, 06:27:58
De acuerdo con Jonathan y David, eso de atacar las tablas directamente es "caca" y no se hace. :D

A partir de aqui, la única forma que conozco de modificar documentos es mediante la FB02 por lo que tendrás que hacer un BI como dice Jonathan ya que por lo que parece no es una transacción estandard y creo que no puedes utilizar ampliaciones. Por otro lado el valor que estás modificando no es más que la fecha de vencimiento. A nivel financiero no tiene demasiada importancia pero si está ligado con el módulo de ventas o compras no te van a cuadrar los datos....

Saludos

RAMONES
17/04/09, 13:13:34
Recien acabo de leer sus respuestas, en este momento no estoy en el cliente, por lo que cuando vuelva al mismo voy a reveer lo que hice y cualquier cosa, les consulto. Muchisimas gracias, les pido que si tengo dudas me ayuden...gracias!!

Jonathan Barrio Rodriguez
17/04/09, 15:45:43
Bueno... si el programa se está usando o probando... yo iría ahora mismo. Imagino que está en desarollo, por lo que no sería grave el estropicio, aunque tampoco es plan de maltratar el entorno donde vas a hacer pruebas.

Si es un tema de fechas de vencimiento de docuemnto... podría dar errores en cuanto a las condiciones de precio, no?

Saludos.

Recien acabo de leer sus respuestas, en este momento no estoy en el cliente, por lo que cuando vuelva al mismo voy a reveer lo que hice y cualquier cosa, les consulto. Muchisimas gracias, les pido que si tengo dudas me ayuden...gracias!!

bisonye
17/04/09, 15:55:45
La fecha de vencimiento se calcula a partir de las condiciones de pago pero una vez calculada en el documento financiero la puedes cambiar.

Personalmente si alguien que trabaja conmigo hiciese una consulta de actualización así lo tiraba a la calle. Solo lo permitiría en tablas Z, para modificar las tablas del sistema hay muchas formas.

Menos mal que no tengo trabajadores a mi cargo!! :p

P.D: Estoy releyendo el mensaje y parece un poco duro. Señalar que el último responsable de un código así es el analista que debería dejar claro desde un principio que eso no se puede hacer.

Jonathan Barrio Rodriguez
17/04/09, 16:15:40
JaJaJa...

Eso te iba a decir Bisonye. Vuelvo a lo de antes... el tema no son los novatos, que claro, como yo, los hay. El tema es dar un curso de una semana y dejar a alguien solito en un cliente y que para consultar... tenga que venir a mundosap.

Enhorabuena por no tener gente a tu cargo.
De todos modos me llama la atención que se trabaje en Abap y no se tengan conocimiento de modificar tabla por sql y sin supervisión le hagan atacar a tablas standar de maestros.

Creo que si ocurren casos como este... el supervisor se merece el marrón.

Ramones, no te desanimes por nuestros comentarios, todos metemos la pata, pero ten cuidadin con algunas cosas porque hay errores atroces.

La fecha de vencimiento se calcula a partir de las condiciones de pago pero una vez calculada en el documento financiero la puedes cambiar.

Personalmente si alguien que trabaja conmigo hiciese una consulta de actualización así lo tiraba a la calle. Solo lo permitiría en tablas Z, para modificar las tablas del sistema hay muchas formas.

Menos mal que no tengo trabajadores a mi cargo!! :p

P.D: Estoy releyendo el mensaje y parece un poco duro. Señalar que el último responsable de un código así es el analista que debería dejar claro desde un principio que eso no se puede hacer.

RAMONES
17/04/09, 19:05:37
Muchachos, me estan matando con sus comentarios, jaja, menos mal que no son mis enemigos....!!! voy a arreglar eso en cuanto vaya al cliente.....muchas gracias por su ayuda......si preciso algo les voy a consultar....GRACIAS!

bisonye
20/04/09, 05:58:42
Muchachos, me estan matando con sus comentarios, jaja, menos mal que no son mis enemigos....!!! voy a arreglar eso en cuanto vaya al cliente.....muchas gracias por su ayuda......si preciso algo les voy a consultar....GRACIAS!

El fin último de los comentarios es hacerte ver, de forma más o menos sutil (la mia no ha sido sutil) que la modificación que has puede producir daños graves en la BD y que por lo tanto tu empleo puede estar en riesgo.

Tuve hace poco una persona a mi cargo y precisamente hizo una modificación de ese estilo. No la eché a la calle pero me puse tan serio que estuvo una semana entera enseñandome el código con miedo.... Es una de las cosas que deberían recalcar bien en cualquier curso de sap.

Saludos y si tienes dudas pregunta.

RAMONES
20/04/09, 14:10:24
En este instante, estoy en el cliente en el cual tengo que hacer la modificacion. Quisiera si me pueden decir, como hago para agregarle un campo a la transaccion FCH5, yo anteriormente lo hice copiando el programa de control a uno Z y en la se80 le agregue el campo, esta bien eso?? lo hice asi porque esta TX no tiene screen-exits...gracias!!

marianoa
20/04/09, 14:34:02
tendrias que buscar una badi que te deje agregar un campo, si no encuentras ningun screen exit.
con respecto a la modificacion de las tablas estandar coincido con lo dicho anteriormente. ademas si esa tabla tiene tablas relacionadas te pueden quedar varios datos inconcistentes.
Saludos

cjbravom
22/04/09, 12:39:12
Hola a todos, para mofidicar datos en la tabla BSEG, puedes utilizar esta funcion:

CALL FUNCTION 'CHANGE_DOCUMENT' IN UPDATE TASK
TABLES
t_bkpf = zbkpf
t_bkdf = zbkdf
t_bseg = zbseg
t_bsec = zbsec
t_bsed = zbsed
t_bset = zbset.

COMMIT WORK.

RAMONES
22/04/09, 15:13:39
Hola a todos, para mofidicar datos en la tabla BSEG, puedes utilizar esta funcion:

CALL FUNCTION 'CHANGE_DOCUMENT' IN UPDATE TASK
TABLES
t_bkpf = zbkpf
t_bkdf = zbkdf
t_bseg = zbseg
t_bsec = zbsec
t_bsed = zbsed
t_bset = zbset.

COMMIT WORK.



Muchas gracias! Lo voy a probar......