✒️ABAP / El procesamiento de los datos Por Mauro Repetto
ABAP El procesamiento de los datos

En ABAP, el procesamiento de cadenas de texto (tipo STRING o CHAR) es uno de los temas más habituales en la programación del día a día, especialmente al formatear datos para reportes, validar entradas de usuario o transformar archivos.
Actualmente coexistimos con dos enfoques: la sintaxis clásica (ampliamente presente en códigos legacy) y la sintaxis moderna con expresiones de caracteres (introducida a partir de ABAP 7.40+), la cual es más limpia y expresiva.
A continuación, muestro las operaciones fundamentales con cadenas, con ejemplos prácticos en ambas variantes cuando aplica:
1. Concatenación de CadenasUne dos o más variables de texto en una sola.
â— Clásico (CONCATENATE):
ABAP
DATA: lv_nombre TYPE string VALUE 'Juan',
lv_apellido TYPE string VALUE 'Pérez',
lv_resultado TYPE string.
" SEPARATED BY agrega un espacio u otro delimitador
CONCATENATE lv_nombre lv_apellido INTO lv_resultado SEPARATED BY space.
" Resultado: 'Juan Pérez'
â— Moderno (String Templates con |):
ABAP
DATA(lv_nombre) = 'Juan'.
DATA(lv_apellido) = 'Pérez'.
" Sintaxis mucho más directa y legible
DATA(lv_resultado) = |{ lv_nombre } { lv_apellido }|.
Extrae una sección específica de un texto según la posición inicial (offset) y la longitud.
â— Clásico (Offsets implícitos):
ABAP
DATA: lv_texto TYPE string VALUE 'SAP-ABAP-2026',
lv_sub TYPE string.
" Offset 4, longitud 4
lv_sub = lv_texto+4(4). " Resultado: 'ABAP'
â— Moderno (Funciones integradas):
ABAP
DATA(lv_texto) = 'SAP-ABAP-2026'.
" Usando substring
DATA(lv_sub) = substring( val = lv_texto off = 4 len = 4 ). " Resultado: 'ABAP'
Encuentra la posición de una palabra o patrón dentro de un texto.
â— Clásico (FIND):
ABAP
DATA: lv_pos TYPE i.
FIND 'ABAP' IN 'Curso de SAP ABAP' MATCH OFFSET lv_pos.
" lv_pos contendrá 13 (indexación base 0)
â— Moderno (find):
ABAP
DATA(lv_pos) = find( val = 'Curso de SAP ABAP' sub = 'ABAP' ).
Sustituye apariciones de una cadena por otra.
â— Clásico (REPLACE):
ABAP
DATA: lv_texto TYPE string VALUE 'Hola Mundo'.
REPLACE ALL OCCURRENCES OF 'Mundo' IN lv_texto WITH 'ABAP'.
" lv_texto pasa a ser 'Hola ABAP'
â— Moderno (replace):
ABAP
DATA(lv_texto) = replace( val = 'Hola Mundo' sub = 'Mundo' with = 'ABAP' occ = 0 ).
" occ = 0 indica reemplazar todas las apariciones
Divide un texto largo en una tabla interna utilizando un delimitador.
ABAP
DATA: lv_lista TYPE string VALUE 'Manzana,Pera,Uva',
lt_frutas TYPE TABLE OF string.
SPLIT lv_lista AT ',' INTO TABLE lt_frutas.
" lt_frutas contendrá 3 filas
Modifica el caso de las letras del texto.
â— Clásico (TRANSLATE):
ABAP
DATA: lv_texto TYPE string VALUE 'Texto De Prueba'.
TRANSLATE lv_texto TO UPPER CASE. " 'TEXTO DE PRUEBA'
TRANSLATE lv_texto TO LOWER CASE. " 'texto de prueba'
â— Moderno (to_upper / to_lower):
ABAP
DATA(lv_mayus) = to_upper( 'Texto De Prueba' ).
DATA(lv_minus) = to_lower( 'Texto De Prueba' ).
Remueve espacios innecesarios al inicio, al final o reduce espacios duplicados en medio.
â— Clásico (CONDENSE):
ABAP
DATA: lv_texto TYPE string VALUE ' SAP ABAP '.
CONDENSE lv_texto. " Deja 'SAP ABAP' (elimina extremos y comprime internos)
CONDENSE lv_texto NO-GAPS. " Deja 'SAPABAP' (elimina absolutamente todos)
â— Moderno (condense / condense con from):
ABAP
DATA(lv_limpio) = condense( val = ' SAP ABAP ' ).
Calcula la cantidad de caracteres que conforman el texto.
â— Clásico (STRLEN):
ABAP
DATA: lv_longitud TYPE i.
lv_longitud = strlen( 'ABAP' ). " Devuelve 4
â— Moderno (strlen / numofchar):
ABAP
DATA(lv_len) = strlen( 'ABAP' ).
Mueve los caracteres a la izquierda o a la derecha, recortando o rellenando.
ABAP
DATA: lv_codigo TYPE string VALUE '0000123456'.
" Elimina ceros a la izquierda
SHIFT lv_codigo LEFT DELETING LEADING '0'. " Resultado: '123456'
Para validaciones complejas (ej. validar correos electrónicos o formatos de código) tanto FIND, REPLACE como las funciones de string modernas permiten el uso de expresiones regulares usando el parámetro REGEX.
ABAP
" Validar si un texto contiene solo números
IF matches( val = '12345' regex = '^d+$' ).
" El formato es correcto
ENDIF.
â— Prioriza la sintaxis moderna (ABAP 7.40+): Es más fácil de leer, soporta concatenación dinámica directamente en llamadas a métodos o consultas SELECT, y evita declarar múltiples variables temporales.
â— Cuidado con tipos CHAR fijados: Si usas tipos CHAR de longitud fija (ej. c LENGTH 10), los espacios en blanco al final cuentan dentro del tamaño a menos que uses STRING o apliques funciones de condensación.
 
 
 
Sobre el autor
Publicación académica de Mauro Repetto, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Mauro Repetto
Profesión: Pm It - Uruguay - Legajo: AZ19X
✒️Autor de: 6 Publicaciones Académicas
🎓Cursando Actualmente: Carrera Consultor ABAP Nivel Inicial
Certificación Académica de Mauro Repetto






Disponibilidad Laboral: FullTime


















