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->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 ).

View File

@ -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'

View File

@ -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 ).

View File

@ -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: <ls_func> LIKE LINE OF lt_functab,
<ls_ret> LIKE LINE OF rt_functions.
FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab.
lt_functab = functions( ).
@ -544,8 +547,8 @@ CLASS lcl_object_fugr IMPLEMENTATION.
LOOP AT lt_functab ASSIGNING <ls_func>.
* fm RPY_FUNCTIONMODULE_READ does not support source code
* lines longer than 72 characters
APPEND INITIAL LINE TO rt_functions ASSIGNING <ls_ret>.
MOVE-CORRESPONDING <ls_func> TO <ls_ret>.
CLEAR ls_ret.
MOVE-CORRESPONDING <ls_func> TO ls_ret.
CLEAR lt_new_source.
CLEAR lt_source.
@ -554,18 +557,18 @@ CLASS lcl_object_fugr IMPLEMENTATION.
EXPORTING
functionname = <ls_func>-funcname
IMPORTING
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
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 = <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
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 = <ls_func>-funcname
it_abap = lt_new_source ).

View File

@ -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.