viernes, 22 de junio de 2012

Validaciones SE16N con &SAP_EDIT


Casi todo el mundo que está trabajando en SAP  tiene, tarde o temprano, que modificar datos en las tablas del diccionario, del estandard o tablas creadas a medida. Una manera de hacerlo es usar la sentencia &SAP_EDIT antes del display de datos en la SE16N. No obstante, SAP ha notado este uso por parte de consultores y usuarios y ha diseñado notas que corrigen esta funcionalidad por considerarlo un BUG en la seguridad de los datos del sistema en entornos Productivos. Entiendo el sentido de esta preocupación y la solución aportada, sin embargo, siempre puede ocurrir que hay que modificar un dato debido a que otro proceso, o bien un usuario o un programa ha generado un dato erróneo y no es posible una marcha atrás. Por ello coloco el procedimiento para saltarse las validaciones implementadas, en casos puntuales. 

1.) Activación de SAP_EDIT en la SE16N.

Breakpoint en el programa LSE16NF10, rutina EXECUTE.
Cuando llama a la función SE16N_INTERFACE hay que cambiar las variables GD-EDIT a X y la GD-SAPEDIT a X.

Con esto simulamos el &SAP_EDIT.

2.) Evitar el chequeo de verificación

Breakpoint en programa LSDFCF02, rutina FORKEY_CHECK Linea if has_forkey is initial

Cuando se grabe en la SE16N y se pare en este punto hay que dar a continuar hasta que la variable DFIES_WA-FIELDNAME tenga el nombre de los campos a chequear de la tabla que queremos modificar. Hay que limpiar la variable has_forkey para todos los campos que se chequean, si no se hace así, no se graba la modificación.

"Afortunadamente" esto no se hace fácilmente por el cual siempre un programador experimentado en debug es necesario para realizar este proceso. De todos modos, apelo a vuestra responsabilidad usando esta información.