in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]
METHOD create_process_chain.
DATA: lo_chain TYPE REF TO cl_rspc_chain,
lt_variant TYPE rspc_t_variante.
CLEAR: et_return, ev_sy_subrc.
* ==== Create Chain-Object ====
CREATE OBJECT lo_chain
EXPORTING
i_chain = iv_chain " Process chain
i_objvers = mv_objver
i_t_variant = lt_variant " Type and Variant
i_with_dialog = '' " With online
i_new = abap_true
EXCEPTIONS
aborted_by_user = 1 " User would actually rather not process a chain ...
not_unique = 2 " Selection not unique - & user requests not allowed
wrong_name = 3 " Incorrect Name of (New) Chain
display_only = 4 " Only Display Allowed
OTHERS = 5.
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
lo_chain->set_streaming(
EXPORTING
i_streaming = iv_streaming
EXCEPTIONS
not_possible = 1
warning = 2
OTHERS = 3
).
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
DATA: lt_process_data TYPE rspc_t_variante,
lv_trigger TYPE string.
*
IF iv_trigger IS SUPPLIED.
lv_trigger = iv_trigger.
ELSE.
lv_trigger = 'ZT_' && iv_chain.
ENDIF.
APPEND VALUE #( type = rspc1_c_type-trigger variante = lv_trigger ) TO lt_process_data.
APPEND VALUE #( type = rspc1_c_type-dtpload variante = iv_dtp_load ) TO lt_process_data.
APPEND VALUE #( type = rspc1_c_type-adsoact variante = iv_adso ) TO lt_process_data.
* ==== Put processes into chain ====
LOOP AT lt_process_data ASSIGNING FIELD-SYMBOL(<ls_process>).
lo_chain->add_process(
EXPORTING
i_type = <ls_process>-type " Process Type
i_variant = <ls_process>-variante
i_with_dialog = '' " With Dialog, Where Necessary
IMPORTING
e_variant = <ls_process>-variante
EXCEPTIONS
aborted_by_user = 1 " User would actually rather not ...
OTHERS = 2
).
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
DATA: lo_variant TYPE REF TO cl_rspc_variant,
lv_variant TYPE rspc_variant,
ls_variant TYPE rspcvariant,
lt_adso_variant TYPE rspc_t_variant.
IF <ls_process>-type = rspc1_c_type-adsoact.
lv_variant = <ls_process>-variante.
" get an instance
CALL METHOD cl_rspc_variant=>create
EXPORTING
i_type = rspc1_c_type-adsoact
i_variant = lv_variant
RECEIVING
r_r_variant = lo_variant
EXCEPTIONS
locked = 1
OTHERS = 2.
.
" fill l_t_variant
ls_variant-type = rspc1_c_type-adsoact.
ls_variant-variante = lv_variant.
ls_variant-objvers = rs_c_objvers-active.
ls_variant-lnr = '0000000001'.
ls_variant-fnam = rsmpc_c_odsactivate-no_condense.
ls_variant-sign = 'I'.
ls_variant-opt = 'EQ'.
ls_variant-low = abap_false.
APPEND ls_variant TO lt_adso_variant.
ls_variant-fnam = rsmpc_c_type-adso.
ls_variant-lnr = 1.
ls_variant-sign = 'I'.
ls_variant-opt = 'EQ'.
ls_variant-low = lv_variant.
APPEND ls_variant TO lt_adso_variant.
DATA(lv_lnr) = ls_variant-lnr + 1.
" fill l_t_variant
ls_variant-type = rspc1_c_type-adsoact.
ls_variant-variante = lv_variant.
ls_variant-objvers = rs_c_objvers-active.
ls_variant-lnr = lv_lnr.
ls_variant-fnam = rsmpc_c_odsactivate-noreqactwarn.
ls_variant-sign = 'I'.
ls_variant-opt = 'EQ'.
ls_variant-low = abap_false.
APPEND ls_variant TO lt_adso_variant.
DATA: ls_variantt TYPE rspcvariantt.
ls_variantt-langu = sy-langu.
ls_variantt-type = rspc1_c_type-adsoact.
ls_variantt-variante = lv_variant.
ls_variantt-objvers = 'A'.
ls_variantt-txtlg = lv_variant.
CALL METHOD lo_variant->save
EXPORTING
i_t_rspcvariant = lt_adso_variant
i_s_rspcvariantt = ls_variantt
EXCEPTIONS
failed = 1
OTHERS = 2.
ENDIF.
ENDLOOP.
DATA: ls_chain TYPE rspc_s_chain,
ls_chain_h TYPE rspc_s_chain.
* ==== Connect processes Serially====
LOOP AT lt_process_data ASSIGNING <ls_process>.
ls_chain-type = <ls_process>-type.
ls_chain-variante = <ls_process>-variante.
SELECT SINGLE eventrange FROM rsprocesstypes INTO @DATA(ls_eventrange)
WHERE type = @ls_chain_h-type.
IF ls_eventrange > 0.
lo_chain->connect(
EXPORTING
i_s_start = ls_chain_h
i_s_end = ls_chain
i_color = 'G'
i_no_question_double = rs_c_true
EXCEPTIONS
not_possible = 1
OTHERS = 2 ).
ENDIF.
ls_chain_h = ls_chain.
ENDLOOP.
lo_chain->save(
EXPORTING
i_objvers = mv_objver " Object version
i_activation = abap_true " Chain is being activated...
EXCEPTIONS
failed = 1 " Failed
OTHERS = 2
).
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
IF iv_active = abap_true.
lo_chain->activate(
IMPORTING
e_t_conflicts = DATA(lt_co)
EXCEPTIONS
errors = 1 " Errors occurred
warnings = 2 " Warnings occurred
OTHERS = 3
).
IF sy-subrc <> 0.
ev_sy_subrc = sy-subrc.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDIF.
ENDIF.