Patrocinado por
Patrocinado por Inetum

Programa a programação dos programas

images/thumbnail.jpg - Thumbnail

Uma das coisas que distingue o homem dos restantes animais é o facto de ser capaz de pensar o pensamento. Um pardal pode pensar estou assustado, vou dizer piu piu piu e, como consequência, quem estiver ao pé dele ouve piu piu piu.

Utilizar a lista de utilizações programaticamente

images/thumbnail.jpg - Thumbnail

A ferramenta “lista de utilizações” é uma das mais queridas de um programador ABAP. Através dela conseguimos saber onde é que um objecto é utilizado. Parece pouco mas sabemos que é muito.

A classe CL_GUI_FRONTEND_SERVICES

images/thumbnail.jpg - Thumbnail

A classe CL_GUI_FRONTEND_SERVICES é frequentemente usada para fazer upload e download de ficheiros de e para o computador local. Mas ela consegue fazer muitos mais coisas boas. Por exemplo:

O SAP sabe tirar <i>selfies</i>!

images/thumbnail.jpg - Thumbnail

Acabei de descobrir que o SAP consegue tirar selfies. Ainda não estou a ver para que é que isto possa servir. Mas não é grave porque na verdade também nunca vi para que é que servem as selfies tiradas por nós os humanos. Faz-se assim:

Nunca te lembras do código ASCII do CR_LF e seus amigos?

images/thumbnail.jpg - Thumbnail

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.

SELECT de um conjunto de valores conhecidos

images/thumbnail.jpg - Thumbnail

Pedem-te para seleccionares registos cujo critério é um conjunto de meia dúzia de códigos que são conhecidos e nunca vão mudar. Sabias que podes fazer tudo logo no SELECT?

Podes gravar variantes na SE16N

images/thumbnail.jpg - Thumbnail

E pronto, está dada a dica. Esteve sempre debaixo do teu nariz mas provavelmente nunca pensaste nisso: é possível gravar variantes na SE16N. E até podem ser específicas por utilizador. Algo tão práctico e no entanto tão pouco conhecido. Obrigado Sérgio Fraga pela dica. Obrigado Cloudtail pela foto. O Abapinho saúda-vos.

Limitar execução em background ou foreground

images/thumbnail.jpg - Thumbnail

Desenvolveste um report que sabes que demora 12 horas a correr. Por isso não queres que ninguém tente corrê-lo em foreground. Vou mostrar-te uma forma de garantires que isso não acontece.

Como sabotar textos standard

images/thumbnail.jpg - Thumbnail

Às vezes não gosto dos nomes que a SAP deu às coisas. E então mudo-os. Por exemplo, um dia estava muito zangado e achava que os clientes eram todos uns parasitas. Então fiz o seguinte:

Formata as variáveis ao concatenar strings com <i>pipes</i>

images/thumbnail.jpg - Thumbnail

A nova moda em strings é usar pipes. Tipo: str = |Olá { sy-uname }, | &amp; |a data de hoje é { sy-datum }.|. Além de ter pinta é muito mais práctico do que usar o CONCATENATE que é horrível. Mas o que eu só descobri recentemente é que é possível aplicar formatação às variáveis:

O GUI está disponível?

images/thumbnail.jpg - Thumbnail

Para verificar se um programa está em background é costume espreitar a variável de sistema SY-BATCH. A SY-BINPT também pode ser usada para verificar se o que está a correr em background é uma sessão de BDC. Normalmente usa-se uma destas duas. Mas há uma pergunta parecida e no entanto diferente. Como fazes para saber se o GUI está disponível? É certo que na maior parte dos casos o resultado é semelhante, mas não o será em todos. É como dizer que de dia há o sol e de noite há a lua. Se o ceu estiver nublado não há nem sol de dia nem lua de noite.

Como evitar <i>timeout</i> ao correr um programa

images/thumbnail.jpg - Thumbnail

Normalmente os sistemas SAP têm definido um tempo limite para que um programa possa correr interactivamente. Se o programa demorar mais ocorre um erro de execução (vulgo dump ).

Eu te baptizo em nome do ABAP

images/thumbnail.jpg - Thumbnail

Quando aprendemos ABAP ensinam-nos uma série de regras sobre como dar nomes a variáveis. Ainda que nem todos acabem por dar nomes iguais, ainda assim partilham-se algumas ideias rígidas: As variáveis locais começam por L: L_BUKRS; As variáveis globais começam por G: G_MODE; As tabelas internas têm de ter lá um T_: LT_MARA; As estruturas têm de ter lá um S_: LS_MARA; As referências para objectos começam por R_: R_CUSTOMER; Os parâmetros input devem começar por I, os output por O, os changing por C e os returning por R. E a mais estúpida de todas, os field-symbols devem começar por FS_: &lt;FS_MARA&gt;. No início do século XXI isto até fazia sentido (excepto a dos field-symbols que já na altura era tão estúpida como escrever a palavra &ldquo;lápis&rdquo; em todos os lápis que tivermos). Hoje quase já não. Passo a explicar.

Abapinho Dev Tools: Translator

images/thumbnail.jpg - Thumbnail

O Nuno Morais desenvolveu uma ferramenta muito útil que auxilia na tradução em massa da maioria dos objectos SAP. A ferramenta não faz tradução automática entre línguas. Antes, permite: Exportar um ficheiro Excel com textos Importar um ficheiro Excel com textos Copiar textos de uma língua para uma ou mais línguas de destino Criar uma ordem de transporte com as alterações Encontrar dependências de objectos a que faltem traduções

Abapinho Dev Tools: Dependencies

images/thumbnail.jpg - Thumbnail

O Nuno Morais desenvolveu uma ferramenta muito útil que permite comparar objectos entre sistemas e que funciona muito melhor do que a transacção SREPO. O Abapinho passa a ser o seu repositório oficial. Código no GitHub. Em breve, instruções. Até lá vai experimentando, é intuitivo. E se gostares ou tiveres sugestões deixa aqui um comentário. Obrigado Nuno por teres desenvolvido isto e por o partilhares com o mundo no Abapinho.