mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
data: use ajson for serialization (#4363)
* data: use ajson for serialization * config to_json * implement from_json * fix * move method build_table_itab to new class * start deserialize * update * scaffolding * add page * upd * fix warning * update * rename variable * upd * update * reorder
This commit is contained in:
parent
2b7a60daeb
commit
1d1d046d39
|
@ -11,8 +11,17 @@ CLASS zcl_abapgit_data_config DEFINITION
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
CONSTANTS c_extension TYPE string VALUE '.config.json'.
|
||||||
DATA mv_path TYPE string .
|
DATA mv_path TYPE string .
|
||||||
DATA mt_config TYPE zif_abapgit_data_config=>ty_config_tt .
|
DATA mt_config TYPE zif_abapgit_data_config=>ty_config_tt .
|
||||||
|
|
||||||
|
METHODS dump
|
||||||
|
IMPORTING
|
||||||
|
!is_config TYPE zif_abapgit_data_config=>ty_config
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_json) TYPE string
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,10 +36,31 @@ CLASS ZCL_ABAPGIT_DATA_CONFIG IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD dump.
|
||||||
|
|
||||||
|
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
|
||||||
|
DATA lv_string TYPE string.
|
||||||
|
DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
|
||||||
|
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_ajson = zcl_abapgit_ajson=>create_empty( ).
|
||||||
|
lo_ajson->zif_abapgit_ajson_writer~set(
|
||||||
|
iv_path = '/'
|
||||||
|
iv_val = is_config ).
|
||||||
|
rv_json = zcl_abapgit_convert=>string_to_xstring_utf8( lo_ajson->stringify( 2 ) ).
|
||||||
|
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
|
||||||
|
zcx_abapgit_exception=>raise( lx_ajson->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_data_config~add_config.
|
METHOD zif_abapgit_data_config~add_config.
|
||||||
|
|
||||||
ASSERT NOT is_config-type IS INITIAL.
|
ASSERT NOT is_config-type IS INITIAL.
|
||||||
ASSERT NOT is_config-name IS INITIAL.
|
ASSERT NOT is_config-name IS INITIAL.
|
||||||
|
ASSERT is_config-name = to_upper( is_config-name ).
|
||||||
|
|
||||||
INSERT is_config INTO TABLE mt_config.
|
INSERT is_config INTO TABLE mt_config.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
|
@ -41,8 +71,24 @@ CLASS ZCL_ABAPGIT_DATA_CONFIG IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_data_config~from_json.
|
METHOD zif_abapgit_data_config~from_json.
|
||||||
* todo
|
|
||||||
ASSERT 0 = 1.
|
DATA ls_file LIKE LINE OF it_files.
|
||||||
|
DATA ls_config TYPE zif_abapgit_data_config=>ty_config.
|
||||||
|
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
|
||||||
|
DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
|
||||||
|
|
||||||
|
CLEAR mt_config.
|
||||||
|
LOOP AT it_files INTO ls_file WHERE path = mv_path AND filename CP |*{ c_extension }|.
|
||||||
|
TRY.
|
||||||
|
lo_ajson = zcl_abapgit_ajson=>parse( zcl_abapgit_convert=>xstring_to_string_utf8( ls_file-data ) ).
|
||||||
|
lo_ajson->zif_abapgit_ajson_reader~to_abap( IMPORTING ev_container = ls_config ).
|
||||||
|
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
|
||||||
|
zcx_abapgit_exception=>raise( lx_ajson->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
zif_abapgit_data_config~add_config( ls_config ).
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,7 +106,9 @@ CLASS ZCL_ABAPGIT_DATA_CONFIG IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_data_config~remove_config.
|
METHOD zif_abapgit_data_config~remove_config.
|
||||||
|
|
||||||
* todo, give exception if it does not exist
|
ASSERT NOT is_config-type IS INITIAL.
|
||||||
|
ASSERT NOT is_config-name IS INITIAL.
|
||||||
|
ASSERT is_config-name = to_upper( is_config-name ).
|
||||||
|
|
||||||
DELETE mt_config WHERE name = is_config-name AND type = is_config-type.
|
DELETE mt_config WHERE name = is_config-name AND type = is_config-type.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
|
@ -80,8 +128,19 @@ CLASS ZCL_ABAPGIT_DATA_CONFIG IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_data_config~to_json.
|
METHOD zif_abapgit_data_config~to_json.
|
||||||
* todo
|
|
||||||
ASSERT 0 = 1.
|
DATA ls_config LIKE LINE OF mt_config.
|
||||||
|
DATA ls_file LIKE LINE OF rt_files.
|
||||||
|
|
||||||
|
ls_file-path = mv_path.
|
||||||
|
|
||||||
|
LOOP AT mt_config INTO ls_config.
|
||||||
|
ls_file-filename = to_lower( |{ ls_config-name }{ c_extension }| ).
|
||||||
|
ls_file-data = dump( ls_config ).
|
||||||
|
ls_file-sha1 = zcl_abapgit_hash=>sha1_blob( ls_file-data ).
|
||||||
|
APPEND ls_file TO rt_files.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
80
src/data/zcl_abapgit_data_config.clas.testclasses.abap
Normal file
80
src/data/zcl_abapgit_data_config.clas.testclasses.abap
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA mv_json TYPE string.
|
||||||
|
DATA ms_config TYPE zif_abapgit_data_config=>ty_config.
|
||||||
|
|
||||||
|
METHODS setup.
|
||||||
|
METHODS to_json FOR TESTING RAISING cx_static_check.
|
||||||
|
METHODS from_json
|
||||||
|
IMPORTING it_files TYPE zif_abapgit_definitions=>ty_files_tt
|
||||||
|
RAISING cx_static_check.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_test IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD setup.
|
||||||
|
|
||||||
|
mv_json = |\{\n| &&
|
||||||
|
| "name": "DUMMY",\n| &&
|
||||||
|
| "type": "TABU",\n| &&
|
||||||
|
| "where": [\n| &&
|
||||||
|
| "DUMMY"\n| &&
|
||||||
|
| ]\n| &&
|
||||||
|
|\}|.
|
||||||
|
|
||||||
|
ms_config-type = zif_abapgit_data_config=>c_data_type-tabu.
|
||||||
|
ms_config-name = 'DUMMY'.
|
||||||
|
APPEND 'DUMMY' TO ms_config-where.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD to_json.
|
||||||
|
|
||||||
|
DATA li_config TYPE REF TO zif_abapgit_data_config.
|
||||||
|
DATA lt_files TYPE zif_abapgit_definitions=>ty_files_tt.
|
||||||
|
DATA ls_file LIKE LINE OF lt_files.
|
||||||
|
DATA lv_json TYPE string.
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OBJECT li_config TYPE zcl_abapgit_data_config.
|
||||||
|
li_config->add_config( ms_config ).
|
||||||
|
|
||||||
|
lt_files = li_config->to_json( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lines( lt_files )
|
||||||
|
exp = 1 ).
|
||||||
|
|
||||||
|
READ TABLE lt_files INDEX 1 INTO ls_file.
|
||||||
|
cl_abap_unit_assert=>assert_subrc( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_not_initial( ls_file-data ).
|
||||||
|
|
||||||
|
lv_json = zcl_abapgit_convert=>xstring_to_string_utf8( ls_file-data ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lv_json
|
||||||
|
exp = mv_json ).
|
||||||
|
|
||||||
|
from_json( lt_files ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD from_json.
|
||||||
|
|
||||||
|
DATA li_config TYPE REF TO zif_abapgit_data_config.
|
||||||
|
|
||||||
|
CREATE OBJECT li_config TYPE zcl_abapgit_data_config.
|
||||||
|
|
||||||
|
li_config->from_json( it_files ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lines( li_config->get_configs( ) )
|
||||||
|
exp = 1 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
<UNICODE>X</UNICODE>
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
</VSEOCLASS>
|
</VSEOCLASS>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
|
@ -8,6 +8,13 @@ CLASS zcl_abapgit_data_deserializer DEFINITION
|
||||||
INTERFACES zif_abapgit_data_deserializer .
|
INTERFACES zif_abapgit_data_deserializer .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS read_json
|
||||||
|
IMPORTING
|
||||||
|
!is_file TYPE zif_abapgit_definitions=>ty_file
|
||||||
|
!ir_data TYPE REF TO data
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,8 +22,61 @@ ENDCLASS.
|
||||||
CLASS ZCL_ABAPGIT_DATA_DESERIALIZER IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_DATA_DESERIALIZER IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD read_json.
|
||||||
|
|
||||||
|
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
|
||||||
|
DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
|
||||||
|
FIELD-SYMBOLS <lg_tab> TYPE ANY TABLE.
|
||||||
|
|
||||||
|
|
||||||
|
ASSIGN ir_data->* TO <lg_tab>.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_ajson = zcl_abapgit_ajson=>parse( zcl_abapgit_convert=>xstring_to_string_utf8( is_file-data ) ).
|
||||||
|
lo_ajson->zif_abapgit_ajson_reader~to_abap( IMPORTING ev_container = <lg_tab> ).
|
||||||
|
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
|
||||||
|
zcx_abapgit_exception=>raise( lx_ajson->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_data_deserializer~actualize.
|
||||||
|
|
||||||
|
* todo, this method will update the database
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_data_deserializer~deserialize.
|
METHOD zif_abapgit_data_deserializer~deserialize.
|
||||||
|
|
||||||
|
* this method does not persist any changes to the database
|
||||||
|
|
||||||
|
DATA lt_configs TYPE zif_abapgit_data_config=>ty_config_tt.
|
||||||
|
DATA ls_config LIKE LINE OF lt_configs.
|
||||||
|
DATA lr_data TYPE REF TO data.
|
||||||
|
DATA ls_file LIKE LINE OF it_files.
|
||||||
|
|
||||||
|
|
||||||
|
lt_configs = ii_config->get_configs( ).
|
||||||
|
|
||||||
|
LOOP AT lt_configs INTO ls_config.
|
||||||
|
|
||||||
|
lr_data = zcl_abapgit_data_utils=>build_table_itab( ls_config-name ).
|
||||||
|
|
||||||
|
READ TABLE it_files INTO ls_file WITH KEY
|
||||||
|
path = ii_config->get_path( )
|
||||||
|
filename = zcl_abapgit_data_utils=>build_filename( ls_config ).
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
read_json(
|
||||||
|
ir_data = lr_data
|
||||||
|
is_file = ls_file ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
* todo
|
* todo
|
||||||
|
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
32
src/data/zcl_abapgit_data_deserializer.clas.testclasses.abap
Normal file
32
src/data/zcl_abapgit_data_deserializer.clas.testclasses.abap
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS test1 FOR TESTING RAISING cx_static_check.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_test IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD test1.
|
||||||
|
|
||||||
|
DATA li_cut TYPE REF TO zif_abapgit_data_deserializer.
|
||||||
|
DATA li_config TYPE REF TO zif_abapgit_data_config.
|
||||||
|
DATA lt_files TYPE zif_abapgit_definitions=>ty_files_tt.
|
||||||
|
DATA ls_config TYPE zif_abapgit_data_config=>ty_config.
|
||||||
|
|
||||||
|
CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer.
|
||||||
|
CREATE OBJECT li_config TYPE zcl_abapgit_data_config.
|
||||||
|
|
||||||
|
ls_config-type = zif_abapgit_data_config=>c_data_type-tabu.
|
||||||
|
ls_config-name = 'SFLIGHT'.
|
||||||
|
|
||||||
|
li_config->add_config( ls_config ).
|
||||||
|
|
||||||
|
li_cut->deserialize(
|
||||||
|
ii_config = li_config
|
||||||
|
it_files = lt_files ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
|
@ -5,11 +5,12 @@
|
||||||
<VSEOCLASS>
|
<VSEOCLASS>
|
||||||
<CLSNAME>ZCL_ABAPGIT_DATA_DESERIALIZER</CLSNAME>
|
<CLSNAME>ZCL_ABAPGIT_DATA_DESERIALIZER</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abapGit - Data deserializer</DESCRIPT>
|
<DESCRIPT>abapGit - Data Deserializer</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
<UNICODE>X</UNICODE>
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
</VSEOCLASS>
|
</VSEOCLASS>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<VSEOCLASS>
|
<VSEOCLASS>
|
||||||
<CLSNAME>ZCL_ABAPGIT_DATA_FACTORY</CLSNAME>
|
<CLSNAME>ZCL_ABAPGIT_DATA_FACTORY</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abapGit - Data factory</DESCRIPT>
|
<DESCRIPT>abapGit - Data Factory</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<VSEOCLASS>
|
<VSEOCLASS>
|
||||||
<CLSNAME>ZCL_ABAPGIT_DATA_INJECTOR</CLSNAME>
|
<CLSNAME>ZCL_ABAPGIT_DATA_INJECTOR</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abapGit - Data injector</DESCRIPT>
|
<DESCRIPT>abapGit - Data Injector</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
|
|
|
@ -12,12 +12,9 @@ CLASS zcl_abapgit_data_serializer DEFINITION
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ir_data TYPE REF TO data
|
!ir_data TYPE REF TO data
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_data) TYPE xstring .
|
VALUE(rv_data) TYPE xstring
|
||||||
METHODS build_table_itab
|
RAISING
|
||||||
IMPORTING
|
zcx_abapgit_exception .
|
||||||
!iv_name TYPE tadir-obj_name
|
|
||||||
RETURNING
|
|
||||||
VALUE(rr_data) TYPE REF TO data .
|
|
||||||
METHODS read_database_table
|
METHODS read_database_table
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_name TYPE tadir-obj_name
|
!iv_name TYPE tadir-obj_name
|
||||||
|
@ -32,41 +29,27 @@ ENDCLASS.
|
||||||
CLASS ZCL_ABAPGIT_DATA_SERIALIZER IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_DATA_SERIALIZER IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD build_table_itab.
|
|
||||||
|
|
||||||
DATA lo_structure TYPE REF TO cl_abap_structdescr.
|
|
||||||
DATA lo_table TYPE REF TO cl_abap_tabledescr.
|
|
||||||
|
|
||||||
lo_structure ?= cl_abap_structdescr=>describe_by_name( iv_name ).
|
|
||||||
* todo, also add unique key corresponding to the db table, so duplicates cannot be returned
|
|
||||||
lo_table = cl_abap_tabledescr=>create( lo_structure ).
|
|
||||||
CREATE DATA rr_data TYPE HANDLE lo_table.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD dump_itab.
|
METHOD dump_itab.
|
||||||
|
|
||||||
* quick and dirty, will be json instead
|
DATA lo_ajson TYPE REF TO zcl_abapgit_ajson.
|
||||||
|
DATA lv_string TYPE string.
|
||||||
DATA lt_data TYPE string_table.
|
DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
|
||||||
DATA lv_str TYPE string.
|
|
||||||
FIELD-SYMBOLS <lg_tab> TYPE ANY TABLE.
|
FIELD-SYMBOLS <lg_tab> TYPE ANY TABLE.
|
||||||
FIELD-SYMBOLS <ls_row> TYPE any.
|
|
||||||
|
|
||||||
|
|
||||||
ASSIGN ir_data->* TO <lg_tab>.
|
ASSIGN ir_data->* TO <lg_tab>.
|
||||||
LOOP AT <lg_tab> ASSIGNING <ls_row>.
|
|
||||||
cl_abap_container_utilities=>fill_container_c(
|
|
||||||
EXPORTING
|
|
||||||
im_value = <ls_row>
|
|
||||||
IMPORTING
|
|
||||||
ex_container = lv_str ).
|
|
||||||
APPEND lv_str TO lt_data.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( concat_lines_of( table = lt_data
|
TRY.
|
||||||
sep = |\n| ) ).
|
lo_ajson = zcl_abapgit_ajson=>create_empty( ).
|
||||||
|
lo_ajson->zif_abapgit_ajson_writer~set(
|
||||||
|
iv_path = '/'
|
||||||
|
iv_val = <lg_tab> ).
|
||||||
|
lv_string = lo_ajson->stringify( 2 ).
|
||||||
|
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
|
||||||
|
zcx_abapgit_exception=>raise( lx_ajson->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -76,7 +59,7 @@ CLASS ZCL_ABAPGIT_DATA_SERIALIZER IMPLEMENTATION.
|
||||||
DATA lv_where LIKE LINE OF it_where.
|
DATA lv_where LIKE LINE OF it_where.
|
||||||
FIELD-SYMBOLS: <lg_tab> TYPE ANY TABLE.
|
FIELD-SYMBOLS: <lg_tab> TYPE ANY TABLE.
|
||||||
|
|
||||||
rr_data = build_table_itab( iv_name ).
|
rr_data = zcl_abapgit_data_utils=>build_table_itab( iv_name ).
|
||||||
ASSIGN rr_data->* TO <lg_tab>.
|
ASSIGN rr_data->* TO <lg_tab>.
|
||||||
|
|
||||||
LOOP AT it_where INTO lv_where.
|
LOOP AT it_where INTO lv_where.
|
||||||
|
@ -108,7 +91,7 @@ CLASS ZCL_ABAPGIT_DATA_SERIALIZER IMPLEMENTATION.
|
||||||
iv_name = ls_config-name
|
iv_name = ls_config-name
|
||||||
it_where = ls_config-where ).
|
it_where = ls_config-where ).
|
||||||
|
|
||||||
ls_file-filename = to_lower( |{ ls_config-name }.{ ls_config-type }.todo| ).
|
ls_file-filename = zcl_abapgit_data_utils=>build_filename( ls_config ).
|
||||||
ls_file-data = dump_itab( lr_data ).
|
ls_file-data = dump_itab( lr_data ).
|
||||||
ls_file-sha1 = zcl_abapgit_hash=>sha1_blob( ls_file-data ).
|
ls_file-sha1 = zcl_abapgit_hash=>sha1_blob( ls_file-data ).
|
||||||
APPEND ls_file TO rt_files.
|
APPEND ls_file TO rt_files.
|
||||||
|
|
45
src/data/zcl_abapgit_data_utils.clas.abap
Normal file
45
src/data/zcl_abapgit_data_utils.clas.abap
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
CLASS zcl_abapgit_data_utils DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
CLASS-METHODS build_table_itab
|
||||||
|
IMPORTING
|
||||||
|
!iv_name TYPE tadir-obj_name
|
||||||
|
RETURNING
|
||||||
|
VALUE(rr_data) TYPE REF TO data .
|
||||||
|
|
||||||
|
CLASS-METHODS build_filename
|
||||||
|
IMPORTING
|
||||||
|
is_config TYPE zif_abapgit_data_config=>ty_config
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_filename) TYPE string.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_DATA_UTILS IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD build_filename.
|
||||||
|
|
||||||
|
rv_filename = to_lower( |{ is_config-name }.{ is_config-type }.json| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD build_table_itab.
|
||||||
|
|
||||||
|
DATA lo_structure TYPE REF TO cl_abap_structdescr.
|
||||||
|
DATA lo_table TYPE REF TO cl_abap_tabledescr.
|
||||||
|
|
||||||
|
lo_structure ?= cl_abap_structdescr=>describe_by_name( iv_name ).
|
||||||
|
* todo, also add unique key corresponding to the db table, so duplicates cannot be returned
|
||||||
|
lo_table = cl_abap_tabledescr=>create( lo_structure ).
|
||||||
|
CREATE DATA rr_data TYPE HANDLE lo_table.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/data/zcl_abapgit_data_utils.clas.xml
Normal file
16
src/data/zcl_abapgit_data_utils.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_DATA_UTILS</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit - Data Utils</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -37,7 +37,9 @@ INTERFACE zif_abapgit_data_config
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS to_json
|
METHODS to_json
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt .
|
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS add_config
|
METHODS add_config
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!is_config TYPE ty_config
|
!is_config TYPE ty_config
|
||||||
|
|
|
@ -1,9 +1,26 @@
|
||||||
INTERFACE zif_abapgit_data_deserializer
|
INTERFACE zif_abapgit_data_deserializer
|
||||||
PUBLIC .
|
PUBLIC .
|
||||||
|
|
||||||
|
TYPES: BEGIN OF ty_result,
|
||||||
|
table TYPE tadir-obj_name,
|
||||||
|
deletes TYPE REF TO data,
|
||||||
|
updates TYPE REF TO data,
|
||||||
|
inserts TYPE REF TO data,
|
||||||
|
END OF ty_result.
|
||||||
|
|
||||||
METHODS deserialize
|
METHODS deserialize
|
||||||
IMPORTING
|
IMPORTING
|
||||||
ii_config TYPE REF TO zif_abapgit_data_config
|
!ii_config TYPE REF TO zif_abapgit_data_config
|
||||||
it_files TYPE zif_abapgit_definitions=>ty_files_tt.
|
!it_files TYPE zif_abapgit_definitions=>ty_files_tt
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_result) TYPE ty_result
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
|
METHODS actualize
|
||||||
|
IMPORTING
|
||||||
|
is_result TYPE ty_result
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
225
src/ui/zcl_abapgit_gui_page_data.clas.abap
Normal file
225
src/ui/zcl_abapgit_gui_page_data.clas.abap
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
CLASS zcl_abapgit_gui_page_data DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
INHERITING FROM zcl_abapgit_gui_page
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
|
METHODS zif_abapgit_gui_event_handler~on_event
|
||||||
|
REDEFINITION .
|
||||||
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
BEGIN OF c_event,
|
||||||
|
add TYPE string VALUE 'add',
|
||||||
|
update TYPE string VALUE 'update',
|
||||||
|
remove TYPE string VALUE 'remove',
|
||||||
|
END OF c_event .
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
BEGIN OF c_id,
|
||||||
|
table TYPE string VALUE 'table',
|
||||||
|
where TYPE string VALUE 'where',
|
||||||
|
END OF c_id .
|
||||||
|
|
||||||
|
DATA mi_config TYPE REF TO zif_abapgit_data_config .
|
||||||
|
|
||||||
|
METHODS render_content
|
||||||
|
REDEFINITION .
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS render_add
|
||||||
|
RETURNING
|
||||||
|
VALUE(ri_html) TYPE REF TO zif_abapgit_html .
|
||||||
|
METHODS render_existing
|
||||||
|
RETURNING
|
||||||
|
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
METHODS event_add
|
||||||
|
IMPORTING
|
||||||
|
!ii_event TYPE REF TO zif_abapgit_gui_event
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
METHODS event_remove
|
||||||
|
IMPORTING
|
||||||
|
!ii_event TYPE REF TO zif_abapgit_gui_event
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
METHODS event_update
|
||||||
|
IMPORTING
|
||||||
|
!ii_event TYPE REF TO zif_abapgit_gui_event
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_GUI_PAGE_DATA IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
super->constructor( ).
|
||||||
|
|
||||||
|
ms_control-page_title = 'Data'.
|
||||||
|
|
||||||
|
CREATE OBJECT mi_config TYPE zcl_abapgit_data_config.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD event_add.
|
||||||
|
|
||||||
|
DATA lo_map TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
DATA ls_config TYPE zif_abapgit_data_config=>ty_config.
|
||||||
|
|
||||||
|
lo_map = ii_event->form_data( ).
|
||||||
|
|
||||||
|
ls_config-type = zif_abapgit_data_config=>c_data_type-tabu.
|
||||||
|
ls_config-name = to_upper( lo_map->get( c_id-table ) ).
|
||||||
|
SPLIT lo_map->get( c_id-where ) AT |\n| INTO TABLE ls_config-where.
|
||||||
|
|
||||||
|
mi_config->add_config( ls_config ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD event_remove.
|
||||||
|
|
||||||
|
DATA lo_map TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
DATA ls_config TYPE zif_abapgit_data_config=>ty_config.
|
||||||
|
|
||||||
|
lo_map = ii_event->form_data( ).
|
||||||
|
|
||||||
|
ls_config-type = zif_abapgit_data_config=>c_data_type-tabu.
|
||||||
|
ls_config-name = to_upper( lo_map->get( c_id-table ) ).
|
||||||
|
|
||||||
|
mi_config->remove_config( ls_config ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD event_update.
|
||||||
|
|
||||||
|
DATA lo_map TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
DATA ls_config TYPE zif_abapgit_data_config=>ty_config.
|
||||||
|
|
||||||
|
lo_map = ii_event->form_data( ).
|
||||||
|
|
||||||
|
ls_config-type = zif_abapgit_data_config=>c_data_type-tabu.
|
||||||
|
ls_config-name = to_upper( lo_map->get( c_id-table ) ).
|
||||||
|
SPLIT lo_map->get( c_id-where ) AT |\n| INTO TABLE ls_config-where.
|
||||||
|
|
||||||
|
mi_config->update_config( ls_config ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_add.
|
||||||
|
|
||||||
|
DATA lo_form TYPE REF TO zcl_abapgit_html_form.
|
||||||
|
DATA lo_form_data TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
|
||||||
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
CREATE OBJECT lo_form_data.
|
||||||
|
|
||||||
|
lo_form = zcl_abapgit_html_form=>create( ).
|
||||||
|
lo_form->text(
|
||||||
|
iv_label = 'Table'
|
||||||
|
iv_name = c_id-table
|
||||||
|
iv_required = abap_true ).
|
||||||
|
lo_form->textarea(
|
||||||
|
iv_label = 'Where'
|
||||||
|
iv_placeholder = 'Conditions separated by newline'
|
||||||
|
iv_name = c_id-where ).
|
||||||
|
lo_form->command(
|
||||||
|
iv_label = 'Add'
|
||||||
|
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
|
||||||
|
iv_action = c_event-add ).
|
||||||
|
ri_html->add( lo_form->render(
|
||||||
|
iv_form_class = 'dialog w600px m-em5-sides margin-v1'
|
||||||
|
io_values = lo_form_data ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_content.
|
||||||
|
|
||||||
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
|
ri_html->add( render_add( ) ).
|
||||||
|
ri_html->add( render_existing( ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_existing.
|
||||||
|
|
||||||
|
DATA lo_form TYPE REF TO zcl_abapgit_html_form.
|
||||||
|
DATA lo_form_data TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
DATA lt_configs TYPE zif_abapgit_data_config=>ty_config_tt.
|
||||||
|
DATA ls_config LIKE LINE OF lt_configs.
|
||||||
|
|
||||||
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
CREATE OBJECT lo_form_data.
|
||||||
|
|
||||||
|
lt_configs = mi_config->get_configs( ).
|
||||||
|
|
||||||
|
LOOP AT lt_configs INTO ls_config.
|
||||||
|
lo_form = zcl_abapgit_html_form=>create( ).
|
||||||
|
CREATE OBJECT lo_form_data.
|
||||||
|
|
||||||
|
lo_form_data->set(
|
||||||
|
iv_key = c_id-table
|
||||||
|
iv_val = |{ ls_config-name }| ).
|
||||||
|
lo_form->text(
|
||||||
|
iv_label = 'Table'
|
||||||
|
iv_name = c_id-table
|
||||||
|
iv_readonly = abap_true ).
|
||||||
|
|
||||||
|
lo_form_data->set(
|
||||||
|
iv_key = c_id-where
|
||||||
|
iv_val = concat_lines_of( table = ls_config-where sep = |\n| ) ).
|
||||||
|
lo_form->textarea(
|
||||||
|
iv_label = 'Where'
|
||||||
|
iv_placeholder = 'Conditions separated by newline'
|
||||||
|
iv_name = c_id-where ).
|
||||||
|
|
||||||
|
lo_form->command(
|
||||||
|
iv_label = 'Update'
|
||||||
|
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
|
||||||
|
iv_action = c_event-update ).
|
||||||
|
lo_form->command(
|
||||||
|
iv_label = 'Remove'
|
||||||
|
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
|
||||||
|
iv_action = c_event-remove ).
|
||||||
|
ri_html->add( lo_form->render(
|
||||||
|
iv_form_class = 'dialog w600px m-em5-sides margin-v1'
|
||||||
|
io_values = lo_form_data ) ).
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||||
|
|
||||||
|
CASE ii_event->mv_action.
|
||||||
|
WHEN c_event-add.
|
||||||
|
event_add( ii_event ).
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
|
WHEN c_event-update.
|
||||||
|
event_update( ii_event ).
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
|
WHEN c_event-remove.
|
||||||
|
event_remove( ii_event ).
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/ui/zcl_abapgit_gui_page_data.clas.xml
Normal file
16
src/ui/zcl_abapgit_gui_page_data.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_GUI_PAGE_DATA</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>GUI - Data</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -19,6 +19,7 @@ CLASS zcl_abapgit_gui_page_repo_view DEFINITION
|
||||||
display_more TYPE string VALUE 'display_more' ##NO_TEXT,
|
display_more TYPE string VALUE 'display_more' ##NO_TEXT,
|
||||||
repo_switch_origin_to_pr TYPE string VALUE 'repo_switch_origin_to_pr',
|
repo_switch_origin_to_pr TYPE string VALUE 'repo_switch_origin_to_pr',
|
||||||
repo_reset_origin TYPE string VALUE 'repo_reset_origin',
|
repo_reset_origin TYPE string VALUE 'repo_reset_origin',
|
||||||
|
go_data TYPE string VALUE 'go_data',
|
||||||
END OF c_actions .
|
END OF c_actions .
|
||||||
|
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
|
@ -192,7 +193,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_VIEW IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD apply_order_by.
|
METHOD apply_order_by.
|
||||||
|
@ -308,6 +309,10 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
|
||||||
iv_act = |{ zif_abapgit_definitions=>c_action-repo_refresh_checksums }?key={ mv_key }|
|
iv_act = |{ zif_abapgit_definitions=>c_action-repo_refresh_checksums }?key={ mv_key }|
|
||||||
iv_opt = lv_crossout ).
|
iv_opt = lv_crossout ).
|
||||||
|
|
||||||
|
ro_advanced_dropdown->add( iv_txt = 'Beta - Data'
|
||||||
|
iv_act = |{ c_actions-go_data }?key={ mv_key }|
|
||||||
|
iv_opt = lv_crossout ).
|
||||||
|
|
||||||
IF is_repo_lang_logon_lang( ) = abap_false AND get_abapgit_tcode( ) IS NOT INITIAL.
|
IF is_repo_lang_logon_lang( ) = abap_false AND get_abapgit_tcode( ) IS NOT INITIAL.
|
||||||
ro_advanced_dropdown->add(
|
ro_advanced_dropdown->add(
|
||||||
iv_txt = 'Open in Main Language'
|
iv_txt = 'Open in Main Language'
|
||||||
|
@ -637,6 +642,22 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_abapgit_tcode.
|
||||||
|
CONSTANTS: lc_report_tcode_hex TYPE x VALUE '80'.
|
||||||
|
DATA: lt_tcodes TYPE STANDARD TABLE OF tcode.
|
||||||
|
|
||||||
|
SELECT tcode
|
||||||
|
FROM tstc
|
||||||
|
INTO TABLE lt_tcodes
|
||||||
|
WHERE pgmna = sy-cprog
|
||||||
|
AND cinfo = lc_report_tcode_hex.
|
||||||
|
|
||||||
|
IF lines( lt_tcodes ) = 1.
|
||||||
|
READ TABLE lt_tcodes INDEX 1 INTO rv_tcode.
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_item_class.
|
METHOD get_item_class.
|
||||||
|
|
||||||
DATA lt_class TYPE TABLE OF string.
|
DATA lt_class TYPE TABLE OF string.
|
||||||
|
@ -683,6 +704,11 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_repo_lang_logon_lang.
|
||||||
|
rv_repo_lang_is_logon_lang = boolc( mo_repo->get_dot_abapgit( )->get_master_language( ) = sy-langu ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD open_in_master_language.
|
METHOD open_in_master_language.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
|
@ -1196,6 +1222,10 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
|
||||||
iv_key = |{ ii_event->query( )->get( 'KEY' ) }|.
|
iv_key = |{ ii_event->query( )->get( 'KEY' ) }|.
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
|
||||||
|
|
||||||
|
WHEN c_actions-go_data.
|
||||||
|
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_data.
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
|
||||||
|
|
||||||
WHEN c_actions-toggle_hide_files. " Toggle file diplay
|
WHEN c_actions-toggle_hide_files. " Toggle file diplay
|
||||||
mv_hide_files = zcl_abapgit_persistence_user=>get_instance( )->toggle_hide_files( ).
|
mv_hide_files = zcl_abapgit_persistence_user=>get_instance( )->toggle_hide_files( ).
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
|
@ -1318,23 +1348,4 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
|
||||||
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD is_repo_lang_logon_lang.
|
|
||||||
rv_repo_lang_is_logon_lang = boolc( mo_repo->get_dot_abapgit( )->get_master_language( ) = sy-langu ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD get_abapgit_tcode.
|
|
||||||
CONSTANTS: lc_report_tcode_hex TYPE x VALUE '80'.
|
|
||||||
DATA: lt_tcodes TYPE STANDARD TABLE OF tcode.
|
|
||||||
|
|
||||||
SELECT tcode
|
|
||||||
FROM tstc
|
|
||||||
INTO TABLE lt_tcodes
|
|
||||||
WHERE pgmna = sy-cprog
|
|
||||||
AND cinfo = lc_report_tcode_hex.
|
|
||||||
|
|
||||||
IF lines( lt_tcodes ) = 1.
|
|
||||||
READ TABLE lt_tcodes INDEX 1 INTO rv_tcode.
|
|
||||||
ENDIF.
|
|
||||||
ENDMETHOD.
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user