¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Tudo sobre o símbolo de campo: vantagens, uso e significado

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 37 Vistas
0
Cargando...

Olá,

Preciso saber o que é um símbolo de campo, quais são suas vantagens e onde deve ser utilizado.

Saudações,

Anitha

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Anitha,

FIELD-SYMBOLS <fs>.

Declare um campo simbólico com o nome <fs>. Em tempo de execução, você pode atribuir um campo específico a ele usando a instrução ASSIGN. Qualquer operação que você realizar posteriormente usando o símbolo de campo afetará diretamente o campo ao qual está atribuído.

Vantagem:

-


A principal vantagem é ao processar registros em uma tabela interna e adicioná-los a outra tabela interna.

Basta atribuir os valores diretamente ao campo simbólico e não é necessário usar append.

Isso aumenta o desempenho do programa.

Saudações,

Srikanth.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

hi anitha,

<b>Field Symbols</b>

Field symbols são espaços reservados ou nomes simbólicos para outros campos. Eles não reservam espaço fisicamente para um campo, mas apontam para seu conteúdo. Um field symbol pode apontar para qualquer objeto de dados. O objeto de dados para o qual um field symbol aponta é atribuído a ele após ser declarado no programa.

Sempre que você se refere a um field symbol em um programa, está se referindo ao campo atribuído ao field symbol. Após a atribuição bem-sucedida, não há diferença no ABAP se você está referenciando o field symbol ou o campo em si. Você deve atribuir um campo a cada field symbol antes de poder se referir a este último em programas.

Os field symbols são semelhantes aos ponteiros desreferenciados em C (ou seja, ponteiros aos quais o operador de conteúdo * é aplicado). No entanto, o único equivalente real de ponteiros em ABAP, ou seja, variáveis que contêm um endereço de memória (referência) e que podem ser usadas sem o operador de conteúdo, são variáveis de referência em ABAP Objects.

Todas as operações programadas com field symbols são aplicadas ao campo atribuído a ele. Por exemplo, uma instrução MOVE entre dois field symbols move o conteúdo do campo atribuído ao primeiro field symbol para o campo atribuído ao segundo field symbol. Os field symbols continuam apontando para os mesmos campos após a instrução MOVE como faziam antes.

Você pode criar field symbols com ou sem especificações de tipo. Se você não especificar um tipo, o field symbol herda todos os atributos técnicos do campo atribuído a ele. Se você especificar um tipo, o sistema verifica a compatibilidade do field symbol e do campo que está atribuindo a ele durante a instrução ASSIGN.

<b>Os field symbols fornecem maior flexibilidade ao acessar objetos de dados:</b>

Se você deseja processar seções de campos, pode especificar o deslocamento e o comprimento do campo dinamicamente.

Você pode atribuir um field symbol a outro, o que permite acessar partes de campos.

Atribuições a field symbols podem se estender além dos limites do campo. Isso permite acessar sequências regulares de campos na memória de forma eficiente.

Você também pode forçar um field symbol a ter atributos técnicos diferentes daqueles do campo atribuído a ele.

A flexibilidade dos field symbols fornece soluções elegantes para certos problemas. Por outro lado, significa que erros podem ocorrer facilmente. Como os campos não são atribuídos aos field symbols até o tempo de execução, a eficácia das verificações de sintaxe e segurança é muito limitada para operações envolvendo field symbols. Isso pode levar a erros de execução ou atribuições de dados incorretas.

Embora os erros de execução indiquem um problema óbvio, as atribuições de dados incorretas são perigosas porque podem ser muito difíceis de detectar. Por esse motivo, você deve usar field symbols apenas se não puder obter o mesmo resultado usando outras instruções ABAP.

Por exemplo, você pode querer processar parte de uma string em que o deslocamento e o comprimento dependem do conteúdo do campo. Você poderia usar field symbols nesse caso. No entanto, como a instrução MOVE também suporta especificações de deslocamento e comprimento variáveis, você deve usá-la em vez disso. A instrução MOVE (com suas próprias variáveis auxiliares, se necessário) é muito mais segura do que usar field symbols, pois não pode acessar a memória além do limite de um campo. No entanto, field symbols podem melhorar o desempenho em alguns casos.

<b>exemplo:</b>

REPORT demo_field_symbols_stat_assign .

FIELD-SYMBOLS: <f1> TYPE ANY, <f2> TYPE i.

DATA: text(20) TYPE c VALUE 'Olá, como você está?',

num TYPE i VALUE 5,

BEGIN OF line1,

col1 TYPE f VALUE '1.1e+10',

col2 TYPE i VALUE '1234',

END OF line1,

line2 LIKE line1.

ASSIGN text TO <f1>.

ASSIGN num TO <f2>.

DESCRIBE FIELD <f1> LENGTH <f2>.

WRITE: / <f1>, 'tem comprimento', num.

ASSIGN line1 TO <f1>.

ASSIGN line2-col2 TO <f2>.

MOVE <f1> TO line2.

ASSIGN 'LINE2-COL2 =' TO <f1>.

WRITE: / <f1>, <f2>.

A saída é:

Olá, como você está? tem comprimento 20

LINE-COL2 = 1.234

O exemplo declara dois field symbols <F1> e <F2>. <F2> tem o tipo I, o que significa que apenas campos do tipo I podem ser atribuídos a ele. <F1> e <F2> apontam para diferentes campos durante o programa.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Os símbolos de campo são como ponteiros para outros campos. Eles não ocupam nenhuma memória física, apenas apontam para seu conteúdo. Um símbolo de campo pode apontar para qualquer objeto de dados e tornar o programa eficiente. Consulte a seguinte Ajuda do SAP.

Saudações,

Suresh Datti

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

hi anitha,

Field Symbols

Field symbols are placeholders or symbolic names for other fields. They do not physically reserve space for a field, but point to its contents. A field symbol cam point to any data object. The data object to which a field symbol points is assigned to it after it has been declared in the program.

Whenever you address a field symbol in a program, you are addressing the field that is assigned to the field symbol. After successful assignment, there is no difference in ABAP whether you reference the field symbol or the field itself. You must assign a field to each field symbol before you can address the latter in programs.

Field symbols are similar to dereferenced pointers in C (that is, pointers to which the content operator * is applied). However, the only real equivalent of pointers in ABAP, that is, variables that contain a memory address (reference) and that can be used without the contents operator, are reference variables in ABAP Objects.

All operations programmed with field symbols are applied to the field assigned to it. For example, a MOVE statement between two field symbols moves the contents of the field assigned to the first field symbol to the field assigned to the second field symbol. The field symbols themselves point to the same fields after the MOVE statement as they did before.

You can create field symbols either without or with type specifications. If you do not specify a type, the field symbol inherits all of the technical attributes of the field assigned to it. If you do specify a type, the system checks the compatibility of the field symbol and the field you are assigning to it during the ASSIGN statement.

Field symbols provide greater flexibility when you address data objects:

If you want to process sections of fields, you can specify the offset and length of the field dynamically.

You can assign one field symbol to another, which allows you to address parts of fields.

Assignments to field symbols may extend beyond field boundaries. This allows you to address regular sequences of fields in memory efficiently.

You can also force a field symbol to take different technical attributes from those of the field assigned to it.

The flexibility of field symbols provides elegant solutions to certain problems. On the other hand, it does mean that errors can easily occur. Since fields are not assigned to field symbols until runtime, the effectiveness of syntax and security checks is very limited for operations involving field symbols. This can lead to runtime errors or incorrect data assignments.

While runtime errors indicate an obvious problem, incorrect data assignments are dangerous because they can be very difficult to detect. For this reason, you should only use field symbols if you cannot achieve the same result using other ABAP statements.

For example, you may want to process part of a string where the offset and length depend on the contents of the field. You could use field symbols in this case. However, since the MOVE statement also supports variable offset and length specifications, you should use it instead. The MOVE statement (with your own auxiliary variables if required) is much safer than using field symbols, since it cannot address memory beyond the boundary of a field. However, field symbols may improve performance in some cases.

example:

REPORT demo_field_symbols_stat_assign .

FIELD-SYMBOLS: TYPE ANY, TYPE i.

DATA: text(20) TYPE c VALUE 'Hello, how are you?',

num TYPE i VALUE 5,

BEGIN OF line1,

col1 TYPE f VALUE '1.1e+10',

col2 TYPE i VALUE '1234',

END OF line1,

line2 LIKE line1.

ASSIGN text TO .

ASSIGN num TO .

DESCRIBE FIELD LENGTH .

WRITE: / , 'has length', num.

ASSIGN line1 TO .

ASSIGN line2-col2 TO .

MOVE TO line2.

ASSIGN 'LINE2-COL2 =' TO .

WRITE: / , .

The output is:

Hello, how are you? has length 20

LINE-COL2 = 1,234

The example declares two field symbols and . has the type I, which means that only type I fields may be assigned to it. and both point to different fields during the program.

Message was edited by: Ashok Kumar Prithiviraj

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?