Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

RANGE instantâneo - É só juntar água

images/thumbnail.jpg - Thumbnail

Vou ensinar-te uma fórmula mágica para gerar um RANGE em que praticamente é só juntar água. Imagina que queres fazer um RANGE a partir de uma seleção da base de dados para depois o utilizar num outro SELECT qualquer. Claro que o poderias fazer assim: DATA: lt_kunnr TYPE STANDARD TABLE OF kunnr, lr_kunnr TYPE RANGE OF kunnr, wa_kunnr LIKE LINE OF lr_kunnr. FIELD-SYMBOLS: <kunnr> LIKE LINE OF lt_kunnr. SELECT kunnr INTO TABLE lt_kunnr FROM kna1.

Soneca

images/thumbnail.jpg - Thumbnail

Volta não volta é preciso meter um programa a dormir. E como em quase tudo, há várias formas de o fazer, e umas formas são melhores do que outras. A forma mais standard de conseguir isto em ABAP é a seguinte: WAIT UP TO 10 SECONDS. A vantagem do WAIT UP TO N SECONDS é que o processo é libertado durante estes 10 segundos, ficando assim disponível para quem o quiser apanhar.

Várias versões da mesma história

images/thumbnail.jpg - Thumbnail

Toda a gente sabe que as versões do SAP são uma grande confusão. Os senhores de Heidelberg que brincam a dar os nomes às coisas lá deles ou são uns caprichosos, ou andam a gozar connosco, ou devem andar sempre à bulha. Aqui fica uma tabelinha para ajudar a deslindá-las: Ano | UI | Edição | Versão | Versinha | BASIS | WebAS | ECC | NetWeaver —|—|—|—|—|—|—|—|— | Terminal

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.

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.