Relacionar 2 Datasets Customizados - API Datasul e Criar um Terceiro Dataset com Novas Colunas

Olá! Tenho dois Datasets que retornam colunas de uma API Datasul, e, por conta disto, os campos são limitados não tenho flexibilidade para adicionar novas colunas, pois a procedure é executada em um arquivo Progress .r criptografado. No Dataset 1 eu tenho o código do item e o grupo de estoque; No Dataset 2 eu tenho apenas o código do item;

Preciso criar um terceiro Dataset unindo o Dataset 1 e o Dataset 2 por meio do relacionamento com o código do item (chave) retornar as colunas: Item, Grupo de Estoque e UN, porém não sei como fazer.

Alguém tem uma dica?

Ronara boa tarde.

Não sei se é exatamente isso que você precisa, mas acredito que você fazendo alguns ajustes com sua necessidade (inclusive reveja o nome dos campos) você obterá de uma forma simples o resultado que precisa:


function createDataset(fields, constraints, sortFields) {

    // Criação das colunas de retorno deste dataset
    var datasetRetorno = DatasetBuilder.newDataset();
    datasetRetorno.addColumn("Item");
    datasetRetorno.addColumn("GrupoEstoque");
    datasetRetorno.addColumn("Un");

    // Definição das variáveis auxiliares
    var item;
    var grupoEstoque;
    var un;

    // Buscando o dataset 1
    var dataset_1 = DatasetFactory.getDataset("dataset1", null, null, null);

    // Buscando o dataset 2
    var dataset_2 = DatasetFactory.getDataset("dataset2", null, null, null);

    // A partir do dataset 1 busca todos relacionados no dataset 2
    for (var i = 0; i < dataset_1.rowsCount; i++) {
        item         = dataset_1.getValue(i, "item");
        grupoEstoque = dataset_1.getValue(i, "grupoEstoque");
        un = 0;
        // Totaliza o número de itens encontrados no dataset 2 que tem a mesma chave do dataset 1
        for (var j = 0; j < dataset_2.rowsCount; j++) {
            if (dataset_2.getValue(j, "item") == item) {
                un = un + 1;
            }
        }
        // Grava o dataset para retorno
        datasetRetorno.addRow(new Array(item,
                                           grupoEstoque,
                                           un));
    }

    // Retorna o dataset
    return datasetRetorno;    
}