diff --git a/src/zabapgit_object_acid.prog.abap b/src/zabapgit_object_acid.prog.abap index efc47f9e1..e65983ce0 100644 --- a/src/zabapgit_object_acid.prog.abap +++ b/src/zabapgit_object_acid.prog.abap @@ -71,7 +71,9 @@ CLASS lcl_object_acid IMPLEMENTATION. lo_aab = create_object( ). - lo_aab->get_descript( IMPORTING ex_descript = lv_description ). + lo_aab->get_descript( + IMPORTING ex_descript = lv_description + EXCEPTIONS no_description_found = 1 ). io_xml->add( iv_name = 'DESCRIPTION' ig_data = lv_description ). diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index 4e216e9de..cd24e26e9 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -129,9 +129,10 @@ CLASS lcl_object_doma IMPLEMENTATION. METHOD lif_object~serialize. - DATA: lv_name TYPE ddobjname, - ls_dd01v TYPE dd01v, - lt_dd07v TYPE TABLE OF dd07v. + DATA: lv_name TYPE ddobjname, + ls_dd01v TYPE dd01v, + lv_masklen TYPE c LENGTH 4, + lt_dd07v TYPE TABLE OF dd07v. lv_name = ms_item-obj_name. @@ -155,6 +156,16 @@ CLASS lcl_object_doma IMPLEMENTATION. ls_dd01v-as4date, ls_dd01v-as4time. +* make sure XML serialization does not dump if the field contains invalid data +* note that this is a N field, so '' is not valid + IF ls_dd01v-authclass = ''. + CLEAR ls_dd01v-authclass. + ENDIF. + lv_masklen = ls_dd01v-masklen. + IF lv_masklen = '' OR NOT lv_masklen CO '0123456789'. + CLEAR ls_dd01v-masklen. + ENDIF. + io_xml->add( iv_name = 'DD01V' ig_data = ls_dd01v ). io_xml->add( iv_name = 'DD07V_TAB' diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index 52caae569..508d59316 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -163,6 +163,9 @@ CLASS lcl_object_dtel IMPLEMENTATION. * numeric field, make sure it is initial or XML serilization will dump CLEAR ls_dd04v-routputlen. ENDIF. + IF ls_dd04v-authclass = ''. + CLEAR ls_dd04v-authclass. + ENDIF. io_xml->add( iv_name = 'DD04V' ig_data = ls_dd04v ). diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index 5f8619bc6..2b988430b 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -490,6 +490,9 @@ CLASS lcl_object_fugr IMPLEMENTATION. lcx_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ). ENDIF. + SORT rt_functab BY funcname ASCENDING. + DELETE ADJACENT DUPLICATES FROM rt_functab COMPARING funcname. + ENDMETHOD. "functions METHOD main_name. @@ -533,10 +536,10 @@ CLASS lcl_object_fugr IMPLEMENTATION. DATA: lt_source TYPE TABLE OF rssource, lt_functab TYPE ty_rs38l_incl_tt, - lt_new_source TYPE rsfb_source. + lt_new_source TYPE rsfb_source, + ls_ret LIKE LINE OF rt_functions. - FIELD-SYMBOLS: LIKE LINE OF lt_functab, - LIKE LINE OF rt_functions. + FIELD-SYMBOLS: LIKE LINE OF lt_functab. lt_functab = functions( ). @@ -544,8 +547,8 @@ 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 . + CLEAR ls_ret. + MOVE-CORRESPONDING TO ls_ret. CLEAR lt_new_source. CLEAR lt_source. @@ -554,18 +557,18 @@ CLASS lcl_object_fugr IMPLEMENTATION. EXPORTING functionname = -funcname IMPORTING - global_flag = -global_flag - remote_call = -remote_call - update_task = -update_task - short_text = -short_text - remote_basxml_supported = -remote_basxml + global_flag = ls_ret-global_flag + remote_call = ls_ret-remote_call + update_task = ls_ret-update_task + short_text = ls_ret-short_text + remote_basxml_supported = ls_ret-remote_basxml TABLES - import_parameter = -import - changing_parameter = -changing - export_parameter = -export - tables_parameter = -tables - exception_list = -exception - documentation = -documentation + import_parameter = ls_ret-import + changing_parameter = ls_ret-changing + export_parameter = ls_ret-export + tables_parameter = ls_ret-tables + exception_list = ls_ret-exception + documentation = ls_ret-documentation source = lt_source CHANGING new_source = lt_new_source @@ -574,10 +577,14 @@ CLASS lcl_object_fugr IMPLEMENTATION. function_not_found = 2 invalid_name = 3 OTHERS = 4. - IF sy-subrc <> 0. + IF sy-subrc = 2. + CONTINUE. + ELSEIF sy-subrc <> 0. lcx_exception=>raise( 'Error from RPY_FUNCTIONMODULE_READ_NEW' ). ENDIF. + APPEND ls_ret TO rt_functions. + IF NOT lt_new_source IS INITIAL. mo_files->add_abap( iv_extra = -funcname it_abap = lt_new_source ). diff --git a/src/zabapgit_object_type.prog.abap b/src/zabapgit_object_type.prog.abap index 8c7273888..8068d26c1 100644 --- a/src/zabapgit_object_type.prog.abap +++ b/src/zabapgit_object_type.prog.abap @@ -52,7 +52,7 @@ CLASS lcl_object_type IMPLEMENTATION. TRY. read( ). rv_bool = abap_true. - CATCH lcx_not_found. + CATCH lcx_not_found lcx_exception. rv_bool = abap_false. ENDTRY.