Estimados, necesito generar un LOG de modificaciones para tablas Z, pero la idea es realizarlo con las herramientas del estandar, o utilizando el grupo de funciones asociado... si alguien ha implementado esto favor me ayude con los pasos a seguir o alguna documentación donde cachurear... muchas gracias.
LOG de Modificaciones para tablas Z
Colapsar
X
-
Hola, en realidad no es muy dificil,
1. Registrar un objeto de modificacion de objetos dentro de la transaccion SCDO, logicamente debe comenzar con Z y dentro de ella registrar la tabla con la cual quieres que tenga el log.
2. Luego de crear el objeto de modificacion debes usar usar del programa en el cual realizar INSERT, UPDATE o DELETE los modulos de funciones que comienzan con el nombre CHANGEDOCUMENT*, si le das en referencia de utilizacion puedes copiar lo que el standard hace.David Carballido Córdova
-
Hola David, por que no nos hace un favor, y nos amplias un poco mas el punto No.2
Gracias.
Originalmente publicado por DavidXD_XDHola, en realidad no es muy dificil,
1. Registrar un objeto de modificacion de objetos dentro de la transaccion SCDO, logicamente debe comenzar con Z y dentro de ella registrar la tabla con la cual quieres que tenga el log.
2. Luego de crear el objeto de modificacion debes usar usar del programa en el cual realizar INSERT, UPDATE o DELETE los modulos de funciones que comienzan con el nombre CHANGEDOCUMENT*, si le das en referencia de utilizacion puedes copiar lo que el standard hace.Comentario
-
Holas, aver explico mejor, una vez que se ha creado el objeto de modificacion en el primer punto pasamos a usar las funciones que comienzan con CHANGEDOCUMENT* de esta forma, supongamos q estamos insertando un registro en la tabla Z (como ejemplo ZTABLA) donde quiero que se cree el log y a la vez he creado el objeto ZOBJ , comenzaria asi:
Código:[COLOR="Blue"](Rutina en la cual estoy llenado la estructura ZTABLA para realizar el INSERT y tbm tener a la mano el *ZTABLA q es la estructura ZTABLA pero antes de realizar los cambios)[/COLOR] CALL FUNCTION 'CHANGEDOCUMENT_OPEN' EXPORTING OBJECTCLASS = 'ZOBJ' OBJECTID = g_objectid PLANNED_CHANGE_NUMBER = space PLANNED_OR_REAL_CHANGES = space EXCEPTIONS SEQUENCE_INVALID = 1 OTHERS = 2. [COLOR="Blue"]* Donde g_objectid es la variable que sera como un ID que identificara * univocamente al registro dentro de la tabla del log, por ejemplo si fuera * registro de persona seria: sy-mandt + nro.IdentificacionPersona[/COLOR] CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE' EXPORTING TABLENAME = 'ZTABLA' WORKAREA_OLD = *ZTABLA WORKAREA_NEW = ZTABLA CHANGE_INDICATOR = 'I' DOCU_DELETE = 'X' EXCEPTIONS NAMETAB_ERROR = 1 OPEN_MISSING = 2 POSITION_INSERT_FAILED = 3 OTHERS = 4. CASE SY-SUBRC. WHEN 1. MESSAGE A600 WITH 'NAMETAB-ERROR'. WHEN 2. MESSAGE A600 WITH 'OPEN MISSING'. WHEN 3. MESSAGE A600 WITH 'INSERT ERROR'. WHEN 4. MESSAGE A600 WITH 'SINGLE ERROR'. ENDCASE. CALL FUNCTION 'CHANGEDOCUMENT_CLOSE' EXPORTING OBJECTCLASS = 'ZTABLA' OBJECTID = g_objectid DATE_OF_CHANGE = sy-udate TIME_OF_CHANGE = sy-uzeit TCODE = sy-tcode USERNAME = sy-uname OBJECT_CHANGE_INDICATOR = 'I' NO_CHANGE_POINTERS = space EXCEPTIONS HEADER_INSERT_FAILED = 1 OBJECT_INVALID = 2 OPEN_MISSING = 3 NO_POSITION_INSERTED = 4 OTHERS = 5. CASE SY-SUBRC. WHEN 1. MESSAGE A600 WITH 'INSERT HEADER FAILED'. WHEN 2. MESSAGE A600 WITH 'OBJECT INVALID'. WHEN 3. MESSAGE A600 WITH 'OPEN MISSING'. WHEN 5. MESSAGE A600 WITH 'CLOSE ERROR'. ENDCASE.David Carballido Córdova
Comentario
-
Hola David.
Tengo una duda muy grande, te expongo el caso, tenemos un modulo donde están involucradas varias tablas Z, digamos que a una de ellas necesito que se guarde la modificación, ya sea el INSERT, UPDATE o DELETE que hizo el usuario final.
Pregunta: Al yo crear o registrar el objeto de modificación por la SCDO y asociarle la tabla "Z", ya con eso registra las modificaciones en las tablas CDHDR y CDPOS?
Pregunta: El programa que das como ejemplo, ¿que efecto tiene sobre la tabla "Z"? ¿o es que debo escribir estas rutinas en todos los programas en donde figure el uso de la tabla "Z", para que guarde las modificaciones en las tablas CDHDR y CDPOS?
Si depronto tienes un ejemplo mas completo desde el principio te agradezco me lo envies a mi correo: acha3318@hotmail.com
Gracias.
Originalmente publicado por DavidXD_XDHolas, aver explico mejor, una vez que se ha creado el objeto de modificacion en el primer punto pasamos a usar las funciones que comienzan con CHANGEDOCUMENT* de esta forma, supongamos q estamos insertando un registro en la tabla Z (como ejemplo ZTABLA) donde quiero que se cree el log y a la vez he creado el objeto ZOBJ , comenzaria asi:
Código:[COLOR="Blue"](Rutina en la cual estoy llenado la estructura ZTABLA para realizar el INSERT y tbm tener a la mano el *ZTABLA q es la estructura ZTABLA pero antes de realizar los cambios)[/COLOR] CALL FUNCTION 'CHANGEDOCUMENT_OPEN' EXPORTING OBJECTCLASS = 'ZOBJ' OBJECTID = g_objectid PLANNED_CHANGE_NUMBER = space PLANNED_OR_REAL_CHANGES = space EXCEPTIONS SEQUENCE_INVALID = 1 OTHERS = 2. [COLOR="Blue"]* Donde g_objectid es la variable que sera como un ID que identificara * univocamente al registro dentro de la tabla del log, por ejemplo si fuera * registro de persona seria: sy-mandt + nro.IdentificacionPersona[/COLOR] CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE' EXPORTING TABLENAME = 'ZTABLA' WORKAREA_OLD = *ZTABLA WORKAREA_NEW = ZTABLA CHANGE_INDICATOR = 'I' DOCU_DELETE = 'X' EXCEPTIONS NAMETAB_ERROR = 1 OPEN_MISSING = 2 POSITION_INSERT_FAILED = 3 OTHERS = 4. CASE SY-SUBRC. WHEN 1. MESSAGE A600 WITH 'NAMETAB-ERROR'. WHEN 2. MESSAGE A600 WITH 'OPEN MISSING'. WHEN 3. MESSAGE A600 WITH 'INSERT ERROR'. WHEN 4. MESSAGE A600 WITH 'SINGLE ERROR'. ENDCASE. CALL FUNCTION 'CHANGEDOCUMENT_CLOSE' EXPORTING OBJECTCLASS = 'ZTABLA' OBJECTID = g_objectid DATE_OF_CHANGE = sy-udate TIME_OF_CHANGE = sy-uzeit TCODE = sy-tcode USERNAME = sy-uname OBJECT_CHANGE_INDICATOR = 'I' NO_CHANGE_POINTERS = space EXCEPTIONS HEADER_INSERT_FAILED = 1 OBJECT_INVALID = 2 OPEN_MISSING = 3 NO_POSITION_INSERTED = 4 OTHERS = 5. CASE SY-SUBRC. WHEN 1. MESSAGE A600 WITH 'INSERT HEADER FAILED'. WHEN 2. MESSAGE A600 WITH 'OBJECT INVALID'. WHEN 3. MESSAGE A600 WITH 'OPEN MISSING'. WHEN 5. MESSAGE A600 WITH 'CLOSE ERROR'. ENDCASE.Comentario
-
Originalmente publicado por acha3318Hola David.
Tengo una duda muy grande, te expongo el caso, tenemos un modulo donde están involucradas varias tablas Z, digamos que a una de ellas necesito que se guarde la modificación, ya sea el INSERT, UPDATE o DELETE que hizo el usuario final.
Pregunta: Al yo crear o registrar el objeto de modificación por la SCDO y asociarle la tabla "Z", ya con eso registra las modificaciones en las tablas CDHDR y CDPOS?
Pregunta: El programa que das como ejemplo, ¿que efecto tiene sobre la tabla "Z"? ¿o es que debo escribir estas rutinas en todos los programas en donde figure el uso de la tabla "Z", para que guarde las modificaciones en las tablas CDHDR y CDPOS?
Si depronto tienes un ejemplo mas completo desde el principio te agradezco me lo envies a mi correo: acha3318@hotmail.com
Gracias.
bueno recien aplique lo que explicaron aca y puedo responder al amigo que consulto de seguro ya lo hiso pero puede andar alguien mas con dudas por ahi
Pregunta: Al yo crear o registrar el objeto de modificación por la SCDO y asociarle la tabla "Z", ya con eso registra las modificaciones en las tablas CDHDR y CDPOS?
las registra aplicando las funciones que nos dice David yo probe con un insert y un update y me quedo registrado en ambas tablas.
Pregunta: El programa que das como ejemplo, ¿que efecto tiene sobre la tabla "Z"? ¿o es que debo escribir estas rutinas en todos los programas en donde figure el uso de la tabla "Z", para que guarde las modificaciones en las tablas CDHDR y CDPOS?
seep debes escribir en cada z esto para que te valla guardando el log.
saludos .Comentario
-
lo has utilizadoOriginalmente publicado por ChanY no será mejor utilizar la utilidad Table Logging de SAP?
Por internet encontrarás información, como por ejemplo:
http://www.mariewagener.de/Note.September.2007
yo comprobé que lo anterior funciona
saludos.
a lo que pones ahora lo mire pero mmm me dio lata chequearlo lo que si vi que activar "Grabar en log modificaciones de datos"
Nota: La activación de la grabación en log de sistema retarda los accesos para modificar la tabla. En primer lugar para cada modificación debe escribirse un registro en la tabla log. En segundo lugar, muchos usuarios acceden paralelamente a la tabla log, de modo que pueden producirse situaciones de bloqueo, a pesar de que los usuarios trabajen en diferentes tablas de aplicación.
Dependencias
La grabación en log de sistema sólo tiene lugar cuando el parámetro rec/client está correctamente fijado en el perfil del sistema. La mera fijación del indicador no provoca la grabación en log de las modificaciones de tablas.
Podrá visualizar los logs existentes mediante la transacción historial de tablas (SCU3).Editado por última vez por sub_dan; 07/09/2010, 18:42:32.Comentario
-
En mi sistema no requerimos esta funcionalidad de Tabe Logging, pero se que existe y sus pros/contras.
Originalmente publicado por sub_danlo has utilizado
yo comprobé que lo anterior funciona
saludos.
a lo que pones ahora lo mire pero mmm me dio lata chequearlo lo que si vi que activar "Grabar en log modificaciones de datos"
Nota: La activación de la grabación en log de sistema retarda los accesos para modificar la tabla. En primer lugar para cada modificación debe escribirse un registro en la tabla log. En segundo lugar, muchos usuarios acceden paralelamente a la tabla log, de modo que pueden producirse situaciones de bloqueo, a pesar de que los usuarios trabajen en diferentes tablas de aplicación.
Dependencias
La grabación en log de sistema sólo tiene lugar cuando el parámetro rec/client está correctamente fijado en el perfil del sistema. La mera fijación del indicador no provoca la grabación en log de las modificaciones de tablas.
Podrá visualizar los logs existentes mediante la transacción historial de tablas (SCU3).Comentario
-
Hola a todos,
Tengo una consulta adicional, si deseo incorporar el log de cambios de una tabla transparente (en mi caso BSEG, que ya tiene incorporado control de cambios) pero para un programa Z mediante el cual se cambia el bloqueo de pagos, cómo se podría manejar ese cambio para que aparezca directamente en el menú "Modificaciones de documentos" en el doc. original FB60 o doc. de pago.
Saludos.Comentario
-
Log de registros
Buena Tarde.
Necesito ayuda urgente por favor!! soy nueva en abap y necesito crear un log de modificacion, tengo una tabla z con vista de actualizacion y modificacion y necesito que cada que se modifique me guarde el usuario y la fecha de modificacion. tengo el objeto pero no se como utilizarlo en el programa, gracias por su ayuda.Comentario
-
Log de tabla Z
Buenos días,
Seguí las recomendaciones que dio David sobre agregar los módulos de funciones al programa, pero no me funciona
Podría alguien por favor enviarme un ejemplo o un instructivo para realizar esto!?
Necesito que los cambios en una Z se guarden en la CDPOS y CDHDR.
De antemano, Muchas gracias por su ayuda
Andrés Felipe Hernández! 
Comentario
-
Hola David implemente esta rutina pero ahi tengo un pequeño problema que no me sale todas las modificaciones que realizo en un registro en una tabla Z se supone que debo ver despues de una modificacion en el log los registros que tuvieron cambio pero nada haber si me ayudas con esto saludos..
Originalmente publicado por DavidXD_XDHolas, aver explico mejor, una vez que se ha creado el objeto de modificacion en el primer punto pasamos a usar las funciones que comienzan con CHANGEDOCUMENT* de esta forma, supongamos q estamos insertando un registro en la tabla Z (como ejemplo ZTABLA) donde quiero que se cree el log y a la vez he creado el objeto ZOBJ , comenzaria asi:
Código:[COLOR="Blue"](Rutina en la cual estoy llenado la estructura ZTABLA para realizar el INSERT y tbm tener a la mano el *ZTABLA q es la estructura ZTABLA pero antes de realizar los cambios)[/COLOR] CALL FUNCTION 'CHANGEDOCUMENT_OPEN' EXPORTING OBJECTCLASS = 'ZOBJ' OBJECTID = g_objectid PLANNED_CHANGE_NUMBER = space PLANNED_OR_REAL_CHANGES = space EXCEPTIONS SEQUENCE_INVALID = 1 OTHERS = 2. [COLOR="Blue"]* Donde g_objectid es la variable que sera como un ID que identificara * univocamente al registro dentro de la tabla del log, por ejemplo si fuera * registro de persona seria: sy-mandt + nro.IdentificacionPersona[/COLOR] CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE' EXPORTING TABLENAME = 'ZTABLA' WORKAREA_OLD = *ZTABLA WORKAREA_NEW = ZTABLA CHANGE_INDICATOR = 'I' DOCU_DELETE = 'X' EXCEPTIONS NAMETAB_ERROR = 1 OPEN_MISSING = 2 POSITION_INSERT_FAILED = 3 OTHERS = 4. CASE SY-SUBRC. WHEN 1. MESSAGE A600 WITH 'NAMETAB-ERROR'. WHEN 2. MESSAGE A600 WITH 'OPEN MISSING'. WHEN 3. MESSAGE A600 WITH 'INSERT ERROR'. WHEN 4. MESSAGE A600 WITH 'SINGLE ERROR'. ENDCASE. CALL FUNCTION 'CHANGEDOCUMENT_CLOSE' EXPORTING OBJECTCLASS = 'ZTABLA' OBJECTID = g_objectid DATE_OF_CHANGE = sy-udate TIME_OF_CHANGE = sy-uzeit TCODE = sy-tcode USERNAME = sy-uname OBJECT_CHANGE_INDICATOR = 'I' NO_CHANGE_POINTERS = space EXCEPTIONS HEADER_INSERT_FAILED = 1 OBJECT_INVALID = 2 OPEN_MISSING = 3 NO_POSITION_INSERTED = 4 OTHERS = 5. CASE SY-SUBRC. WHEN 1. MESSAGE A600 WITH 'INSERT HEADER FAILED'. WHEN 2. MESSAGE A600 WITH 'OBJECT INVALID'. WHEN 3. MESSAGE A600 WITH 'OPEN MISSING'. WHEN 5. MESSAGE A600 WITH 'CLOSE ERROR'. ENDCASE.Comentario
Comentario