SAP Help Information and source code of various different ways of using a range table to restrict database selection









RANGE statement - Example ABAP code to demonstrate the RANGE command

The 'type range of' statement is very useful when writing ABAP programs allowing you to restrict the retrieval of data when performing a database select statement. It basically replicates the restriction abilities of the report select-option.
Below are a few examples of the various ways of populating and using a range table.


*Code to demonstrate populating and using range tables 
*&-------------------------------------------------------------*
*& Report  ZRANGESTATEMENT
*&
*&-------------------------------------------------------------*
REPORT  ZRANGESTATEMENT.

TYPES: BEGIN OF t_ekko,
  ebeln TYPE ekpo-ebeln,
  ebelp TYPE ekpo-ebelp,
  statu TYPE ekpo-statu,
  aedat TYPE ekpo-aedat,
  matnr TYPE ekpo-matnr,
  menge TYPE ekpo-menge,
  meins TYPE ekpo-meins,
  netpr TYPE ekpo-netpr,
  peinh TYPE ekpo-peinh,
 END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
      wa_ekko TYPE t_ekko.

data: r_ebeln type range of ekko-ebeln,  "range table
      wa_ebeln like line of r_ebeln.     "work area for range table


**********************************************************************
*START-OF-SELECTION
START-OF-SELECTION.

************************************************
**** populate range table to receive all entries 
refresh r_ebeln.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
  from ekpo
  into table it_ekko
 where ebeln in r_ebeln.
****


***************************************************
**** populate range table to receive specific value
wa_ebeln-sign   = 'I'.   "I = include, E = exclude
wa_ebeln-option = 'EQ'.  "EQ, BT, NE ....
wa_ebeln-low    = '12345678'.
*wa_ebeln-high   =    "not needed unless using the BT option
append wa_ebeln to r_ebeln.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
  from ekpo
  into table it_ekko
 where ebeln in r_ebeln.
****


***********************************************************
****  populate range table to receive entries within a range
wa_ebeln-sign   = 'I'.   "I = include, E = exclude
wa_ebeln-option = 'BT'.  "EQ, BT, NE ....
wa_ebeln-low    = '11111111'.
wa_ebeln-high   = '99999999'.

append wa_ebeln to r_ebeln.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
  from ekpo
  into table it_ekko
 where ebeln in r_ebeln.
****