Skip to content

ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Meshes →  Meshes - Using Mesh Paths →  FOR ... IN mesh_path 

FOR Expressions for Mesh Paths

This example demonstrates table comprehensions and table reductions for mesh paths.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    input( ).

    TRY.

        out->begin_section(
          'Initial Association SCARR\_spfli' ).
        DATA(spfli_tab) = VALUE t_spfli(
          FOR spfli_wa IN
            flights-scarr\_spfli[ flights-scarr[ carrname = name ]
                                   WHERE countryto = country ]
             ( spfli_wa ) ).
        out->write( spfli_tab ).
        DATA(distance) = REDUCE spfli-distance(
          INIT d TYPE spfli-distance
          FOR spfli_wa IN
            flights-scarr\_spfli[ flights-scarr[ carrname = name ]
                                   WHERE countryto = country ]
             NEXT d = d + SWITCH spfli-distance( spfli_wa-distid
                                   WHEN 'KM'
                                     THEN spfli_wa-distance * '1.60934'
                                   WHEN 'MI'
                                     THEN spfli_wa-distance
                                   ELSE 0 ) ).
        out->write( |Sum of distances in miles: { distance }| ).

        out->next_section(
          'Chained Association SCARR\_spfli\_sairport' ).
        DATA(sairport_tab) = VALUE t_sairport(
          FOR sairport_wa IN
            flights-scarr\_spfli[ flights-scarr[ carrname = name ]
                                   WHERE countryto = country
                                  ]\_sairport[
                                    USING KEY primary_key ]
            ( sairport_wa ) ).
        out->write( sairport_tab ).

        out->next_section(
          'Chained Association' &&
          ' SCARR\_spfli\_sflight\^_sflight~spfli' ).
        spfli_tab = VALUE t_spfli(
          FOR spfli_wa IN
            flights-scarr\_spfli[ flights-scarr[ carrname = name ]
                                   WHERE countryto = country
                                  ]\_sflight[
                                   WHERE planetype = plane1 OR
                                         planetype = plane2
                                 ]\^_sflight~spfli[ ]
             ( spfli_wa ) ).
        out->write( spfli_tab ).

      CATCH cx_sy_itab_line_not_found.
        out->write( 'Exception!' ).
    ENDTRY.
    out->display( ).

Description

This example uses the same mesh paths as the executable example for LOOP AT and produces the same results sets. Unlike LOOP AT, the rows in the results set are produced in a results table using table comprehensions and not as individual rows.

For the first mesh path, a table reduction is also performed using the reduction operator REDUCE. This totals the distances, with the conversion from kilometers to miles done using a SWITCH expression.