Por favor estoy trabajando con reporte que usa field-group (taxes) pero no entiendo la manera de manejarlos, tengo actualmente las siguientes lineas, como puedo verificar su contenido ya que funciona para unos documentos y otros no:
LOOP.
AT taxes.
PERFORM write_financial.
ENDLOOP.
En algunos casos se llama al perform write_financial al llegar a este punto y en otros no, pero no veo de que forma comparar donde esta la diferencia.
Por favor si me pueden orientar al respecto se lo agradeceria mucho.
Hola Ana, los field-groups representan el nombre de una estructura, esta estructura se define mediante INSERT y los valores se asignan al campo y son referenciados a un field-gruop con la sentencia EXTRACT.
La lectura en el loop la haces apuntando al field-group.
Te dejo un pequeño código para que veas cómo funcionan:
"Campos que formaran la estructura de nuestros field-groups
DATA: t1(4), t2 TYPE i.
DATA: t3(2).
DATA: t4(5), t5(5), t6(5).
FIELD-GROUPS: header, fila_tipo1, fila_tipo2.
"Definición de la estructura de cada field-group
INSERT t2 t1 INTO header.
INSERT t3 INTO fila_tipo1.
INSERT t4 t5 t6 INTO fila_tipo2.
*Se añaden registros/filas a nuestro conjunto de datos (que contiene extractos)
*indicando el valor de cada campo y referenciando el extracto.
t1 ='HD01'. t2 = 1. EXTRACT header.
t3 = 'T3'. EXTRACT fila_tipo1.
t1 ='HD02'. t2 = 2. EXTRACT header.
t4 = '00004'.
t5 = '00005'.
t6 = '00006'.
EXTRACT fila_tipo2.
t1 ='HD11'. t2 = 1. EXTRACT header.
t3 = 'T6'. EXTRACT fila_tipo1.
t1 ='HD12'. t2 = 2. EXTRACT header.
t4 = '20004'.
t5 = '20005'.
t6 = '20006'.
EXTRACT fila_tipo2.
*Si debuggeas veras que siempre están llenos los campos (t1 t2 t3 t4 t5 y t6)
*pero veras que el field-group si cambia.
LOOP.
AT header.
WRITE: / t1, ' - ', t2.
ENDAT.
AT fila_tipo1.
WRITE: / t3.
ENDAT.
AT fila_tipo2.
WRITE: / t4, ' - ', t5, ' - ', t6.
ENDAT.
ENDLOOP.
Disculpen si algún tecnicismo es incorrecto, pero trate de ser coloquial para hacer simple el tema.
Con esto, puedes ir a ver como esta definido tu field-group taxes y ver que pasa en la subrutina write_financial.