ultimo tabla significado registros registro matchcode leer interna f4if_int_table_value_request ejemplo dynpro crear code cantidad busqueda ayuda sap abap

sap - significado - ¿Cómo hacer que las filas cuenten en la tabla interna en abap?



match code z abap (9)

¿Cómo obtengo el recuento de filas de una tabla interna? Supongo que puedo seguirlo. Pero debe haber una manera más sana.

No sé si hace una diferencia, pero el código debería ejecutarse en la versión 4.6c.


Puede usar la siguiente función:

DESCRIBE TABLE <itab-Name> LINES <variable>

Después de la llamada, la variable contiene el número de filas de la tabla interna.


si entiendo su pregunta correctamente, quiere saber el número de fila durante un ciclo condicional sobre una tabla interna. Puede usar la variable de sistema sy-tabix si trabaja con tablas internas. Consulte la documentación de ABAP si necesita más información (especialmente el capítulo sobre el procesamiento interno de la tabla ).

Ejemplo:

LOOP AT itab INTO workarea WHERE tablefield = value. WRITE: ''This is row number '', sy-tabix. ENDLOOP.


data: vcnt(4). clear vcnt. LOOP at itab WHERE value = ''1''. add 1 to vcnt. ENDLOOP.

La respuesta será 3. (vcnt = 3).


No creo que haya un parámetro de SAP para ese tipo de resultado. Aunque el código a continuación se entregará.

LOOP AT intTab. AT END OF value. result = sy-tabix. write result. ENDAT. ENDLOOP.


también puede usar OPEN Sql para encontrar el número de filas usando la cláusula COUNT Grouping y también existe el campo de sistema SY-LINCT para contar las líneas (ROWS) de su tabla.



Al lado de lo recomendado

DESCRIBE TABLE <itab-Name> LINES <variable>

también está la variable de sistema SY-TFILL .

De la documentación:

Después de las declaraciones DESCRIBE TABLA, LOOP AT y READ TABLE, la cantidad de filas de la tabla interna a la que se accede.

Script de ejemplo:

REPORT ytest. DATA pf_exclude TYPE TABLE OF sy-ucomm WITH HEADER LINE. START-OF-SELECTION. APPEND ''1'' TO pf_exclude. APPEND ''2'' TO pf_exclude. APPEND ''3'' TO pf_exclude. APPEND ''4'' TO pf_exclude. WRITE: / ''sy-tfill = '', sy-tfill. DESCRIBE TABLE pf_exclude. WRITE: / ''sy-tfill = '', sy-tfill, ''after describe table''. sy-tfill = 0. "Reset READ TABLE pf_exclude INDEX 1 TRANSPORTING NO FIELDS. WRITE: / ''sy-tfill = '', sy-tfill, ''after read table''. sy-tfill = 0. "Reset LOOP AT pf_exclude. WRITE: / ''sy-tfill = '', sy-tfill, ''in loop with'', pf_exclude. sy-tfill = 0. "Reset ENDLOOP.

El resultado:

sy-tfill = 0 sy-tfill = 4 after describe tabl sy-tfill = 4 after read table sy-tfill = 4 in loop with 1 sy-tfill = 0 in loop with 2 sy-tfill = 0 in loop with 3 sy-tfill = 0 in loop with 4

Tenga en cuenta el valor 0 de la segunda entrada: SY-TFILL no se actualiza con cada paso, solo después del primer ciclo.

Recomiendo el uso de SY-TFILL solamente, si lo necesita directamente después de READ (1) ... Si hay otros comandos entre el READ y el uso de SY-TFILL, siempre existe el peligro de un cambio en el sistema variable.

(1) o describe la tabla.


También hay una función incorporada para esta tarea:

variable = lines( itab_name ).

Al igual que la sintaxis ABAP "pura" descrita por IronGoofy , la función "lines ()" escribe la cantidad de líneas de la tabla itab_name en la variable.


El módulo funcional EM_GET_NUMBER_OF_ENTRIES también proporcionará el recuento de filas. Toma 1 parámetro - el nombre de la tabla.