Translate this blog

quinta-feira, 18 de abril de 2013

Acessar uma variável em memória / Access a variable in memory ( Field Symbol - Part IV )


 Português  Neste post mostrarei mais uma forma de utilização dos ponteiros. Como havia comentado anteriormente, em alguns casos necessitamos de informações geradas em tempo de execução no programa e que não teríamos acesso a elas de outra forma ou mesmo para não necessitarmos acessar o banco de dados para obter esta informação. Mas este processo necessita de uma habilidade do seu executor: saber debugar. A estrutura que devemos usar para referenciar um campo do programa é essa: (nome_do_programa)-campo. Algumas vezes podemos descobrir estas informações apenas apertando a tecla F1 na tela que estamos trabalhando, mas muitas outras vezes não é tão simples assim.
Para testar se estamos pegando o campo certo podemos usar esta estrutura nas linhas de variáveis e verificar se elas existem ou não, se aquele é mesmo o campo que necessitamos. Abaixo temos uma sequência de imagens que identificam aonde estão os campos do programa e como capturamos o campo durante a função debug no SAP:

Após apertar F1 e selecionar os dados técnicos do campo, temos a seguinte tela:
O campo nº 1 é o nome do programa e o nº 2 é o campo/estrutura que precisamos.

Se não funcionar, precisamos identificar o campo debugando o mesmo. Com o nome do programa, podemos tentar identificar a variável global que representa aquele campo ou mesmo buscá-lo na opção de variáveis globais do debugger.

Ao debugar um programa identificamos esta tela:
O campo nº 1 indica o nome do programa.

Com a informação do programa, clicamos na aba variables 1 e digitamos (nome_do_programa)-campo:
O campo poderá ser referenciado e o conteúdo do mesmo é TAXBRA.

Após esta verificação podemos utiliza-la no programa com o ponteiro. Abaixo temos o exemplo da utilização prática:
01
02
03
04
05
06
07
08
09
  FIELD-SYMBOLS: <fs_tax>.
 
*Referenciamos o programa e o nome ao ponteiro
  ASSIGN ('(SAPLJ1BCONDTAX)J_1BTAXCODEV-KALSM') TO <fs_tax>.
  IF <fs_tax> IS ASSIGNED.
    WRITE <fs_tax>.
  ENDIF.
*Mostrará o mesmo valor que vimos no debugger, TAXBRA

Nenhum comentário:

Postar um comentário