mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 22:09:24 +08:00
parent
e7f1ae439d
commit
b9baa320d6
|
@ -1,33 +1,33 @@
|
|||
CLASS z2ui5_cl_util DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC
|
||||
INHERITING FROM z2ui5_cl_util_api.
|
||||
INHERITING FROM z2ui5_cl_util_api
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS db_save
|
||||
IMPORTING
|
||||
uname TYPE clike OPTIONAL
|
||||
handle TYPE clike OPTIONAL
|
||||
handle2 TYPE clike OPTIONAL
|
||||
handle3 TYPE clike OPTIONAL
|
||||
data TYPE any
|
||||
check_commit TYPE abap_bool DEFAULT abap_true
|
||||
!uname TYPE clike OPTIONAL
|
||||
!handle TYPE clike OPTIONAL
|
||||
!handle2 TYPE clike OPTIONAL
|
||||
!handle3 TYPE clike OPTIONAL
|
||||
!data TYPE any
|
||||
!check_commit TYPE abap_bool DEFAULT abap_true
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS db_load_by_id
|
||||
IMPORTING
|
||||
id TYPE clike OPTIONAL
|
||||
!id TYPE clike OPTIONAL
|
||||
EXPORTING
|
||||
VALUE(result) TYPE any.
|
||||
|
||||
CLASS-METHODS db_load_by_handle
|
||||
IMPORTING
|
||||
uname TYPE clike OPTIONAL
|
||||
handle TYPE clike OPTIONAL
|
||||
handle2 TYPE clike OPTIONAL
|
||||
handle3 TYPE clike OPTIONAL
|
||||
!uname TYPE clike OPTIONAL
|
||||
!handle TYPE clike OPTIONAL
|
||||
!handle2 TYPE clike OPTIONAL
|
||||
!handle3 TYPE clike OPTIONAL
|
||||
EXPORTING
|
||||
VALUE(result) TYPE any.
|
||||
|
||||
|
@ -39,6 +39,7 @@ ENDCLASS.
|
|||
|
||||
CLASS z2ui5_cl_util IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD db_load_by_handle.
|
||||
|
||||
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_fw_02 WITH EMPTY KEY.
|
||||
|
@ -102,5 +103,4 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
|||
result = ls_db-id.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
62
src/01/01/z2ui5_cl_util.clas.testclasses.abap
Normal file
62
src/01/01/z2ui5_cl_util.clas.testclasses.abap
Normal file
|
@ -0,0 +1,62 @@
|
|||
CLASS ltcl_test DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
first_test FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_test IMPLEMENTATION.
|
||||
|
||||
METHOD first_test.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
DATA(ls_row) = VALUE ty_row(
|
||||
title = `test`
|
||||
value = `val`
|
||||
selected = abap_true ).
|
||||
DATA(ls_row_result) = VALUE ty_row( ).
|
||||
|
||||
DATA(lv_id) = z2ui5_cl_util=>db_save(
|
||||
uname = `name`
|
||||
handle = `handle1`
|
||||
handle2 = `handle2`
|
||||
handle3 = `handle3`
|
||||
data = ls_row ).
|
||||
|
||||
z2ui5_cl_util=>db_load_by_id(
|
||||
EXPORTING
|
||||
id = lv_id
|
||||
IMPORTING
|
||||
result = ls_row_result ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ls_row_result
|
||||
exp = ls_row ).
|
||||
|
||||
CLEAR ls_row_result.
|
||||
z2ui5_cl_util=>db_load_by_handle(
|
||||
EXPORTING
|
||||
uname = `name`
|
||||
handle = `handle1`
|
||||
handle2 = `handle2`
|
||||
handle3 = `handle3`
|
||||
IMPORTING
|
||||
result = ls_row_result
|
||||
).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ls_row_result
|
||||
exp = ls_row ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -10,14 +10,14 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
|
|||
short TYPE string,
|
||||
medium TYPE string,
|
||||
long TYPE string,
|
||||
END OF ty_data_element_texts.
|
||||
END OF ty_data_element_texts .
|
||||
|
||||
CLASS-METHODS method_get_source
|
||||
IMPORTING
|
||||
iv_classname TYPE clike
|
||||
iv_methodname TYPE clike
|
||||
!iv_classname TYPE clike
|
||||
!iv_methodname TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string_table.
|
||||
VALUE(result) TYPE string_table.
|
||||
|
||||
CLASS-METHODS uuid_get_c32
|
||||
RETURNING
|
||||
|
@ -29,31 +29,31 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
|
|||
|
||||
CLASS-METHODS rtti_get_data_element_texts
|
||||
IMPORTING
|
||||
i_data_element_name TYPE string
|
||||
!i_data_element_name TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_data_element_texts.
|
||||
VALUE(result) TYPE ty_data_element_texts.
|
||||
|
||||
CLASS-METHODS conv_decode_x_base64
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
!val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE xstring.
|
||||
|
||||
CLASS-METHODS conv_encode_x_base64
|
||||
IMPORTING
|
||||
val TYPE xstring
|
||||
!val TYPE xstring
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS conv_get_string_by_xstring
|
||||
IMPORTING
|
||||
val TYPE xstring
|
||||
!val TYPE xstring
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS conv_get_xstring_by_string
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
!val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE xstring.
|
||||
|
||||
|
@ -63,6 +63,8 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
|
|||
RETURNING
|
||||
VALUE(result) TYPE string_table.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -70,159 +72,54 @@ ENDCLASS.
|
|||
CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD rtti_get_data_element_texts.
|
||||
|
||||
DATA:
|
||||
data_element_name TYPE c LENGTH 30,
|
||||
ddic_ref TYPE REF TO data,
|
||||
data_element TYPE REF TO object,
|
||||
content TYPE REF TO object,
|
||||
BEGIN OF ddic,
|
||||
reptext TYPE string,
|
||||
scrtext_s TYPE string,
|
||||
scrtext_m TYPE string,
|
||||
scrtext_l TYPE string,
|
||||
END OF ddic,
|
||||
exists TYPE abap_bool.
|
||||
|
||||
data_element_name = i_data_element_name.
|
||||
|
||||
TRY.
|
||||
cl_abap_typedescr=>describe_by_name( 'T100' ).
|
||||
|
||||
DATA(struct_desrc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( 'DFIES' ) ).
|
||||
|
||||
CREATE DATA ddic_ref TYPE HANDLE struct_desrc.
|
||||
ASSIGN ddic_ref->* TO FIELD-SYMBOL(<ddic>).
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
DATA(data_descr) = CAST cl_abap_datadescr( cl_abap_elemdescr=>describe_by_name( data_element_name ) ).
|
||||
|
||||
CALL METHOD data_descr->('GET_DDIC_FIELD')
|
||||
RECEIVING
|
||||
p_flddescr = <ddic>
|
||||
EXCEPTIONS
|
||||
not_found = 1
|
||||
no_ddic_type = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ddic = CORRESPONDING #( <ddic> ).
|
||||
result-header = ddic-reptext.
|
||||
result-short = ddic-scrtext_s.
|
||||
result-medium = ddic-scrtext_m.
|
||||
result-long = ddic-scrtext_l.
|
||||
|
||||
CATCH cx_root.
|
||||
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATA_ELEMENT')
|
||||
EXPORTING
|
||||
iv_name = data_element_name
|
||||
RECEIVING
|
||||
ro_data_element = data_element.
|
||||
|
||||
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~EXISTS')
|
||||
RECEIVING
|
||||
rv_exists = exists.
|
||||
|
||||
IF exists = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
|
||||
RECEIVING
|
||||
ro_content = content.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_heading_field_label = result-header.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_SHORT_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_short_field_label = result-short.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_MEDIUM_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_medium_field_label = result-medium.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_LONG_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_long_field_label = result-long.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_classes_impl_intf.
|
||||
|
||||
DATA obj TYPE REF TO object.
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
DATA lt_implementation_names TYPE string_table.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_impl,
|
||||
clsname TYPE c LENGTH 30,
|
||||
refclsname TYPE c LENGTH 30,
|
||||
END OF ty_s_impl.
|
||||
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
|
||||
TYPES: BEGIN OF ty_s_key,
|
||||
intkey TYPE c LENGTH 30,
|
||||
END OF ty_s_key.
|
||||
DATA ls_key TYPE ty_s_key.
|
||||
METHOD conv_decode_x_base64.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('XCO_CP_ABAP')=>interface
|
||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('DECODE_X_BASE64')
|
||||
EXPORTING
|
||||
iv_name = val
|
||||
encoded = val
|
||||
RECEIVING
|
||||
ro_interface = obj.
|
||||
|
||||
|
||||
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
|
||||
ENDIF.
|
||||
obj = <any>.
|
||||
|
||||
ASSIGN obj->('IF_XCO_INTF_IMPLEMENTATIONS_FC~ALL') TO <any>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
|
||||
ENDIF.
|
||||
obj = <any>.
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET').
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
|
||||
RECEIVING
|
||||
rt_names = lt_implementation_names.
|
||||
|
||||
result = lt_implementation_names.
|
||||
decoded = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
ls_key-intkey = val.
|
||||
|
||||
DATA(lv_fm) = `SEO_INTERFACE_IMPLEM_GET_ALL`.
|
||||
CALL FUNCTION lv_fm
|
||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||
CALL METHOD (classname)=>('DECODE_X_BASE64')
|
||||
EXPORTING
|
||||
intkey = ls_key
|
||||
IMPORTING
|
||||
impkeys = lt_impl
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
|
||||
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
|
||||
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
|
||||
ENDLOOP.
|
||||
encoded = val
|
||||
RECEIVING
|
||||
decoded = result.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD conv_encode_x_base64.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('ENCODE_X_BASE64')
|
||||
EXPORTING
|
||||
unencoded = val
|
||||
RECEIVING
|
||||
encoded = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||
CALL METHOD (classname)=>('ENCODE_X_BASE64')
|
||||
EXPORTING
|
||||
unencoded = val
|
||||
RECEIVING
|
||||
encoded = result.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD conv_get_string_by_xstring.
|
||||
|
||||
DATA conv TYPE REF TO object.
|
||||
|
@ -255,6 +152,7 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD conv_get_xstring_by_string.
|
||||
|
||||
DATA conv TYPE REF TO object.
|
||||
|
@ -287,127 +185,6 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD conv_decode_x_base64.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('DECODE_X_BASE64')
|
||||
EXPORTING
|
||||
encoded = val
|
||||
RECEIVING
|
||||
decoded = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||
CALL METHOD (classname)=>('DECODE_X_BASE64')
|
||||
EXPORTING
|
||||
encoded = val
|
||||
RECEIVING
|
||||
decoded = result.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
METHOD conv_encode_x_base64.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('ENCODE_X_BASE64')
|
||||
EXPORTING
|
||||
unencoded = val
|
||||
RECEIVING
|
||||
encoded = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||
CALL METHOD (classname)=>('ENCODE_X_BASE64')
|
||||
EXPORTING
|
||||
unencoded = val
|
||||
RECEIVING
|
||||
encoded = result.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD uuid_get_c22.
|
||||
|
||||
DATA uuid TYPE c LENGTH 22.
|
||||
|
||||
TRY.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22
|
||||
RECEIVING
|
||||
uuid = uuid.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(lv_fm) = `GUID_CREATE`.
|
||||
CALL FUNCTION lv_fm
|
||||
IMPORTING
|
||||
ev_guid_22 = uuid.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = uuid.
|
||||
|
||||
CATCH cx_root.
|
||||
ASSERT 1 = 0.
|
||||
ENDTRY.
|
||||
|
||||
result = replace( val = result
|
||||
sub = `}`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `{`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `"`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `'`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD uuid_get_c32.
|
||||
DATA uuid TYPE c LENGTH 32.
|
||||
|
||||
TRY.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
|
||||
RECEIVING
|
||||
uuid = uuid.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(lv_fm) = `GUID_CREATE`.
|
||||
CALL FUNCTION lv_fm
|
||||
IMPORTING
|
||||
ev_guid_32 = uuid.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = uuid.
|
||||
|
||||
CATCH cx_root.
|
||||
ASSERT 1 = 0.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD method_get_source.
|
||||
|
||||
|
@ -485,4 +262,248 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
|||
result = lt_string.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_classes_impl_intf.
|
||||
|
||||
DATA obj TYPE REF TO object.
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
DATA lt_implementation_names TYPE string_table.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_impl,
|
||||
clsname TYPE c LENGTH 30,
|
||||
refclsname TYPE c LENGTH 30,
|
||||
END OF ty_s_impl.
|
||||
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
|
||||
TYPES: BEGIN OF ty_s_key,
|
||||
intkey TYPE c LENGTH 30,
|
||||
END OF ty_s_key.
|
||||
DATA ls_key TYPE ty_s_key.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('XCO_CP_ABAP')=>interface
|
||||
EXPORTING
|
||||
iv_name = val
|
||||
RECEIVING
|
||||
ro_interface = obj.
|
||||
|
||||
|
||||
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
|
||||
ENDIF.
|
||||
obj = <any>.
|
||||
|
||||
ASSIGN obj->('IF_XCO_INTF_IMPLEMENTATIONS_FC~ALL') TO <any>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
|
||||
ENDIF.
|
||||
obj = <any>.
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET').
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
|
||||
RECEIVING
|
||||
rt_names = lt_implementation_names.
|
||||
|
||||
result = lt_implementation_names.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
ls_key-intkey = val.
|
||||
|
||||
DATA(lv_fm) = `SEO_INTERFACE_IMPLEM_GET_ALL`.
|
||||
CALL FUNCTION lv_fm
|
||||
EXPORTING
|
||||
intkey = ls_key
|
||||
IMPORTING
|
||||
impkeys = lt_impl
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
|
||||
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
|
||||
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_data_element_texts.
|
||||
|
||||
DATA:
|
||||
data_element_name TYPE c LENGTH 30,
|
||||
ddic_ref TYPE REF TO data,
|
||||
data_element TYPE REF TO object,
|
||||
content TYPE REF TO object,
|
||||
BEGIN OF ddic,
|
||||
reptext TYPE string,
|
||||
scrtext_s TYPE string,
|
||||
scrtext_m TYPE string,
|
||||
scrtext_l TYPE string,
|
||||
END OF ddic,
|
||||
exists TYPE abap_bool.
|
||||
|
||||
data_element_name = i_data_element_name.
|
||||
|
||||
TRY.
|
||||
cl_abap_typedescr=>describe_by_name( 'T100' ).
|
||||
|
||||
DATA(struct_desrc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( 'DFIES' ) ).
|
||||
|
||||
CREATE DATA ddic_ref TYPE HANDLE struct_desrc.
|
||||
ASSIGN ddic_ref->* TO FIELD-SYMBOL(<ddic>).
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
cl_abap_elemdescr=>describe_by_name(
|
||||
EXPORTING
|
||||
p_name = data_element_name
|
||||
RECEIVING
|
||||
p_descr_ref = DATA(lo_typedescr)
|
||||
EXCEPTIONS
|
||||
OTHERS = 1 ).
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(data_descr) = CAST cl_abap_datadescr( lo_typedescr ).
|
||||
|
||||
CALL METHOD data_descr->('GET_DDIC_FIELD')
|
||||
RECEIVING
|
||||
p_flddescr = <ddic>
|
||||
EXCEPTIONS
|
||||
not_found = 1
|
||||
no_ddic_type = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ddic = CORRESPONDING #( <ddic> ).
|
||||
result-header = ddic-reptext.
|
||||
result-short = ddic-scrtext_s.
|
||||
result-medium = ddic-scrtext_m.
|
||||
result-long = ddic-scrtext_l.
|
||||
|
||||
CATCH cx_root.
|
||||
TRY.
|
||||
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATA_ELEMENT')
|
||||
EXPORTING
|
||||
iv_name = data_element_name
|
||||
RECEIVING
|
||||
ro_data_element = data_element.
|
||||
|
||||
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~EXISTS')
|
||||
RECEIVING
|
||||
rv_exists = exists.
|
||||
|
||||
IF exists = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
|
||||
RECEIVING
|
||||
ro_content = content.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_heading_field_label = result-header.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_SHORT_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_short_field_label = result-short.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_MEDIUM_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_medium_field_label = result-medium.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_LONG_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_long_field_label = result-long.
|
||||
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD uuid_get_c22.
|
||||
|
||||
DATA uuid TYPE c LENGTH 22.
|
||||
|
||||
TRY.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22
|
||||
RECEIVING
|
||||
uuid = uuid.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(lv_fm) = `GUID_CREATE`.
|
||||
CALL FUNCTION lv_fm
|
||||
IMPORTING
|
||||
ev_guid_22 = uuid.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = uuid.
|
||||
|
||||
CATCH cx_root.
|
||||
ASSERT 1 = 0.
|
||||
ENDTRY.
|
||||
|
||||
result = replace( val = result
|
||||
sub = `}`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `{`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `"`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `'`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD uuid_get_c32.
|
||||
DATA uuid TYPE c LENGTH 32.
|
||||
|
||||
TRY.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
|
||||
RECEIVING
|
||||
uuid = uuid.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(lv_fm) = `GUID_CREATE`.
|
||||
CALL FUNCTION lv_fm
|
||||
IMPORTING
|
||||
ev_guid_32 = uuid.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = uuid.
|
||||
|
||||
CATCH cx_root.
|
||||
ASSERT 1 = 0.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
61
src/01/01/z2ui5_cl_util_stmpncfctn.clas.testclasses.abap
Normal file
61
src/01/01/z2ui5_cl_util_stmpncfctn.clas.testclasses.abap
Normal file
|
@ -0,0 +1,61 @@
|
|||
CLASS ltcl_test DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_func_get_uuid_32 FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_func_get_uuid_22 FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_encoding FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_element_text FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_test IMPLEMENTATION.
|
||||
|
||||
METHOD test_func_get_uuid_32.
|
||||
|
||||
DATA(lv_uuid) = z2ui5_cl_util_stmpncfctn=>uuid_get_c32( ).
|
||||
cl_abap_unit_assert=>assert_not_initial( lv_uuid ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = 32
|
||||
exp = strlen( lv_uuid ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_func_get_uuid_22.
|
||||
|
||||
DATA(lv_uuid) = z2ui5_cl_util_stmpncfctn=>uuid_get_c22( ).
|
||||
cl_abap_unit_assert=>assert_not_initial( lv_uuid ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = 22
|
||||
exp = strlen( lv_uuid ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_encoding.
|
||||
|
||||
DATA(lv_string) = `my string`.
|
||||
DATA(lv_xstring) = z2ui5_cl_util_stmpncfctn=>conv_get_xstring_by_string( lv_string ).
|
||||
DATA(lv_string2) = z2ui5_cl_util_stmpncfctn=>conv_encode_x_base64( lv_xstring ).
|
||||
DATA(lv_xstring2) = z2ui5_cl_util_stmpncfctn=>conv_decode_x_base64( lv_string2 ).
|
||||
DATA(lv_string3) = z2ui5_cl_util_stmpncfctn=>conv_get_string_by_xstring( lv_xstring2 ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_string3
|
||||
exp = lv_string ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_element_text.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(ls_result) = z2ui5_cl_util_stmpncfctn=>rtti_get_data_element_texts( `UNAME` ).
|
||||
cl_abap_unit_assert=>assert_not_initial( ls_result ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -20,7 +20,8 @@ CLASS z2ui5_cx_util_error DEFINITION
|
|||
PREFERRED PARAMETER val .
|
||||
|
||||
METHODS if_message~get_text
|
||||
REDEFINITION .
|
||||
REDEFINITION.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -6,7 +6,7 @@ CLASS z2ui5_cl_core_http_get DEFINITION
|
|||
PUBLIC SECTION.
|
||||
|
||||
DATA ms_request TYPE z2ui5_if_types=>ty_s_http_request_get.
|
||||
DATA mv_response TYPE string .
|
||||
DATA mv_response TYPE string.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
|
@ -25,6 +25,15 @@ CLASS z2ui5_cl_core_http_get DEFINITION
|
|||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS get_default_config
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_types=>ty_s_http_request_get-t_config.
|
||||
|
||||
METHODS get_default_security_policy
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -314,9 +323,7 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
|||
` sap.z2ui5.onBeforeRoundtrip.forEach(item=>{` && |\n| &&
|
||||
` if (item !== undefined) {` && |\n| &&
|
||||
` item();` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` )` && |\n| &&
|
||||
` }})` && |\n| &&
|
||||
` if (args[0].CHECK_VIEW_DESTROY) {` && |\n| &&
|
||||
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|
@ -425,28 +432,25 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
|||
` delete sap.z2ui5.oBody.ID;` && |\n| &&
|
||||
` delete sap.z2ui5.oBody?.VIEWNAME;` && |\n| &&
|
||||
` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
|
||||
` delete sap.z2ui5.oBody?.S_FRONTEND.EDIT;` && |\n| &&
|
||||
` delete sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
|
||||
` sap.z2ui5.oController.readHttp();` && |\n| &&
|
||||
` },` && |\n| &&
|
||||
` })` && |\n| &&
|
||||
`});` && |\n| &&
|
||||
|\n| &&
|
||||
`sap.ui.require(["z2ui5/Controller", "sap/ui/core/BusyIndicator", "sap/ui/core/mvc/XMLView", "sap/ui/core/Fragment", "sap/m/MessageToast", "sap/m/MessageBox", "sap/ui/model/json/JSONModel"], (Controller,BusyIndicator)=>{` && |\n| &&
|
||||
|\n| &&
|
||||
` BusyIndicator.show();` && |\n| &&
|
||||
` sap.z2ui5.oController = new Controller();` && |\n| &&
|
||||
` sap.z2ui5.oControllerNest = new Controller();` && |\n| &&
|
||||
` sap.z2ui5.oControllerNest2 = new Controller();` && |\n| &&
|
||||
` sap.z2ui5.oControllerPopup = new Controller();` && |\n| &&
|
||||
` sap.z2ui5.oControllerPopover = new Controller();` && |\n| &&
|
||||
|\n| &&
|
||||
` sap.z2ui5.pathname = sap.z2ui5.pathname || window.location.pathname;` && |\n| &&
|
||||
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|
||||
|\n| &&
|
||||
` sap.z2ui5.oBody = {` && |\n| &&
|
||||
` APP_START: sap.z2ui5.APP_START` && |\n| &&
|
||||
` };` && |\n| &&
|
||||
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|
||||
|\n| &&
|
||||
` sap.z2ui5.onBeforeRoundtrip = [];` && |\n| &&
|
||||
` sap.z2ui5.onAfterRendering = [];` && |\n| &&
|
||||
` sap.z2ui5.onBeforeEventFrontend = [];` && |\n| &&
|
||||
|
@ -478,25 +482,13 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD main.
|
||||
|
||||
DATA(lt_config) = ms_request-t_config.
|
||||
IF lt_config IS INITIAL.
|
||||
lt_config = VALUE #(
|
||||
* ( n = `src` v = `https://sdk.openui5.org/nightly/2/resources/sap-ui-core.js` )
|
||||
( n = `src` v = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js` )
|
||||
* ( n = `src` v = `https://ui5.sap.com/1.120.0/resources/sap-ui-core.js` )
|
||||
( n = `data-sap-ui-theme` v = `sap_horizon` )
|
||||
( n = `data-sap-ui-async` v = `true` )
|
||||
( n = `data-sap-ui-bindingSyntax` v = `complex` )
|
||||
( n = `data-sap-ui-frameOptions` v = `trusted` )
|
||||
( n = `data-sap-ui-compatVersion` v = `edge` ) ).
|
||||
ENDIF.
|
||||
DATA(lt_config) = COND #( WHEN ms_request-t_config IS INITIAL
|
||||
THEN get_default_config( )
|
||||
ELSE ms_request-t_config ).
|
||||
|
||||
IF ms_request-content_security_policy IS INITIAL.
|
||||
DATA(lv_sec_policy) = `<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' data: ` &&
|
||||
`ui5.sap.com *.ui5.sap.com sapui5.hana.ondemand.com *.sapui5.hana.ondemand.com sdk.openui5.org *.sdk.openui5.org cdn.jsdelivr.net *.cdn.jsdelivr.net cdnjs.cloudflare.com *.cdnjs.cloudflare.com"/>`.
|
||||
ELSE.
|
||||
lv_sec_policy = ms_request-content_security_policy.
|
||||
ENDIF.
|
||||
DATA(lv_sec_policy) = COND #( WHEN ms_request-content_security_policy IS INITIAL
|
||||
THEN get_default_security_policy( )
|
||||
ELSE ms_request-content_security_policy ).
|
||||
|
||||
mv_response = `<!DOCTYPE html>` && |\n| &&
|
||||
`<html lang="en">` && |\n| &&
|
||||
|
@ -544,7 +536,28 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
|||
`<abc/></body></html>`.
|
||||
|
||||
NEW z2ui5_cl_core_draft_srv( )->cleanup( ).
|
||||
|
||||
result = mv_response.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_default_config.
|
||||
|
||||
result = VALUE #(
|
||||
( n = `src` v = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js` )
|
||||
( n = `data-sap-ui-theme` v = `sap_horizon` )
|
||||
( n = `data-sap-ui-async` v = `true` )
|
||||
( n = `data-sap-ui-bindingSyntax` v = `complex` )
|
||||
( n = `data-sap-ui-frameOptions` v = `trusted` )
|
||||
( n = `data-sap-ui-compatVersion` v = `edge` ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_default_security_policy.
|
||||
|
||||
result = `<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' data: ` &&
|
||||
`ui5.sap.com *.ui5.sap.com sapui5.hana.ondemand.com *.sapui5.hana.ondemand.com sdk.openui5.org *.sdk.openui5.org cdn.jsdelivr.net *.cdn.jsdelivr.net cdnjs.cloudflare.com *.cdnjs.cloudflare.com"/>`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -82,11 +82,12 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD main_end.
|
||||
* TRY.
|
||||
|
||||
ms_response = VALUE #(
|
||||
s_frontend-params = mo_action->ms_next-s_set
|
||||
s_frontend-id = mo_action->mo_app->ms_draft-id
|
||||
s_frontend-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
|
||||
s_frontend-app_start = ms_request-s_control-app_start
|
||||
model = mo_action->mo_app->model_json_stringify( ) ).
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||
|
@ -95,9 +96,6 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
|
|||
CLEAR mo_action->ms_next.
|
||||
mo_action->mo_app->db_save( ).
|
||||
|
||||
* CATCH cx_root INTO DATA(x).
|
||||
* ASSERT x IS NOT BOUND.
|
||||
* ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -98,8 +98,10 @@ INTERFACE z2ui5_if_core_types
|
|||
TYPES:
|
||||
BEGIN OF ty_s_http_response_post,
|
||||
BEGIN OF s_frontend,
|
||||
params TYPE ty_s_next_frontend,
|
||||
id TYPE string,
|
||||
params TYPE ty_s_next_frontend,
|
||||
id TYPE string,
|
||||
app_start TYPE string,
|
||||
app TYPE string,
|
||||
END OF s_frontend,
|
||||
model TYPE string,
|
||||
END OF ty_s_http_response_post.
|
||||
|
|
81
src/02/03/z2ui5_cl_popup_js_loader.clas.abap
Normal file
81
src/02/03/z2ui5_cl_popup_js_loader.clas.abap
Normal file
|
@ -0,0 +1,81 @@
|
|||
CLASS z2ui5_cl_popup_js_loader DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
CLASS-METHODS factory
|
||||
IMPORTING
|
||||
i_js TYPE string
|
||||
i_result TYPE string DEFAULT `LOADED`
|
||||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_js_loader.
|
||||
|
||||
METHODS result
|
||||
RETURNING
|
||||
VALUE(result3) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
DATA client TYPE REF TO z2ui5_if_client.
|
||||
DATA js TYPE string.
|
||||
DATA user_command TYPE string.
|
||||
METHODS view_display.
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS Z2UI5_CL_POPUP_JS_LOADER IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD factory.
|
||||
|
||||
r_result = NEW #( ).
|
||||
r_result->js = i_js.
|
||||
r_result->user_command = i_result.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD result.
|
||||
|
||||
result3 = user_command.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD view_display.
|
||||
|
||||
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = `load library`
|
||||
)->content(
|
||||
)->_z2ui5( )->timer( client->_event( 'TIMER_FINISHED' )
|
||||
)->_generic( ns = `html` name = `script` )->_cc_plain_xml( js ).
|
||||
|
||||
client->popup_display( popup->stringify( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
me->client = client.
|
||||
|
||||
IF check_initialized = abap_false.
|
||||
check_initialized = abap_true.
|
||||
view_display( ).
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CASE client->get( )-event.
|
||||
WHEN `TIMER_FINISHED`.
|
||||
client->popup_destroy( ).
|
||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/02/03/z2ui5_cl_popup_js_loader.clas.xml
Normal file
16
src/02/03/z2ui5_cl_popup_js_loader.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>Z2UI5_CL_POPUP_JS_LOADER</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>ui - popup to load js</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,7 +1,7 @@
|
|||
INTERFACE z2ui5_if_app PUBLIC.
|
||||
INTERFACES if_serializable_object.
|
||||
|
||||
CONSTANTS version TYPE string VALUE '1.118.0'.
|
||||
CONSTANTS version TYPE string VALUE '1.119.0'.
|
||||
CONSTANTS origin TYPE string VALUE 'https://github.com/abap2UI5/abap2UI5'.
|
||||
CONSTANTS license TYPE string VALUE 'MIT'.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user