Índices secundários em tabelas internas
Durante anos as tabelas internas eram declaradas assim: DATA: itbl TYPE TABLE OF bkpf.
Durante anos as tabelas internas eram declaradas assim: DATA: itbl TYPE TABLE OF bkpf.
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.
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 é 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:
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:
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.
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?
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.
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.
À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:
A nova moda em strings é usar pipes. Tipo: str = |Olá { sy-uname }, | & |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:
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.
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 ).
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_: <FS_MARA>. 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 “lápis” em todos os lápis que tivermos). Hoje quase já não. Passo a explicar.
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