Ciber toGo Mobile это немецкое решение для ТСД (терминалов сбора данных).
Экран ТСД (EWM):

Dynpro:
process before output. module init_0100. module status_0100. module udapte_screen_0100. process after input. module exit_command_0100 at exit-command. module user_command_0100.

Логика:
data: go_ledruck type ref to zcl_mde_helper, g_fcode type sy-ucomm. module status_0100 output. create object go_cont exporting container_name = 'ALV_TA'. call method cl_salv_table=>factory exporting r_container = go_cont importing r_salv_table = go_alv_ta changing t_table = gt_talist. go_display = go_alv_ta->get_display_settings( ). * ALV-баганаларын алабыз call method go_alv_ta->get_columns receiving value = go_columns. * ALV-баганаларның киңлеген төзәтү go_columns->set_optimize( ). * юлларны буйлы итеп буярга кирәк: call method go_display->set_striped_pattern exporting value = 'X'. go_selections = go_alv_ta->get_selections( ). go_selections->set_selection_mode( go_selections->single ). go_alv_ta->display( ). endmodule. module user_command_0100 input. go_klassif->g_dynnr = sy-dynnr. case g_fcode. when 'F4' or 'ENTER'. if go_klassif->are_fields_filled_out( sy-dynnr && sy-repid ). call screen 0200. endif. endcase. endmodule. module init_0100 output. go_klassif = zcl_mde_helper=>instance( ). endmodule. module status_0100 output. set pf-status 'PF_STATUS_ZL_LEIH'. endmodule. module exit_command_0100 input. " F3 (E) leave to screen 0. endmodule. module udapte_screen_0100 output. perform set_cursor_0100. endmodule. form set_cursor_0100 . data(l_focus_field) = go_klassif->get_next_field_to_fill_out( sy-dynnr && sy-repid ). if l_focus_field is not initial. set cursor field l_focus_field. endif. endform.
method GET_NEXT_FIELD_TO_FILL_OUT. case i_dynnrrepid. when '0100ZL_LEIH'. r_ret = 'GO_KLASSIF->' && cond #( when g_from_plant is initial then 'G_FROM_PLANT' when g_from_stloc is initial then 'G_FROM_STLOC' ). when '0200ZL_LEIH'. r_ret = 'GO_KLASSIF->' && cond #( when g_to_stloc is initial then 'G_TO_STLOC' " иң озыны - иң берсе!! when g_ean is initial then 'G_EAN' when g_sernr is initial then 'G_SERNR' ). when '0300ZL_LEIH'. r_ret = 'GO_KLASSIF->' && cond #( when g_to_sttyp is initial then 'G_TO_STTYP' when g_to_stbin is initial then 'G_TO_STBIN' ). endcase. endmethod. method ARE_FIELDS_FILLED_OUT. r_ret = _false. case i_dynnrrepid. when '0100ZL_PRINT'. if g_lenum is not initial. r_ret = _true. return. endif. when '0100ZL_LEIH'. if g_from_plant is not initial and g_from_stloc is not initial. r_ret = _true. return. endif. when '0200ZL_LEIH'. if g_ean is not initial and g_sernr is not initial and g_to_stloc is not initial. r_ret = _true. return. endif. when '0300ZL_LEIH'. if g_to_sttyp is not initial and g_to_stbin is not initial. r_ret = _true. return. endif. endcase. endmethod.