From ecda5f8bb1550261c57631513a46cfc5949ba19a Mon Sep 17 00:00:00 2001 From: KK W Date: Thu, 14 Nov 2024 09:43:39 +0000 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=BAnative=20sql?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/package.devc.xml | 2 +- src/zcl_abap_seltab_to_where.clas.abap | 12 ++++---- src/zcl_abap_seltab_to_where.clas.xml | 1 - src/zr_demo_seltab_to_where.prog.abap | 38 ++++++++++++++++++++++---- src/zr_demo_seltab_to_where.prog.xml | 2 -- 5 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/package.devc.xml b/src/package.devc.xml index ebd544f..2ed7f28 100644 --- a/src/package.devc.xml +++ b/src/package.devc.xml @@ -3,7 +3,7 @@ - Project: Convert ABAP range tables to SQL where clause + ABAP_SELTAB_TO_WHERE diff --git a/src/zcl_abap_seltab_to_where.clas.abap b/src/zcl_abap_seltab_to_where.clas.abap index 419c512..1e8f9ff 100644 --- a/src/zcl_abap_seltab_to_where.clas.abap +++ b/src/zcl_abap_seltab_to_where.clas.abap @@ -349,12 +349,12 @@ CLASS ZCL_ABAP_SELTAB_TO_WHERE IMPLEMENTATION. METHOD _sql_operator. CASE iv_selop. - WHEN: 'EQ'. rv_sqlop = |EQ { _mv_quote_l }%LOW%{ _mv_quote_r }|. - WHEN: 'NE'. rv_sqlop = |NE { _mv_quote_l }%LOW%{ _mv_quote_r }|. - WHEN: 'GE'. rv_sqlop = |GE { _mv_quote_l }%LOW%{ _mv_quote_r }|. - WHEN: 'LE'. rv_sqlop = |LE { _mv_quote_l }%LOW%{ _mv_quote_r }|. - WHEN: 'GT'. rv_sqlop = |GT { _mv_quote_l }%LOW%{ _mv_quote_r }|. - WHEN: 'LT'. rv_sqlop = |LT { _mv_quote_l }%LOW%{ _mv_quote_r }|. + WHEN: 'EQ'. rv_sqlop = |= { _mv_quote_l }%LOW%{ _mv_quote_r }|. + WHEN: 'NE'. rv_sqlop = |<> { _mv_quote_l }%LOW%{ _mv_quote_r }|. + WHEN: 'GE'. rv_sqlop = |>= { _mv_quote_l }%LOW%{ _mv_quote_r }|. + WHEN: 'LE'. rv_sqlop = |<= { _mv_quote_l }%LOW%{ _mv_quote_r }|. + WHEN: 'GT'. rv_sqlop = |> { _mv_quote_l }%LOW%{ _mv_quote_r }|. + WHEN: 'LT'. rv_sqlop = |< { _mv_quote_l }%LOW%{ _mv_quote_r }|. WHEN: 'CP'. rv_sqlop = |LIKE { _mv_quote_l }%LOW%{ _mv_quote_r }|. WHEN: 'NP'. rv_sqlop = |NOT LIKE { _mv_quote_l }%LOW%{ _mv_quote_r }|. diff --git a/src/zcl_abap_seltab_to_where.clas.xml b/src/zcl_abap_seltab_to_where.clas.xml index 511f128..6680657 100644 --- a/src/zcl_abap_seltab_to_where.clas.xml +++ b/src/zcl_abap_seltab_to_where.clas.xml @@ -4,7 +4,6 @@ ZCL_ABAP_SELTAB_TO_WHERE - 1 E Convert range table to SQL where clause 1 diff --git a/src/zr_demo_seltab_to_where.prog.abap b/src/zr_demo_seltab_to_where.prog.abap index c11ad32..138b0b8 100644 --- a/src/zr_demo_seltab_to_where.prog.abap +++ b/src/zr_demo_seltab_to_where.prog.abap @@ -5,15 +5,43 @@ *&---------------------------------------------------------------------* REPORT zr_demo_seltab_to_where. -DATA: lt_seltab TYPE zcl_abap_seltab_to_where=>tt_named_seltables, - lt_rng_carrid TYPE RANGE OF sflight-carrid. +DATA: lt_seltab TYPE zcl_abap_seltab_to_where=>tt_named_seltables, + lt_rng_carrid TYPE RANGE OF sflight-carrid, + lt_rng_initial TYPE RANGE OF sflight-carrid. -lt_rng_carrid = VALUE #( sign = 'I' option = 'EQ' ( low = 'ABC' ) ). +lt_rng_carrid = VALUE #( +sign = 'I' option = 'EQ' ( low = 'ABC' ) +sign = 'I' option = 'NE' ( low = 'ABC' ) +sign = 'I' option = 'GT' ( low = 'ABC' ) +sign = 'I' option = 'LT' ( low = 'ABC' ) +sign = 'I' option = 'GE' ( low = 'ABC' ) +sign = 'I' option = 'LE' ( low = 'ABC' ) +sign = 'I' option = 'BT' ( low = 'ABC' high = 'ABC' ) +sign = 'E' option = 'EQ' ( low = 'ABC' ) +sign = 'E' option = 'NE' ( low = 'ABC' ) +sign = 'E' option = 'GT' ( low = 'ABC' ) +sign = 'E' option = 'LT' ( low = 'ABC' ) +sign = 'E' option = 'GE' ( low = 'ABC' ) +sign = 'E' option = 'LE' ( low = 'ABC' ) +sign = 'E' option = 'BT' ( low = 'ABC' high = 'ABC' ) +). -lt_seltab = VALUE #( ( name = 'CARRID' dref = REF #( lt_rng_carrid ) ) ). +lt_rng_initial = VALUE #( +sign = 'I' option = 'BT' ( low = 'ABC' high = 'ABC' ) +). + +lt_seltab = VALUE #( +( name = 'CARRID' dref = REF #( lt_rng_carrid ) ) +( name = 'CARRID_INITIAL' dref = REF #( lt_rng_initial ) ) + +). DATA(lv_where) = zcl_abap_seltab_to_where=>combine_seltabs( it_named_seltabs = lt_seltab ). -WRITE: lv_where. +cl_demo_output=>new( + )->begin_section( 'KKW' + )->end_section( + )->write_data( lv_where + )->display( ). diff --git a/src/zr_demo_seltab_to_where.prog.xml b/src/zr_demo_seltab_to_where.prog.xml index ffc92a3..d9d60d2 100644 --- a/src/zr_demo_seltab_to_where.prog.xml +++ b/src/zr_demo_seltab_to_where.prog.xml @@ -4,8 +4,6 @@ ZR_DEMO_SELTAB_TO_WHERE - A - X 1 E X