SAP/ABAP
동적 쿼리
DrkLion
2008. 2. 1. 16:18
쿼리를 동적으로 처리해야 하는 경우 활용 가능..
쿼리 자체를 여러번 쓸수도 있겠지만..
소스가 지저분해져서 고급스럽지 않으니...
선택해오는 필드도 가능하고, source table 도 가능하고,
where 절도 동적으로 처리 가능하다.
REPORT YTEST_KTH6 .
FTAB = 'CARRID CONNID'.
APPEND FTAB.
SELECT (FTAB)
FROM SPFLI
INTO CORRESPONDING FIELDS OF WA_SPFLI
WHERE (WTAB).
쿼리 자체를 여러번 쓸수도 있겠지만..
소스가 지저분해져서 고급스럽지 않으니...
선택해오는 필드도 가능하고, source table 도 가능하고,
where 절도 동적으로 처리 가능하다.
REPORT YTEST_KTH6 .
PARAMETERS: CARR_ID LIKE SPFLI-CARRID,
CONN_ID LIKE SPFLI-CONNID.
CONN_ID LIKE SPFLI-CONNID.
DATA: FTAB(256) OCCURS 0 WITH HEADER LINE,
WTAB(72) OCCURS 100 WITH HEADER LINE,
AND(4),
WA_SPFLI TYPE SPFLI.
WTAB(72) OCCURS 100 WITH HEADER LINE,
AND(4),
WA_SPFLI TYPE SPFLI.
REFRESH : FTAB, WTAB.
FTAB = 'CARRID CONNID'.
APPEND FTAB.
IF NOT CARR_ID IS INITIAL.
FTAB = 'CITYFROM CITYTO'.
APPEND FTAB.
FTAB = 'CITYFROM CITYTO'.
APPEND FTAB.
CONCATENATE 'CARRID = ''' CARR_ID '''' INTO WTAB.
APPEND WTAB.
AND = 'AND'.
ENDIF.
APPEND WTAB.
AND = 'AND'.
ENDIF.
IF NOT CONN_ID IS INITIAL.
FTAB = 'DEPTIME ARRTIME'.
APPEND FTAB.
FTAB = 'DEPTIME ARRTIME'.
APPEND FTAB.
CONCATENATE AND ' CONNID = ''' CONN_ID '''' INTO WTAB.
APPEND WTAB.
ENDIF.
APPEND WTAB.
ENDIF.
SELECT (FTAB)
FROM SPFLI
INTO CORRESPONDING FIELDS OF WA_SPFLI
WHERE (WTAB).
WRITE: / WA_SPFLI-CARRID,
WA_SPFLI-CONNID,
WA_SPFLI-CITYFROM,
WA_SPFLI-CITYTO,
WA_SPFLI-DEPTIME.
ENDSELECT.
WA_SPFLI-CONNID,
WA_SPFLI-CITYFROM,
WA_SPFLI-CITYTO,
WA_SPFLI-DEPTIME.
ENDSELECT.