Professional Documents
Culture Documents
-----------------------------------------------------------------------------------
----------
Create new function module
ZUKM_ACCOUNT_LOCK_IN_CHECK
Desc: locks account for check and unlocks it after com.update
Mark it as remote-enabled module
Tables
Input Param Type Associ.Type Opt Pass Short text
ET_RETURN LIKE BAPIRET2 x x Return Parameter
T_PARTNER LIKE BUSPARTNER x x BP: partner number
EXCEPTIONS
LOCAL_LOCK locked in local
FSCM_LOCK locked in FSCM
FUNCTION ZUKM_ACCOUNT_LOCK_IN_CHECK.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_PARTNER) TYPE BU_PARTNER OPTIONAL
*" VALUE(I_GET_LOCK_PARTNER) TYPE FLAG OPTIONAL
*" VALUE(I_SET_FLAG) TYPE FLAG OPTIONAL
*" VALUE(I_DELETE_FLAG) TYPE FLAG OPTIONAL
*" VALUE(I_READ_FLAG) TYPE FLAG OPTIONAL
*" VALUE(IV_SEGMENT) TYPE CHAR10 OPTIONAL
*" TABLES
*" ET_RETURN STRUCTURE BAPIRET2 OPTIONAL
*" T_PARTNER STRUCTURE BUSPARTNER OPTIONAL
*" EXCEPTIONS
*" LOCAL_LOCK
*" FSCM_LOCK
*"----------------------------------------------------------------------
***
endif.
endif.
if I_DELETE_FLAG = 'X'.
SELECT SINGLE for update * FROM ukmbp_cms_sgm
INTO ls_sgm
where partner = iv_partner
and credit_sgmnt = l_segment.
*
if sy-subrc = 0.
if ls_sgm-item_error = 'W'.
update ukmbp_cms_sgm
set item_error = space
where partner = iv_partner
and credit_sgmnt = l_segment.
endif.
endif.
endif.
ENDFUNCTION.
-----------------------------------------------------------------------------------
------------
-----------------------------------------------------------------------------------
------------
Create new function module
ZUKM_ACCOUNT_LOCK_LOCAL Desc: locks locally
tables
T_PARTNER LIKE BUSPARTNER x related partners
exceptions
LOCAL_LOCK locked in local
FUNCTION ZUKM_ACCOUNT_LOCK_LOCAL.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IV_PARTNER) TYPE BU_PARTNER
*" REFERENCE(IV_DEST) TYPE RFCDEST DEFAULT 'NONE'
*" REFERENCE(IV_SEGMENT) TYPE CHAR10 OPTIONAL
*" TABLES
*" T_PARTNER STRUCTURE BUSPARTNER OPTIONAL
*" EXCEPTIONS
*" LOCAL_LOCK
*"----------------------------------------------------------------------
lv_partner = iv_partner.
CALL FUNCTION 'ZUKM_ACCOUNT_LOCK_IN_CHECK'
destination iv_dest
EXPORTING
IV_PARTNER = lv_partner
iv_segment = iv_segment
I_GET_LOCK_PARTNER = 'X'
TABLES
T_PARTNER = lt_partner
EXCEPTIONS
OTHERS = 0.
* lock partner
perform lock_local using iv_partner changing sy-subrc.
IF SY-SUBRC = 0.
Loop at lt_partner into Lv_partner.
perform lock_local using lv_partner changing sy-subrc.
If sy-subrc <> 0.
l_err = 'X'. exit.
Endif.
Endloop.
else.
l_err = 'X'.
endif.
ifl_err = 'X'.
perform unlock_local using iv_partner changing sy-subrc.
Loop at lt_partner into Lv_partner.
perform unlock_local using lv_partner changing sy-subrc.
endloop.
clear s_partner_locked.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
raising local_lock.
else.
* lock was successfull, do not retry it
s_partner_locked = lv_partner.
s_segment_locked = iv_segment.
st_partner_locked[] = lt_partner[].
ENDIF.
ENDFUNCTION.
c_subrc = sy-subrc.
endform.
c_subrc = sy-subrc.
endform.
-----------------------------------------------------------------------------------
-----------
Badi UKM_FILL
IF_EX_UKM_FILL~CREDIT_CHECK_CONVERT_OUTBOUND
...
data: dest type rfcdest value 'NONE'. "<<<replace this with your FSCM system RFC
destination
data: subrc type sysubrc, lx.
-----------------------------------------------------------------------------------
-------------
Badi UKM_FILL
IF_EX_UKM_FILL~FILL_FIELDS.
....
LOOP AT is_notification INTO ls_in.
ls_data = ls_data_clear.
ls_data-debtor_party-internal_id-value = ls_in-partner.
IF ls_data-debtor_party-internal_id-value IS INITIAL.
ls_data-debtor_party-internal_id-value = ls_in-kunnr.
ENDIF.
-----------------------------------------------------------------------------------
-------------