En la siguiente guía veremos cómo operar con cadenas de caracteres (Entendemos por cadena de caracteres los siguientes tipos d, n, c, t y string)
Reemplazar
Para reemplazar un carácter o cadena de caracteres utilizaremos REPLACE.
Buscará el string1 (tardes) con el string2 (noches) en el string 3(Buenas tardes) y el resultado será Buenas noches.
DATA: string1 TYPE string VALUE 'tardes', string2 TYPE string VALUE 'noches', string3 TYPE string VALUE 'Buenas tardes'. REPLACE string1 WITH string2 INTO string3.
Pasar a Mayúsculas/Minúsculas
Para pasar de mayúsculas a minúsculas o viceversa, utilizaremos TRANSALTE, indicando TO UPPER CASE para pasar a mayúsculas o TO LOWER CASE para pasar a minúsculas.
TRANSLATE string1 TO UPPER CASE. TRANSLATE string1 TO LOWER CASE.
Separar
Para dividir una cadena de caracteres utilizaremos SPLIT, podremos indicar el carácter por el que queremos dividir indicándolo después de AT y donde queremos informar el resultado con INTO
Para dividirlo en una tabla utilizaremos INTO TABLE y declararemos una tabla de tipo STRING
SPLIT string1 AT SPACE INTO string2 string3 string4. SPLIT string1 AT '-' INTO string2 string3. DATA table TYPE TABLE OF string. SPLIT string1 AT ':' INTO TABLE table.
Quitar espacios
Para eliminar los espacios de una cadena de caracteres utilizaremos CONDENSE.
CONDENSE string1 NO-GAPS
Concatenar
Para concatenar varias cadenas de caracteres utilizaremos CONCATENATE y utilizaremos SEPARATED BY para indicar el carácter por el que separar cada valor concatenado, esta última parte es opcional.
CONCATENATE string1 string2 string3 INTO string4 SEPARATED BY space.
Longitud
Para calcular la longitud de una cadena de caracteres utilizaremos STRLEN y almacenaremos el resultado en una variable numérica, en este caso la variable int = 4.
DATA: string1 TYPE string VALUE 'Hola' int TYPE i. int = strlen(string1).
Seleccionar una parte
Para elegir una parte de una cadena de caracteres lo haremos de la siguiente manera: VARIABLE+caracteres a pasar(caracteres seleccionados)
En el siguiente ejemplo contaremos los siete primeros caracteres (corresponden a la palabra «Buenas») y seleccionaría los 6 siguientes (corresponden a tardes), el contenido de string2 = ‘tardes’.
DATA: string1 TYPE string VALUE 'Buenas tardes', string2 TYPE string. string2 = string1+6(6).
Desplazar
Para desplazar caracteres utilizaremos SHIFT indicando LEFT para desplazar a la izquierda o RIGHT para desplazar a la derecha seguido el número de espacios a desplazar.
En este caso desplazaremos a la izquierda 4 espacios y a la derecha 1 espacio.
SHIFT string1 LEFT BY 4 PLACES. SHIFT string1 RIGHT by 1 PLACES.
Comparar
Para compara utilizaremos las siguientes instrucciones:
- CO (Contains Only) Busca todos los caracteres de string1 en string2
- CN (Contains Not Only) Comprueba que no esté ningún carácter de string1 en string2
- CA (Contains Any) Busca si existe al menos un carácter de string2 está en string1
- NA (Contains Not Any) Busca si no existe al menos un carácter de string2 está en string1
- CS (Contains String) Comprueba que el conjunto de caracteres de string1 existe en el mismo formato en string2
- NS (Contains No String) Comprueba que el conjunto de caracteres de string1 no existe en string2 en el mismo formato
- CP (Suits Pattern) Comprueba si string2 está en string1, de ser así la variable SY-FDPOS guarda laposición de string2 dentro de string1
- NP (Does Not Suit Pattern) Comprueba si string2 no está en string1
string1 CO string2. string1 CN string2. string1 CA string2. string1 NA string2. string1 CS string2. string1 NS string2. string1 CP string2. string1 NP string2.
Buscar
Para buscar un patrón de caracteres en una variable utilizaremos SEARCH, en este ejemplo buscara string1 (dias) en string2 (Buenos dias) y si lo encuentra la variable SY-SUBRC contendrá la posición en la que empieza string1 en string2.
DATA: string1 TYPE string VALUE 'dias', string2 TYPE string VALUE 'Buenos dias'. SEARCH string2 FOR string1.
Para ver más tutoriales de SAP, pulse en el siguiente enlace: Listado de tutoriales
muy util la verdad me ha sacado muchas tu post