3.内表的动态查询
DEFINE SELECT_DATA_TO_VARIANT.
SELECT &1
FROM &2
INTO CORRESPONDING FIELDS OF TABLE &3
WHERE (&4).
EXIT.
ENDSELECT.
END-OF-DEFINITION.
SELECT &1
FROM &2
INTO CORRESPONDING FIELDS OF TABLE &3
WHERE (&4).
EXIT.
ENDSELECT.
END-OF-DEFINITION.
具体程序实现:
Code DATA: L_FIELD(100) TYPE C,
L_TABLE(10) TYPE C,
L_COND(100) TYPE C.
DATA: I_COND TYPE TALBE OF L_COND.
FIELD-SYMBOLS <fs> TYPE ANY.
START-OF-SELECTION.
CONCATENATE ‘CARRID’ ‘CONNID’ ‘CITYFROM’
INTO L_S
SEPARATE BY SPACE.
CONCATENATE ‘CONNID = ‘ ‘’ ‘0123’ ‘’’’ INTO L_COND.
APPEND COND TO I_COND.
L_TABLE = ‘SPFLI’.
IF <fs> IS ASSIGNED.
UNASSIGN <fs>.
ASSIGN SPFLI TO <fs>.
ELSE.
ASSIGN SPFLI TO <fs>.
ENDIF.
SELECT_DATA_TO_WA (L_S) (L_TABLE) <fs> I_COND.
L_TABLE(10) TYPE C,
L_COND(100) TYPE C.
DATA: I_COND TYPE TALBE OF L_COND.
FIELD-SYMBOLS <fs> TYPE ANY.
START-OF-SELECTION.
CONCATENATE ‘CARRID’ ‘CONNID’ ‘CITYFROM’
INTO L_S
SEPARATE BY SPACE.
CONCATENATE ‘CONNID = ‘ ‘’ ‘0123’ ‘’’’ INTO L_COND.
APPEND COND TO I_COND.
L_TABLE = ‘SPFLI’.
IF <fs> IS ASSIGNED.
UNASSIGN <fs>.
ASSIGN SPFLI TO <fs>.
ELSE.
ASSIGN SPFLI TO <fs>.
ENDIF.
SELECT_DATA_TO_WA (L_S) (L_TABLE) <fs> I_COND.