Saltar al contenido

Actualizar múltiples destinos desde un único registro de origen en Jitterbit Design Studio

Caso de uso

Cuando una consultar o carga útil entrante contiene datos que requieren múltiples actualizaciones de un solo objeto de destino.

Ejemplo

El IDoc de SAP entrante contiene un único precio y el sistema SFDC de destino tiene una o más entradas de libro de precios que deben actualizarse. Este ejemplo utiliza tres operaciones. La primera recibe un IDoc de SAP entrante, la segunda realiza una actualización a SFDC y la tercera realiza una operación upsert.

adjunto

La respuesta de IDoc se asigna a un archivo plano. Tenga en cuenta que la fuente es jerárquica, mientras que el destino es plano. La línea de generador de color negro oscuro corresponde al nodo más bajo de la fuente. Si la fuente tiene 1 registro en el primer nivel, dos registros en el segundo nivel y tres registros en el tercero, se generarán seis registros.

attachment

Cada nodo del objetivo asigna el valor a una variable global. Este es el valor "Clave":

$key=OUTPUT$COND_A01.IDOC$E1KOMG$VAKEY$

Al utilizar variables globales, podemos llamar operaciones individualmente mediante scripts y pasar los valores. Normalmente, las operaciones de este tipo no tienen origen.

Dado que Jitterbit realiza acciones programadas en el destino de forma secuencial, el secuencia de comandos que llama a las operaciones debe estar en el último nodo. Un método alternativo, y quizás preferido, es crear una nueva condición y realizar las asignaciones en el nodo de condición (no confunda con la pestaña Condición). En este caso, la transformación original se escribió en un archivo de texto y fue más fácil realizar las asignaciones de valores de forma individual. (Si utiliza un nodo de condición, no olvide pasar un valor verdadero como salida, o de lo contrario, ¡puede que nunca se ejecute!)

Volviendo al secuencia de comandos en Currency, hay dos requisitos. Si un valor de condición es 923, ejecute upsert. Si un valor de condición es 304, ejecute update.

Primero, el valor de este registro se asigna a una variable global y se escribe en el registro de operación. Luego, se evalúa si es un 923 o un 304. Si es un 923, se ejecutar una operación. Si es un 304, necesitamos realizar más procesamiento. Dado que puede haber más de un libro de precios que necesita una actualización, necesitamos consultar SFDC para obtener una lista, que se asigna a $pbeList. Esta es una matriz, por lo que a continuación iteramos a través de la matriz y llamamos a la operación de actualización. Tenga en cuenta que SFLookupAll devolverá una matriz, mientras que SFLookup devuelve un solo valor.

$currency=OUTPUT$COND_A01.IDOC$E1KOMG$E1KONH.E1KONP.KONWA$;
writetooperationlog("Currency "+$currency);
if($ConditionValue == "923", RunOperation("<TAG>Operations/Jitterbit Connect™/Salesforce Upserts/Upsert Contracted Prices</TAG>"));
if($ConditionValue == "304",
 $soql="SELECT Id from PricebookEntry WHERE Product2.ProductCode = '" + Right($material,4) + "' AND UseStandardPrice = TRUE";
 $pbeList = SfLookupAll("<TAG>Salesforce Orgs/jitterbit@XXXXX.com.devpro1 (Sandbox)</TAG>",$soql);
 WriteToOperationLog('PbeList=' + $pbeList);
 $c = length($pbeList);
 $i = 0;
 while( $i < $c,
 $pbeId = $pbeList[$i][0];
 WriteToOperationLog('PbeList=' + $pbeId + ' Price=' + $price);
 RunOperation("<TAG>Operations/Jitterbit Connect™/Salesforce Updates/Update Price Book Entries</TAG>");
 $i++)
)

Operación de inserción

Cuando se creó esta actualización y actualización mediante el asistente, en el punto en el que se selecciona una fuente, la opción elegida fue "Ninguna" (es la última opción y se pasa por alto con frecuencia). Esto crea una transformación que no leerá desde un archivo de origen o una base de datos, sino que utilizará variables globales.

adjunto

El cliente eligió usar SFLookup para obtener los identificadores de la cuenta y el producto. Secuencia de comandos para SBQQ_Account__c:

$material;
$soql="select id from Account where SAP_Key__c='"+$material+"'";
SfLookup("<TAG>Salesforce Orgs/jitterbit@XXXXX.com.devpro1 (Sandbox)</TAG>",$soql)

La alternativa a esto es pasar la variable global a las relaciones en la asignación y dejar los campos en blanco. Es decir, abrir SAP_Key__c y agregar $material. SFDC realizará la búsqueda de Cuenta y Producto automáticamente y completará los campos Cuenta__c y Producto__c. (Verás que en Jitterbit, ¡por lo general hay más de una forma de hacer lo mismo!)

Operación de actualización

Esto es muy similar al ejemplo anterior. Dado que se trata de una actualización, se requiere el ID.

attachment

Véase también: Procesamiento condicional de registros de destino