SAP/ABAP
[Source] Select Option -> SQL String으로 변환
성공보다는 가치를..
2016. 9. 8. 16:47
728x90
ADBC 사용 시 Select-option을 String으로 변환
사용예제 ) CP는 현재 제외됨(LIKE)
DATA:
lv_field TYPE fieldname,
lv_oper TYPE char10,
lv_value_l TYPE char100,
lv_value_h TYPE char100,
lv_blcode TYPE char100,
lv_cucode TYPE char100.
" Set Condition
$_set_condition: so_blcod lv_blcode 'A.BLCODE',
so_cucod lv_cucode 'A.CUSTCODE'.
DEFINE $_set_condition.
LOOP AT &1.
" 최초 라인에 괄호를 열고 조건을 세팅한다.
IF sy-tabix = 1.
" Set Operation
IF &1-option = 'BT'.
lv_oper = 'BETWEEN'.
ELSE.
IF &1-sign = 'I'.
lv_oper = 'IN'.
ELSE.
lv_oper = 'NOT IN'.
ENDIF.
lv_value_l = '('.
ENDIF.
lv_field = &3.
ENDIF.
" 값이 존재할 경우 해당 값에 추가를 한다.
IF &1-option = 'BT'.
lv_value_h = lv_value_h && | '{ &1-high }' |.
ELSE.
IF lv_value_l IS NOT INITIAL AND strlen( lv_value_l ) > 1.
lv_value_l = lv_value_l && ','.
ENDIF.
ENDIF.
lv_value_l = lv_value_l && | '{ &1-low }' |.
" 최종라인에 괄호를 닫는다.
IF sy-tabix = lines( &1 ).
IF &1-option NE 'BT'.
lv_value_l = lv_value_l && ')'.
CONCATENATE ' AND ' lv_field lv_oper lv_value_l INTO &2 SEPARATED BY space.
ELSE.
CONCATENATE ' AND ' lv_field lv_oper lv_value_l 'AND' lv_value_h INTO &2 SEPARATED BY space.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR: lv_oper, lv_value_l, lv_value_h.
END-OF-DEFINITION.
728x90