Problem solve Get help with specific problems with your technologies, process and projects.

Using hash tables for fast lookup

If you have an internal table in a program used solely for lookup, it's good programming practice to use a hash table.

If you have an internal table in your program which is used solely for lookup, it is good programming practice...

to use a hash table. The example below shows this, in combination with a method for buffering SELECT SINGLE results.


*&      Form  select_dispo
*       Get MRP controller and in-house production time from material 
*       and plant
*      --> MATNR  Material
*      --> RESWK  Plant
*      <-- DISPO  MRP controller
*      <-- DZEIT  In-house production time
form select_from_marc using matnr werks dispo dzeit.

  types: begin of mrp_lookup_type,
           matnr like marc-matnr,
           werks like marc-werks,
           dispo like marc-dispo,
           dzeit like marc-dzeit,
         end of mrp_lookup_type.

* Define static hashed table to hold results
  statics: st_mrp type hashed table of mrp_lookup_type
                  with unique key matnr werks.

  data: l_wa_mrp type mrp_lookup_type.

  clear dzeit.

* See if data is in the table
  read table st_mrp into l_wa_mrp with table key matnr = matnr
                                                 werks = werks.

* If not in table, get it from the database
  if not sy-subrc is initial.

    select single dispo dzeit from marc
        into corresponding fields of l_wa_mrp-dispo
        where matnr eq matnr
          and werks eq werks.

* Insert into table
    l_wa_mrp-matnr = matnr.
    l_wa_mrp-werks = werks.
    insert l_wa_mrp into table st_mrp.

  dispo = l_wa_mrp-dispo.                      " MRP Controller
  dzeit = l_wa_mrp-dzeit.                      " Inhouse production time
endform.                    " select_from_marc

Dig Deeper on SAP ABAP