Cómo contar el número de registros de un campo en una tabla interna en seleccionar declaración?

Tomé una tabla interna de tipo ty_marc.
en esta tabla interna tomé 2 campos matnr y werks_d.
Quiero contar el número de los materiales fabricados en la planta (marc-werks) basado en la entrada dada por el usuario.

Escribí el código como…

if so_matnr is not initial.
select matnr werks from marc 
into table it_marc
where matnr in so_matnr.
endif.

loop at it_marc into w_marc.
write :/w_marc-matnr. ( how to count total number of material eg:- material number : 100-100 to 100-110).
       w_marc-werks.
endloop.

Quiero contar el número total de material y mostrar el número en otro campo de la misma tabla interna.
Nota : no podría ser de 10 material para el número de material 100-100, así que quiero que el conteo de 10 en otro campo de la misma tabla interna y 100-110 podría tener registros de n y el recuento debe ser n en el campo.

InformationsquelleAutor user649305 | 2011-03-08

1 Kommentar

  1. 3

    Hay dos opciones fáciles.

    Si en realidad no se preocupan por la planta (werks), el uso de la group by cláusula y la count función en su select declaración. Algo así como:

    select matnr, count(*)
    from marc
    where matnr in so_matnr
    group by matnr
    into table it_marc_count.
    

    Estructura it_marc_count tendría que tener un campo de entero en la segunda posición (y matnr en el primer obviamente).

    Si usted necesita werks, es la más sencilla para ordenar it_marc por matnr, a continuación, utilizar la at end y sum construcciones en el loop at bucle (o algo similar). Los ejemplos al final de El procesamiento de las Entradas de la Tabla en Bucles debe empezar.

    • usted dejó la group by parte de su código de ejemplo
    • Yo puede ser que falte algo, pero count( [column] ) no es compatible con Open SQL. En este caso particular se puede usar count( * ).
    • También le faltaba el grupo, al parecer. No disponen de los medios para poner a prueba esta en este momento…

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea