* popups

* lint fix
This commit is contained in:
oblomov 2024-01-15 10:49:59 +01:00 committed by GitHub
parent 0621d73423
commit 2476813062
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 1417 additions and 145 deletions

View File

@ -1,16 +1,45 @@
CLASS z2ui5_cl_popup_file_upload DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
DATA client TYPE REF TO z2ui5_if_client.
data mt_tab type string.
METHODS display.
CLASS-METHODS factory
IMPORTING
i_text TYPE string default `Choose the file to upload:`
i_title TYPE string DEFAULT `File Upload`
i_button_text_confirm TYPE string DEFAULT `OK`
i_button_text_cancel TYPE string DEFAULT `Cancel`
i_path type string optional
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_file_upload.
TYPES:
BEGIN OF ty_s_result,
text TYPE string,
check_cancel TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
data mv_path type string.
data mv_value type string.
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
@ -19,31 +48,50 @@ ENDCLASS.
CLASS Z2UI5_CL_POPUP_FILE_UPLOAD IMPLEMENTATION.
METHOD display.
METHOD factory.
DATA(popup) = Z2UI5_cl_xml_view=>factory_popup( client )->dialog( 'abap2UI5 - Popup to select entry'
)->table(
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_tab )
)->columns(
)->column( )->text( 'Title' )->get_parent(
)->column( )->text( 'Color' )->get_parent(
)->column( )->text( 'Info' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->get_parent(
)->items( )->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{TITLE}'
)->text( '{VALUE}'
)->text( '{INFO}'
)->text( '{DESCR}'
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'continue'
press = client->_event( 'POPUP_TABLE_CONTINUE' )
type = 'Emphasized' ).
r_result = NEW #( ).
r_result->title = i_title.
* r_result->icon = i_icon.
r_result->question_text = i_text.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_path = i_path.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->label( text = question_text
)->_z2ui5( )->file_uploader(
value = client->_bind_edit( mv_value )
path = client->_bind_edit( mv_path )
placeholder = 'filepath here...'
upload = client->_event( 'UPLOAD' )
)->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
@ -52,5 +100,38 @@ CLASS Z2UI5_CL_POPUP_FILE_UPLOAD IMPLEMENTATION.
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 `UPLOAD`.
SPLIT mv_value AT `;` INTO DATA(lv_dummy) DATA(lv_data).
SPLIT lv_data AT `,` INTO lv_dummy lv_data.
DATA(lv_data2) = lcl_utility=>decode_x_base64( lv_data ).
ms_result-text = lcl_utility=>get_string_by_xstring( lv_data2 ).
client->message_box_display( `file uploaded` ).
CLEAR mv_value.
CLEAR mv_path.
WHEN `BUTTON_CONFIRM`.
check_result_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_CANCEL`.
check_result_confirmed = abap_false.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
ENDCASE.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,528 @@
CLASS lcl_utility DEFINITION
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS boolean_abap_2_json
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS factory
IMPORTING
client TYPE REF TO z2ui5_if_client optional
RETURNING
VALUE(r_result) TYPE REF TO lcl_utility.
METHODS app_get_url_source_code
RETURNING
VALUE(result) TYPE string.
METHODS app_get_url
IMPORTING
classname TYPE string OPTIONAL
RETURNING
VALUE(result) TYPE string.
METHODS url_param_get
IMPORTING
!val TYPE string
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS trans_xml_2_object
IMPORTING
xml TYPE clike
EXPORTING
data TYPE data.
CLASS-METHODS trans_data_2_xml
IMPORTING
data TYPE data
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_table_by_json
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS get_table_by_xml
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS get_table_by_csv
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS get_csv_by_table
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_xml_by_table
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_json_by_table
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_fieldlist_by_table
IMPORTING
it_table TYPE any
RETURNING
VALUE(result) TYPE string_table.
CLASS-METHODS decode_x_base64
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE xstring.
CLASS-METHODS encode_x_base64
IMPORTING
val TYPE xstring
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_string_by_xstring
IMPORTING
val TYPE xstring
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_xstring_by_string
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE xstring.
CLASS-METHODS get_uuid
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS trim_upper
IMPORTING
val TYPE clike
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS boolean_check
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE abap_bool.
CLASS-METHODS rtti_get_type_name
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
PROTECTED SECTION.
DATA mi_client TYPE REF TO z2ui5_if_client.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_utility IMPLEMENTATION.
METHOD rtti_get_type_name.
DATA(lo_descr) = cl_abap_elemdescr=>describe_by_data( val ).
DATA(lo_ele) = CAST cl_abap_elemdescr( lo_descr ).
result = lo_ele->get_relative_name( ).
ENDMETHOD.
METHOD boolean_check.
TRY.
DATA(lv_type_name) = rtti_get_type_name( val ).
CASE lv_type_name.
WHEN `ABAP_BOOL` OR `XSDBOOLEAN`.
result = abap_true.
ENDCASE.
CATCH cx_root.
ENDTRY.
ENDMETHOD.
METHOD boolean_abap_2_json.
IF boolean_check( val ).
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
ELSE.
result = val.
ENDIF.
ENDMETHOD.
METHOD factory.
r_result = new #( ).
r_result->mi_client = client.
ENDMETHOD.
METHOD app_get_url.
result = z2ui5_cl_util_func=>app_get_url( classname = classname client = mi_client ).
ENDMETHOD.
METHOD app_get_url_source_code.
result = z2ui5_cl_util_func=>app_get_url_source_code( mi_client ).
ENDMETHOD.
METHOD url_param_get.
result = z2ui5_cl_util_func=>url_param_get(
val = val
url = mi_client->get( )-s_config-search ).
ENDMETHOD.
METHOD get_uuid.
TRY.
DATA uuid TYPE c LENGTH 32.
TRY.
CALL METHOD (`CL_SYSTEM_UUID`)=>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 get_table_by_json.
* DATA lt_tab TYPE ty_t_table.
*
DATA lt_tab TYPE REF TO data.
/ui2/cl_json=>deserialize(
EXPORTING
json = val
* jsonx =
* pretty_name =
* assoc_arrays =
* assoc_arrays_opt =
* name_mappings =
* conversion_exits =
* hex_as_base64 =
CHANGING
data = lt_tab
).
result = lt_tab.
ENDMETHOD.
METHOD trans_data_2_xml.
" FIELD-SYMBOLS <object> TYPE any.
" ASSIGN object->* TO <object>.
" raise( when = xsdbool( sy-subrc <> 0 ) ).
CALL TRANSFORMATION id
SOURCE data = data
RESULT XML result
OPTIONS data_refs = `heap-or-create`.
ENDMETHOD.
METHOD trans_xml_2_object.
CALL TRANSFORMATION id
SOURCE XML xml
RESULT data = data.
ENDMETHOD.
METHOD get_table_by_xml.
* DATA lt_tab TYPE ty_t_table.
*
CALL TRANSFORMATION id SOURCE xml = val RESULT data = result.
*
* result = lt_tab.
ENDMETHOD.
METHOD get_table_by_csv.
SPLIT val AT cl_abap_char_utilities=>newline INTO TABLE DATA(lt_rows).
SPLIT lt_rows[ 1 ] AT ';' INTO TABLE DATA(lt_cols).
DATA lt_comp TYPE cl_abap_structdescr=>component_table.
LOOP AT lt_cols REFERENCE INTO DATA(lr_col).
DATA(lv_name) = trim_upper( lr_col->* ).
REPLACE ` ` IN lv_name WITH `_`.
INSERT VALUE #( name = lv_name type = cl_abap_elemdescr=>get_c( 40 ) ) INTO TABLE lt_comp.
ENDLOOP.
DATA(struc) = cl_abap_structdescr=>get( lt_comp ).
DATA(o_table_desc) = cl_abap_tabledescr=>create(
p_line_type = CAST #( struc )
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).
CREATE DATA result TYPE HANDLE o_table_desc.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
ASSIGN result->* TO <tab>.
DELETE lt_rows WHERE table_line IS INITIAL.
LOOP AT lt_rows REFERENCE INTO DATA(lr_rows) FROM 2.
SPLIT lr_rows->* AT ';' INTO TABLE lt_cols.
DATA lr_row TYPE REF TO data.
CREATE DATA lr_row TYPE HANDLE struc.
LOOP AT lt_cols REFERENCE INTO lr_col.
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
ASSIGN COMPONENT sy-tabix OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
<field> = lr_col->*.
ENDLOOP.
INSERT <row> INTO TABLE <tab>.
ENDLOOP.
ENDMETHOD.
METHOD 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 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 get_csv_by_table.
FIELD-SYMBOLS <tab> TYPE table.
ASSIGN val TO <tab>.
DATA lr_row TYPE REF TO data.
DATA(tab) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( <tab> ) ).
DATA(struc) = CAST cl_abap_structdescr( tab->get_table_line_type( ) ).
LOOP AT struc->get_components( ) REFERENCE INTO DATA(lr_comp).
result = result && lr_comp->name && ';'.
ENDLOOP.
result = result && cl_abap_char_utilities=>cr_lf.
LOOP AT <tab> REFERENCE INTO lr_row.
DATA(lv_index) = 1.
DO.
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
ASSIGN COMPONENT lv_index OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
IF sy-subrc <> 0.
EXIT.
ENDIF.
lv_index = lv_index + 1.
result = result && <field> && ';'.
ENDDO.
result = result && cl_abap_char_utilities=>cr_lf.
ENDLOOP.
ENDMETHOD.
METHOD get_json_by_table.
result = /ui2/cl_json=>serialize(
val
* compress =
* name =
* pretty_name =
* type_descr =
* assoc_arrays =
* ts_as_iso8601 =
* expand_includes =
* assoc_arrays_opt =
* numc_as_string =
* name_mappings =
* conversion_exits =
" format_output = abap_true
* hex_as_base64 =
).
ENDMETHOD.
METHOD get_xml_by_table.
CALL TRANSFORMATION id SOURCE values = val RESULT XML result.
ENDMETHOD.
METHOD get_fieldlist_by_table.
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ).
DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
DATA(lt_comp) = lo_struc->get_components( ).
LOOP AT lt_comp INTO DATA(ls_comp).
INSERT ls_comp-name INTO TABLE result.
ENDLOOP.
ENDMETHOD.
METHOD get_string_by_xstring.
DATA conv TYPE REF TO object.
TRY.
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
RECEIVING
instance = conv.
CALL METHOD conv->('IF_ABAP_CONV_IN~CONVERT')
EXPORTING
source = val
RECEIVING
result = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(conv_in_class) = 'CL_ABAP_CONV_IN_CE'.
CALL METHOD (conv_in_class)=>create
EXPORTING
encoding = 'UTF-8'
RECEIVING
conv = conv.
CALL METHOD conv->('CONVERT')
EXPORTING
input = val
IMPORTING
data = result.
ENDTRY.
ENDMETHOD.
METHOD get_xstring_by_string.
DATA conv TYPE REF TO object.
TRY.
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_out
RECEIVING
instance = conv.
CALL METHOD conv->('IF_ABAP_CONV_OUT~CONVERT')
EXPORTING
source = val
RECEIVING
result = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(conv_out_class) = 'CL_ABAP_CONV_OUT_CE'.
CALL METHOD (conv_out_class)=>create
EXPORTING
encoding = 'UTF-8'
RECEIVING
conv = conv.
CALL METHOD conv->('CONVERT')
EXPORTING
data = val
IMPORTING
buffer = result.
ENDTRY.
* result = cl_abap_conv_codepage=>create_out( )->convert( val ).
ENDMETHOD.
METHOD trim_upper.
result = to_upper( shift_left( shift_right( val ) ) ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,56 +0,0 @@
CLASS z2ui5_cl_popup_input_date DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
DATA client TYPE REF TO z2ui5_if_client.
data mt_tab type string.
METHODS display.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POPUP_INPUT_DATE IMPLEMENTATION.
METHOD display.
DATA(popup) = Z2UI5_cl_xml_view=>factory_popup( client )->dialog( 'abap2UI5 - Popup to select entry'
)->table(
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_tab )
)->columns(
)->column( )->text( 'Title' )->get_parent(
)->column( )->text( 'Color' )->get_parent(
)->column( )->text( 'Info' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->get_parent(
)->items( )->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{TITLE}'
)->text( '{VALUE}'
)->text( '{INFO}'
)->text( '{DESCR}'
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'continue'
press = client->_event( 'POPUP_TABLE_CONTINUE' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
ENDMETHOD.
ENDCLASS.

View File

@ -1,56 +0,0 @@
CLASS z2ui5_cl_popup_input_int DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
DATA client TYPE REF TO z2ui5_if_client.
data mt_tab type string.
METHODS display.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POPUP_INPUT_INT IMPLEMENTATION.
METHOD display.
DATA(popup) = Z2UI5_cl_xml_view=>factory_popup( client )->dialog( 'abap2UI5 - Popup to select entry'
)->table(
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_tab )
)->columns(
)->column( )->text( 'Title' )->get_parent(
)->column( )->text( 'Color' )->get_parent(
)->column( )->text( 'Info' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->get_parent(
)->items( )->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{TITLE}'
)->text( '{VALUE}'
)->text( '{INFO}'
)->text( '{DESCR}'
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'continue'
press = client->_event( 'POPUP_TABLE_CONTINUE' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,118 @@
CLASS z2ui5_cl_popup_input_value DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
CLASS-METHODS factory
IMPORTING
i_text TYPE string
i_title TYPE string DEFAULT `Title`
i_button_text_confirm TYPE string DEFAULT `OK`
i_button_text_cancel TYPE string DEFAULT `Cancel`
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_input_value.
TYPES:
BEGIN OF ty_s_result,
text TYPE string,
check_cancel TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POPUP_INPUT_VALUE IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
* r_result->icon = i_icon.
r_result->question_text = i_text.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->label( text = question_text
)->input(
value = client->_bind_edit( ms_result-text )
submit = client->_event( 'BUTTON_CONFIRM' )
)->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
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 `BUTTON_CONFIRM`.
check_result_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_CANCEL`.
check_result_confirmed = abap_false.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
ENDCASE.
ENDMETHOD.
ENDCLASS.

View File

@ -3,9 +3,9 @@
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_POPUP_INPUT_INT</CLSNAME>
<CLSNAME>Z2UI5_CL_POPUP_INPUT_VALUE</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>ui - popup input integer</DESCRIPT>
<DESCRIPT>ui - popup input value</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>

View File

@ -53,7 +53,9 @@ CLASS z2ui5_cl_popup_messages IMPLEMENTATION.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( client )->dialog( title
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( client )->dialog(
title = title
afterclose = client->_event( 'BUTTON_CONTINUE' )
)->table(
* mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_msg )

View File

@ -0,0 +1,125 @@
CLASS z2ui5_cl_popup_pdf DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
CLASS-METHODS factory
IMPORTING
i_title TYPE string DEFAULT `PDF Viewer`
i_button_text_confirm TYPE string DEFAULT `OK`
i_button_text_cancel TYPE string DEFAULT `Cancel`
i_pdf type string
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_pdf.
TYPES:
BEGIN OF ty_s_result,
text TYPE string,
check_cancel TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
data mv_pdf type string.
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POPUP_PDF IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_pdf = i_pdf.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
stretch = abap_true
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->label( text = question_text
)->_generic(
ns = `html`
name = `iframe`
t_prop = VALUE #(
( n = `src` v = mv_pdf )
( n = `height` v = `800px` )
( n = `width` v = `99%` )
)
)->get_parent( )->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
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 `BUTTON_CONFIRM`.
check_result_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_CANCEL`.
check_result_confirmed = abap_false.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
ENDCASE.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,528 @@
CLASS lcl_utility DEFINITION
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS boolean_abap_2_json
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS factory
IMPORTING
client TYPE REF TO z2ui5_if_client optional
RETURNING
VALUE(r_result) TYPE REF TO lcl_utility.
METHODS app_get_url_source_code
RETURNING
VALUE(result) TYPE string.
METHODS app_get_url
IMPORTING
classname TYPE string OPTIONAL
RETURNING
VALUE(result) TYPE string.
METHODS url_param_get
IMPORTING
!val TYPE string
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS trans_xml_2_object
IMPORTING
xml TYPE clike
EXPORTING
data TYPE data.
CLASS-METHODS trans_data_2_xml
IMPORTING
data TYPE data
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_table_by_json
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS get_table_by_xml
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS get_table_by_csv
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS get_csv_by_table
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_xml_by_table
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_json_by_table
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_fieldlist_by_table
IMPORTING
it_table TYPE any
RETURNING
VALUE(result) TYPE string_table.
CLASS-METHODS decode_x_base64
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE xstring.
CLASS-METHODS encode_x_base64
IMPORTING
val TYPE xstring
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_string_by_xstring
IMPORTING
val TYPE xstring
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_xstring_by_string
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE xstring.
CLASS-METHODS get_uuid
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS trim_upper
IMPORTING
val TYPE clike
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS boolean_check
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE abap_bool.
CLASS-METHODS rtti_get_type_name
IMPORTING
val TYPE any
RETURNING
VALUE(result) TYPE string.
PROTECTED SECTION.
DATA mi_client TYPE REF TO z2ui5_if_client.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_utility IMPLEMENTATION.
METHOD rtti_get_type_name.
DATA(lo_descr) = cl_abap_elemdescr=>describe_by_data( val ).
DATA(lo_ele) = CAST cl_abap_elemdescr( lo_descr ).
result = lo_ele->get_relative_name( ).
ENDMETHOD.
METHOD boolean_check.
TRY.
DATA(lv_type_name) = rtti_get_type_name( val ).
CASE lv_type_name.
WHEN `ABAP_BOOL` OR `XSDBOOLEAN`.
result = abap_true.
ENDCASE.
CATCH cx_root.
ENDTRY.
ENDMETHOD.
METHOD boolean_abap_2_json.
IF boolean_check( val ).
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
ELSE.
result = val.
ENDIF.
ENDMETHOD.
METHOD factory.
r_result = new #( ).
r_result->mi_client = client.
ENDMETHOD.
METHOD app_get_url.
result = z2ui5_cl_util_func=>app_get_url( classname = classname client = mi_client ).
ENDMETHOD.
METHOD app_get_url_source_code.
result = z2ui5_cl_util_func=>app_get_url_source_code( mi_client ).
ENDMETHOD.
METHOD url_param_get.
result = z2ui5_cl_util_func=>url_param_get(
val = val
url = mi_client->get( )-s_config-search ).
ENDMETHOD.
METHOD get_uuid.
TRY.
DATA uuid TYPE c LENGTH 32.
TRY.
CALL METHOD (`CL_SYSTEM_UUID`)=>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 get_table_by_json.
* DATA lt_tab TYPE ty_t_table.
*
DATA lt_tab TYPE REF TO data.
/ui2/cl_json=>deserialize(
EXPORTING
json = val
* jsonx =
* pretty_name =
* assoc_arrays =
* assoc_arrays_opt =
* name_mappings =
* conversion_exits =
* hex_as_base64 =
CHANGING
data = lt_tab
).
result = lt_tab.
ENDMETHOD.
METHOD trans_data_2_xml.
" FIELD-SYMBOLS <object> TYPE any.
" ASSIGN object->* TO <object>.
" raise( when = xsdbool( sy-subrc <> 0 ) ).
CALL TRANSFORMATION id
SOURCE data = data
RESULT XML result
OPTIONS data_refs = `heap-or-create`.
ENDMETHOD.
METHOD trans_xml_2_object.
CALL TRANSFORMATION id
SOURCE XML xml
RESULT data = data.
ENDMETHOD.
METHOD get_table_by_xml.
* DATA lt_tab TYPE ty_t_table.
*
CALL TRANSFORMATION id SOURCE xml = val RESULT data = result.
*
* result = lt_tab.
ENDMETHOD.
METHOD get_table_by_csv.
SPLIT val AT cl_abap_char_utilities=>newline INTO TABLE DATA(lt_rows).
SPLIT lt_rows[ 1 ] AT ';' INTO TABLE DATA(lt_cols).
DATA lt_comp TYPE cl_abap_structdescr=>component_table.
LOOP AT lt_cols REFERENCE INTO DATA(lr_col).
DATA(lv_name) = trim_upper( lr_col->* ).
REPLACE ` ` IN lv_name WITH `_`.
INSERT VALUE #( name = lv_name type = cl_abap_elemdescr=>get_c( 40 ) ) INTO TABLE lt_comp.
ENDLOOP.
DATA(struc) = cl_abap_structdescr=>get( lt_comp ).
DATA(o_table_desc) = cl_abap_tabledescr=>create(
p_line_type = CAST #( struc )
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).
CREATE DATA result TYPE HANDLE o_table_desc.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
ASSIGN result->* TO <tab>.
DELETE lt_rows WHERE table_line IS INITIAL.
LOOP AT lt_rows REFERENCE INTO DATA(lr_rows) FROM 2.
SPLIT lr_rows->* AT ';' INTO TABLE lt_cols.
DATA lr_row TYPE REF TO data.
CREATE DATA lr_row TYPE HANDLE struc.
LOOP AT lt_cols REFERENCE INTO lr_col.
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
ASSIGN COMPONENT sy-tabix OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
<field> = lr_col->*.
ENDLOOP.
INSERT <row> INTO TABLE <tab>.
ENDLOOP.
ENDMETHOD.
METHOD 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 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 get_csv_by_table.
FIELD-SYMBOLS <tab> TYPE table.
ASSIGN val TO <tab>.
DATA lr_row TYPE REF TO data.
DATA(tab) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( <tab> ) ).
DATA(struc) = CAST cl_abap_structdescr( tab->get_table_line_type( ) ).
LOOP AT struc->get_components( ) REFERENCE INTO DATA(lr_comp).
result = result && lr_comp->name && ';'.
ENDLOOP.
result = result && cl_abap_char_utilities=>cr_lf.
LOOP AT <tab> REFERENCE INTO lr_row.
DATA(lv_index) = 1.
DO.
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
ASSIGN COMPONENT lv_index OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
IF sy-subrc <> 0.
EXIT.
ENDIF.
lv_index = lv_index + 1.
result = result && <field> && ';'.
ENDDO.
result = result && cl_abap_char_utilities=>cr_lf.
ENDLOOP.
ENDMETHOD.
METHOD get_json_by_table.
result = /ui2/cl_json=>serialize(
val
* compress =
* name =
* pretty_name =
* type_descr =
* assoc_arrays =
* ts_as_iso8601 =
* expand_includes =
* assoc_arrays_opt =
* numc_as_string =
* name_mappings =
* conversion_exits =
" format_output = abap_true
* hex_as_base64 =
).
ENDMETHOD.
METHOD get_xml_by_table.
CALL TRANSFORMATION id SOURCE values = val RESULT XML result.
ENDMETHOD.
METHOD get_fieldlist_by_table.
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ).
DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
DATA(lt_comp) = lo_struc->get_components( ).
LOOP AT lt_comp INTO DATA(ls_comp).
INSERT ls_comp-name INTO TABLE result.
ENDLOOP.
ENDMETHOD.
METHOD get_string_by_xstring.
DATA conv TYPE REF TO object.
TRY.
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
RECEIVING
instance = conv.
CALL METHOD conv->('IF_ABAP_CONV_IN~CONVERT')
EXPORTING
source = val
RECEIVING
result = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(conv_in_class) = 'CL_ABAP_CONV_IN_CE'.
CALL METHOD (conv_in_class)=>create
EXPORTING
encoding = 'UTF-8'
RECEIVING
conv = conv.
CALL METHOD conv->('CONVERT')
EXPORTING
input = val
IMPORTING
data = result.
ENDTRY.
ENDMETHOD.
METHOD get_xstring_by_string.
DATA conv TYPE REF TO object.
TRY.
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_out
RECEIVING
instance = conv.
CALL METHOD conv->('IF_ABAP_CONV_OUT~CONVERT')
EXPORTING
source = val
RECEIVING
result = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(conv_out_class) = 'CL_ABAP_CONV_OUT_CE'.
CALL METHOD (conv_out_class)=>create
EXPORTING
encoding = 'UTF-8'
RECEIVING
conv = conv.
CALL METHOD conv->('CONVERT')
EXPORTING
data = val
IMPORTING
buffer = result.
ENDTRY.
* result = cl_abap_conv_codepage=>create_out( )->convert( val ).
ENDMETHOD.
METHOD trim_upper.
result = to_upper( shift_left( shift_right( val ) ) ).
ENDMETHOD.
ENDCLASS.

View File

@ -3,9 +3,9 @@
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_POPUP_INPUT_DATE</CLSNAME>
<CLSNAME>Z2UI5_CL_POPUP_PDF</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>ui - popup input date</DESCRIPT>
<DESCRIPT>ui - popup pdf</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>

View File

@ -64,6 +64,7 @@ CLASS Z2UI5_CL_POPUP_TO_CONFIRM IMPLEMENTATION.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->text( question_text

View File

@ -47,6 +47,7 @@ CLASS z2ui5_cl_popup_to_inform IMPLEMENTATION.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CONFIRM' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->text( question_text