mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
refactor concatenated_key_to_where() (#6531)
This commit is contained in:
parent
58da735823
commit
97cdd3afa8
|
@ -27,12 +27,12 @@
|
|||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@abaplint/cli": "^2.102.51",
|
||||
"@abaplint/cli": "^2.102.56",
|
||||
"@abaplint/database-sqlite": "^2.7.101",
|
||||
"@abaplint/runtime": "^2.7.101",
|
||||
"@abaplint/transpiler-cli": "^2.7.101",
|
||||
"@abaplint/runtime": "^2.7.102",
|
||||
"@abaplint/transpiler-cli": "^2.7.102",
|
||||
"abapmerge": "^0.16.0",
|
||||
"c8": "^8.0.1",
|
||||
"eslint": "^8.50.0"
|
||||
"eslint": "^8.51.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ CLASS zcl_abapgit_data_utils DEFINITION
|
|||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES ty_names TYPE STANDARD TABLE OF abap_compname WITH DEFAULT KEY .
|
||||
CLASS-METHODS build_table_itab
|
||||
IMPORTING
|
||||
!iv_name TYPE tadir-obj_name
|
||||
|
@ -24,8 +24,6 @@ CLASS zcl_abapgit_data_utils DEFINITION
|
|||
CLASS-METHODS jump
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
RETURNING
|
||||
VALUE(rv_exit) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS does_table_exist
|
||||
|
@ -38,9 +36,6 @@ CLASS zcl_abapgit_data_utils DEFINITION
|
|||
!iv_name TYPE tadir-obj_name
|
||||
RETURNING
|
||||
VALUE(rv_customizing) TYPE abap_bool.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
TYPES ty_names TYPE STANDARD TABLE OF abap_compname WITH DEFAULT KEY .
|
||||
CLASS-METHODS list_key_fields
|
||||
IMPORTING
|
||||
!iv_name TYPE tadir-obj_name
|
||||
|
@ -48,6 +43,8 @@ CLASS zcl_abapgit_data_utils DEFINITION
|
|||
VALUE(rt_names) TYPE ty_names
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
|
|
@ -309,6 +309,8 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS: <li_repo> LIKE LINE OF mt_list.
|
||||
|
||||
ASSERT iv_key IS NOT INITIAL.
|
||||
|
||||
IF mv_init = abap_false.
|
||||
refresh_all( ).
|
||||
ENDIF.
|
||||
|
|
|
@ -51,7 +51,9 @@ CLASS zcl_abapgit_gui_page_data DEFINITION
|
|||
!iv_table TYPE tabname
|
||||
!iv_tabkey TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_where) TYPE string .
|
||||
VALUE(rv_where) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS add_via_transport
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
@ -153,28 +155,38 @@ CLASS zcl_abapgit_gui_page_data IMPLEMENTATION.
|
|||
METHOD concatenated_key_to_where.
|
||||
|
||||
DATA lo_structdescr TYPE REF TO cl_abap_structdescr.
|
||||
DATA lt_fields TYPE ddfields.
|
||||
DATA ls_field LIKE LINE OF lt_fields.
|
||||
DATA lo_typedescr TYPE REF TO cl_abap_typedescr.
|
||||
DATA lt_fields TYPE zcl_abapgit_data_utils=>ty_names.
|
||||
DATA lv_field LIKE LINE OF lt_fields.
|
||||
DATA lv_table TYPE tadir-obj_name.
|
||||
DATA lv_length TYPE i.
|
||||
DATA lv_tabix TYPE i.
|
||||
DATA lv_key TYPE c LENGTH 900.
|
||||
|
||||
lv_key = iv_tabkey.
|
||||
lo_structdescr ?= cl_abap_typedescr=>describe_by_name( iv_table ).
|
||||
|
||||
lt_fields = lo_structdescr->get_ddic_field_list( ).
|
||||
lv_table = iv_table.
|
||||
lt_fields = zcl_abapgit_data_utils=>list_key_fields( lv_table ).
|
||||
|
||||
LOOP AT lt_fields INTO ls_field WHERE keyflag = abap_true.
|
||||
IF ls_field-position = '0001' AND ls_field-datatype = 'CLNT'.
|
||||
lv_key = lv_key+ls_field-leng.
|
||||
LOOP AT lt_fields INTO lv_field.
|
||||
lv_tabix = sy-tabix.
|
||||
lo_typedescr = cl_abap_typedescr=>describe_by_name( |{ iv_table }-{ lv_field }| ).
|
||||
lv_length = lo_typedescr->length / cl_abap_char_utilities=>charsize.
|
||||
|
||||
IF lv_tabix = 1 AND lo_typedescr->get_relative_name( ) = 'MANDT'.
|
||||
lv_key = lv_key+lv_length.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
IF lv_key = |*|.
|
||||
EXIT. " current loop
|
||||
ENDIF.
|
||||
IF NOT rv_where IS INITIAL.
|
||||
rv_where = |{ rv_where } AND |.
|
||||
ENDIF.
|
||||
rv_where = |{ rv_where }{ to_lower( ls_field-fieldname ) } = '{ lv_key(ls_field-leng) }'|.
|
||||
lv_key = lv_key+ls_field-leng.
|
||||
rv_where = |{ rv_where }{ to_lower( lv_field ) } = '{ lv_key(lv_length) }'|.
|
||||
lv_key = lv_key+lv_length.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -8,6 +8,7 @@ CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
|||
METHODS concatenated_key_to_where2 FOR TESTING RAISING cx_static_check.
|
||||
METHODS concatenated_key_to_where3 FOR TESTING RAISING cx_static_check.
|
||||
METHODS concatenated_key_to_where4 FOR TESTING RAISING cx_static_check.
|
||||
METHODS with_mandt FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -69,4 +70,23 @@ CLASS ltcl_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD with_mandt.
|
||||
|
||||
DATA lv_where TYPE string.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
* dont run on open-abap
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_where = zcl_abapgit_gui_page_data=>concatenated_key_to_where(
|
||||
iv_table = 'USR02'
|
||||
iv_tabkey = '100ASDF' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_where
|
||||
exp = |bname = 'ASDF'| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -358,7 +358,7 @@ INTERFACE zif_abapgit_definitions
|
|||
go_background TYPE string VALUE 'go_background',
|
||||
go_background_run TYPE string VALUE 'go_background_run',
|
||||
go_repo_diff TYPE string VALUE 'go_repo_diff',
|
||||
go_file_diff TYPE string VALUE 'go_fill_diff',
|
||||
go_file_diff TYPE string VALUE 'go_file_diff',
|
||||
go_stage TYPE string VALUE 'go_stage',
|
||||
go_stage_transport TYPE string VALUE 'go_stage_transport',
|
||||
go_commit TYPE string VALUE 'go_commit',
|
||||
|
|
Loading…
Reference in New Issue
Block a user