Seleccionar ultimos 10 digitos de un Campo

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.

Gracias por su apoyo.

Yo haría ésto (pseudocódigo):

Ld_len = strln( campo ).

If ld_len le 10.

Campo(10)

Else.

L_off = ld_len - 10.

Campo+l_off(10).

Endif.

Sorry yo se q vas a decir q q ignorante jajaja entiendo lo q quiere hacer lo q dices pero no bien como aplicarlo a mi codigo, jejeje sorry.

Te dejo un ejemplo rápido de lo que puedes hacer.

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

1 me gusta

La validacion puede funcionar si agrego un

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?.

Saludos,

Pues al final no pude solucionarlo jejeje creo q me acercare a la consultoria, muchas gracias a todos por su apoyo.

Saludos.

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.