Skip to content

Update #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions src/01/z2ui5_cl_layo_sample_01.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) ).

Expand All @@ -50,6 +55,10 @@ CLASS z2ui5_cl_layo_sample_01 IMPLEMENTATION.
layout = mo_layout ).

ENDCASE.


client->view_model_update( ).

ENDMETHOD.

METHOD on_init.
Expand Down Expand Up @@ -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( ).
Expand Down Expand Up @@ -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.
Expand Down
198 changes: 143 additions & 55 deletions src/03/z2ui5_cl_layo_manager.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,19 @@

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
Expand Down Expand Up @@ -175,6 +187,13 @@
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

Check failure on line 193 in src/03/z2ui5_cl_layo_manager.clas.abap

View check run for this annotation

abaplint / abaplint

Reference to current class can be omitted: "Z2UI5_CL_LAYO_MANAGER=>"

https://rules.abaplint.org/prefix_is_current_class
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reference to current class can be omitted: "Z2UI5_CL_LAYO_MANAGER=>"

Suggest following fix,

Suggested change
i_layout TYPE z2ui5_cl_layo_manager=>ty_s_positions
i_layout TYPE ty_s_positions

CHANGING
c_value TYPE data.

ENDCLASS.


Expand Down Expand Up @@ -321,7 +340,7 @@

DATA(index) = 0.

DO 99 TIMES.
DO 999 TIMES.

index = index + 1.

Expand Down Expand Up @@ -650,10 +669,62 @@

ENDMETHOD.

METHOD data_conversion.
METHOD set_selkz.

FIELD-SYMBOLS <table> TYPE STANDARD TABLE.

CHECK mv_sel_mode <> space.

ASSIGN mr_data->* TO <table>.

IF <table> IS INITIAL.
RETURN.
ENDIF.

IF t_event_arg IS INITIAL.
RETURN.
ENDIF.

DATA(id) = VALUE #( t_event_arg[ 1 ] OPTIONAL ).

LOOP AT <table> ASSIGNING FIELD-SYMBOL(<row>).

ASSIGN COMPONENT mv_sel_key_field OF STRUCTURE <row> TO FIELD-SYMBOL(<id>).

IF <id> IS NOT ASSIGNED.
CONTINUE.
ENDIF.

ASSIGN COMPONENT mv_sel_field OF STRUCTURE <row> TO FIELD-SYMBOL(<selkz>).
IF <selkz> IS NOT ASSIGNED.
CONTINUE.
ENDIF.

IF <id> = id.
<selkz> = COND #( WHEN <selkz> = abap_true THEN abap_false ELSE abap_true ).

IF mv_sel_mode = `M`.
EXIT.
ELSE.
" wenn deslektiert dann auch raus
IF <selkz> = abap_false.
EXIT.
ENDIF.
ENDIF.

ELSE.

IF mv_sel_mode <> `M`.
<selkz> = abap_false.
ENDIF.

ENDIF.

ENDLOOP.

* FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
* FIELD-SYMBOLS <struc> TYPE any.
ENDMETHOD.

METHOD data_conversion.

ASSIGN mr_data->* TO FIELD-SYMBOL(<any>).

Expand Down Expand Up @@ -711,82 +782,91 @@
CONTINUE.
ENDIF.

IF layout-convexit = 'CUNIT'.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING input = <value>
language = sy-langu
IMPORTING output = <value>
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 = <value>
IMPORTING output = <value>
EXCEPTIONS OTHERS = 99.
IF sy-subrc <> 0.
ENDIF.
CATCH cx_root.
ENDTRY.
convert( EXPORTING i_output = output
i_layout = layout
CHANGING c_value = <value> ).

ENDLOOP.

WHEN ui_simpleform.

* ASSIGN mr_data->* TO <struc>.
*
* IF <struc> IS NOT ASSIGNED.
* CONTINUE.
* ENDIF.

ASSIGN COMPONENT layout-fname OF STRUCTURE <any> TO <value>.
IF <value> 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 = <value>
IMPORTING output = <value>
EXCEPTIONS OTHERS = 99.
IF sy-subrc <> 0.
ENDIF.
CATCH cx_root.
ENDTRY.
convert( EXPORTING i_output = output
i_layout = layout
CHANGING c_value = <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.
DATA s_obj TYPE REF TO data.

FIELD-SYMBOLS <T_obj> 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 <T_obj>.
ASSIGN s_obj->* TO FIELD-SYMBOL(<obj>).

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 = <t_obj>
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 <T_obj>[ 1 ] TO <obj>.
IF sy-subrc <> 0.
RETURN.
ENDIF.

ASSIGN COMPONENT 'CONVEXIT' OF STRUCTURE <obj> TO FIELD-SYMBOL(<conv>).
IF <conv> IS NOT ASSIGNED.
RETURN.
ENDIF.

result-convexit = <conv>.

IF result-convexit <> space.
result-show_convexit = abap_true.
Expand All @@ -807,4 +887,12 @@

ENDMETHOD.

METHOD set_selektion_criteria.

mv_sel_mode = sel_mode.
mv_sel_field = sel_field.
mv_sel_key_field = sel_key_field.

ENDMETHOD.

ENDCLASS.
15 changes: 5 additions & 10 deletions src/03/z2ui5_cl_layo_pop.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -354,8 +355,6 @@ CLASS z2ui5_cl_layo_pop IMPLEMENTATION.

METHOD on_event.

FIELD-SYMBOLS <row> TYPE any.

CASE client->get( )-event.

WHEN 'LAYOUT_EDIT'.
Expand Down Expand Up @@ -416,7 +415,7 @@ CLASS z2ui5_cl_layo_pop IMPLEMENTATION.

client->popup_destroy( ).

client->nav_app_leave( ).
client->nav_app_leave( ).

WHEN 'DELETE_SELECT'.

Expand Down Expand Up @@ -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).
Expand All @@ -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 #( ).
Expand Down
8 changes: 4 additions & 4 deletions src/03/z2ui5_t_12.tabl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,10 @@
<FIELDNAME>SEQUENCE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>X</INTTYPE>
<INTLEN>000001</INTLEN>
<DATATYPE>INT1</DATATYPE>
<LENG>000003</LENG>
<MASK> INT1</MASK>
<INTLEN>000002</INTLEN>
<DATATYPE>INT2</DATATYPE>
<LENG>000005</LENG>
<MASK> INT2</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ALTERNATIVE_TEXT</FIELDNAME>
Expand Down
Loading