Os Field Symbols são espaços reservados na memoria ou nomes simbólicos para outros campos. Eles não reservam um espaço físico para os símbolos declarados, mas apontam para o seu conteúdo. Um Field Symbol pode apontar para qualquer objeto de dados.
Sempre que você endereçar um Field Symbol em um programa, você está endereçando o campo que é atribuído ao Field Symbol, deste modo não há mais diferença se você faz referência ao símbolo ou ao próprio campo. Campos de símbolo são similares aos ponteiros de referencia em C, que utilizam o caractere * (asterisco).
Exemplo:
Neste exemplo criamos uma linha de dados contendo duas colunas, a primeira coluna possui o conteúdo “dados”, após criarmos o campo de símbolo, o endereçamos a linha de dados, o utilizamos como um ponteiro para igualar o valor contido na primeira coluna para a coluna vazia e exibimos novamente a linha de dados, assim podemos ver que ao manipular o ponteiro do campo de símbolo também estamos manipulando a linha de dados.
Abap
*&---------------------------------------------------------------------* *& Report ZFIELDSYMBOL *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Field Symbols *&---------------------------------------------------------------------* REPORT ZFIELDSYMBOL. * Declara objeto de dados DATA: BEGIN OF linha, inicio(5) TYPE c VALUE 'DADOS', fim(5) TYPE c , END OF linha. * imprime valor da linha WRITE : / 'Conteudo da linha:'. WRITE : / 'Inicio: ', linha-INICIO, ' Fim: ', linha-FIM. * Cria simbolo FIELD-SYMBOLS <f> LIKE linha. * Cria ponteiros de referencia ASSIGN linha TO <f>. * Move referencia * Veja que ao mover os pointeiros * Movemos o conteudo da variavel * Isto porque um Field Symbol funciona como um Placeholder MOVE <f>-INICIO TO <f>-FIM. * re-imprime valor da linha skip 1. WRITE: / 'Field Simbolo (Pointer) reorganizado:'. WRITE : / 'Inicio: ', linha-INICIO, ' Fim: ', linha-FIM.