!--a11y-->
Pilotage de la synchronisation des listes de sélection
(exemple) 
Vous ne voulez pas que les listes de sélection du référentiel XML soient remplacées par les listes de sélection transférées par SAP R/3 vers le CATS notebook au cours de la synchronisation. Vous souhaitez plutôt que les listes de sélection soient mises à jour comme ceci :
· Si une ligne de la liste de sélection existe déjà dans le référentiel XML, vous voulez qu'elle soit remplacée par la ligne de la liste de sélection reçue pendant la synchronisation.
· Si une ligne de la liste de sélection n'existe pas encore dans le référentiel XML, vous voulez qu'elle soit insérée dans la liste de sélection.
...
1. Définissez une classe séparée, ZsynchronizationInboundHandler. Cette classe doit implémenter l'interface IsynchronizationInboundHandler.
2. Implémentez la méthode getObjectName.
3. Implémentez la méthode handleInboundContainer.
¡ Créez une instance de la classe IMessageContainer pour éditer des messages relatifs à l'opération de synchronisation, conformément aux exigences. Note : par souci de facilité, cet exemple ne couvre pas l'édition des messages.
¡ Lisez une instance de la classe DatabaseCustomer.
¡ Lisez dans l'ordre les lignes de la liste de sélection envoyée par SAP R/3 et vérifiez s'il existe une ligne possédant la même clé primaire dans le référentiel XML duCATS notebook.
§ S'il existe une ligne avec la même clé primaire, supprimez-la et insérez la ligne de la liste de sélection reçue dans la liste de sélection du référentiel XML.
§ Si aucune ligne ne possède la même clé primaire, insérez la ligne de la liste de sélection reçue dans la liste de sélection du référentiel XML.
package com.sap.mycats.customer.examples;
import com.sap.mycats.basics.database.badi.*;
import com.sap.mycats.basics.tools.badi.*;
import com.sap.mycats.basics.customer.synchronization.ISynchronizationInboundHandler;
/**
* This example of an ISynchronizationInboundHandler appends or updates
* received elements. The standard handler would replace all records with the
* received table.
*/
public class ZSynchronizationInboundHandler
implements ISynchronizationInboundHandler
{
public final static String ZPICKLIST_WBS = "ZPICKLIST_POSID";
public ZSynchronizationInboundHandler () {
}
public String getObjectName () {
return ZPICKLIST_WBS;
}
public void handleInboundContainer (ITableReadOnly anInboundContainer) {
DatabaseCustomer database = DatabaseCustomer.getInstance();
for (int i = 0; i < anInboundContainer.getRowCount(); i++) {
IRecordReadWrite record = null;
try {
record = RecordFactory.createRecord(ZPICKLIST_WBS);
} catch (Exception e) {
return;
}
record.setCorrespondingFields(anInboundContainer.getRecordReadOnly(i));
ITableReadWrite oldRecords
= database.select(ZPICKLIST_WBS, "primary", record, record);
for (int j = 0; j < oldRecords.getRowCount(); j++) {
database.delete(ZPICKLIST_WBS, oldRecords.getRecordReadWrite(j));
}
database.insert(ZPICKLIST_WBS, record);
}
}
}