Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

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.

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 ).

Atalhos para fazer letras grandes e pequenas

images/thumbnail.jpg - Thumbnail
Podes nem sequer saber programar mas se souberes datilografar rápido e conheceres muitos atalhos de teclado vais parecer super profissional. No editor escreve a seguinte palavra: chichisbéu Agora experimenta nos seguintes atalhos: CTRL+U: CHICHISBÉU LETRAS GRANDES! MAIÚSCULAS! CTRL+L: chichisbéu letras minúsculas! minúsculas! CTRL+J: Chichisbéu A Primeira Letra De CaDa PaLaVrA É mAiÚsCuLa! CTRL+K: cHICHISBÉU O gRaNdE fIcOu PeQuEnO e ViCe-VeRsA! Obrigado José Vília pela dica. Obrigado Chris pela foto. O Abapinho saúda-vos.

SE16H - Agrega dados sem precisares do Excel

images/thumbnail.jpg - Thumbnail
No início dos tempos usava-se a transacção SE17 para ver o conteúdo de tabelas. Rapidamente sentiram vergonha e decidiram fazer uma coisa melhorzinha a que chamaram SE16. Depois inventaram a ALV e surgiu a SE16N (e muita gente continuou até hoje a usar a SE16, algo que me ultrapassa). Hoje apresento-vos a SE16H.

CONCATENATE LINES OF itbl

images/thumbnail.jpg - Thumbnail
Se queres serializar um conjunto de strings que tens guardadas numa tabela interna tens duas formas de o fazer. Uma ranhosa e outra cheia de estilo.

Modificar uma campo em todas as linhas de tabela interna

images/thumbnail.jpg - Thumbnail
O que vos vou mostrar não é propriamente uma novidade. Até já foi usado antes no Abapinho. Mas como se continua a ver por aí muita gente a fazer LOOPs a tabelas internas para alterar um campo, achei que valia a pena recordar. Tens uma tabela com um milhão e duzentas mil linhas e queres que o campo ICON tenha sempre o valor &lsquo;@FM@&rsquo;. Em vez de fazeres isto: LOOP AT lt_data ASSIGNING &lt;data&gt;.

O READ TABLE vai desaparecer!

images/thumbnail.jpg - Thumbnail
Pré 7.4: DATA l_idade type i. READ TABLE lt_gente INTO ls_gente WITH KEY nome = l_nome. l_idade = ls_gente-idade. Pós 7.4: data(l_idade) = lt_gente[ nome = l_nome ]-idade. Obrigado Sérgio Fraga pela dica. O Abapinho saúda-vos.

Tanta coisa nova no 7.4 que não sei por onde começar

images/thumbnail.jpg - Thumbnail
O Abapinho vai lentamente começar a dar dicas específicas para o AS ABAP 7.4. Lentamente porque ainda são poucas as pessoas com acesso a esse sistema. Mas são tantas as novidades que dá vontade de começar a fazê-lo rapidamente. O ABAP era um gajo de meia idade com barriga e todo flácido. Fizeram-lhe uma operação plástica e agora parece ter 20 anos e montes de músculos, capaz de ir sair à noite até às 9 da manhã, beber 7 gins tónicos e a seguir, antes de se ir deitar, fazer 100 burpees só para adormecer melhor.

Breakpoint em mensagem a partir do depurador

images/thumbnail.jpg - Thumbnail
Já estás a meio de um debug e queres que a execução pare numa determinada mensagem. O que fazer?

Múltiplas selecções OR na SE16N

images/thumbnail.jpg - Thumbnail
Se tu és daquelas pessoas que ainda usa a SE16, este artigo não é para ti. Se continuares a ler corres o risco de encontrar ainda mais uma razão para finalmente passares a usar a SE16N (como se todas as outras não fossem já suficientes). Imagina que queres seleccionar todos os materiais que tenham “PREGO&quot; no nome e que sejam do tipo FERRAGENS e além disso todos os materiais que tenham “GUARDANAPO&quot; no nome e que sejam do tipo COMIDA. Ou seja, não deverá aparecer o “PREGO_NO_PAO” nem o “GARDANAPO_PAPEL”. O que tu queres é isto (faz de conta): (MATNR = “PREGO%” AND MTART = “FERR” ) OR (MATNR = “GUARDANAPO%” AND MAKT = “COMI” ) Como bem sabes, numa utilização normal (sem recorrer a isto que te vou mostrar) da SE16N terias de a executar duas vezes e cruzar manualmente a informação porque o ecrã de selecção não dá para fazer ORs. Ou dá?

CASE dentro de SELECT (brevemente em todos os SAPs)

images/thumbnail.jpg - Thumbnail
Prepara-te porque em breve terás muitas surpresas. É que o ABAP está a aprender troques novos. Repara neste: CONSTANTS: lc_menina TYPE STRING VALUE ‘MENINA&#39;, lc_menino TYPE STRING VALUE ‘MENINO’, lc_senhor TYPE STRING VALUE ’SENHOR’, lc_senhora TYPE STRING VALUE ‘SENHORA’. SELECT nome, CASE WHEN sexo_id = ‘M&#39; AND idade &lt; 18 THEN @lc_menino WHEN sexo_id = ‘F’ AND idade &lt; 18 THEN @lc_menina WHEN sexo_id = ‘M&#39; AND idade &gt;=18 THEN @lc_senhor WHEN sexo_id = ‘F’ AND idade &gt;=18 THEN @lc_senhora END AS titulo FROM zpessoa WHERE pessoa_id = @pessoa_id INTO CORRESPONDING FIELDS OF @lt_pessoas.

Procura notas directamente no Google Chrome

images/thumbnail.jpg - Thumbnail
O Google Chrome tem uma app para pesquisar notas SAP de forma integrada. Chama-se SAP Notes finder. Instala-se aqui. Obrigado Fernanda Mirabile e Talita Polanczyk pela dica. O Abapinho saúda-vos.