- Interrogation de l'utilisation du crédit client
Fonction : UKM_COMMTS_READ
FUNCTION zfm_credit_consultation_client.
*"----------------------------------------------------------------------
*"*"Interface locale :
*" EXPORTING
*" VALUE(EV_TYPE) TYPE BAPI_MTYP
*" VALUE(EV_MSG) TYPE BAPI_MSG
*" TABLES
*" IT_IN STRUCTURE ZSSD0047
*" ET_DATA STRUCTURE ZSSD0048
*"----------------------------------------------------------------------
DATA: lt_totaux_credit TYPE TABLE OF ukm_totals,
ls_totaux_credit LIKE LINE OF lt_totaux_credit,
lt_mnemoniques TYPE SORTED TABLE OF but000-partner WITH UNIQUE KEY table_line,
lt_noms_clients TYPE SORTED TABLE OF kna1-kunnr WITH UNIQUE KEY table_line,
lt_montants_attente TYPE SORTED TABLE OF ztsd0027-partner WITH UNIQUE KEY table_line.
IF it_in[] IS INITIAL.
ev_type = 'E'.
ev_msg = 'Le segment de crédit et le client sont obligatoires'.
RETURN.
ENDIF.
" Récupération des codes mnémoniques
SELECT partner, bu_sort1 FROM but000
FOR ALL ENTRIES IN @it_in
WHERE partner = @it_in-kunnr
INTO TABLE @DATA(lt_ref_mnemoniques).
SORT lt_ref_mnemoniques BY partner.
" Récupération des noms de clients
SELECT kunnr, name1, name2 FROM kna1
FOR ALL ENTRIES IN @it_in
WHERE kunnr = @it_in-kunnr
INTO TABLE @DATA(lt_ref_noms).
SORT lt_ref_noms BY kunnr.
" Récupération des montants en attente d'approbation
SELECT credit_sgmnt, partner, zysdamount FROM ztsd0027
FOR ALL ENTRIES IN @it_in
WHERE credit_sgmnt = @it_in-credit_sgmnt AND partner = @it_in-kunnr
INTO TABLE @DATA(lt_ref_attentes).
SORT lt_ref_attentes BY credit_sgmnt partner.
LOOP AT it_in ASSIGNING FIELD-SYMBOL(<fs_entree>).
et_data-kunnr = <fs_entree>-kunnr.
et_data-credit_sgmnt = <fs_entree>-credit_sgmnt.
" Code mnémonique
READ TABLE lt_ref_mnemoniques INTO DATA(ls_mnemonique)
WITH KEY partner = <fs_entree>-kunnr BINARY SEARCH.
IF sy-subrc = 0.
et_data-sort1 = ls_mnemonique-bu_sort1.
ENDIF.
" Nom du client
READ TABLE lt_ref_noms INTO DATA(ls_nom)
WITH KEY kunnr = <fs_entree>-kunnr BINARY SEARCH.
IF sy-subrc = 0.
et_data-name1 = ls_nom-name1 && ls_nom-name2.
ENDIF.
CALL FUNCTION 'UKM_COMMTS_READ'
EXPORTING
i_partner = <fs_entree>-kunnr
i_segment = <fs_entree>-credit_sgmnt
TABLES
et_ukm_totals = lt_totaux_credit.
LOOP AT lt_totaux_credit INTO ls_totaux_credit
WHERE partner = <fs_entree>-kunnr AND credit_sgmnt = <fs_entree>-credit_sgmnt.
" Catégorie de risque de crédit
et_data-comm_typ = ls_totaux_credit-comm_typ.
" Description de la catégorie
SELECT SINGLE comm_typ_txt FROM ukmcomm_typest
INTO et_data-comm_typ_txt
WHERE comm_typ = et_data-comm_typ AND langu = sy-langu.
" Montant de l'exposition au crédit
IF et_data-comm_typ = '500'.
READ TABLE lt_ref_attentes INTO DATA(ls_attente)
WITH KEY credit_sgmnt = <fs_entree>-credit_sgmnt partner = <fs_entree>-kunnr BINARY SEARCH.
IF sy-subrc = 0.
et_data-amount = ls_totaux_credit-amount - ls_attente-zysdamount.
ELSE.
et_data-amount = ls_totaux_credit-amount.
ENDIF.
ELSE.
et_data-amount = ls_totaux_credit-amount.
ENDIF.
APPEND et_data TO et_data[].
CLEAR ls_totaux_credit.
ENDLOOP.
IF sy-subrc NE 0.
APPEND et_data TO et_data[].
ENDIF.
CLEAR: lt_totaux_credit, ls_mnemonique, ls_nom, et_data.
ENDLOOP.
ENDFUNCTION.
</fs_entree></fs_entree></fs_entree></fs_entree></fs_entree></fs_entree></fs_entree></fs_entree></fs_entree></fs_entree></fs_entree>
- Déduction des montants non approuvés lors de la vérification du crédit
Prérequis : La règle de crédit dans la gestion des partenaires (BP) est définie comme B2B-EXIST (formule sans limite de calcul).
Simulation de la vérification de crédit via BP :
1. Dans la classe CL_UKM_CREDIT_CHECK_SIMU, méthode CHECK_CREDIT_WORTHINESS, passez le client et le segment de crédit en mémoire avant d'appeler la méthode de vérification.
2. Dans la classe CL_IM_UKM_CHECK_010, méthode IF_EX_UKM_CHECK_STEP~CHECK_STEP, ajustez la limite de crédit en la déduisant ou en l'augmentant.
Renforcement pour les commandes clients ou bons de livraison :
1. Dans la classe CL_UKM_XI_FACADE_R3_50, méthode IF_UKM_CREDIT_QUERY_R3~CHECK_CREDIT, passez le client et le segment de crédit en mémoire avant l'appel de vérification.
L'étape 2 est identique à celle de la simulation BP, et les résultats peuvent être testés de manière autonome.
- Ajout de catégories de crédit dans le calcul
1. Ajout d'une catégorie d'exposition au crédit :
2. Ajout d'une catégorie de passif :
3. Création d'une implémentation BAdI pour ajouter des données de catégorie de crédit
METHOD if_ex_ukm_fill~fill_fields.
DATA: ls_entree LIKE LINE OF it_notification.
READ TABLE it_notification INTO DATA(ls_donnee) INDEX 1.
" Éviter un dump dans la transaction UKM_CASE
IF sy-tcode NE 'UKM_CASE' AND sy-tcode NE 'UKM_MY_DCDS'.
CLEAR ls_entree.
SELECT * FROM ytest_credit INTO TABLE @DATA(lt_donnees_credit).
LOOP AT lt_donnees_credit INTO DATA(ls_credit).
ls_entree-partner = ls_credit-partner.
ls_entree-credit_sgmnt = ls_credit-credit_sgmnt.
ls_entree-comm_typ = 'Z01'.
ls_entree-amount = ls_credit-amount.
ls_entree-currency = ls_credit-currency.
APPEND ls_entree TO it_notification.
ENDLOOP.
ENDIF.
" Exporter les données en mémoire pour UKM_CASE
EXPORT ukm_item = it_notification TO MEMORY ID 'UKM_ITEM'.
ENDMETHOD.