From 375ab27a00e983df08c682ab1222a639c5e85803 Mon Sep 17 00:00:00 2001 From: Viktor Hoffmann Date: Fri, 25 Jul 2025 11:21:44 +0000 Subject: [PATCH 1/2] Update --- src/01/z2ui5_cl_layo_sample_01.clas.abap | 13 ++- src/03/z2ui5_cl_layo_manager.clas.abap | 109 +++++++++++++++++++++-- src/03/z2ui5_cl_layo_pop.clas.abap | 15 ++-- src/03/z2ui5_t_12.tabl.xml | 8 +- 4 files changed, 121 insertions(+), 24 deletions(-) diff --git a/src/01/z2ui5_cl_layo_sample_01.clas.abap b/src/01/z2ui5_cl_layo_sample_01.clas.abap index c805524..5a0ea5d 100644 --- a/src/01/z2ui5_cl_layo_sample_01.clas.abap +++ b/src/01/z2ui5_cl_layo_sample_01.clas.abap @@ -41,6 +41,11 @@ CLASS z2ui5_cl_layo_sample_01 IMPLEMENTATION. CASE client->get( )-event. + WHEN 'ROW_SELECT'. + + mo_layout->set_selkz( t_event_arg = client->get( )-t_event_arg ). + + WHEN 'BACK'. client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ). @@ -50,6 +55,10 @@ CLASS z2ui5_cl_layo_sample_01 IMPLEMENTATION. layout = mo_layout ). ENDCASE. + + + client->view_model_update( ). + ENDMETHOD. METHOD on_init. @@ -89,7 +98,7 @@ CLASS z2ui5_cl_layo_sample_01 IMPLEMENTATION. on_event( ). - mo_layout->sort( ). + mo_layout->sort( ). IF client->get( )-check_on_navigated = abap_true. on_after_navigation( ). @@ -164,7 +173,7 @@ CLASS z2ui5_cl_layo_sample_01 IMPLEMENTATION. mo_layout = app->mo_layout. IF app->mv_rerender = abap_true. - "e.g. subcolumns need rerendering to work .. + " e.g. subcolumns need rerendering to work .. render_main( ). ELSE. " for all other changes in Layout View Model Update is enough. diff --git a/src/03/z2ui5_cl_layo_manager.clas.abap b/src/03/z2ui5_cl_layo_manager.clas.abap index 4a895d7..ba755bc 100644 --- a/src/03/z2ui5_cl_layo_manager.clas.abap +++ b/src/03/z2ui5_cl_layo_manager.clas.abap @@ -129,7 +129,19 @@ CLASS z2ui5_cl_layo_manager DEFINITION METHODS sort. + METHODS set_selektion_criteria + IMPORTING + sel_mode TYPE string + sel_field TYPE string + sel_key_field TYPE string. + + METHODS set_selkz IMPORTING t_event_arg TYPE string_table. + PROTECTED SECTION. + DATA mv_sel_mode TYPE string. + DATA mv_sel_field TYPE string. + DATA mv_sel_key_field TYPE string. + CLASS-METHODS get_conversion_exit IMPORTING !type TYPE REF TO cl_abap_datadescr @@ -321,7 +333,7 @@ CLASS z2ui5_cl_layo_manager IMPLEMENTATION. DATA(index) = 0. - DO 99 TIMES. + DO 999 TIMES. index = index + 1. @@ -650,6 +662,61 @@ CLASS z2ui5_cl_layo_manager IMPLEMENTATION. ENDMETHOD. + METHOD set_selkz. + + FIELD-SYMBOLS TYPE STANDARD TABLE. + + CHECK mv_sel_mode <> space. + + ASSIGN mr_data->* TO
. + + IF
IS INITIAL. + RETURN. + ENDIF. + + IF t_event_arg IS INITIAL. + RETURN. + ENDIF. + + DATA(id) = VALUE #( t_event_arg[ 1 ] OPTIONAL ). + + LOOP AT
ASSIGNING FIELD-SYMBOL(). + + ASSIGN COMPONENT mv_sel_key_field OF STRUCTURE TO FIELD-SYMBOL(). + + IF IS NOT ASSIGNED. + CONTINUE. + ENDIF. + + ASSIGN COMPONENT mv_sel_field OF STRUCTURE TO FIELD-SYMBOL(). + IF IS NOT ASSIGNED. + CONTINUE. + ENDIF. + + IF = id. + = COND #( WHEN = abap_true THEN abap_false ELSE abap_true ). + + IF mv_sel_mode = `M`. + EXIT. + ELSE. + " wenn deslektiert dann auch raus + IF = abap_false. + EXIT. + ENDIF. + ENDIF. + + ELSE. + + IF mv_sel_mode <> `M`. + = abap_false. + ENDIF. + + ENDIF. + + ENDLOOP. + + ENDMETHOD. + METHOD data_conversion. * FIELD-SYMBOLS
TYPE STANDARD TABLE. @@ -773,20 +840,38 @@ CLASS z2ui5_cl_layo_manager IMPLEMENTATION. METHOD get_conversion_exit. + DATA t_obj TYPE REF TO data. + DATA s_obj TYPE REF TO data. + + FIELD-SYMBOLS TYPE STANDARD TABLE. + result = layout. + CREATE DATA t_obj TYPE ('DD_X031L_TABLE'). + CREATE DATA s_obj TYPE LINE OF ('DD_X031L_TABLE'). + ASSIGN t_obj->* TO . + ASSIGN s_obj->* TO FIELD-SYMBOL(). + TRY. - DATA t_obj TYPE dd_x031l_table. - type->get_ddic_object( RECEIVING p_object = t_obj - EXCEPTIONS not_found = 1 - no_ddic_type = 2 ). + CALL METHOD type->('GET_DDIC_OBJECT') + RECEIVING p_object = + EXCEPTIONS not_found = 1 + no_ddic_type = 2. IF sy-subrc <> 0. RETURN. ENDIF. - DATA ls_obj LIKE LINE OF t_obj. - ls_obj = VALUE #( t_obj[ 1 ] OPTIONAL ). - result-convexit = ls_obj-convexit. + ASSIGN [ 1 ] TO . + IF sy-subrc <> 0. + RETURN. + ENDIF. + + ASSIGN COMPONENT 'CONVEXIT' OF STRUCTURE TO FIELD-SYMBOL(). + IF IS NOT ASSIGNED. + RETURN. + ENDIF. + + result-convexit = . IF result-convexit <> space. result-show_convexit = abap_true. @@ -807,4 +892,12 @@ CLASS z2ui5_cl_layo_manager IMPLEMENTATION. ENDMETHOD. + METHOD set_selektion_criteria. + + mv_sel_mode = sel_mode. + mv_sel_field = sel_field. + mv_sel_key_field = sel_key_field. + + ENDMETHOD. + ENDCLASS. diff --git a/src/03/z2ui5_cl_layo_pop.clas.abap b/src/03/z2ui5_cl_layo_pop.clas.abap index 6e31873..1b7253a 100644 --- a/src/03/z2ui5_cl_layo_pop.clas.abap +++ b/src/03/z2ui5_cl_layo_pop.clas.abap @@ -116,10 +116,11 @@ CLASS z2ui5_cl_layo_pop DEFINITION PRIVATE SECTION. METHODS check_grid_sum IMPORTING - value TYPE int4 - type TYPE string + !value TYPE int4 + !type TYPE string RETURNING VALUE(result) TYPE abap_bool. + METHODS Edit_okay. METHODS Search. @@ -354,8 +355,6 @@ CLASS z2ui5_cl_layo_pop IMPLEMENTATION. METHOD on_event. - FIELD-SYMBOLS TYPE any. - CASE client->get( )-event. WHEN 'LAYOUT_EDIT'. @@ -416,7 +415,7 @@ CLASS z2ui5_cl_layo_pop IMPLEMENTATION. client->popup_destroy( ). - client->nav_app_leave( ). + client->nav_app_leave( ). WHEN 'DELETE_SELECT'. @@ -470,8 +469,6 @@ CLASS z2ui5_cl_layo_pop IMPLEMENTATION. ENDMETHOD. - - METHOD Edit_okay. LOOP AT mo_layout->ms_layout-t_layout REFERENCE INTO DATA(layout). @@ -486,12 +483,10 @@ CLASS z2ui5_cl_layo_pop IMPLEMENTATION. client->popup_destroy( ). - client->nav_app_leave( ). + client->nav_app_leave( ). ENDMETHOD. - - METHOD factory. result = NEW #( ). diff --git a/src/03/z2ui5_t_12.tabl.xml b/src/03/z2ui5_t_12.tabl.xml index 3314cf3..9cb4238 100644 --- a/src/03/z2ui5_t_12.tabl.xml +++ b/src/03/z2ui5_t_12.tabl.xml @@ -116,10 +116,10 @@ SEQUENCE 0 X - 000001 - INT1 - 000003 - INT1 + 000002 + INT2 + 000005 + INT2 ALTERNATIVE_TEXT From 5a71a4682c0806465dcd013d388434e136da232f Mon Sep 17 00:00:00 2001 From: Viktor Hoffmann Date: Mon, 4 Aug 2025 07:38:45 +0000 Subject: [PATCH 2/2] Update Conversion Exit --- src/03/z2ui5_cl_layo_manager.clas.abap | 89 ++++++++++++-------------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/src/03/z2ui5_cl_layo_manager.clas.abap b/src/03/z2ui5_cl_layo_manager.clas.abap index ba755bc..f69becd 100644 --- a/src/03/z2ui5_cl_layo_manager.clas.abap +++ b/src/03/z2ui5_cl_layo_manager.clas.abap @@ -187,6 +187,13 @@ CLASS z2ui5_cl_layo_manager DEFINITION RETURNING VALUE(result) TYPE ty_s_positions. + METHODS convert + IMPORTING + i_output TYPE abap_bool + i_layout TYPE z2ui5_cl_layo_manager=>ty_s_positions + CHANGING + c_value TYPE data. + ENDCLASS. @@ -719,9 +726,6 @@ CLASS z2ui5_cl_layo_manager IMPLEMENTATION. METHOD data_conversion. -* FIELD-SYMBOLS
TYPE STANDARD TABLE. -* FIELD-SYMBOLS TYPE any. - ASSIGN mr_data->* TO FIELD-SYMBOL(). IF IS NOT ASSIGNED. @@ -778,66 +782,57 @@ CLASS z2ui5_cl_layo_manager IMPLEMENTATION. CONTINUE. ENDIF. - IF layout-convexit = 'CUNIT'. - - CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' - EXPORTING input = - language = sy-langu - IMPORTING output = - EXCEPTIONS unit_not_found = 1 - OTHERS = 2. - - ELSE. - - DATA(conex) = COND #( WHEN output = abap_true - THEN |CONVERSION_EXIT_{ layout-convexit }_OUTPUT| - ELSE |CONVERSION_EXIT_{ layout-convexit }_INPUT| ). - ENDIF. - - TRY. - CALL FUNCTION conex - EXPORTING input = - IMPORTING output = - EXCEPTIONS OTHERS = 99. - IF sy-subrc <> 0. - ENDIF. - CATCH cx_root. - ENDTRY. + convert( EXPORTING i_output = output + i_layout = layout + CHANGING c_value = ). ENDLOOP. WHEN ui_simpleform. -* ASSIGN mr_data->* TO . -* -* IF IS NOT ASSIGNED. -* CONTINUE. -* ENDIF. - ASSIGN COMPONENT layout-fname OF STRUCTURE TO . IF IS NOT ASSIGNED. CONTINUE. ENDIF. - conex = COND #( WHEN output = abap_true - THEN |CONVERSION_EXIT_{ layout-convexit }_OUTPUT| - ELSE |CONVERSION_EXIT_{ layout-convexit }_INPUT| ). - - TRY. - CALL FUNCTION conex - EXPORTING input = - IMPORTING output = - EXCEPTIONS OTHERS = 99. - IF sy-subrc <> 0. - ENDIF. - CATCH cx_root. - ENDTRY. + convert( EXPORTING i_output = output + i_layout = layout + CHANGING c_value = ). ENDCASE. ENDLOOP. ENDMETHOD. + METHOD convert. + + DATA(conex) = COND #( WHEN i_output = abap_true + THEN |CONVERSION_EXIT_{ i_layout-convexit }_OUTPUT| + ELSE |CONVERSION_EXIT_{ i_layout-convexit }_INPUT| ). + + TRY. + IF i_layout-convexit = 'CUNIT'. + + CALL FUNCTION conex + EXPORTING input = c_value + language = sy-langu + IMPORTING output = c_value + EXCEPTIONS OTHERS = 99. + + ELSE. + + CALL FUNCTION conex + EXPORTING input = c_value + IMPORTING output = c_value + EXCEPTIONS OTHERS = 99. + + ENDIF. + + CATCH cx_root. + ENDTRY. + + ENDMETHOD. + METHOD get_conversion_exit. DATA t_obj TYPE REF TO data.