Nunca te lembras do código ASCII do CR_LF e seus amigos?
2015-12-21

Eu também não.
Nem quero lembrar-me. Para quê gastar memória com códigos obtusos?
E não é preciso porque o ABAP tem uma classe que ajuda.
Chama-se CL_ABAP_CHAR_UTILITIES. Tem uns métodos para converter de ENDIAN para número e vice-versa e tal, mas não é por isso que estou a falar dela. Trago-a à baila por causa das constantes que nela estão definidas:
- HORIZONTAL_TAB
- VERTICAL_TAB
- NEWLINE
- CR_LF
- FORM_FEED
- BACKSPACE
- e mais umas
Quando precisares de um CR_LF em vez de ires à procura do seu código ASCII só tens de usar CL_ABAP_CHAR_UTILITIES=>CR_LF e aí o tens.
Obrigado Sérgio Serra pela dica.
O Abapinho saúda-vos.
5 de janeiro de 2016 às 17:23
Olá Nuno,
Há outra razão para usar essa classe. Esses atributos estão definidos com um valor inicial %_ (ex: %_HORIZONTAL_TAB). Este valor muda de acordo com o tipo de encoding da instância do servidor aplicacional (big endian, little endian).
Há algum tempo atrás estive envolvido num projecto de conversão de HP-UX (big endian) para Linux/Intel (little endian) e vários programas tiveram que ser actualizados porque os valores hexadecimais não coincidiam. No caso do “Horizontal Tab” o valor hexadecimal para HP-UX era ‘0009’ enquanto para Linux era ‘0900’.
O problema seria ainda mais complicado durante a fase de arranque em que tivemos os dois sistemas a funcionar em paralelo durante 3 meses em 8 servidores aplicacionais distintos.
Utilizando essa classe, temos a garantia que o valor utilizado será sempre o correcto, independentemente do utilizador se ligar a uma instância HP-UX ou Linux.
Um abraço,
Rui
6 de janeiro de 2016 às 15:52
Olá Rui,
Interessante esse cenário. Obrigado pela partilha.
Abraço,
Nuno