Buenas tardes, quisiera un poco de orientación en cuanto a la instrucción substring.
Tengo 2 tablas y de una quiero tomar los últimos 10 dígitos de un campo y compararla con lo que tiene la otra, como debo hacer esto? básicamente de una tabla Z quiero tomar los últimos 10 dígitos de un UUID y la otra tabla es la BKPF es un campo de Referencia es el XBLNR.
Ya existe una comparación en el programa y busca el RFC desde una tabla temporal, yo ya agregue a esa tabla temporal el campo XBLNR solo me hace falta encontrar la manera de tomar los 10 últimos dígitos del campo de UUIDS y hacer la comparación para que pueda escribir los datos en una nueva tabla.
Alguien me podría explicar un poco mas a fondo como funciona el substring, no soy ABAP de hecho se muy poco y me gustaría aprender mas.
DATA: lv_longitud type n LENGTH 2,
lv_posicion type n LENGTH 2,
lv_substring type string,
lv_uuid type string VALUE '123456789abcde'.
"Obtenemos la longitud de la cadena
lv_longitud = strlen( lv_uuid )."La palabra reservada STRLEN, tiene la función de contar el numero de caracteres
"que tiene una cadena
"Se restan los ultimos caracteres que quieres de la cadena
lv_posicion = lv_longitud - 10.
"Se asigna a la variables los ultimos 10 digitos de la cadena
lv_substring = lv_uuid+lv_posicion.
write / lv_substring.
Para que lo puedas entender mejor el flujo, crea un test con este código e impleméntalo en tu desarrollo
and uuid like ’ it-bseg-xblnr% '. - este es mi bloque de codigo en donde segun yo hace la validacion pero solo por el rfc y por otros campos.
if it_bseg is not initial.
select mandt bukrs perbl gjahr uuid rfcem nomem rfcrp nomrp ztipo serie folio fechr subto
desct imptr nmimt imprt nmimr total metpg moned kursf indct
from zpyrl2
into table it_version1
for all entries in it_bseg
where bukrs = p_bukrs
and perbl in lr_perbl
and gjahr in lr_gjahr
and rfcrp = it_bseg-stcd1
and uuid like ' it_bseg-xblnr% '.
No se si sea algo mas sencillo, bueno de hecho no esta funcionando asi con este codigo.
Ok el problema es q no se puede usar un “like” con un “for all entries” eso es lo q estoy entendiendo, entonces deberia hacer primero una comparacion entre mi campo uuid y mi campo de referencia a 10 digitos y despues pintarlo en la tabla q tengo como it_bsega a un campo uuid2 y una vez finalizado todo este procesos hacer la comparacion en el bloque de codigo q les puse en el post anterior comparando uuid = uuid2 , es correcto?.