viernes, 14 de junio de 2013

Como cambiar contenido de tabla con la SE16

Existen varias formas de modificar datos en SAP. Algunas te dejan rastro en el sistema y otras no. Aquí os contaré una de las muchas formas de hacerlo, eso sí... de las que dejan rastro, las otras me las guardo para siguientes post. A parte os enseñare como podemos detectar en el sistema si se han realizado algún debug y modificación de tablas de una forma sencilla y rápida.

Lo primero será irnos a la transacción SE16 y seleccionaremos la tabla que deseamos modificar.



En la pantalla de selección introduciremos los datos necesarios para filtrar la información.



Una vez tengamos el registro a modificar haremos doble clic sobre él, mostrándonos la información de la siguiente manera,    



y será aquí cuando activaremos el modo debug con /h y pulsaremos ENTER. Sabremos que se ha activado el modo debug porque en la parte inferior nos aparecerá un mensaje como este "Se ha activado el modo debugging"

Volveremos a pulsar ENTER y nos aparecerá la siguiente ventana donde simplemente cambiaremos el valor de la variable code por el valor de lo que queramos hacer. EDIT para modificar, INSR para insertar, DELE para borrar, ... luego le daremos a guardar. 

Si tras leer esto, os estáis preguntando todavía como se hace pues aquí va una explicación más detallada. 
Para sacar el valor de una variable en ese momento, pulsaremos doble clic sobre dicha variable, en nuestro caso lo haremos sobre code en el trozo de código de la izquierda. Al hacerlo veremos como a  nuestra derecha aparecerá la variable junto con el valor en tiempo de ejecución  pulsaremos doble clic sobre el lápiz y ya solo nos quedará cambiar ese valor por el que deseemos, pulsaremos ENTER y daremos a F8 para que continue la ejecución del programa.



Una vez hecho esto nos aparecerá la pantalla con la opción que hayamos seleccionado y solo tendremos que prodeder.



Pero cuidado, esto esta bien, si sabes lo que haces, pero tocar tablas de esta forma tiene su peligro y yo solo recomendaría hacerlo si tienes claro lo que vas a hacer. No obstante para nosotros los de sistemas siempre podremos saber si han realizado debug mediante la transacción SM21 y buscando entradas de este tipo "Field contents changed"
Viendo el log, podremos ver quien toco la tabla, que hizo (borrar, modificar, ...), y sobre que tabla actuó (en el campo programa nos aparecerá un valor como este /1BCDWB/DBUSR02, solo tenemos que mirar desde /1BCDWB/DB y el resto será la tabla tocada USR02). La pena es que en caso de modificaciones no sabremos que datos se tocaron, pero algo es algo.


De todas formas, como ya os dije existen otros métodos para debugear dejando rastro y sin hacerlo... pero eso ya será en otro post.