mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
TABL: Simplify control flow (#2552)
* TABL: Simplify control flow When this commit is applied the control flow in object serializer TABL is eased. The idoc check returns now a boolean instead of raising an exception. Main purpose is to ease debugging due to reducing the use of zcx_abapgit_exception%3D>raise. * TABL: fill rv_deleted on early exit
This commit is contained in:
parent
a3c69433fb
commit
9e2f7e7caf
|
@ -46,10 +46,10 @@ CLASS zcl_abapgit_object_tabl DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
CHANGING
|
CHANGING
|
||||||
!ct_dd03p TYPE ty_dd03p_tt .
|
!ct_dd03p TYPE ty_dd03p_tt .
|
||||||
"! Check if structure is an IDoc segment
|
"! Check if structure is an IDoc segment
|
||||||
"! @raising zcx_abapgit_exception | It's not an IDoc segment
|
"! @parameter rv_is_idoc_segment | It's an IDoc segment or not
|
||||||
METHODS check_is_idoc_segment
|
METHODS is_idoc_segment
|
||||||
RAISING
|
RETURNING
|
||||||
zcx_abapgit_exception .
|
VALUE(rv_is_idoc_segment) TYPE abap_bool.
|
||||||
METHODS clear_dd03p_fields_common
|
METHODS clear_dd03p_fields_common
|
||||||
CHANGING
|
CHANGING
|
||||||
!cs_dd03p TYPE dd03p .
|
!cs_dd03p TYPE dd03p .
|
||||||
|
@ -60,10 +60,10 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD check_is_idoc_segment.
|
METHOD is_idoc_segment.
|
||||||
|
|
||||||
DATA lv_segment_type TYPE edilsegtyp.
|
DATA lv_segment_type TYPE edilsegtyp.
|
||||||
|
|
||||||
|
@ -73,9 +73,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
||||||
FROM edisegment
|
FROM edisegment
|
||||||
INTO lv_segment_type
|
INTO lv_segment_type
|
||||||
WHERE segtyp = lv_segment_type.
|
WHERE segtyp = lv_segment_type.
|
||||||
IF sy-subrc <> 0.
|
rv_is_idoc_segment = boolc( sy-subrc = 0 ).
|
||||||
zcx_abapgit_exception=>raise( 'No IDoc segment' ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -170,13 +168,10 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
||||||
DATA lv_segment_type TYPE edilsegtyp.
|
DATA lv_segment_type TYPE edilsegtyp.
|
||||||
DATA lv_result LIKE sy-subrc.
|
DATA lv_result LIKE sy-subrc.
|
||||||
|
|
||||||
TRY.
|
IF is_idoc_segment( ) = abap_false.
|
||||||
check_is_idoc_segment( ).
|
rv_deleted = abap_false.
|
||||||
|
RETURN. "previous XML version or no IDoc segment
|
||||||
CATCH zcx_abapgit_exception ##no_handler.
|
ENDIF.
|
||||||
rv_deleted = abap_false.
|
|
||||||
RETURN. "previous XML version or no IDoc segment
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
rv_deleted = abap_true.
|
rv_deleted = abap_true.
|
||||||
lv_segment_type = ms_item-obj_name.
|
lv_segment_type = ms_item-obj_name.
|
||||||
|
@ -300,59 +295,56 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
||||||
DATA lt_segment_definitions TYPE ty_segment_definitions.
|
DATA lt_segment_definitions TYPE ty_segment_definitions.
|
||||||
FIELD-SYMBOLS: <ls_segemtndefinition> TYPE edisegmdef.
|
FIELD-SYMBOLS: <ls_segemtndefinition> TYPE edisegmdef.
|
||||||
|
|
||||||
TRY.
|
IF is_idoc_segment( ) = abap_false.
|
||||||
check_is_idoc_segment( ).
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
lv_segment_type = ms_item-obj_name.
|
lv_segment_type = ms_item-obj_name.
|
||||||
CALL FUNCTION 'SEGMENT_READ'
|
CALL FUNCTION 'SEGMENT_READ'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
segmenttyp = lv_segment_type
|
segmenttyp = lv_segment_type
|
||||||
IMPORTING
|
IMPORTING
|
||||||
result = lv_result
|
result = lv_result
|
||||||
TABLES
|
TABLES
|
||||||
segmentdefinition = lt_segmentdefinitions
|
segmentdefinition = lt_segmentdefinitions
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
OTHERS = 1.
|
OTHERS = 1.
|
||||||
IF sy-subrc <> 0 OR lv_result <> 0.
|
IF sy-subrc <> 0 OR lv_result <> 0.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
LOOP AT lt_segmentdefinitions ASSIGNING <ls_segemtndefinition>.
|
LOOP AT lt_segmentdefinitions ASSIGNING <ls_segemtndefinition>.
|
||||||
CLEAR ls_segment_definition.
|
CLEAR ls_segment_definition.
|
||||||
CALL FUNCTION 'SEGMENTDEFINITION_READ'
|
CALL FUNCTION 'SEGMENTDEFINITION_READ'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
segmenttyp = <ls_segemtndefinition>-segtyp
|
segmenttyp = <ls_segemtndefinition>-segtyp
|
||||||
IMPORTING
|
IMPORTING
|
||||||
result = lv_result
|
result = lv_result
|
||||||
devclass = lv_devclass
|
devclass = lv_devclass
|
||||||
segmentheader = ls_segment_definition-segmentheader
|
segmentheader = ls_segment_definition-segmentheader
|
||||||
segmentdefinition = ls_segment_definition-segmentdefinition
|
segmentdefinition = ls_segment_definition-segmentdefinition
|
||||||
TABLES
|
TABLES
|
||||||
segmentstructure = ls_segment_definition-segmentstructures
|
segmentstructure = ls_segment_definition-segmentstructures
|
||||||
CHANGING
|
CHANGING
|
||||||
version = <ls_segemtndefinition>-version
|
version = <ls_segemtndefinition>-version
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
no_authority = 1
|
no_authority = 1
|
||||||
segment_not_existing = 2
|
segment_not_existing = 2
|
||||||
OTHERS = 3.
|
OTHERS = 3.
|
||||||
IF sy-subrc <> 0 OR lv_result <> 0.
|
IF sy-subrc <> 0 OR lv_result <> 0.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
||||||
CHANGING cs_structure = ls_segment_definition-segmentdefinition ).
|
CHANGING cs_structure = ls_segment_definition-segmentdefinition ).
|
||||||
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
||||||
CHANGING cs_structure = ls_segment_definition-segmentheader ).
|
CHANGING cs_structure = ls_segment_definition-segmentheader ).
|
||||||
|
|
||||||
APPEND ls_segment_definition TO lt_segment_definitions.
|
APPEND ls_segment_definition TO lt_segment_definitions.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
io_xml->add( iv_name = c_s_dataname-segment_definition
|
io_xml->add( iv_name = c_s_dataname-segment_definition
|
||||||
ig_data = lt_segment_definitions ).
|
ig_data = lt_segment_definitions ).
|
||||||
|
|
||||||
CATCH zcx_abapgit_exception ##no_handler.
|
|
||||||
"ok, no Idoc segment
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user