¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Descubre el uso de la declaración new y cómo aplicarla correctamente

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

¿Cuál es el uso de la declaración new?

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

4 Respuestas

0
Cargando...

Hola,

AT NEW se puede usar dentro del bucle.

AT NEW f.

f es un subcampo de una tabla interna procesada con LOOP. La secuencia de declaraciones que le siguen se ejecuta si el subcampo f o un subcampo en la línea LOOP actual definido (a la izquierda) antes de f tiene un valor diferente al de la línea de tabla precedente (AT NEW) o siguiente (AT END OF).

Ejemplo

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.

Las declaraciones AT se refieren al campo COMPANIES-NAME.

Notas

Si un criterio de interrupción de control no se conoce hasta tiempo de ejecución, se puede usar AT NEW (nombre) o AT END OF (nombre) para especificarlo dinámicamente como el contenido del campo nombre. Si nombre está en blanco en tiempo de ejecución, se ignora el criterio de interrupción de control y la secuencia de declaraciones no se ejecuta. Si nombre contiene un nombre de componente inválido, se produce un error en tiempo de ejecución.

Al definir un desplazamiento y/o longitud, se puede restringir aún más los criterios de interrupción de control, independientemente de si se especifican estática o dinámicamente.

También se puede utilizar un símbolo de campo que apunta al área de salida del LOOP como un criterio de interrupción de control dinámico. Si el símbolo de campo no apunta al área de salida del LOOP, se produce un error en tiempo de ejecución.

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

Hola,

En un bucle, cada vez que hay una nueva entrada para el campo, se activa AT NEW y procesa el bloque.

POR EJEMPLO:

ORDENAR I_VBAP POR VBELN.

BUCLE EN I_VBAP.

AT NEW VBELN.

ENDAT.

ENDLOOP.

en la tabla interna i_vbap, cada vez que se encuentra un nuevo vbeln, se activa el evento at new.

Saludos,

madhu

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

Hola,

AT - itab

Sintaxis

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. ... PRIMERO

2. ... |{FIN DE} compi 3. ... ÚLTIMO Efecto El bloque de instrucciones de un bucle LOOP puede contener estructuras de control para el procesamiento a nivel de control. La instrucción de control respectiva es AT. Las instrucciones AT y ENDAT definen bloques de instrucciones que se ejecutan en los cortes de control, es decir, cuando la estructura de control cambia. Las adiciones a las instrucciones AT determinan el corte de control en el que se ejecutan sus bloques de instrucciones. Dentro de estos bloques de instrucciones, se puede especificar la instrucción SUM para sumar los componentes numéricos de un nivel de control. Para el comportamiento de salida result, se aplica lo mismo que para LOOP AT. El requisito previo para el procesamiento a nivel de control es que la tabla interna esté ordenada exactamente en la misma secuencia que el componente de su tipo de línea, es decir, primero de acuerdo con el primer componente, luego de acuerdo con el segundo componente, y así sucesivamente. La estructura de línea y la secuencia de clasificación correspondiente dan una estructura de grupo del contenido de la tabla interna, cuyos niveles pueden ser evaluados utilizando instrucciones AT. Las estructuras de control AT-ENDAT deben estar alineadas una tras otra, de acuerdo con la estructura de grupo. Los bloques de instrucciones dentro de las estructuras de control AT-ENDAT se enumeran si se realiza un corte de control adecuado en la línea actual de la tabla. Las instrucciones en la estructura de control LOOP-ENDLOOP que no se ejecutan dentro de una estructura de control AT-ENDAT se ejecutan en cada paso del bucle. Para que el procesamiento a nivel de control se realice correctamente, se deben observar las siguientes reglas: Después de LOOP, una condición restrictiva cond solo puede especificarse si selecciona un bloque de líneas consecutivas de la tabla interna. De lo contrario, el comportamiento del procesamiento a nivel de control es indefinido. La tabla interna no puede modificarse dentro del bucle LOOP. Un área de trabajo wa especificada en la instrucción LOOP después de la adición INTO debe ser compatible con el tipo de línea de la tabla. El contenido de un área de trabajo wa especificado después de la adición INTO en la instrucción LOOP no debe modificarse. Si se utiliza la adición INTO en la instrucción LOOP para asignar el contenido de la línea actual a un área de trabajo wa, su contenido se modifica al ingresar a la estructura de control AT-ENDAT de la siguiente manera: Los componentes de la clave de control actual permanecen sin cambios. Todos los componentes con un tipo de datos de carácter, plano a la derecha de la clave de control actual se establecen en carácter "*" en cada posición. Todos los otros componentes a la derecha de la clave de control actual se establecen en su valor inicial. Cuando se sale de la estructura de control AT-ENDAT, el contenido de la línea actual de la tabla se asigna a todo el área de trabajo wa. Adición 1 ... PRIMERO Efecto El nivel de control se define por la primera línea de la tabla interna. El corte de control se produce cuando se lee esta línea. Nota En el nivel de grupo AT FIRST, la clave de grupo actual no contiene componentes y todos los componentes de tipo carácter del área de trabajo wa están llenos con "*" y todos los componentes restantes se establecen en su valor inicial. Adición 2 ... |{FIN DE} compi/>

Efecto

: Los niveles de control se definen por el inicio o final de un grupo de líneas con el mismo contenido en el componente compi (donde i = 1, 2, y así sucesivamente) y en los componentes a la izquierda de compi. Los cortes de control se producen cuando cambia el contenido del componente compi o de otro componente a la izquierda de compi.

Los componentes compi se pueden especificar como se describe en Especificación de Componentes, con la limitación de que aquí no es posible el acceso a los atributos del objeto.

Nota

Si se utilizan las adiciones INTO o ASSIGNING en la instrucción LOOP, se puede ingresar un símbolo de campo después de AT |{FIN DE} clases externas, a la que se asigna el componente correspondiente del área de trabajo wa o el símbolo de campo <fs>. Esta forma de especificación dinámica de componentes está obsoleta y ha sido reemplazada

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?