Patrocinado por
Patrocinado por Inetum

Macros globais

images/thumbnail.jpg - Thumbnail

Noutro artigo falámos de macros, uma funcionalidade relativamente obscura e pouco utilizada que tanto pode ser útil como criar uma grande salganhada. Mas estas não são as únicas macros do ABAP. Há outras, ainda mais obscuras e com ainda maior potencial de enfarelhamento de um sistema: as macros globais. Nem sei se revele isto de tão esquisito que é… Mas também não me parece bem escondê-lo… Seja, revelarei. É possível definir macros a nível global do sistema que podem ser utilizadas em qualquer programa ABAP.

Começar com o pé direito

images/thumbnail.jpg - Thumbnail

Quando se faz login no SAP normalmente vai parar-se ao menu. Mas pode usar-se o módulo de função NAVIGATION_SET_START_TCODE para pré-definir uma transacção inicial. Vale o que vale, mas é melhor saber que existe do que não saber que existe e ainda melhor do que sabe que não existe. Quem sabe dê jeito a alguns utilizadores. Existe também o módulo de função NAVIGATION_GET_START_TCODE para ver qual está pré-definida. O Abapinho saúda-vos.

Nem o Luís de Matos faria melhor

images/thumbnail.jpg - Thumbnail

Às vezes acontece querermos aceder a uma transacção e não termos permissões. É uma chatice. Felizmente existe o módulo de função ALINK_CALL_TRANSACTION que alivia a situação. Mas usa com cuidado, não vá alguém zangar-se. Bem-vindo ao lado negro do Abapinho. Se disserem que fui eu que disse, nego tudo. (obrigado aoBohman pela foto) Actualização: com este módulo de função também lá chegas: CALL_TRANSACTION_FROM_TABLE. Nova actualização: se os outros falharem tenta este módulo de função: RS_HDSYS_CALL_TC_VARIANT (limpando a flag AUTHORITY_CHECK).

Bate às portas certas

images/thumbnail.jpg - Thumbnail

Para tua conveniência, aqui tens as portas TCP/IP utilizadas pelo NetWeaver Application Server ABAP e pelo Internet Connection Manager (ICM) :

ABAP Ninja

images/thumbnail.jpg - Thumbnail

Uma das grandes novidades do ERP 6.0 é a Enhancement Framework que é uma espécie de “amigo do senhorio” que permite dar marteladas em todas as paredes do SAP sem escavacar a pintura. Infelizmente ainda há muito pouca documentação sobre isto e é sempre o cabo dos trabalhos para encontrar o Enhancement Point adequado à martelada desejada. O site ABAP Ninja tenta ajudar. É um motor de pesquisa de Enhancements. Dizem que têm mais de 13.

Santo Isidoro de Sevilha

images/thumbnail.jpg - Thumbnail

Não sabes a quem rogar as tuas preces nos momentos de desespero? Já podes ficar descansado. Os programadores têm um santo. Santo Isidoro de Sevilha. Um senhor muito culto e inteligente que respirou o ar espanhol dos séculos VI e VII que, como diz a Wikipédia, “escreveu sobre matemática, astronomia, medicina, anatomia humana, zoologia, geografia, meteorologia, geologia, mineralogia, botânica e agricultura, não acrescentando nada de inovador ou original, não realizou qualquer experiência, não fez novas observações ou reinterpretações e não descobriu nada, mas a influência na Idade média e no Renascimento foi grande”.

LOOP FROM INDEX

images/thumbnail.jpg - Thumbnail

É muito fácil meter os pés pelas mãos no que toca a performance quando se manipula tabelas internas. Principalmente quando elas são assim a tender para o grandalhonas. É até comum que estes problemas só surjam passados uns meses, quando as tabelas tendem a crescer com o tempo. Por exemplo, quando fazes loop a duas tabelas, uma de cabeçalhos e outra de itens, fazes assim? LOOP AT itab1 ASSIGNING <fs1>. LOOP AT itab2 ASSGNING <fs2> WHERE field1 = <fs1>-field1.

Indicador de progresso

images/thumbnail.jpg - Thumbnail

Sabes aquelas barras de progresso que vão indicando quanto falta para terminar um processo? Aquelas que às vezes quando chegam ao fim voltam ao princípio e te deixam frustrado e baralhado sem entender para que servem afinal? Eis como as podes usar num programa ABAP. DATA: lv_texto TYPE char40, lv_valor type i. DO 10 TIMES. WAIT UP TO 1 SECONDS. CLEAR lv_texto. lv_valor = sy-index * 10. lv_texto(3) = lv_valor. CONCATENATE lv_texto '%!

Executa um comando no teu computador

images/thumbnail.jpg - Thumbnail

Imagina que queres executar um programa no teu PC a partir de um programa ABAP. Não sei porque carga de água quererás tu fazer isto mas ok, se queres mesmo fazer, é assim: DATA: i_returncode TYPE i. CALL FUNCTION 'GUI_EXEC' EXPORTING command = 'Notepad.exe' parameter = 'eu_sou_um_texto.txt' IMPORTING returncode = i_returncode. É provável que dê para fazer coisas boas com isto. Mas está à vista a grande javardice que se pode fazer por isso pensa bem antes de começares para aí a escangalhar os computadores dos utilizadores todos.

SAT - A nova ferramenta de análise de execução

images/thumbnail.jpg - Thumbnail

Desde pequenino que uso a transacção SE30 para duas coisas diferentes: Analisar um programa que desconheço (normalmente standard) para saber que funções usa, que BADIs disponibiliza, etc; Analisar um programa meu em busca de problemas de performance. A verdade, nua e crua, é que a transacção SE30 é uma porcaria pegada. Extremamente limitada e inflexível, não dá jeito nenhum para qualquer análise mais complexa.

Como encavalitar tabelas

images/thumbnail.jpg - Thumbnail

Às vezes temos de criar uma tabela Z. Às vezes temos até de criar várias tabelas Z. Às vezes estas tabelas estão relacionadas de alguma forma. Como quando uma contém dados de cabeçalho e a outra dados de item, por exemplo. Ora se estão relacionadas pode dar jeito que sejam editadas em conjunto. É para isso que servem os Clusters de Visão (view cluster).

As estruturas PRE-a-porter

images/thumbnail.jpg - Thumbnail

Quantas vezes não é necessária uma pequena estrutura para guardar, por exemplo, uma lista que relacione materiais e centros. Mas perder tempo a inventar a roda é sempre de evitar. No reino do MM há uma pequena família de estruturas que uso amiúde: são elas as PRE*, uma série de estruturas que vai desde a PRE01 à PRE50, com uns saltos pelo meio. Embora sejam, na sua maioria, específicas demais para servirem algum propósito, há algumas úteis.

A Ressurreição de um programa

images/thumbnail.jpg - Thumbnail

Batendo impetuoso com seus braços no peito, o famoso guerreiro gritava desesperado: “Oh meu Zeus! Apaguei um grande programa , um programa precioso, feito de bronze, forjado por vós deuses no próprio Olimpo. Que será de mim quando isto for descoberto! Oh, ignomínia! Oh, funesto infortúnio! Zeus pai, não te enfureças com tal revés, Se és mesmo meu pai, acode-me ao invés.” Assim falou; e Zeus compadeceu-se dele que chorava, garantindo que seu programa se salvaria e não pereceria.

Imprimir para PDF local

images/thumbnail.jpg - Thumbnail

Receita rápida: Manda-se imprimir o que se quer, dizendo ao SAP para guardar a ordem de impressão no spool e não a imprimir imediatamente. Reserva-se o número da ordem de impressão num recipiente à parte. A seguir, corre-se o programa RSTXPDFT4 , junta-se-lhe o número da ordem de impressão, mistura-se bem e executa-se o dito. Por fim escolhe-se onde, no computador local, se quer desenformar o ficheiro PDF com o conteúdo da ordem de impressão.

Depuração telepática

images/thumbnail.jpg - Thumbnail

Imagine o seguinte cenário: um utilizador (ou utilizadora) está sentado no escritório dele, a correr uma transacção ou não sei o quê. Tem um problema e chama um programador (ou programadora) para o (ou a) ajudar a entender o que se passa. Normalmente o programador (ou programadora) teria de se deslocar lá, à sala do senhor utilizador (ou senhora utilizadora) e das duas uma: fazer debug no computador dele (ou dela) ou aprender como recriar o problema e depois fazer debug no seu computador.