diff --git a/zagit.abap b/zagit.abap index dcd0791c0..956569f63 100644 --- a/zagit.abap +++ b/zagit.abap @@ -811,6 +811,8 @@ CLASS lcl_serialize IMPLEMENTATION. _raise 'Serialize, unknown type'. ENDCASE. +* todo, duplicates in rt_files? via includes? + ENDMETHOD. "serialize METHOD status. @@ -904,15 +906,21 @@ CLASS lcl_serialize IMPLEMENTATION. METHOD prog_serialize. - DATA: ls_progdir TYPE progdir, + DATA: ls_progdir TYPE progdir, lv_program_name TYPE programm, lv_xml TYPE string, lt_source TYPE TABLE OF abaptxt255, lv_source TYPE string, + lt_files LIKE rt_files, + lt_dynpros TYPE TABLE OF d020s, + lt_includes TYPE programt, lt_textelements TYPE textpool_table, ls_file LIKE LINE OF rt_files, lo_xml TYPE REF TO lcl_xml. + FIELD-SYMBOLS: LIKE LINE OF lt_includes, + LIKE LINE OF lt_dynpros. + lv_program_name = iv_obj_name. @@ -952,6 +960,47 @@ CLASS lcl_serialize IMPLEMENTATION. lo_xml->table_add( lt_textelements ). lv_xml = lo_xml->render( ). + + CALL FUNCTION 'RS_SCREEN_LIST' + EXPORTING + dynnr = '*' + progname = lv_program_name + TABLES + dynpros = lt_dynpros + EXCEPTIONS + not_found = 1 + OTHERS = 2. + IF sy-subrc = 2. + _raise 'error from screen_list'. + ENDIF. + + DATA: ls_header TYPE rpy_dyhead, + lt_containers TYPE dycatt_tab, + lt_fields_to_containers TYPE dyfatc_tab, + lt_flow_logic TYPE swydyflow. + + LOOP AT lt_dynpros ASSIGNING . + CALL FUNCTION 'RPY_DYNPRO_READ' + EXPORTING + progname = lv_program_name + dynnr = -dnum + IMPORTING + header = ls_header + TABLES + containers = lt_containers + fields_to_containers = lt_fields_to_containers + flow_logic = lt_flow_logic + EXCEPTIONS + cancelled = 1 + not_found = 2 + permission_error = 3 + OTHERS = 4. + IF sy-subrc <> 0. + _raise 'Error while reading dynpro'. + ENDIF. +* todo, add to xml + ENDLOOP. + CLEAR ls_file. ls_file-path = '/'. CONCATENATE lv_program_name '.prog.xml' INTO ls_file-filename. "#EC NOTEXT @@ -967,6 +1016,25 @@ CLASS lcl_serialize IMPLEMENTATION. ls_file-data = lcl_convert=>string_to_xstring_utf8( lv_source ). APPEND ls_file TO rt_files. + + CALL FUNCTION 'RS_GET_ALL_INCLUDES' + EXPORTING + program = lv_program_name + TABLES + includetab = lt_includes + EXCEPTIONS + not_existent = 1 + no_program = 2 + OTHERS = 3. + IF sy-subrc <> 0. + _raise 'Error from get_all_includes'. + ENDIF. + + LOOP AT lt_includes ASSIGNING . + lt_files = prog_serialize( ). + APPEND LINES OF lt_files TO rt_files. + ENDLOOP. + ENDMETHOD. "prog_serialize @@ -3241,6 +3309,8 @@ CLASS lcl_gui IMPLEMENTATION. -obj_type && ' ' && -obj_name && + ' ' && + -match && '
'. ENDLOOP.