¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo limpiar saltos de línea en definiciones de métodos ABAP sin complicaciones

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 54 Vistas
0
Cargando...
tl;dr : las expresiones regulares son complicadas.
Mi solución a medias: buscar \R y hacer clic en "buscar siguiente" o "reemplazar (con espacio)".

No puedo recordar exactamente (¡ayúdenme en los comentarios!), pero alguien dijo algo así como: "Si tienes un problema, usa expresiones regulares. ¡Entonces tendrás 2 problemas!". ¡Y creo que hay que comenzar los blogs de RegEx con una cita así! (¡No hice las reglas! 😉 )

Así que tengo un problema o vamos a llamarlo un deseo: quiero definiciones de métodos con un buen aspecto, sin saltos de línea innecesarios y sin lastimarme los dedos al editar manualmente.

Afortunadamente, puedo esperar a que SAP proporcione algo para lograr eso en el futuro, pero lo quiero ahora.

Ya cuando escribía mis preguntas, pensé "bueno, las expresiones regulares deberían poder hacer eso, ¿verdad?". Te mostraré hasta dónde llegué, y estaré feliz si juntos podemos ir aún más lejos.

Así que empecemos con un ejemplo de código no limpio:
    METHODS check_for_delivery_reference
      RAISING
        zclewm_cx_input_false.
    METHODS check_is_available_stock_cat
      RAISING
        zclewm_cx_input_false.
    METHODS check_todo_final_storage
      RAISING
        zclewm_cx_input_false.
    METHODS check_for_open_wt.

    METHODS do_something_xy
      IMPORTING
        iv_param TYPE abap_bool.

Ten en cuenta que, esta vez, se trata solo de los saltos de línea: quiero eliminar algunos de ellos.

La lógica es: si hay un salto de línea que no es precedido por un ".", elimina ese salto de línea.
(nota: "eliminar" también se puede escribir como "reemplazar con nada (o con espacio)". )

Entonces, ¿qué necesitamos?

\R -> cualquier carácter de nueva línea.
[] -> una lista de caracteres [abc] significa cualquier carácter que sea a, b o c.
^ -> negación de la lista de caracteres [^abc] significa cualquier carácter que no sea ni a ni b ni c.

Entonces esto es lo que buscamos:
[^.]\R

Un carácter, que no sea un ".", seguido de un salto de línea.

En teoría, esto debería funcionar, pero en realidad, no lo hace realmente, ¡hay algunos problemas!
Intento ser breve, solo mencionando 2 de ellos que entiendo:

1. Coincidirá con lo que dice "un carácter no-"." seguido de un salto de línea" - y la búsqueda de AdT (o Notepad++) lo resaltará y lo hará disponible para reemplazar / reemplazar todo.
Pero en realidad, eso no es lo que quiero: solo quiero reemplazar el salto de línea, NO también el carácter que lo precede.
*de esto: 
    METHODS check_for_delivery_reference
      RAISING
*quiero esto:
    METHODS check_for_delivery_reference RAISING

*no eso (la última 'e' también fue reemplazada)
    METHODS check_for_delivery_referenc RAISING

2. Un salto de línea también es un carácter no ".", por lo que coincidirá con un salto de línea seguido de un salto de línea, sin importar si hay un . delante o no.
(3. no seguro: ¿es [cr][lf] solo uno o dos caracteres de nueva línea? )

Entonces, como a menudo, no es tan fácil.

Lo que terminé haciendo, para ahorrarme al menos el ciclo [clic del mouse+y+arrastrar para resaltar, + espacio para eliminar]: es esto: solo busco el salto de línea \R y luego hago clic para reemplazarlo con espacio o "buscar siguiente".

Conclus
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?