"
Etiqueta > ui
Apoiado por

Campos chave de estrutura DDIC

Hoje em dia quando quero criar uma SALV defino sempre a estrutura dos dados no DDIC já com os elementos de dados com as descrições desejadas em vez de os forçar no código.

Ler o resto do artigo! »

Teclado automático

Todos os programadores conhecem a relação íntima que há entre batch-inputs e pisa-papéis, agrafadores e outros objectos pesados do tipo. São ajudantes preciosíssimos que evitam passarmos por vezes 8 horas a empurrar uma tecla chamada ENTER com um dedo.

Ainda que esse tipo de objectos tenha algum encanto, por vezes a lei da gravidade – a mesma que os torna úteis – fá-los cair para o lado e pararem assim de pressionar a tal tecla chamada ENTER.

Ler o resto do artigo! »

QUICKINFO: dica sobre como dar dicas

Esta dica vem, no meu entender, uns anos tarde demais, visto ser já raro usar o comando WRITE para escrever directamente coisas para o ecrã. É, portanto, digamos assim, uma dica retro. Uma dica vintage. Mas vamos supor que estamos ainda no século XX a debater-nos com o comando mais barroco do ABAP, o WRITE.

Imagina-te então, sentado à frente do SAP, a ouvir Pearl Jam, com uns auscultadores de cor preta, e a escrever WRITEs de uma série de valores no ecrã sobre os quais gostavas que o utilizador pudesse ter mais informação. Mas não tens espaço no ecrã para lhe dar essa informação. A SAP pensou nisso:


WRITE: sy-datum QUICKINFO 'Data de hoje' .

Quando corres o programa parece que não faz diferença nenhuma, mas quando paras o rato em cima do valor, aparece um quadradinho com o texto auxiliar. Muito à semelhança das tooltips em HTML:

quickinfo

Também podes usar isto para deixar mensagens secretas aos utilizadores. Ou para fazer caças ao tesouro.

Era bom ter sabido disto nos tempos em que dava jeito.

Obrigado See-ming Lee pela foto.

O Abapinho saúda-vos.

Alucinação às cores

Isto não é um artigo. Isto quase nem é uma dica. Isto aproxima-se mais de um desabafo em tom de arco-iris.

Ler o resto do artigo! »

Ninguém liga ao LISTBOX

Por alguma razão misteriosa, a LISTBOX é uma funcionalidade pouco utilizada nos ecrãs de selecção do SAP. E, no entanto, na web está por todo o lado. Vá-se lá saber porquê.

Caro leitor, proponho que atentes nas suas vantagens:

Ler o resto do artigo! »

Olha pai, agora sem mãos

Neste artigo vou mostrar-te (e explicar-te!) como podes fazer com que um ecrã de selecção de um programa se refresque periodicamente sem intervenção do utilizador.

Estás preparado?

Ler o resto do artigo! »

Pesquisar em menus

Sabias que podes pesquisar nos menus SAP? Provavelmente sim. Mas olha, eu não. Passei anos a perscrutar o menu S000 em busca das mais variadas coisas. Estou certo de que se tivesse feito uma pesquisa teria encontrado muitas delas num instante. Às vezes uma pessoa não se lembra do óbvio. Se és essa pessoa, esta dica é para ti.

Obrigado Sérgio Fraga pela dica.

O Abapinho saúda-vos.

Atender o cliente ou aviar o freguês?

Em todo o lado onde se use o elemento de dados KUNNR, a sua descrição diz “Cliente”. E se quiseres mudar a descrição deste campo de “Cliente” para “Freguês”? “Freguês” é tão mais bonito! Ou imagina que a empresa para quem trabalhas trafica droga e te diz que gostava que no LIFNR aparecesse “Dealer” em vez de “Fornecedor”. Claro que nos ecrãs e relatórios Z podemos descrevê-lo como quisermos mas… e nas transacções standard?

Fazes isto: vai à transacção CMOD e escolhes o menu “Ir para > Ampliações Globais > Palavras-chave > Modificar”. Depois introduzes o elemento de dados cuja descrição pretendes alterar. Aparece-te então uma caixa de diálogo na qual podes redefinir todas as descrições desse elemento de dados. A seguir gravas e já está. A partir de agora, em todo o lugar onde este elemento de dados é usado aparece a tua nova descrição. Poderoso!

Ah, e na opção de menu mesmo ao lado (aquele que diz “exibir”) podes ver a lista de elementos de dados que foram já alterados nesse sistema.

Simples? Pois, mas tem calma, não te ponhas a chamar “coisa” ao MATNR nem “amiguinho” ao UNAME e por aí adiante. O SAP é uma coisa séria.

Obrigado ao Miguel Freitas pela dica.

(E obrigado a David Rodrigues pela foto).

O Abapinho saúda-vos.

Mete botões no ecrã de selecção

Quando num relatório é preciso criar botões para os utilizadores carregarem, normalmente recorre-se ao Screen Painter para criar um ecrã que depois é invocado pelo report com CALL SCREEN. Mas, a não ser que o ecrã a desenhar tenha já alguma complexidade, não é preciso apanhar a valente seca de fazer um ecrã que depois fica para lá. Ecrãs sempre me irritaram.

Mostro aquí um exemplo de utilização de botões num normalíssimo ecrã de selecção recorrendo a um botão chamado PUSHBUTTON e a um truque muito esperto chamado ONLI.

Ler o resto do artigo! »

Atafulha o ecrã de selecção de bonecada

Foi o SAP que nasceu tristonho ou são os SAPeiros que não o alegram?

É verdade que o SAPGui não é nenhum arco-íris nem inspira felicidade ao olhar para ele. Mas ainda assim põe uma catrefada de bonequinhos ao nosso dispôr que podemos usar para o tornar nem que seja um pouquinho mais animado.

E vê como é tão fácil.

Ler o resto do artigo! »

Se um desconhecido te oferecer valores, isso é Input

Interrogação

Num relatório, os valores são normalmente pedidos ao utilizador no ecrã de selecção inicial, antes da execução do programa. Mas e se quiseres pedir-lhe mais alguns valores, interactivamente, a meio da execução do programa?

Uma forma de o fazer é criar um ecrã com os campos desejados e depois invocá-lo com CALL SCREEN. Mas desenhar o ecrã e definir o PAI e o PBO é uma valente maçada.

Outra solução é recorrer às funções POPUP_GET_VALUES ou POPUP_GET_VALUES_DB_CHECKED. São bastante versáteis mas ainda assim algo chatas de utilizar e com algumas limitações.

Mas há uma forma mais simples de o fazer. É através do CALL SELECTION-SCREEN. Passo a explicar:

Primeiro há que definir o ecrã de selecção. A sua definição é praticamente igual à do ecrã de selecção inicial de um relatório:


TABLES: t001.

SELECTION-SCREEN BEGIN OF SCREEN 3000.
PARAMETERS: p_uname TYPE syuname.
SELECT-OPTIONS: p_bukrs FOR t001-bukrs.
SELECTION-SCREEN END OF SCREEN 3000.

Depois, onde quer que te apeteça invocar o ecrã é só… invocares o ecrã:


START-OF-SELECTION.

* faz não sei quê antes

  CALL SELECTION-SCREEN 3000 STARTING AT 5 5.

* e mais não sei quê depois

E dá nisto:

CALL SELECTION-SCREEN

Se meteres o STARTING AT ele vai criar uma janela de diálogo modal. Se não meteres nada, o ecrã ocupará a janela toda. O ecrã de selecção pode ser tão complicado quanto quiseres, podendo incluir abas e tudo o mais. Além disso, porque para o SAP ele não passa de um ecrã de selecção como os outros, poderás gravar variantes e tudo.

Nota que esta abordagem pode também ser usada em transacções, sendo a única desvantagem o facto de exigir F8 em vez de ENTER para submeter os valores.

Obrigado a cristinacosta pela foto.

O Abapinho saúda-vos.
Ler o resto do artigo! »

Ecrãs de selecção com abas

Os ecrãs de selecção dos programas ABAP têm várias funcionalidades que, embora sofisticadas e simples de usar, são geralmente ignoradas. Aqui mostrar-te-ei quão simples é criar abas para melhor organizar os parâmetros de um programa. Desta vez, excepcionalmente, vou poupar-te à verborreia. É uma aula prática.
Ler o resto do artigo! »

ALV com múltipla escolha num ecrã de diálogo modal

Sabes apresentar, numa janela de diálogo, uma ALV com uma lista de registos permitindo escolha múltipla? Eu não sabia e agora já sei. Vou explicar como é.
Ler o resto do artigo! »

Indicador de progresso

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 '%!' INTO lv_texto.
  CONCATENATE 'Já só falta' lv_texto INTO lv_texto SEPARATED BY space.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = lv_valor
      text       = lv_texto.

ENDDO.

Nota que o cronómetro vai ficando preenchido. Infelizmente o comando WAIT UP TO N SECONDS está limitado a inteiros e por isso não sei como se pode fazer uma contagem mais rápida. Mas já é melhor que nada.

E atenção ao comando WAIT porque faz um COMMIT à base de dados.

O Abapinho saúda-vos.

Como encavalitar tabelas

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

Ler o resto do artigo! »


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).