Transfert de paramètres supplémentaires à
Accrual Engine (AE)
Vous souhaitez transférer un nouveau paramètre, tel que le centre de profit, le marché, etc. au composant Accrual Engine IPMO de CRM.
Vous souhaitez créer une souscription pour la fonction ACE de l'événement _ACCIMI1.

Dans cet exemple, le système lit le centre de profit à partir du set comptable et le transfère à Accrual Engine en tant que paramètre distinct. Étant donné qu'un modèle Billing Engine est impliqué, le codage doit être saisi en tant que commentaire.

* DATA:
* LS_&SUBSCRIPTION%_OBJECT TYPE CRMT_IPM_CAE_BE_OBJECT,
* LS_&SUBSCRIPTION%_PARAM TYPE CRMT_IPM_CAE_BE_PARAM,
* LV_&SUBSCRIPTION%_CUR TYPE CRMT_IAOM_OBJECT_ID,
* LS_&SUBSCRIPTION%_SDCO TYPE CRMT_IPM_ACC_SDCO,
* LV__&SUBSCRIPTION%_PRCTR TYPE PRCTR.
*
* * boucle sur objet réel
et sous-objets associés
* boucle sur lt_ace_object dans LS_&SUBSCRIPTION%_OBJECT
* où OBJID = ls_ace_object-objid OR
* PARENT_GUID = ls_ace_object-objid.
* initialiser : LS_&SUBSCRIPTION%_PARAM, LV_&SUBSCRIPTION%_PRCTR.
* * vous avez ici besoin de votre propre codage pour renseigner le centre de profit
* * par exemple, il est lu à partir du set comptable
* LV_&SUBSCRIPTION%_CUR = LS_BDI_WRK-SRC_GUID.
* READ TABLE IS_BDOC-SERVICE_SDCO[] INTO LS_&SUBSCRIPTION%_SDCO
* WITH KEY CURRENT_OBJECT_ID = LV_&SUBSCRIPTION%_CUR.
* IF SY-SUBRC = 0.
* LV_&SUBSCRIPTION%_PRCTR = LS_&SUBSCRIPTION%_SDCO-PRCTR.
* * créer nouveau paramètre pour centre de profit
* LS_&SUBSCRIPTION%_PARAM-BE_HEAD_NO =
* LS_&SUBSCRIPTION%_OBJECT-BE_HEAD_NO.
* LS_&SUBSCRIPTION%_PARAM-OBJID =
* LS_&SUBSCRIPTION%_OBJECT-OBJID.
* LS_&SUBSCRIPTION%_PARAM-DATE_FROM =
* LS_&SUBSCRIPTION%_OBJECT-DATE_FROM.
* LS_&SUBSCRIPTION%_PARAM-NAME = 'ZZPRCTR'.
* LS_&SUBSCRIPTION%_PARAM-CONTENT = LV_&SUBSCRIPTION%_PRCTR.
* APPEND LS_&SUBSCRIPTION%_PARAM TO LT_ACE_PARAM.
* ENDIF.
* endloop.
Créez un append pour la structure IPMO_ACE_PARAMETERS dans le système ERP pour les paramètres supplémentaires requis. Vérifiez que les noms sont identiques à ceux du codage présenté ci-dessus pour l'exemple ZZPRCTR. Cela garantit que le nouveau paramètre est disponible dans Accrual Engine.
Vous souhaitez transférer un nouveau paramètre, tel que le centre de profit, le marché, etc. au composant Accrual Engine IPM de CRM.
Créez une
implémentation pour le BAdI CRM_IPM_CAE_BADI dans le système CRM, et fournissez les
paramètres requis dans la méthode CHANGE_DATA. Dans l'exemple suivant, le système transfère le
centre de profit à AE en tant que paramètre distinct, et saisit toujours la
valeur 4711.
Le codage est le suivant :

DATA: ls_ace_object TYPE crmt_ipm_cae_object,
ls_ace_param TYPE crmt_ipm_cae_param.
LOOP AT CT_ACE_OBJECT INTO LS_ACE_OBJECT.
* créer nouveau paramètre
ls_ace_param-objid = ls_ace_object-objid .
ls_ace_param-date_from = ls_ace_object-date_from.
ls_ace_param-name = ‘ZZPRCTR.
Ls_ace_param-content = ‘4711’.
APPEND ls_ace_param TO ct_ace_params.
ENDLOOP.

Si vous devez relire le contrat de vente de licences, vous pouvez utiliser CT_ACE_OBJECT-OBJID à cet effet. Il correspond à CRMD_ORDERADM_I-GUID. CT_ACE_OBJECT-OBJECT_TYPE indique si un poste de royalties à payer, un poste de demande de facture ou un poste de répartition est impliqué.
Créez un append pour la structure IPM_ACE_PARAMETERS pour les paramètres supplémentaires requis. Vérifiez que les noms sont identiques à ceux du codage présenté ci-dessus pour l'exemple ZZPRCTR. Cela garantit que le nouveau paramètre est disponible dans Accrual Engine.
Si vous souhaitez également transférer un paramètre de Accrual Engine à l'interface FI, vous devez créer une implémentation pour le BAdI CRM_ACE_POSTING_BADI avec la méthode CHANGE_ITEM_DATA, qui contient le codage suivant.

Si la zone dans laquelle la saisie doit être effectuée n'existe pas dans la structure ACEPS_BAPI_PRELINEITEM, vous devez l'inclure à l'aide d'un append. Vérifiez que les noms utilisés ici sont identiques à ceux de la structure BAPIACGL09.

TYPE-POOLS: rsds, aceds.
DATA: lv_ip TYPE zcomt_product_id,
lv_market TYPE zcrmt_ipm_market.
DATA: lt_selrng TYPE rsds_frange_t,
ls_selrng TYPE LINE OF rsds_frange_t,
ls_selopt TYPE LINE OF rsds_selopt_t,
lt_acedsop TYPE aceds_ty_db_param_t.
FIELD-SYMBOLS: <ls_acedsop> TYPE LINE OF aceds_ty_db_param_t.
* initialiser les zones standard pour lire le gestionnaire de comptes
* nécessaire uniquement si vous renseignez vos propres objets comptables
CLEAR: cs_prebapi_item-ext_object_id,
cs_prebapi_item-bus_scenario,
cs_prebapi_item-cond_type.
* lire paramètre Accrual Engine
ls_selopt-sign = 'I'.
ls_selopt-option = 'EQ'.
CLEAR ls_selrng.
ls_selrng-fieldname = 'BUKRS'.
ls_selopt-low = is_docitem-bukrs.
APPEND ls_selopt TO ls_selrng-selopt_t.
APPEND ls_selrng TO lt_selrng.
CLEAR ls_selrng.
ls_selrng-fieldname = 'OBJID'.
ls_selopt-low = is_docitem-objid.
APPEND ls_selopt TO ls_selrng-selopt_t.
APPEND ls_selrng TO lt_selrng.
CLEAR ls_selrng.
ls_selrng-fieldname = 'SUBID'.
ls_selopt-low = is_docitem-subid.
APPEND ls_selopt TO ls_selrng-selopt_t.
APPEND ls_selrng TO lt_selrng.
CLEAR ls_selrng.
ls_selrng-fieldname = 'PARAM_NAME'.
ls_selopt-low = 'ZZPRCTR'.
APPEND ls_selopt TO ls_selrng-selopt_t.
APPEND ls_selrng TO lt_selrng.
CALL FUNCTION 'ACEDSDB_PARAM_READ'
EXPORTING
id_ace_comp = is_docitem-comp
it_selranges = lt_selrng
IMPORTING
et_acedsop = lt_acedsop
EXCEPTIONS
not_found = 1.
* renseigner centre de profit
READ TABLE lt_acedsop ASSIGNING <ls_acedsop>
WITH KEY param_name = 'ZZPRCTR'.
IF sy-subrc = 0.
cs_prebapi_item-profit_ctr = <ls_acedsop>-content.
ENDIF.