DATA lr_parameter TYPE REF TO /bobf/s_frw_lock_parameters.
DATA ls_location TYPE /bobf/s_frw_location.
DATA lr_cm TYPE REF TO /bobf/cm_lib.
DATA ls_key TYPE /bobf/s_frw_key.
lr_parameter ?= is_parameters.
* check lock mode
IF lr_parameter->edit_mode <> /bobf/if_conf_c=>sc_edit_exclusive AND
lr_parameter->edit_mode <> /bobf/if_conf_c=>sc_edit_shared AND
lr_parameter->edit_mode <> /bobf/if_conf_c=>sc_edit_optimistic AND
lr_parameter->edit_mode <> /bobf/if_conf_c=>sc_edit_promote AND
lr_parameter->edit_mode <> /bobf/if_conf_c=>sc_edit_check_optimistic.
eo_message = /bobf/cl_frw_factory=>get_message( ).
ls_location-node_key = is_ctx-node_key.
LOOP AT it_key INTO ls_key.
ls_location-key = ls_key-key.
CREATE OBJECT lr_cm
EXPORTING
textid = /bobf/cm_lib=>invalid_lock_mode
severity = /bobf/cm_frw=>co_severity_error
ms_origin_location = ls_location.
eo_message->add_cm( lr_cm ).
ENDLOOP.
et_failed_key = it_key.
RETURN.
ENDIF.
IF is_ctx-act_cat = /bobf/if_conf_c=>sc_action_lock.
lock( EXPORTING is_ctx = is_ctx
it_key = it_key
is_parameters = lr_parameter->*
IMPORTING et_failed_key = et_failed_key
er_message = eo_message ).
ELSE.
unlock( EXPORTING is_ctx = is_ctx
it_key = it_key
is_parameters = lr_parameter->*
IMPORTING er_message = eo_message ).
ENDIF.
FIELD-SYMBOLS: <fs_bukrs> TYPE bukrs,
<fs_quotano> TYPE /bsk/quotano.
DATA ls_location TYPE /bobf/s_frw_location.
DATA lr_cm TYPE REF TO /bobf/cm_lib.
DATA: lt_legacy_key TYPE Ztt_k_db_key.”Legacy DAC Key (used in alternative root key)
DATA: lv_user TYPE syuname.
ls_location-node_key = is_ctx-node_key.
"Prepare Legacy key
/bobf/cl_lib_legacy_key=>get_instance( is_ctx-bo_key )->convert_bopf_to_legacy_keys(
EXPORTING
iv_node_key = is_ctx-node_key " Key of BOPF node
it_bopf_key = it_key " BOPF keys to convert
IMPORTING
et_legacy_key = lt_legacy_key " Resulting legacy keys
).
er_message = /bobf/cl_frw_factory=>get_message( ).
"Lock
LOOP AT lt_legacy_key ASSIGNING FIELD-SYMBOL(<fs_legacy_key>).
"Enqueue
TRY.
call_enqueue( EXPORTING iv_bukrs = <fs_legacy_key>-bukrs iv_quotano = <fs_legacy_key>-quotano ).
CATCH /bsk/cx_dsd_exceptions INTO DATA(lr_exception).
CLEAR: lv_user.
lv_user = lr_exception->if_t100_dyn_msg~msgv1.
"Raise
CREATE OBJECT lr_cm
EXPORTING
textid = /bobf/cm_lib=>modify_foreign_lock
severity = /bobf/cm_frw=>co_severity_error
ms_origin_location = ls_location
symptom = /bobf/if_frw_message_symptoms=>co_foreign_lock
mv_user = lv_user.
er_message->add_cm( lr_cm ).
"fill failed key
et_failed_key = it_key.
ENDTRY.
ENDLOOP.
METHOD call_enqueue.
CALL FUNCTION 'ENQUEUE_ZE_TQUOTAH'
EXPORTING
* MODE_ZTQUOTAH = 'E'
* MANDT = SY-MANDT
bukrs = iv_bukrs
quotano = iv_quotano
* X_BUKRS = ' '
* X_QUOTANO = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
" Raise exception
RAISE EXCEPTION TYPE zcx_dsd_exceptions
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ENDIF.
ENDMETHOD.
METHOD unlock.
DATA: lt_legacy_key TYPE ztt_k_db_key.
"Prepare Legacy key
/bobf/cl_lib_legacy_key=>get_instance( is_ctx-bo_key )->convert_bopf_to_legacy_keys(
EXPORTING
iv_node_key = is_ctx-node_key " Key of BOPF node
it_bopf_key = it_key " BOPF keys to convert
IMPORTING
et_legacy_key = lt_legacy_key " Resulting legacy keys
).
"Lock
LOOP AT lt_legacy_key ASSIGNING FIELD-SYMBOL(<fs_legacy_key>).
"Dequeue
call_dequeue( EXPORTING iv_bukrs = <fs_legacy_key>-bukrs iv_quotano = <fs_legacy_key>-quotano ).
ENDLOOP.
ENDMETHOD.
METHOD call_dequeue.
CALL FUNCTION 'DEQUEUE_ZE_TQUOTAH'
EXPORTING
* MODE_ZTQUOTAH = 'E'
* MANDT = SY-MANDT
bukrs = iv_bukrs
quotano = iv_quotano
* X_BUKRS = ' '
* X_QUOTANO = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
.
ENDMETHOD.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
3 | |
3 | |
2 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 |