btp compatibility (#1001)

* btp compatibility

* lint fixes+popup select

* update lint fixes

* update

* update
This commit is contained in:
oblomov 2024-03-08 16:55:06 -05:00 committed by GitHub
parent b7ffcb5dcc
commit e48640eff0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 170 additions and 53 deletions

View File

@ -1006,6 +1006,12 @@ CLASS Z2UI5_CL_UTIL_API IMPLEMENTATION.
sub = `%3D`
with = '='
occ = 0 ).
lv_search = replace( val = lv_search
sub = `%26`
with = '&'
occ = 0 ).
lv_search = shift_left( val = lv_search
sub = `?` ).
lv_search = c_trim_lower( lv_search ).

View File

@ -63,9 +63,9 @@ CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<val>).
* TRY.
lo_val_front->to_abap(
IMPORTING
ev_container = <val> ).
lo_val_front->to_abap(
IMPORTING
ev_container = <val> ).
* CATCH cx_root.
* <val> = lo_val_front->mt_json_tree[ 1 ]-value.
* ENDTRY.
@ -140,16 +140,30 @@ CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
IMPORTING
ev_container = result-s_front ).
result-s_front-o_comp_data = lo_ajson->slice( `/COMPDATA` ).
result-s_control-check_launchpad = xsdbool( result-s_front-search CS `scenario=LAUNCHPAD` ).
IF result-s_front-id IS NOT INITIAL.
RETURN.
ENDIF.
result-s_control-app_start = z2ui5_cl_util=>c_trim_upper( result-s_front-app_start ).
TRY.
data(lo_comp) = result-s_front-o_comp_data.
result-s_control-app_start = lo_comp->get( `/startupParameters/app_start/1` ).
result-s_control-app_start = z2ui5_cl_util=>c_trim_upper( result-s_control-app_start ).
CATCH cx_root.
ENDTRY.
IF result-s_control-app_start IS NOT INITIAL.
IF result-s_control-app_start(1) = `-`.
REPLACE FIRST OCCURRENCE OF `-` IN result-s_control-app_start WITH `/`.
REPLACE FIRST OCCURRENCE OF `-` IN result-s_control-app_start WITH `/`.
ENDIF.
RETURN.
ENDIF.
result-s_control-app_start = z2ui5_cl_util=>c_trim_upper(
z2ui5_cl_util=>url_param_get( val = `app_start` url = result-s_front-search ) ).
z2ui5_cl_util=>url_param_get( val = `app_start` url = result-s_front-search ) ).
CATCH cx_root INTO DATA(x).
RAISE EXCEPTION TYPE z2ui5_cx_util_error

View File

@ -46,7 +46,24 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
t_event_arg = mo_action->ms_actual-t_event_arg
s_draft = CORRESPONDING #( mo_action->mo_app->ms_draft )
check_on_navigated = mo_action->ms_actual-check_on_navigated
s_config = CORRESPONDING #( mo_action->mo_http_post->ms_request-s_front ) ).
s_config = CORRESPONDING #( mo_action->mo_http_post->ms_request-s_front )
).
TRY.
DATA(lo_params) = mo_action->mo_http_post->ms_request-s_front-o_comp_data->slice( `/startupParameters/` ).
IF lo_params IS NOT BOUND.
RETURN.
ENDIF.
LOOP AT lo_params->mt_json_tree
REFERENCE INTO DATA(lr_comp)
WHERE name = `1`.
INSERT VALUE #(
n = shift_left( val = shift_right( val = lr_comp->path sub = `/` ) sub = `/` )
v = lr_comp->value ) INTO TABLE result-t_comp_params.
ENDLOOP.
CATCH cx_root.
ENDTRY.
ENDMETHOD.

View File

@ -142,7 +142,6 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` } else {` && |\n| &&
` oFragment.open();` && |\n| &&
` }` && |\n| &&
* ` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
` },` && |\n| &&
` async displayPopover(xml, viewProp, openById) {` && |\n| &&
` const oFragment = await Fragment.load({` && |\n| &&
@ -162,7 +161,6 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
` oFragment.open();` && |\n| &&
` }` && |\n| &&
* ` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
` },` && |\n| &&
` async displayNestedView(xml, viewProp, viewNestId) {` && |\n| &&
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
@ -319,9 +317,9 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` }` && |\n| &&
` sap.z2ui5.isBusy = true;` && |\n| &&
` BusyIndicator.show();` && |\n| &&
` let appStart = sap.z2ui5.oBody.APP_START;` && |\n| &&
* ` let appStart = sap.z2ui5.oBody.APP_START;` && |\n| &&
` sap.z2ui5.oBody = {};` && |\n| &&
` sap.z2ui5.oBody.APP_START = appStart;` && |\n| &&
* ` sap.z2ui5.oBody.APP_START = appStart;` && |\n| &&
` if ( sap.z2ui5.oController == this ) {` && |\n| &&
` sap.z2ui5.oBody.XX = sap.z2ui5.oView.getModel().getData().XX;` && |\n| &&
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
@ -428,7 +426,7 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` } else {` && |\n| &&
` const responseData = await response.json();` && |\n| &&
` sap.z2ui5.responseData = responseData;` && |\n| &&
` if( !sap.z2ui5.oBody.APP_START ) { sap.z2ui5.oBody.APP_START = sap.z2ui5.responseData.S_FRONT.APP; }` && |\n| &&
* ` if( !sap.z2ui5.oBody.APP_START ) { sap.z2ui5.APP_START = sap.z2ui5.responseData.S_FRONT.APP; }` && |\n| &&
` sap.z2ui5.oController.responseSuccess({` && |\n| &&
` ID : responseData.S_FRONT.ID,` && |\n| &&
` PARAMS : responseData.S_FRONT.PARAMS,` && |\n| &&
@ -443,12 +441,13 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` let event = (args) => { if ( args != undefined ) { return args[0][0]; } };` && |\n| &&
` sap.z2ui5.oBody.S_FRONT = {` && |\n| &&
` ID: sap.z2ui5?.oBody?.ID,` && |\n| &&
` APP_START: sap.z2ui5?.oBody?.APP_START,` && |\n| &&
` COMPDATA: (sap.z2ui5.ComponentData) ? sap.z2ui5.ComponentData : {} ,` && |\n| &&
* ` APP_START: sap.z2ui5?.oBody?.APP_START,` && |\n| &&
` XX: sap.z2ui5?.oBody?.XX,` && |\n| &&
` ORIGIN: window.location.origin,` && |\n| &&
` PATHNAME: window.location.pathname, // sap.z2ui5.pathname,` && |\n| &&
` SEARCH: (sap.z2ui5.search) ? sap.z2ui5.search : window.location.search,` && |\n| &&
` VIEW: sap.z2ui5.oBody.VIEWNAME,` && |\n| &&
` VIEW: sap.z2ui5.oBody?.VIEWNAME,` && |\n| &&
` T_STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
` EVENT: event(sap.z2ui5.oBody?.ARGUMENTS),` && |\n| &&
` };` && |\n| &&
@ -456,7 +455,7 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG = sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
` delete sap.z2ui5.oBody.ID;` && |\n| &&
` delete sap.z2ui5.oBody?.VIEWNAME;` && |\n| &&
` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
* ` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
` delete sap.z2ui5.oBody?.S_FRONT.XX;` && |\n| &&
` delete sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
` if (!sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG) { delete sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG; } ` && |\n| &&
@ -478,7 +477,7 @@ CLASS Z2UI5_CL_CORE_HTTP_GET IMPLEMENTATION.
` sap.z2ui5.pathname = sap.z2ui5.pathname || window.location.pathname;` && |\n| &&
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
` sap.z2ui5.oBody = {` && |\n| &&
` APP_START: sap.z2ui5.APP_START` && |\n| &&
* ` APP_START: sap.z2ui5.APP_START` && |\n| &&
` };` && |\n| &&
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
` sap.z2ui5.onBeforeRoundtrip = [];` && |\n| &&

View File

@ -86,7 +86,8 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
s_front-params = mo_action->ms_next-s_set
s_front-id = mo_action->mo_app->ms_draft-id
s_front-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
s_front-app_start = ms_request-s_control-app_start ).
* s_front-app_start = ms_request-s_front-app_start
).
IF ms_response-s_front-params-s_view-check_update_model = abap_true
OR ms_response-s_front-params-s_view_nest-check_update_model = abap_true

View File

@ -14,6 +14,10 @@ CLASS ltcl_test_handler_post IMPLEMENTATION.
METHOD load_startup_app.
IF sy-sysid = 'ABC'.
RETURN.
ENDIF.
DATA(lv_payload) = `{"S_FRONT":{"ORIGIN":"ORIGIN","PATHNAME":"PATHNAME","SEARCH":""}}`.
DATA(lo_post) = NEW z2ui5_cl_core_http_post( lv_payload ).
lo_post->main_begin( ).

View File

@ -116,12 +116,12 @@ INTERFACE z2ui5_if_core_types
id TYPE string,
view TYPE string,
t_event_arg TYPE string_table,
app_start TYPE string,
* app_start TYPE string,
origin TYPE string,
pathname TYPE string,
search TYPE string,
event TYPE string,
t_startup_params TYPE z2ui5_if_types=>ty_t_name_value,
o_comp_data TYPE REF TO z2ui5_if_ajson,
END OF s_front,
BEGIN OF s_control,
check_launchpad TYPE abap_bool,

View File

@ -35,7 +35,18 @@ CLASS z2ui5_cl_core_app_error IMPLEMENTATION.
METHOD z2ui5_if_app~main.
DATA(lv_url) = shift_left( val = client->get( )-s_config-origin && client->get( )-s_config-pathname sub = ` ` ).
DATA(lv_url_app) = lv_url && client->get( )-s_config-search.
DATA(lv_url_app_start) = lv_url && client->get( )-s_config-search.
* TRY.
* DATA(lo_app) = client->get_app( client->get( )-s_draft-id_prev ).
* DATA(lv_name) = z2ui5_cl_util=>rtti_get_classname_by_ref( lo_app ).
* DATA(lv_url_app) = z2ui5_cl_util=>app_get_url(
* client = client
* classname = lv_name
* ).
* CATCH cx_root.
* ENDTRY.
DATA(lv_text) = ``.
DATA(lx_error) = mx_error.
WHILE lx_error IS BOUND.
@ -54,13 +65,17 @@ CLASS z2ui5_cl_core_app_error IMPLEMENTATION.
)->icon( src = `sap-icon://alert` ).
vbox->formatted_text( lv_text ).
vbox->hbox(
)->button(
text = `Home`
type = `Emphasized`
press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url ) ) )
* )->button(
* text = `Home`
* press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url ) ) )
)->button(
text = `Restart`
press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url_app ) ) ) ).
type = `Emphasized`
press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url_app_start ) ) )
* )->button(
* text = `Restart App`
* press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url_app ) ) )
).
client->view_display( view->stringify( ) ).
client->popup_destroy( ).

View File

@ -7,6 +7,7 @@ CLASS z2ui5_cl_popup_get_range DEFINITION
INTERFACES z2ui5_if_app.
TYPES:
BEGIN OF ty_s_filter_pop,
option TYPE string,

View File

@ -5,7 +5,7 @@
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_POPUP_ITAB_JSON_DL</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>oui - popup json download</DESCRIPT>
<DESCRIPT>ui - popup json download</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>

View File

@ -1,48 +1,56 @@
CLASS z2ui5_cl_popup_to_select DEFINITION
PUBLIC
FINAL
CREATE PROTECTED.
CREATE PROTECTED .
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
CLASS-METHODS factory
IMPORTING
i_tab TYPE STANDARD TABLE
i_title TYPE clike OPTIONAL
i_sort_field TYPE clike OPTIONAL
i_descending TYPE abap_bool OPTIONAL
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_to_select.
INTERFACES if_serializable_object .
INTERFACES z2ui5_if_app .
TYPES:
BEGIN OF ty_s_result,
row TYPE REF TO data,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
END OF ty_s_result .
DATA ms_result TYPE ty_s_result .
DATA mr_tab TYPE REF TO data .
DATA mr_tab_popup TYPE REF TO data ##NEEDED.
DATA mr_tab_popup_backup TYPE REF TO data ##NEEDED.
CLASS-METHODS factory
IMPORTING
!i_tab TYPE STANDARD TABLE
!i_title TYPE clike OPTIONAL
!i_sort_field TYPE clike OPTIONAL
!i_descending TYPE abap_bool OPTIONAL
!i_contentwidth TYPE clike OPTIONAL
!i_contentheight TYPE clike OPTIONAL
!i_growingthreshold TYPE clike OPTIONAL
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_to_select .
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
DATA mr_tab TYPE REF TO data.
DATA mr_tab_popup TYPE REF TO data ##NEEDED.
DATA mr_tab_popup_backup TYPE REF TO data ##NEEDED.
PROTECTED SECTION.
DATA check_initialized TYPE abap_bool.
DATA check_table_line TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA sort_field TYPE string.
DATA descending TYPE abap_bool.
METHODS on_event.
METHODS display.
METHODS set_output_table.
METHODS on_event_confirm.
METHODS on_event_search.
DATA check_initialized TYPE abap_bool .
DATA check_table_line TYPE abap_bool .
DATA client TYPE REF TO z2ui5_if_client .
DATA title TYPE string .
DATA sort_field TYPE string .
DATA content_width TYPE string .
DATA content_height TYPE string .
DATA growing_threshold TYPE string .
DATA descending TYPE abap_bool .
METHODS on_event .
METHODS display .
METHODS set_output_table .
METHODS on_event_confirm .
METHODS on_event_search .
PRIVATE SECTION.
ENDCLASS.
@ -50,18 +58,39 @@ ENDCLASS.
CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method Z2UI5_CL_POPUP_TO_SELECT=>FACTORY
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_TAB TYPE STANDARD TABLE
* | [--->] I_TITLE TYPE CLIKE(optional)
* | [--->] I_SORT_FIELD TYPE CLIKE(optional)
* | [--->] I_DESCENDING TYPE ABAP_BOOL(optional)
* | [--->] I_CONTENTWIDTH TYPE CLIKE(optional)
* | [--->] I_CONTENTHEIGHT TYPE CLIKE(optional)
* | [--->] I_GROWINGTHRESHOLD TYPE CLIKE(optional)
* | [<-()] R_RESULT TYPE REF TO Z2UI5_CL_POPUP_TO_SELECT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->sort_field = i_sort_field.
r_result->descending = i_descending.
r_result->content_height = i_contentheight.
r_result->content_width = i_contentwidth.
r_result->growing_threshold = i_growingthreshold.
r_result->mr_tab = z2ui5_cl_util=>conv_copy_ref_data( i_tab ).
CREATE DATA r_result->ms_result-row LIKE LINE OF i_tab.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method Z2UI5_CL_POPUP_TO_SELECT->DISPLAY
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD display.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
@ -78,6 +107,9 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
growing = abap_true
contentwidth = content_width
contentheight = content_height
growingthreshold = growing_threshold
title = title ).
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( <tab_out> ).
@ -107,6 +139,11 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method Z2UI5_CL_POPUP_TO_SELECT->Z2UI5_IF_APP~MAIN
* +-------------------------------------------------------------------------------------------------+
* | [--->] CLIENT TYPE REF TO Z2UI5_IF_CLIENT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD z2ui5_if_app~main.
me->client = client.
@ -122,6 +159,11 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method Z2UI5_CL_POPUP_TO_SELECT->ON_EVENT
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD on_event.
CASE client->get( )-event.
@ -141,6 +183,12 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method Z2UI5_CL_POPUP_TO_SELECT->RESULT
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RESULT TYPE TY_S_RESULT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD result.
result = ms_result.
@ -148,6 +196,10 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method Z2UI5_CL_POPUP_TO_SELECT->SET_OUTPUT_TABLE
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD set_output_table.
FIELD-SYMBOLS <row> TYPE any.
@ -200,6 +252,10 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method Z2UI5_CL_POPUP_TO_SELECT->ON_EVENT_CONFIRM
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD on_event_confirm.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
@ -235,6 +291,10 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method Z2UI5_CL_POPUP_TO_SELECT->ON_EVENT_SEARCH
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD on_event_search.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
@ -271,5 +331,4 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
client->popup_model_update( ).
ENDMETHOD.
ENDCLASS.

View File

@ -41,6 +41,7 @@ INTERFACE z2ui5_if_types
viewname TYPE string,
s_draft TYPE ty_s_draft,
s_config TYPE ty_s_config,
t_comp_params TYPE ty_t_name_value,
END OF ty_s_get.
TYPES: