ACID DOMA DTEL FUGR TYPE

Fix more dumps and handle invalid data
This commit is contained in:
larshp 2017-01-07 10:23:23 +00:00
parent 33bb7d52bf
commit f8234b1deb
5 changed files with 45 additions and 22 deletions

View File

@ -71,7 +71,9 @@ CLASS lcl_object_acid IMPLEMENTATION.
lo_aab = create_object( ). 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' io_xml->add( iv_name = 'DESCRIPTION'
ig_data = lv_description ). ig_data = lv_description ).

View File

@ -131,6 +131,7 @@ CLASS lcl_object_doma IMPLEMENTATION.
DATA: lv_name TYPE ddobjname, DATA: lv_name TYPE ddobjname,
ls_dd01v TYPE dd01v, ls_dd01v TYPE dd01v,
lv_masklen TYPE c LENGTH 4,
lt_dd07v TYPE TABLE OF dd07v. lt_dd07v TYPE TABLE OF dd07v.
@ -155,6 +156,16 @@ CLASS lcl_object_doma IMPLEMENTATION.
ls_dd01v-as4date, ls_dd01v-as4date,
ls_dd01v-as4time. 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' io_xml->add( iv_name = 'DD01V'
ig_data = ls_dd01v ). ig_data = ls_dd01v ).
io_xml->add( iv_name = 'DD07V_TAB' io_xml->add( iv_name = 'DD07V_TAB'

View File

@ -163,6 +163,9 @@ CLASS lcl_object_dtel IMPLEMENTATION.
* numeric field, make sure it is initial or XML serilization will dump * numeric field, make sure it is initial or XML serilization will dump
CLEAR ls_dd04v-routputlen. CLEAR ls_dd04v-routputlen.
ENDIF. ENDIF.
IF ls_dd04v-authclass = ''.
CLEAR ls_dd04v-authclass.
ENDIF.
io_xml->add( iv_name = 'DD04V' io_xml->add( iv_name = 'DD04V'
ig_data = ls_dd04v ). ig_data = ls_dd04v ).

View File

@ -490,6 +490,9 @@ CLASS lcl_object_fugr IMPLEMENTATION.
lcx_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ). lcx_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ).
ENDIF. ENDIF.
SORT rt_functab BY funcname ASCENDING.
DELETE ADJACENT DUPLICATES FROM rt_functab COMPARING funcname.
ENDMETHOD. "functions ENDMETHOD. "functions
METHOD main_name. METHOD main_name.
@ -533,10 +536,10 @@ CLASS lcl_object_fugr IMPLEMENTATION.
DATA: DATA:
lt_source TYPE TABLE OF rssource, lt_source TYPE TABLE OF rssource,
lt_functab TYPE ty_rs38l_incl_tt, 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: <ls_func> LIKE LINE OF lt_functab, FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab.
<ls_ret> LIKE LINE OF rt_functions.
lt_functab = functions( ). lt_functab = functions( ).
@ -544,8 +547,8 @@ CLASS lcl_object_fugr IMPLEMENTATION.
LOOP AT lt_functab ASSIGNING <ls_func>. LOOP AT lt_functab ASSIGNING <ls_func>.
* fm RPY_FUNCTIONMODULE_READ does not support source code * fm RPY_FUNCTIONMODULE_READ does not support source code
* lines longer than 72 characters * lines longer than 72 characters
APPEND INITIAL LINE TO rt_functions ASSIGNING <ls_ret>. CLEAR ls_ret.
MOVE-CORRESPONDING <ls_func> TO <ls_ret>. MOVE-CORRESPONDING <ls_func> TO ls_ret.
CLEAR lt_new_source. CLEAR lt_new_source.
CLEAR lt_source. CLEAR lt_source.
@ -554,18 +557,18 @@ CLASS lcl_object_fugr IMPLEMENTATION.
EXPORTING EXPORTING
functionname = <ls_func>-funcname functionname = <ls_func>-funcname
IMPORTING IMPORTING
global_flag = <ls_ret>-global_flag global_flag = ls_ret-global_flag
remote_call = <ls_ret>-remote_call remote_call = ls_ret-remote_call
update_task = <ls_ret>-update_task update_task = ls_ret-update_task
short_text = <ls_ret>-short_text short_text = ls_ret-short_text
remote_basxml_supported = <ls_ret>-remote_basxml remote_basxml_supported = ls_ret-remote_basxml
TABLES TABLES
import_parameter = <ls_ret>-import import_parameter = ls_ret-import
changing_parameter = <ls_ret>-changing changing_parameter = ls_ret-changing
export_parameter = <ls_ret>-export export_parameter = ls_ret-export
tables_parameter = <ls_ret>-tables tables_parameter = ls_ret-tables
exception_list = <ls_ret>-exception exception_list = ls_ret-exception
documentation = <ls_ret>-documentation documentation = ls_ret-documentation
source = lt_source source = lt_source
CHANGING CHANGING
new_source = lt_new_source new_source = lt_new_source
@ -574,10 +577,14 @@ CLASS lcl_object_fugr IMPLEMENTATION.
function_not_found = 2 function_not_found = 2
invalid_name = 3 invalid_name = 3
OTHERS = 4. OTHERS = 4.
IF sy-subrc <> 0. IF sy-subrc = 2.
CONTINUE.
ELSEIF sy-subrc <> 0.
lcx_exception=>raise( 'Error from RPY_FUNCTIONMODULE_READ_NEW' ). lcx_exception=>raise( 'Error from RPY_FUNCTIONMODULE_READ_NEW' ).
ENDIF. ENDIF.
APPEND ls_ret TO rt_functions.
IF NOT lt_new_source IS INITIAL. IF NOT lt_new_source IS INITIAL.
mo_files->add_abap( iv_extra = <ls_func>-funcname mo_files->add_abap( iv_extra = <ls_func>-funcname
it_abap = lt_new_source ). it_abap = lt_new_source ).

View File

@ -52,7 +52,7 @@ CLASS lcl_object_type IMPLEMENTATION.
TRY. TRY.
read( ). read( ).
rv_bool = abap_true. rv_bool = abap_true.
CATCH lcx_not_found. CATCH lcx_not_found lcx_exception.
rv_bool = abap_false. rv_bool = abap_false.
ENDTRY. ENDTRY.