9. Using Range tables in Query

REPORT Y_RANGE_TABLE_SAMPLE.


*VBAP-ernam
*vbap-kunnr
*vbap-audat
*vbap-auart
*vbap-vkorg.

DATA : lr_ernam TYPE RANGE OF vbak-ernam,
       lr_kunnr TYPE RANGE OF vbak-kunnr,
       lr_audat TYPE RANGE OF vbak-audat,
       lr_auart TYPE RANGE OF vbak-auart,
       lr_vkorg TYPE RANGE OF vbak-vkorg.

DATA : ls_ernam LIKE LINE OF lr_ernam,
       ls_kunnr LIKE LINE OF lr_kunnr,
       ls_audat LIKE LINE OF lr_audat,
       ls_auart LIKE LINE OF lr_auart,
       ls_vkorg LIKE LINE OF lr_vkorg.
      
*** append ernam
   
   IF lv_created_by IS NOT INITIAL.
      ls_ernam-sign   = 'I'.
      ls_ernam-option = 'EQ'.
      ls_ernam-low    = lv_created_by. 
      APPEND ls_ernam TO lr_ernam.   
   ENDIF.   
   
   IF lv_customer IS NOT INITIAL.
      ls_kunnr-sign   = 'I'.
      ls_kunnr-option = 'EQ'.
      ls_kunnr-low    = lv_customer. 
      APPEND ls_kunnr TO lr_kunnr.   
   ENDIF.   
   
   IF lv_doc_date IS NOT INITIAL.
      ls_audat-sign   = 'I'.
      ls_audat-option = 'EQ'.
      ls_audat-low    = lv_doc_date. 
      APPEND ls_audat TO lr_audat.   
   ENDIF.   
   
   IF lv_doc_type IS NOT INITIAL.
      ls_auart-sign   = 'I'.
      ls_auart-option = 'EQ'.
      ls_auart-low    = lv_doc_type. 
      APPEND ls_auart TO lr_auart.   
   ENDIF.   
   
   IF lv_sales_org IS NOT INITIAL.
      ls_vkorg-sign   = 'I'.
      ls_korg-option = 'EQ'.
      ls_vkorg-low    = lv_sales_org. 
      APPEND ls_vkorg TO lr_vkorg.   
   ENDIF.   

  
  
  IF lr_ernam IS INITIAL AND
     lr_erdata IS INITIAL. " AND....
     CONTINUE.
  ELSE.  
  SELECT * FROM vbak
    iNTO TABLE @DATA(lt_sales_data)
    WHERE vblen = p_vblen
     AND  ernam IN lr_ernam
     AND  erdat IN lr_erdat.
*     AND 
  ENDIF.  

Output :

%d bloggers like this: