Skip to Content
0
Aug 27, 2018 at 04:41 PM

Dynamic where-clause for dynamic internal-tabel

55 Views Last edit Aug 27, 2018 at 10:21 AM 4 rev

I'm currently writing a program, where you can select a database-tabel and two date-fields. After that, report looks for inconsistency.

example:

parameters:
database: ZTIME
1.date: FROM
2.date: TO

Now the report searches for every entry in ZTIME, where TO(2.date) has a bigger value than 1.date(FROM).

I'm struggeling to build a where-conditon, because it has to be dynamic.

*----------------------------------------------------------------------*
* D E K L A R A T I O N *
*----------------------------------------------------------------------*
DATA: lv_tabexist TYPE c,
lv_v1exist TYPE c,
lv_v2exist TYPE c,
o_ref TYPE REF TO data,
lv_ab TYPE string,
lv_bis TYPE string.

* Selektion
SELECTION-SCREEN: BEGIN OF BLOCK w_block_sel
WITH FRAME TITLE text-sel.
PARAMETERS: pa_tab TYPE string,
pa_ab TYPE string,
pa_bis TYPE string.
SELECTION-SCREEN END OF BLOCK w_block_sel.
*----------------------------------------------------------------------*
* D Y N A M I C - I T A B *
*----------------------------------------------------------------------*
DATA: dref TYPE REF TO data.

FIELD-SYMBOLS:
<itab> TYPE STANDARD TABLE, "Dyn. Int. Table
<wa> TYPE any.

* Datenreferenz für die interne Tabelle
CREATE DATA dref TYPE STANDARD TABLE OF (pa_tab).

* De-referenzieren der Datenreferenzvariabel
ASSIGN dref->* TO <itab>.
CLEAR dref.

*----------------------------------------------------------------------*
* GET DATA *
*----------------------------------------------------------------------*

FORM getdata USING pa_tab lv_ab lv_bis itab.

DATA: lv_cond TYPE string.

SELECT * FROM (pa_tab) INTO CORRESPONDING FIELDS OF TABLE <itab> WHERE (lv_cond).

* Daten aussortieren
LOOP AT <itab> ASSIGNING FIELD-SYMBOL(<pos_data>).



ENDLOOP.


ENDFORM.