• Nenhum resultado encontrado

AT USER-COMMAND.

No documento Academia ABAP.doc (páginas 55-62)

Somente é executado se o usuário der um click em algum objeto do menu, utilizado para listas com botões de interação.

6- Modularização Processo Geral de Programação

Nome e Descrição do Programa Declaração de Variáveis Montagem da Tela de Input Montagem e Impressão do Relatório ou outra lógica

7- Report/Listas Criação de Listas Básicas

Criando uma lista simples

A sintaxe básica do comando é a seguinte:

WRITE [:] [/] [<campo>|<literal>] [, <campo>|<literal>] [, ...] [opções]. A sintaxe completa do comando pode ser encontrada no Help do R/3. Existem opções para alterar a cor dos elementos da tela, criação de molduras e inserção de ícones na lista. Observe o código a seguir:

REPORT ZSELECT00 . TABLES: SPFLI, SFLIGHT. SELECT * FROM SPFLI.

WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-AIRPFROM, SPFLI-CITYTO, SPFLI-AIRPTO. ENDSELECT.

7- Report/Listas

Com esse trecho de código apenas, o R/3 gera uma lista simples do conteúdo de alguns campos da tabela SPFLI:

Cabeçalhos e rodapés

Existem alguns comandos e opções que permitem melhorar o aspecto e a funcionalidade de uma lista. No exemplo, a lista ainda não tem cabeçalho. Para criá-los, pode-se editar diretamente o cabeçalho usando a opção Saltar  Elementos de Texto  Títulos de Lista. Nesse caso, deve-se saber previamente em que posição deve ficar o texto no cabeçalho. Por outro lado, utilizando-se a opção Sistema  Lista  Título da Lista é possível editar o título no momento da exibição da lista, facilitando muito o posicionamento dos textos. Também é possível suprimir a geração do título básico, substituindo-o por um título composto pelo programa ABAP. Para tanto, deve-se colocar na declaração REPORT do início do programa a opção NO STANDARD PAGE HEADING e implementar no programa o evento TOP-OF-PAGE. Caso também queira um rodapé para cada página, use o evento END-OF-PAGE para escrevê-lo.

7- Report/Listas Mudando a apresentação dos campos

Para melhorar a apresentação da lista, podemos modificar a forma como os campos são exibidos. Por exemplo, podemos mudar a cor com a opção COLOR do comando WRITE; podemos mudar a intensidade da cor com a opção INTENSIFIED {ON|OFF}, transformar o campo num HOTSPOT para uso em listas com drill-down, e mudar o posicionamento dos campos com WRITE AT. A opção COLOR admite qualquer uma das cores padrão do R/3, disponíveis na transação LIBS:

Por exemplo, para modificar um campo de forma a usar a cor COL_KEY menos intensa, como hotspot, centralizado, escreveríamos o código como segue:

WRITE: / SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT CENTERED. A opção HOTSPOT faz com que, ao se apontar o campo com o cursor, o mesmo fique no formato de uma “mãozinha”, como num hyperlink da Internet, permitindo a seleção do registro com um único clique do mouse. Essa característica é muito útil no processamento de listas em vários níveis.

7- Report/Listas Modificando o formato de exibição standard

As opções dentro do comando WRITE têm efeito apenas no campo a que se referem. Caso se necessite mudar todos os campos a partir de um determinado ponto do programa, pode-se usar o comando FORMAT, com as mesmas opções de formatação vistas para o comando WRITE. Com isso, todos os campos a seguir serão exibidos com as opções especificadas pelo comando FORMAT, até que seja encontrado um novo comando FORMAT. Pode-se continuar usando os modificadores no WRITE, mas os mesmos irão basear-se no novo padrão estabelecido no comando WRITE. Por exemplo, caso seja colocado o comando.

FORMAT COLOR COL_KEY INTENSIFIED ON CENTERED

todos os campos a seguir passarão a ser exibidos na cor COL_KEY INTENSIFIED, e serão apresentados centralizados. Caso tenhamos em seguida o comando

WRITE: / SPFLI-CARRID INTENSIFIED OFF, SPFLI-CONNID.

a cor exibida para o campo SPFLI-CARRID será COL_KEY INTENSIFIED OFF, e não a cor padrão sem INTENSIFIED. O campo SPFLI-CONNID aparecerá da forma estipulada no comando FORMAT.

O formato pode retornar ao formato standard usando o comando FORMAT RESET.

Posicionando os campos

Pode-se alterar o posicionamento dos campos dentro de uma linha colocando o número da coluna na qual queremos que o campo comece na frente do campo. Pode-se também especificar a largura do campo colocando a mesma em seguida, entre parênteses (sem essa opção, o tamanho do campo utilizado será o tamanho dele no dicionário de dados). Por exemplo, para posicionarmos o mesmo campo que modificamos anteriormente na décima coluna, estabelecendo um tamanho de cinco caracteres, usamos o comando.

7- Report/Listas Especificando unidades de medida e moedas

Para formatar automaticamente na lista campos numa determinada unidade de medida e valores monetários, pode-se utilizar as opções UNIT e CURRENCY, seguidas do campo que contém a chave da unidade, após o campo que se quer formatar. Com isso, o campo será formatado de acordo com a definição nas tabelas standard de unidades e de moedas do R/3. Veja o exemplo a seguir:

WRITE: /20(6) SFLIGHT-FLDATE,

SFLIGHT-CURRENCY,

'Sem CURRENCY:', (12) SFLIGHT-PAYMENTSUM, 'Com CURRENCY:', (12) SFLIGHT-PAYMENTSUM

CURRENCY SFLIGHT- CURRENCY.

Um trecho do report seria:

150420 ITL Sem CURRENCY: 683.231,44 Com CURRENCY: 68.323.144 130520 ITL Sem CURRENCY: 318.202,60 Com CURRENCY: 31.820.260

Sem o uso da opção CURRENCY, o valor é apresentado no formato genérico do usuário; com o CURRENCY, mesmo caso tenhamos moedas diferentes em cada registro, cada uma será exibida no formato correto.

Símbolos de Texto

O ABAP permite a criação de símbolos de texto, que são elementos do repositório que permitem a criação de tabelas de texto para uso nos programas ABAP. Os símbolos de texto são criados dentro de classes de mensagem, que servem para separar logicamente os símbolos de texto relacionados. Dentro da classe de mensagem, cada texto deve ser identificado por um número de três posições. Cada símbolo de texto pode ser criado em várias linguagens.

Suponha que exista o seguinte trecho de código: WRITE: /10 'Assentos ocupados:', SFLIGHT-SEATSOCC. Utilizando símbolos de texto, o comando ficaria WRITE: /10 TEXT-001(ZCLMENS), SFLIGHT-SEATSOCC.

Toda vez que o interpretador ABAP encontra um campo que começa com TEXT, coloca naquela posição um símbolo de texto correspondente ao número após o hífen na classe entre parênteses. Caso seja usada a opção MESSAGE-ID <classe> na declaração REPORT, não é necessário especificar a classe de mensagem junto ao símbolo de texto. O uso de símbolos de texto pode simplificar a manutenção de programas complexos ao agrupar todas as mensagens de texto em um só local.

Para editar os símbolos de texto, use, na janela do editor ABAP, a opção Saltar  Elementos de Texto  Símbolos de Texto.

7- Report/Listas Criação de Listas Complexas

Até agora, as listas criadas apresentam um nível de dados apenas, mas o ABAP tem recursos que permitem a exibição de listas de detalhe a partir de uma lista.

O Evento AT LINE-SELECTION

O processamento das listas de detalhe dentro do R/3 é feito pelo evento AT LINE-SELECTION. O R/3 executa os comandos que houver dentro desse evento toda vez que o usuário clica duas vezes sobre uma linha em uma lista ouclica sobre um campo marcado com HOTSPOT, ou teclando-se F2 sobre um registro, ou escolhendo um botão que tenha o código standard ‘PICK’ a ele associado.

HIDE

Através do comando HIDE, é possível armazenar informação a respeito de uma linha para uso do evento AT LINE-SELECTION. Suponha que exista uma lista com os vôos para uma determinada companhia aérea, e deseja-se exibir as reservas para aquele vôo. Para exibir a lista, é necessário armazenar em algum local informações sobre a linha selecionada pelo usuário, e isso pode ser feito através do comando HIDE do ABAP.

O comando HIDE guarda a informação sobre os campos desejados, além do número da linha que está sendo processada, em uma tabela interna, que é automaticamente acessada no evento AT LINE-SELECTION. Veja o seguinte exemplo:

REPORT ZTESTE.

TABLES: SFLIGHT, SBOOK. START-OF-SELECTION. SELECT * FROM SFLIGHT.

WRITE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE, SFLIGHT-SEATSOCC.

HIDE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE.

ENDSELECT.

No documento Academia ABAP.doc (páginas 55-62)

Documentos relacionados