對於order來說,如果有定製化的許可權控制需求,可以通過實施badi: crm_order_auth_check 來進行額外的許可權控制。
在crm order中,許可權檢查是遵循如下序列sequence來執行的:
需要說明的是,針對標準check,執行檢查序列的時候,如果有任何一步check pass,那麼將會跳過餘下所有的標準check。但是,無論檢查是否通過,crm_order_add_auth_check都會在最後被呼叫。因此,我們可以將一些客製化的檢查邏輯放在此方法中。
**:
method if_ex_crm_order_auth_check~crm_order_add_auth_check.
types: begin of lty_guid,
guid type crmt_object_guid,
end of lty_guid.
data:lv_guid type bu_partner_guid,
lt_header_guids type crmt_object_guid_tab,
lt_partner type crmt_partner_external_wrkt,
lw_partner type crmt_partner_external_wrk,
lv_***_edit(1) type c.
check iv_process_type = 'za15' and iv_header_guid is not initial and ( iv_mode = 'b' or iv_mode = 'd' ). ''
'不允許刪除或者修改'
''* 取得當前使用者
call function 'bp_centralperson_get'
exporting
iv_username = sy-uname
importing
ev_bu_partner_guid = lv_guid
exceptions
no_central_person = 1
no_business_partner = 2
no_id = 3
others = 4.
check sy-subrc = 0.
select single partner
into @data(lv_partner)
from but000
where partner_guid = @lv_guid.
lt_header_guids = value #(
( iv_header_guid )
).call function 'crm_order_read'
exporting
it_header_guid = lt_header_guids
importing
et_partner = et_partner.
loop at et_partner into ls_partner.
if ls_partner-partner_fct = 'zse00008' and ls_partner-partner_no = lv_partner.
***_edit = 'x'
exit.
endif.
if ***_edit is not initial.
message e043(zsecco_crm). ''
'提示報錯資訊'
'' raise no_authority.
endif.
endmethod.
對於bp來說,相同的許可權控制可以在badi: badi_crm_bp_uiu_authority 中實現 如何控制單元測試的粒度?
john nolan在 how deep are your unit tests?中問道 u0026 xd n u0026 xd n tdd需要花時間寫測試,而我們一般多少會寫一些 而第乙個測試是測試我的建構函式有沒有把這個類的變數都設定對了,這會不會太過分了?那麼,我們寫單元測試的這個單元的粒度到...
如何在hadoop中控制map的個數
hadooop提供了乙個設定map個數的引數mapred.map.tasks,我們可以通過這個引數來控制map的個數。但是通過這種方式設定map的個數,並不是每次都有效的。原因是mapred.map.tasks只是乙個hadoop的參考數值,最終map的個數,還取決於其他的因素。為了方便介紹,先來看...
如何在hadoop中控制map的個數
hadooop提供了乙個設定map個數的引數mapred.map.tasks,我們可以通過這個引數來控制map的個數。但是通過這種方式設定map的個數,並不是每次都有效的。原因是mapred.map.tasks只是乙個hadoop的參考數值,最終map的個數,還取決於其他的因素。為了方便介紹,先來看...