Como crear un campo adicional en SQ02
Buenas tardes amigos,
He visto algunos que algunos preguntan sobre cómo crear un campo adicional en SQ02 o como llenar el valor del mismo, por lo que quiero compartir mi experiencia con el mismo.
El requerimiento del cliente fue que pudiera presentar el nombre de un empleado o candidato dependiente del dato ingresado en una tabla personalizada. Este nombre debería estar concatenado y quitando todos los posibles espacios en blanco entre nombres y apellidos. Esto debido a que ocasionalmente ingresaban espacios entre los campos de la tabla o ingresaban más de un nombre en el mismo.
Les comparto como lo realicé yo. No quiere decir que sea la única forma ni la mejor. Fue lo que realicé en su momento.
Los pasos a continuación.
- Estando sobre el menú principal ingresamos a la opción de detalle (F5).
2. Seleccionamos la hoja de crear.
3. Indicamos un nombre y la clase de objeto que estamos creando. Para este caso un campo adicional.
4.- Indicamos las características del campo adicional que se está creando.
5.- Seleccionamos el campo adicional creado y presionamos el código para edición del código.
6. Edito el código de acuerdo a lo requerido.
No explicaré a detalle el código porque es bastante legible, pero a groso modo diré que verifico si tengo algún valor en el campo de candidato o de empleado.
Dependiendo de eso busco y lleno el campo “nombrecompleto”. Proceso el campo para validar y quitar espacios adicionales entre los nombre y presento el resultado final.
adjunto el código…
clear nombrecompleto.
data: tga_02 like pa0002 occurs 1 with header line.
data: tgb_02 like pb0002 occurs 1 with header line.
data: nombre1(50) type c.
data: nombre2(50) type c.
data: nombre3(50) type c.
data: nombre4(50) type c.
data: nombre5(50) type c.
data: nombre6(50) type c.
if zhrrc_tt_genprop–codcandidato <> 0 and zhrrc_tt_genprop–codempleado = 0.
SELECT * into tgb_02 FROM PB0002
WHERE PERNR = zhrrc_tt_genprop–codcandidato .
concatenate tgb_02–vorna ‘.’ tgb_02–midnm ‘.’ tgb_02–rufnm ‘.’
tgb_02–nachn ‘.’ tgb_02–name2 ‘.’ tgb_02–nach2 into nombrecompleto.
ENDSELECT.
elseif zhrrc_tt_genprop–codcandidato = 0 and zhrrc_tt_genprop–codempleado <> 0.
SELECT * into tga_02 FROM PA0002
WHERE PERNR = zhrrc_tt_genprop–codempleado .
concatenate tga_02–vorna ‘.’ tga_02–midnm ‘.’ tga_02–rufnm ‘.’
tga_02–nachn ‘.’ tga_02–name2 ‘.’ tga_02–nach2 into nombrecompleto.
ENDSELECT.
endif.
translate nombrecompleto using ‘ |’.
translate nombrecompleto using ‘. ‘.
split nombrecompleto at space into nombre1 nombre2 nombre3 nombre4 nombre5 nombre6.
condense nombre1 no–gaps.
condense nombre2 no–gaps.
condense nombre3 no–gaps.
condense nombre4 no–gaps.
condense nombre5 no–gaps.
condense nombre6 no–gaps.
concatenate nombre1 ‘.’ nombre2 ‘.’ nombre3 ‘.’ nombre4 ‘.’ nombre5 into nombrecompleto.
translate nombrecompleto using ‘. ‘.
translate nombrecompleto using ‘| ‘.
condense nombrecompleto.
Espero a alguien le sirva de ayuda o referencia.
Saludos,
Muchas gracias por el aporte, compartir el conocimiento siempre es bienvenido! Un saludo!
Fran 🙂
Muchas Gracias por la información, una consulta sobre este tema, ¿es posible añadir un selector en estos campos adicionales, es decir, cuando ejecute la query, poder elegir un valor posible para este campo adicional?, Por ejemplo, genero un campo adicional con unos status, (imaginemos que los status son abierto, cerrado), cuando ejecute la query en la sq01 si añado este campo adicional como selección... poder tener una lista desplegable que me permita seleccionar entre los status disponibles, para no tener que escribir manualmente el texto en el campo de selección.
Muchas Gracias de antemano.
Hola buen día:
Estoy haciendo algo similar en un infoset y he seguido todos las instrucciones que mencionas, sin embargo el sistema me muestra un error, Campo "NOMBRES" desconocido: No está incluido en una de las tablas indicadas ni definido mediante una sentencia "DATA", según lo que vi en tu código no es necesario declarar el campo adicional, el cual ya fue creado en la pestaña de detalles.
¿Alguna recomendación para solventar el problema error?
Saludos,
Buen día logre solucionar el problema, estaba ingresando a la pestaña de coding pero debía hacerlo en el botón que se encuentra al lado de la pestaña secuencia.
Saludos y gracias por la publicación fue muy útil.