¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Descubra o uso da declaração new e como aplicá-la corretamente

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

Qual é o uso da declaração new?

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

4 Respuestas

0
Cargando...

Olá,

AT NEW pode ser usado dentro do loop.

AT NEW f.

f é um subcampo de uma tabela interna processada com LOOP. A sequência de declarações que se segue é executada se o subcampo f ou um subcampo na linha LOOP atual definido (à esquerda) antes de f tiver um valor diferente do da linha de tabela precedente (AT NEW) ou seguinte (AT END OF).

Exemplo

TYPES: BEGIN OF COMPANIES_TYPE,

NAME(30),

PRODUCT(20),

SALES TYPE I,

END OF COMPANIES_TYPE.

DATA: COMPANIES TYPE STANDARD TABLE OF COMPANIES_TYPE WITH

NON-UNIQUE DEFAULT KEY INITIAL SIZE 20,

WA_COMPANIES TYPE COMPANIES_TYPE.

...

LOOP AT COMPANIES INTO WA_COMPANIES.

AT NEW NAME.

NEW-PAGE.

WRITE / WA_COMPANIES-NAME.

ENDAT.

WRITE: / WA_COMPANIES-PRODUCT, WA_COMPANIES-SALES.

AT END OF NAME.

SUM.

WRITE: / WA_COMPANIES-NAME, WA_COMPANIES-SALES.

ENDAT.

ENDLOOP.

As declarações AT referem-se ao campo COMPANIES-NAME.

Notas

Se um critério de interrupção de controle não é conhecido até o tempo de execução, pode-se usar AT NEW (nome) ou AT END OF (nome) para especificá-lo dinamicamente como o conteúdo do campo nome. Se o nome estiver em branco no tempo de execução, o critério de interrupção de controle é ignorado e a sequência de declarações não é executada. Se o nome contiver um nome de componente inválido, ocorrerá um erro no tempo de execução.

Ao definir um deslocamento e/ou comprimento, é possível restringir ainda mais os critérios de interrupção de controle, independentemente de serem especificados estaticamente ou dinamicamente.

Também é possível usar um símbolo de campo que aponta para a área de saída do LOOP como um critério de interrupção de controle dinâmico. Se o símbolo de campo não apontar para a área de saída do LOOP, ocorrerá um erro no tempo de execução.

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

Olá,

Em um loop, toda vez que houver uma nova entrada para o campo, o AT NEW é ativado e processa o bloco.

POR EXEMPLO:

ORDENAR I_VBAP POR VBELN.

LOOP EM I_VBAP.

AT NEW VBELN.

ENDAT.

ENDLOOP.

na tabela interna i_vbap, toda vez que um novo vbeln é encontrado, o evento at new é ativado.

Saudações,

madhu

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

Olá,

AT - itab

Sintaxe

LOOP AT itab resultado ...

[AT FIRST.

...

ENDAT.]

[AT NEW comp1.

...

ENDAT.

[AT NEW comp2.

...

ENDAT.

[...]]]

[ ... ]

[[[...]

AT END OF comp2.

...

ENDAT.]

AT END OF comp1.

...

ENDAT.]

[AT LAST.

...

ENDAT.]

ENDLOOP.

Extras:

1. ... PRIMEIRO

2. ... |{FIM DE} compi 3. ... ÚLTIMO Efeito O bloco de instruções de um loop LOOP pode conter estruturas de controle para o processamento em nível de controle. A instrução de controle correspondente é AT. As instruções AT e ENDAT definem blocos de instruções que são executados nos cortes de controle, ou seja, quando a estrutura de controle muda. As adições às instruções AT determinam o corte de controle no qual seus blocos de instruções são executados. Dentro desses blocos de instruções, a instrução SUM pode ser especificada para somar os componentes numéricos de um nível de controle. Para o comportamento de saída resultante, aplica-se o mesmo que para LOOP AT. O requisito prévio para o processamento em nível de controle é que a tabela interna esteja ordenada exatamente na mesma sequência que o componente de seu tipo de linha, ou seja, primeiro de acordo com o primeiro componente, depois de acordo com o segundo componente e assim por diante. A estrutura de linha e a sequência de classificação correspondente fornecem uma estrutura de grupo para o conteúdo da tabela interna, cujos níveis podem ser avaliados usando instruções AT. As estruturas de controle AT-ENDAT devem ser alinhadas uma após a outra, de acordo com a estrutura de grupo. Os blocos de instruções dentro das estruturas de controle AT-ENDAT são listados se um corte de controle apropriado for feito na linha atual da tabela. As instruções na estrutura de controle LOOP-ENDLOOP que não são executadas dentro de uma estrutura de controle AT-ENDAT são executadas a cada passo do loop. Para que o processamento em nível de controle seja feito corretamente, as seguintes regras devem ser observadas: Após o LOOP, uma condição restritiva cond só pode ser especificada se você selecionar um bloco de linhas consecutivas da tabela interna. Caso contrário, o comportamento do processamento em nível de controle é indefinido. A tabela interna não pode ser modificada dentro do loop LOOP. Uma área de trabalho wa especificada na instrução LOOP após a adição INTO deve ser compatível com o tipo de linha da tabela. O conteúdo de uma área de trabalho wa especificada após a adição INTO na instrução LOOP não deve ser modificado. Se a adição INTO na instrução LOOP for usada para atribuir o conteúdo da linha atual a uma área de trabalho wa, seu conteúdo é modificado ao entrar na estrutura de controle AT-ENDAT da seguinte maneira: Os componentes da chave de controle atual permanecem inalterados. Todos os componentes com um tipo de dados de caractere, à direita da chave de controle atual, são definidos como "*" em cada posição. Todos os outros componentes à direita da chave de controle atual são definidos em seu valor inicial. Ao sair da estrutura de controle AT-ENDAT, o conteúdo da linha atual da tabela é atribuído a toda a área de trabalho wa. Adição 1 ... PRIMEIRO Efeito O nível de controle é definido pela primeira linha da tabela interna. O corte de controle ocorre quando esta linha é lida. Nota No nível de grupo AT FIRST, a chave de grupo atual não contém componentes e todos os componentes do tipo caractere da área de trabalho wa estão preenchidos com "*" e todos os outros componentes são definidos em seu valor inicial. Adição 2 ... |{FIM DE} compi/>

Efeito

: Os níveis de controle são definidos pelo início ou final de um grupo de linhas com o mesmo conteúdo no componente compi (onde i = 1, 2 e assim por diante) e nos componentes à esquerda de compi. Os cortes de controle ocorrem quando o conteúdo do componente compi ou de outro componente à esquerda de compi muda.

Os componentes compi podem ser especificados conforme descrito na Especificação de Componentes, com a limitação de que aqui não é possível acessar os atributos do objeto.

Nota

Se as adições INTO ou ASSIGNING forem usadas na instrução LOOP, um símbolo de campo pode ser inserido após AT |{FIM DE} classes externas, ao qual o componente correspondente da área de trabalho wa ou o símbolo de campo <fs> é atribuído. Esta forma de especificação dinâmica de componentes está obsoleta e foi substituída.

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?