Sustituir El Campo SGTXT de La Tabla BSEG
Transcript of Sustituir El Campo SGTXT de La Tabla BSEG
Sustituir el campo SGTXT de la tabla BSEG
Algunas veces necesitamos que el campo SGTXT de la tabla BSEG mantenga un valor igual en cada una
de sus posiciones, ya sea el texto de cabecera, el texto de asignación o cualquier otro valor que se desee
colocar. ¿Cómo podemos realizar dichas modificaciones?, ¿Se puede emplear una BTE, un cambio por la
OBBH, o realizar un enhancement?.
Tras las preguntas anteriores y con la experiencia de ya haber resuelto 2 temas similares, lo aconsejable
para este procedimiento es el empleo de la transacción OBBH, la cual nos permite reemplazar un valor
de las tablas BKPF y BSEG ya sea por un valor hardcode (Quiere decir un valor fijo colocado por nosotros)
o en su defecto un valor que obtenemos de otros campos textos que contenemos en la BSEG o BKPF.
En el siguiente tutorial vamos a ver la creación de un paso aplicando la lógica necesaria para el cambio
en el campo SGTXT por medio de la transacción OBBH.
Para ello vamos a dirigirnos a la transacción OBBH y nos aparecerá la siguiente ventana:
En la imagen anterior, se puede ver que ya se han creado algunos casos de sustitución tanto a nivel de
cabecera, posición de documento y documento completo de acuerdo a una sociedad en especifico, para
nuestro caso, la sustitución que realizaremos será realizada en una sustitución de documento completo,
ya que necesitamos que estén todas las posiciones y solo tengamos que reemplazar el valor solicitado.
Para nuestro caso anterior vamos a dirigirnos a la sustitución ZFI002 – Sustitución doc. Completos. De
cualquier sociedad, ustedes deben fijarse bien el tema de las sociedades ya que muchas veces el cliente
no quiere que las sustituciones se realicen en todas, sino en las que más usa o simplemente en un única
sociedad, el agregar más sociedades o el quitarle lo pueden hacer con los botones de la barra superior
Para editar las líneas
Para agregar nuevas líneas a otras sociedades
Para realizar una copia de las líneas indicadas (valido cuando queremos agregar una sociedad)
Para eliminar una o más líneas
Una vez ubicado la sustitución a utilizar, nos colocamos encima y le damos doble clic, lo cual nos dirigirá
a la pantalla de las sustituciones, tal como se muestra a continuación
Nos ubicamos en el desglose de la sustitución para ver los pasos que contiene
Para nuestro caso, nuestra sustitución contiene ya 3 pasos, vamos a agregarle un nuevo paso en donde
realizaremos el cambio del campo SGTXT, para ello nos dirigimos al botón de “Nuevo Paso”
Nos aparecerá una dynpro que contiene todos los campos disponibles a realizarle una sustitución, tanto
de la BKPF y de la BSEG o también nos da la posibilidad de emplear una exit, la cual permitiría un mayor
dinamismo en casos en donde el campo no fuera de fácil acceso o se tenga una lógica detallada previo a
la sustitución.
Para nuestro caso vamos a ubicar el campo SGTXT de la tabla BSEG y para no tener que desplazarnos
entre todos los registros emplearemos el botón de búsqueda de la parte inferior y nos aparecerá la
siguiente dynpro
Allí colocaremos el campo que estamos buscando en nuestro caso SGTXT y de nuevo pulsamos en el
botón de los binoculares
Nos aparecerá una dynpro con todos aquellos campos que cumplan con la búsqueda realizada.
En nuestro caso solo trae una línea, le vamos a dar un clic encima de donde dice SGTXT sombreado de
crema y automáticamente nos dirigirá a su posición ubicada en la dynpro.
Le vamos a dar clic al check que se encuentra en la parte izquierda y en la parte inferior le damos clic al
botón con el icono del check
Seguido nos aparecerá una dynpro consultándonos la manera de sustituir el campo SGTXT
Las opciones que se plantean las explicaremos a continuación:
- Valor constante: El campo SGTXT será reemplazado por un valor hardcode (valor fijo) el cual se
lo indicamos con un simple texto
En el ejemplo se puede ver que vamos a reemplazar en todas las posiciones del campo SGTXT
por nuestro texto “Sustituir texto prueba”
- Exit: El campo SGTXT será reemplazado de acuerdo a la lógica que se incluya en un exit ubicado
en el programa “ZRGGBS000”
Para nuestro ejemplo hacemos un cambio de campo (en específico el SGTXT) con respecto a
nuestro exit y en la lógica del programa veremos lo siguiente:
El formulario emplea el campo psgtxt que hace referencia al campo SGTXT y es justo a dicho
valor al que vamos a modificar, empleando la lógica que creamos adecuada, además al
momento de declarar el exit notaremos también lo siguiente:
En donde el exits-param tiene relacionado la opción de aplicar el exit solamente al campo
solicitado.
PERO LO RECOMENDADO ES: Pero aparte de esta opción (que muchas veces no reemplaza el valor en todas las posiciones)
esta la opción de reemplazar únicamente ejecutando el exit y empleando un loop con una tabla
interna que contiene todas las posiciones de la tabla BSEG, para poder hacer un llamado a este
tipo hay que realizar las siguientes validaciones:
Primero lo que vamos a registrar en exits-param ahora será con referencia a aplicación de una
clase
Luego en el código del perform la manera de la declaración del USING es con respecto a la tabla
interna que contendrá los valores de la tabla BSEG, con lo cual a través del empleo de un LOOP
podremos reemplazar el valor que deseemos modificar.
Por último en la parte de la sustitución vamos a ver los pasos para poder indicarle que queremos
emplear una sustitución solo por exit, primero ya hemos visto la dynpro que nos trae por
defecto al indicar que deseamos hacer una sustitución por exit
Vamos a proceder a eliminar dicha línea y reemplazar por la realización de una sustitución
únicamente por exit, para ello damos clic al check que esta al costado de texto y presionamos la
opción de eliminar la línea
Nos aparecerá una dynpro preguntando la confirmación del borrado, presionamos el botón SI
Luego confirmamos que ya no aparece ninguna línea del campo y luego procedemos a presionar
en el botón de agregar nueva línea
Nos aparece de nuevo la dynpro de la consulta de los campos a sustituir, pero nosotros
indicaremos la primera opción que indica “Sólo exit” y confirmamos
A continuación nos aparecerá la línea que nos indica que la sustitución se realizara solo por Exit
y en la casilla de la derecha colocaremos el nombre de nuestro Exit que creamos líneas arriba
- Asignación Campo – Campo: El último tipo de sustitución permite el cambio de nuestro campo
SGTXT por otro campo de las tablas BSEG o BKPF, solo tendríamos que indicarle el valor a tomar
y el cambio lo realizaría automáticamente, la dynpro es la siguiente
En el cuadro de texto se puede ingresar el nombre del campo que usaremos para reemplazar, si
no sabemos como convocarlo podemos presionar el botón del matchcode o presionar la
tecla F4 y nos aparecerá una dynpro con los campos disponibles
Una vez encontremos el indicado, le presionamos encima del texto y damos clic al botón con el
icono de check
Una vez elegido el tipo de sustitución, vamos a proceder a colocar la condición para que se efectué, para
ello vamos a dar clic en condición, que lo encontramos en la parte inferior de nuestro paso creado
Nos aparecerá la dynpro para la creación de la condición
Por lo general las condiciones pueden emplearse con lo siguiente:
- Si se desean hacer condiciones con los valores de la tabla BKPF, se puede emplear
- Si se desean hacer condiciones con los valores de la tabla BSEG, se puede emplear
- Si se desean hacer condiciones con los valores del sistema, se puede emplear
En un breve ejemplo, vamos a hacer una validación con respecto a la transacción FB05, para ello en
Campos sistema ABAP daremos doble clic sobre Código de transacción y veremos que el mismo texto se
copia en la parte superior (valor no modificable por teclado)
Si queremos darle el signo de comparación nos apoyaremos en los botones con los signos adecuados,
los cuales los tenemos en la parte inferior derecha
Para nuestro caso emplearemos el de igualdad, dándole un clic encima y otra vez notaremos que en la
parte superior se coloca dicho valor
Por último, vamos a ingresarle el valor constante de la transacción, para lo cual nos apoyaremos en los
botones que aparecen también en la parte inferior derecha
En este caso eligiremos el botón que dice Constante, damos clic encima y nos aparecerá una dynpro
solicitando dicho valor
Para nuestro caso agregamos el código de la transacción “FB05”, lo agregamos sin las comillas y
presionamos el botón con icono de check
Y de nuevo notaremos que en la parte superior el código se actualiza con la condición que estamos
armando para la transacción
Una manera se saber que nuestra condición es correcta, es fijándonos en el semáforo de Status que
tenemos en la parte derecha, encima de los botones de signos
Si deseamos agregar otra condición, podemos emplear los botones de AND o OR, dependiendo lo que se
necesite
Una vez ya tenemos la condición y la sustitución procedemos a guardar, para ello damos clic en el icono
del disquete que aparece en la parte superior
Una vez grabado aparecerá en la parte inferior el siguiente mensaje
Se realizan las validaciones con los ejemplo que tengan a mano, el resultado debe ser el que buscaban,
en el caso del código que han podido ver en la parte del empleo del exit (líneas arriba), lo que se realiza
es primero una recuperación de un campo de la dynpro de la transacción FB05 la cual contiene el texto
que repetiremos en el campo SGTXT en cada una de las posiciones de la tabla BSEG, obteniendo tras la
ejecución el siguiente resultado:
Una vez se tenga correcto los ajustes, para proceder a transportar el paso nos ubicamos en el nombre
de la sustitución
Luego iremos al menú, damos clic en sustitución y ubicamos la opción transportar
Nos aparecerá la siguiente dynpro
Le damos clic en el icono de ejecutar y nos solicitará la orden de transporte a emplear
Una vez seleccionamos nuestra OT, damos clic en el botón con icono de check y transportamos la OT a
los demás ambientes.