From bc81d42d6692244f914cea2ade05db30ea94ac20 Mon Sep 17 00:00:00 2001 From: larshp Date: Tue, 8 Mar 2016 17:39:44 +0000 Subject: [PATCH] only one XML file for FUGR --- zabapgit.prog.abap | 197 +++++++++++++++++---------------------------- 1 file changed, 73 insertions(+), 124 deletions(-) diff --git a/zabapgit.prog.abap b/zabapgit.prog.abap index 1fb0c0c58..86924a569 100644 --- a/zabapgit.prog.abap +++ b/zabapgit.prog.abap @@ -2437,8 +2437,8 @@ CLASS lcl_objects_bridge IMPLEMENTATION. lo_wrapped_files TYPE REF TO object. CALL METHOD mo_plugin->('WRAP_SERIALIZE') - EXPORTING - io_xml = io_xml. + EXPORTING + io_xml = io_xml. ENDMETHOD. @@ -9112,6 +9112,24 @@ CLASS lcl_object_fugr DEFINITION INHERITING FROM lcl_objects_program FINAL. PRIVATE SECTION. TYPES: ty_rs38l_incl_tt TYPE STANDARD TABLE OF rs38l_incl WITH DEFAULT KEY. + TYPES: BEGIN OF ty_function, + funcname TYPE rs38l_fnam, + include TYPE progname, + global_flag TYPE rs38l-global, + remote_call TYPE rs38l-remote, + update_task TYPE rs38l-utask, + short_text TYPE tftit-stext, + remote_basxml TYPE rs38l-basxml_enabled, + import TYPE STANDARD TABLE OF rsimp WITH DEFAULT KEY, + changing TYPE STANDARD TABLE OF rscha WITH DEFAULT KEY, + export TYPE STANDARD TABLE OF rsexp WITH DEFAULT KEY, + tables TYPE STANDARD TABLE OF rstbl WITH DEFAULT KEY, + exception TYPE STANDARD TABLE OF rsexc WITH DEFAULT KEY, + documentation TYPE STANDARD TABLE OF rsfdo WITH DEFAULT KEY, + END OF ty_function. + + TYPES: ty_function_tt TYPE STANDARD TABLE OF ty_function WITH DEFAULT KEY. + METHODS main_name RETURNING VALUE(rv_program) TYPE program RAISING lcx_exception. @@ -9125,10 +9143,11 @@ CLASS lcl_object_fugr DEFINITION INHERITING FROM lcl_objects_program FINAL. RAISING lcx_exception. METHODS serialize_functions - RAISING lcx_exception. + RETURNING VALUE(rt_functions) TYPE ty_function_tt + RAISING lcx_exception. METHODS deserialize_functions - IMPORTING io_xml TYPE REF TO lcl_xml_input + IMPORTING it_functions type ty_function_tt RAISING lcx_exception. METHODS serialize_xml @@ -9184,62 +9203,20 @@ CLASS lcl_object_fugr IMPLEMENTATION. DATA: lv_include TYPE rs38l-include, lv_area TYPE rs38l-area, - lt_functab TYPE ty_rs38l_incl_tt, - lt_import TYPE TABLE OF rsimp, - lt_changing TYPE TABLE OF rscha, - lt_export TYPE TABLE OF rsexp, - lt_tables TYPE TABLE OF rstbl, - lt_exception TYPE TABLE OF rsexc, - lt_documentation TYPE TABLE OF rsfdo, - lt_source TYPE TABLE OF rssource, - lv_global_flag TYPE rs38l-global, - lv_remote_call TYPE rs38l-remote, - lv_update_task TYPE rs38l-utask, - lv_short_text TYPE tftit-stext, - lo_xml TYPE REF TO lcl_xml_input, - lv_remote_basxml TYPE rs38l-basxml_enabled. + lt_source TYPE TABLE OF rssource. - FIELD-SYMBOLS: LIKE LINE OF lt_functab. + FIELD-SYMBOLS: LIKE LINE OF it_functions. - io_xml->read( EXPORTING iv_name = 'FUNCTAB' - CHANGING cg_data = lt_functab ). + LOOP AT it_functions ASSIGNING . - LOOP AT lt_functab ASSIGNING . - - lt_source = mo_files->read_abap( iv_extra = -funcname ). - - lo_xml = mo_files->read_xml( iv_extra = -funcname ). - - lo_xml->read( EXPORTING iv_name = 'GLOBAL_FLAG' - CHANGING cg_data = lv_global_flag ). - lo_xml->read( EXPORTING iv_name = 'REMOTE_CALL' - CHANGING cg_data = lv_remote_call ). - lo_xml->read( EXPORTING iv_name = 'UPDATE_TASK' - CHANGING cg_data = lv_update_task ). - lo_xml->read( EXPORTING iv_name = 'SHORT_TEXT' - CHANGING cg_data = lv_short_text ). - lo_xml->read( EXPORTING iv_name = 'REMOTE_BASXML' - CHANGING cg_data = lv_remote_basxml ). - - lo_xml->read( EXPORTING iv_name = 'IMPORT' - CHANGING cg_data = lt_import ). - lo_xml->read( EXPORTING iv_name = 'CHANGING' - CHANGING cg_data = lt_changing ). - lo_xml->read( EXPORTING iv_name = 'EXPORT' - CHANGING cg_data = lt_export ). - lo_xml->read( EXPORTING iv_name = 'TABLES' - CHANGING cg_data = lt_tables ). - lo_xml->read( EXPORTING iv_name = 'EXCEPTION' - CHANGING cg_data = lt_exception ). - lo_xml->read( EXPORTING iv_name = 'DOCUMENTATION' - CHANGING cg_data = lt_documentation ). + lt_source = mo_files->read_abap( iv_extra = -funcname ). lv_area = ms_item-obj_name. CALL FUNCTION 'FUNCTION_EXISTS' EXPORTING - funcname = -funcname + funcname = -funcname IMPORTING include = lv_include EXCEPTIONS @@ -9249,7 +9226,7 @@ CLASS lcl_object_fugr IMPLEMENTATION. * havent found a nice way to update the paramters CALL FUNCTION 'FUNCTION_DELETE' EXPORTING - funcname = -funcname + funcname = -funcname suppress_success_message = abap_true EXCEPTIONS error_message = 1 @@ -9261,22 +9238,22 @@ CLASS lcl_object_fugr IMPLEMENTATION. CALL FUNCTION 'RS_FUNCTIONMODULE_INSERT' EXPORTING - funcname = -funcname + funcname = -funcname function_pool = lv_area - interface_global = lv_global_flag - remote_call = lv_remote_call - short_text = lv_short_text + interface_global = -global_flag + remote_call = -remote_call + short_text = -short_text * NAMESPACE = ' ' todo - remote_basxml_supported = lv_remote_basxml + remote_basxml_supported = -remote_basxml IMPORTING - function_include = lv_include + function_include = -include TABLES - import_parameter = lt_import - export_parameter = lt_export - tables_parameter = lt_tables - changing_parameter = lt_changing - exception_list = lt_exception - parameter_docu = lt_documentation + import_parameter = -import + export_parameter = -export + tables_parameter = -tables + changing_parameter = -changing + exception_list = -exception + parameter_docu = -documentation EXCEPTIONS double_task = 1 error_message = 2 @@ -9296,7 +9273,7 @@ CLASS lcl_object_fugr IMPLEMENTATION. INSERT REPORT lv_include FROM lt_source. lcl_objects_activation=>add( iv_type = 'FUNC' - iv_name = -funcname ). + iv_name = -funcname ). ENDLOOP. @@ -9423,8 +9400,6 @@ CLASS lcl_object_fugr IMPLEMENTATION. io_xml->add( iv_name = 'AREAT' ig_data = lv_areat ). - io_xml->add( iv_name = 'FUNCTAB' - ig_data = lt_functab ). io_xml->add( iv_name = 'INCLUDES' ig_data = lt_includes ). @@ -9536,23 +9511,13 @@ CLASS lcl_object_fugr IMPLEMENTATION. METHOD serialize_functions. - DATA: lt_import TYPE TABLE OF rsimp, - lo_xml TYPE REF TO lcl_xml_output, - lt_changing TYPE TABLE OF rscha, - lt_export TYPE TABLE OF rsexp, - lt_tables TYPE TABLE OF rstbl, - lt_exception TYPE TABLE OF rsexc, - lt_documentation TYPE TABLE OF rsfdo, - lt_source TYPE TABLE OF rssource, - lv_global_flag TYPE rs38l-global, - lv_remote_call TYPE rs38l-remote, - lv_update_task TYPE rs38l-utask, - lv_short_text TYPE tftit-stext, - lt_functab TYPE ty_rs38l_incl_tt, - lt_new_source TYPE rsfb_source, - lv_remote_basxml TYPE rs38l-basxml_enabled. + DATA: + lt_source TYPE TABLE OF rssource, + lt_functab TYPE ty_rs38l_incl_tt, + lt_new_source TYPE rsfb_source. - FIELD-SYMBOLS: LIKE LINE OF lt_functab. + FIELD-SYMBOLS: LIKE LINE OF lt_functab, + LIKE LINE OF rt_functions. lt_functab = functions( ). @@ -9560,22 +9525,25 @@ CLASS lcl_object_fugr IMPLEMENTATION. LOOP AT lt_functab ASSIGNING . * fm RPY_FUNCTIONMODULE_READ does not support source code * lines longer than 72 characters + APPEND INITIAL LINE TO rt_functions ASSIGNING . + MOVE-CORRESPONDING TO . + CALL FUNCTION 'RPY_FUNCTIONMODULE_READ_NEW' EXPORTING functionname = -funcname IMPORTING - global_flag = lv_global_flag - remote_call = lv_remote_call - update_task = lv_update_task - short_text = lv_short_text - remote_basxml_supported = lv_remote_basxml + global_flag = -global_flag + remote_call = -remote_call + update_task = -update_task + short_text = -short_text + remote_basxml_supported = -remote_basxml TABLES - import_parameter = lt_import - changing_parameter = lt_changing - export_parameter = lt_export - tables_parameter = lt_tables - exception_list = lt_exception - documentation = lt_documentation + import_parameter = -import + changing_parameter = -changing + export_parameter = -export + tables_parameter = -tables + exception_list = -exception + documentation = -documentation source = lt_source CHANGING new_source = lt_new_source @@ -9588,34 +9556,6 @@ CLASS lcl_object_fugr IMPLEMENTATION. _raise 'Error from RPY_FUNCTIONMODULE_READ_NEW'. ENDIF. - CREATE OBJECT lo_xml. - lo_xml->add( iv_name = 'GLOBAL_FLAG' - ig_data = lv_global_flag ). - lo_xml->add( iv_name = 'REMOTE_CALL' - ig_data = lv_remote_call ). - lo_xml->add( iv_name = 'UPDATE_TASK' - ig_data = lv_update_task ). - lo_xml->add( iv_name = 'SHORT_TEXT' - ig_data = lv_short_text ). - lo_xml->add( iv_name = 'REMOTE_BASXML' - ig_data = lv_remote_basxml ). - - lo_xml->add( ig_data = lt_import - iv_name = 'IMPORT' ). - lo_xml->add( ig_data = lt_changing - iv_name = 'CHANGING' ). - lo_xml->add( ig_data = lt_export - iv_name = 'EXPORT' ). - lo_xml->add( ig_data = lt_tables - iv_name = 'TABLES' ). - lo_xml->add( ig_data = lt_exception - iv_name = 'EXCEPTION' ). - lo_xml->add( ig_data = lt_documentation - iv_name = 'DOCUMENTATION' ). - - mo_files->add_xml( iv_extra = -funcname - io_xml = lo_xml ). - IF NOT lt_new_source IS INITIAL. mo_files->add_abap( iv_extra = -funcname it_abap = lt_new_source ). @@ -9651,13 +9591,17 @@ CLASS lcl_object_fugr IMPLEMENTATION. METHOD lif_object~serialize. + DATA: lt_functions TYPE ty_function_tt. + IF lif_object~exists( ) = abap_false. RETURN. ENDIF. serialize_xml( io_xml ). - serialize_functions( ). + lt_functions = serialize_functions( ). + io_xml->add( iv_name = 'FUNCTIONS' + ig_data = lt_functions ). serialize_includes( ). @@ -9665,11 +9609,16 @@ CLASS lcl_object_fugr IMPLEMENTATION. METHOD lif_object~deserialize. + DATA: lt_functions TYPE ty_function_tt. + + deserialize_xml( io_xml = io_xml iv_package = iv_package ). - deserialize_functions( io_xml ). + io_xml->read( EXPORTING iv_name = 'FUNCTIONS' + CHANGING cg_data = lt_functions ). + deserialize_functions( lt_functions ). deserialize_includes( io_xml = io_xml