diff --git a/src/objects/zcl_abapgit_object_form.clas.abap b/src/objects/zcl_abapgit_object_form.clas.abap index b6d81842d..7ac8ecfcb 100644 --- a/src/objects/zcl_abapgit_object_form.clas.abap +++ b/src/objects/zcl_abapgit_object_form.clas.abap @@ -89,6 +89,11 @@ CLASS zcl_abapgit_object_form DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje es_form_data TYPE zcl_abapgit_object_form=>tys_form_data et_lines TYPE zcl_abapgit_object_form=>tyt_lines. + METHODS _sort_tdlines_by_windows + CHANGING + ct_form_windows TYPE zcl_abapgit_object_form=>tys_form_data-windows + ct_lines TYPE zcl_abapgit_object_form=>tyt_lines. + METHODS order_check_and_insert RAISING zcx_abapgit_exception. @@ -449,10 +454,38 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION. tabs = es_form_data-tabs windows = es_form_data-windows. + _sort_tdlines_by_windows( CHANGING ct_form_windows = es_form_data-windows + ct_lines = et_lines ). ENDMETHOD. + METHOD _sort_tdlines_by_windows. + DATA lt_lines TYPE zcl_abapgit_object_form=>tyt_lines. + DATA ls_lines LIKE LINE OF lt_lines. + DATA ls_form_windows LIKE LINE OF ct_form_windows. + DATA lv_elt_windows TYPE tdformat VALUE '/W'. + DATA lv_firstloop TYPE boolean. - METHOD _save_form. + lt_lines = ct_lines. + CLEAR ct_lines. + + SORT ct_form_windows BY tdwindow. + + LOOP AT ct_form_windows INTO ls_form_windows. + lv_firstloop = abap_true. + READ TABLE lt_lines INTO ls_lines WITH KEY tdformat = lv_elt_windows + tdline = ls_form_windows-tdwindow. + LOOP AT lt_lines INTO ls_lines FROM sy-tabix. + IF lv_firstloop = abap_false AND + ls_lines-tdformat = lv_elt_windows. + EXIT. + ENDIF. + APPEND ls_lines TO ct_lines. + lv_firstloop = abap_false. + ENDLOOP. + ENDLOOP. + ENDMETHOD. + +METHOD _save_form. CALL FUNCTION 'SAVE_FORM' EXPORTING