Delen via


Voorraadtransacties consolideren

In de loop der tijd zal de tabel met voorraadtransacties (InventTrans) groter worden en meer databaseruimte verbruiken. Daarom worden query's voor de tabel steeds trager. In dit artikel wordt beschreven hoe u de functie Consolidatie van voorraadtransactie kunt gebruiken om gegevens over voorraadtransacties te consolideren voor verbetering van systeemprestaties.

Opmerking

Alleen financieel bijgewerkte voorraadtransacties kunnen in een geselecteerde afgesloten grootboekperiode worden geconsolideerd. Voor consolidatie moeten financieel bijgewerkte uitgaande voorraadtransacties de uitgiftestatus Verkocht hebben en moeten inkomende voorraadtransacties de ontvangststatus Ingekocht hebben.

Wanneer u voorraadtransacties consolideert, worden alle gerelateerde transacties naar de tabel InventTransArchive verplaatst. Voorraaduitgiftetransacties en voorraadontvangsttransacties worden afzonderlijk geconsolideerd op basis van de combinatie van de artikel-id (itemId) en de voorraaddimensie-id (inventDimId), en ze worden in de samengevatte uitgifte- en samengevatte ontvangsttransacties geplaatst.

Als een combinatie van itemId en inventDimId slechts één ontvangst- of uitgiftetransactie bevat, wordt de transactie niet geconsolideerd.

Opmerking

Nadat u uw voorraadtransacties hebt geconsolideert, kunt u de opslag- en systeemprestaties verder optimaliseren door de functie Archiveren met Dataverse-langetermijnbewaring te gebruiken om InventTransArchive-records naar een Microsoft Azure datalake te verplaatsen. Zie Voorraadtransactiegegevens archiveren in Dynamics 365 Supply Chain Management voor meer informatie.

De functie inschakelen in uw systeem

Als de functie die in dit artikel worden beschreven, nog niet in het systeem aanwezig zijn, gaat u naar Functiebeheer en schakelt u de functie Consolidatie van voorraadtransactie in. Deze functie kan niet worden uitgeschakeld nadat deze is ingeschakeld.

Waar u rekening mee moet worden houden voordat u voorraadtransacties consolideert

Voordat u voorraadtransacties consolideert, moet u rekening houden met de volgende zakelijke scenario's, omdat deze gevolgen zullen hebben van de bewerking:

  • Wanneer u voorraadtransacties controleert uit gerelateerde documenten, zoals inkooporderregels, worden ze weergegeven als geconsolideerd. Als u de geconsolideerde transacties wilt controleren, gaat u naar Voorraadbeheer > Periodieke taken > Opschonen > Consolidatie van voorraadtransactie.
  • Voorraadsluiting kan niet worden geannuleerd voor geconsolideerde perioden.
  • Standaardkostenconversie kan niet worden uitgevoerd voor geconsolideerde perioden.
  • Wanneer u voorraadtransacties consolideert, heeft dit gevolgen voor voorraadrapporten die afkomstig zijn uit voorraadtransacties. Deze rapporten omvatten het naar ouderdom gerangschikt voorraadrapport en voorraadwaarderapporten.
  • Dit kan gevolgen hebben voor voorraadprognoses als deze worden uitgevoerd gedurende de periode van geconsolideerde perioden.

Vereisten

Voorraadtransacties kunnen alleen worden geconsolideerd tijdens perioden waarin aan de volgende voorwaarden is voldaan:

  • De grootboekperiode moet zijn afgesloten.
  • Voorraadsluiting moet worden uitgevoerd op of na de tot-datum van de consolidatie.
  • De periode moet ten minste één jaar vóór de beginperiodedatum van de consolidatie liggen.
  • Er mogen geen bestaande voorraadherberekeningen zijn.

Uw voorraadtransacties consolideren

Voer de volgende stappen uit om voorraadtransacties te consolideren.

  1. Ga naar Voorraadbeheer>Periodieke taken>Opschonen>Consolidatie van voorraadtransactie.

    De pagina Consolidatie van voorraadtransactie verschijnt en toont een lijst met geconsolideerde procesrecords.

  2. Selecteer Consolidatie van voorraadtransactie in het actievenster om een voorraadtransactieconsolidatie te maken.

  3. Stel in het dialoogvenster Consolidatie van voorraadtransactie op het sneltabblad Parameters de volgende velden in:

    • Begindatum in afgesloten grootboekperiode : selecteer de eerste transactiedatum die u wilt opnemen in de consolidatie.
    • Einddatum in afgesloten grootboekperiode : selecteer de nieuwste transactiedatum die u wilt opnemen in de consolidatie.

    Opmerking

    Alleen perioden die aan de vereisten voldoen, kunnen worden geselecteerd.

  4. Stel batchverwerkingsdetails in op het sneltabblad Uitvoeren op de achtergrond. Volgen gebruikelijke stappen voor batchtaken in Microsoft Dynamics 365 Supply Chain Management.

  5. Selecteer OK.

  6. Er wordt een bericht weergegeven waarin u wordt gevraagd te bevestigen dat u wilt doorgaan. Lees het bericht zorgvuldig en selecteer Ja als u wilt doorgaan.

    U ontvangt een bericht waarin wordt gemeld dat de consolidatietaak voor uw voorraadtransactie is toegevoegd aan de batchwachtrij. De taak begint met het consolideren van voorraadtransacties uit de geselecteerde periode.

Geconsolideerde voorraadtransacties bekijken

Op de pagina Consolidatie van voorraadtransactie wordt uw volledige archiveringshistorie weergegeven. Elke rij in het raster geeft informatie weer, zoals de datum waarop de consolidatie is gemaakt, de gebruiker die het heeft gemaakt en de status.

Selecteer een van de volgende waarden in de vervolgkeuzelijst boven aan de pagina om de consolidaties te filteren die in het raster worden weergegeven:

  • Actief : alleen actieve consolidaties tonen.
  • Alle – Alle consolidaties tonen.

Voor elke consolidatie in het raster wordt de volgende informatie geleverd:

  • Actief : een vinkje geeft aan dat de consolidatie actief is.
  • Vanaf-datum : de datum van de oudste transactie die kan worden opgenomen in de consolidatie.
  • Einddatum : de datum van de nieuwste transactie die kan worden opgenomen in de consolidatie.
  • Gepland door– De gebruikersrekening die de consolidatie heeft gemaakt.
  • Uitgevoerd : de datum waarop de consolidatie is gemaakt.
  • Huidige update stoppen : een vinkje geeft aan dat de consolidatie wordt uitgevoerd, maar dat deze is onderbroken.
  • Status : de verwerkingsstatus van de consolidatie. De mogelijke waarden zijn In afwachting, In uitvoering en Gereed.

De werkbalk boven het raster bevat de volgende knoppen die u kunt gebruiken om met een geselecteerde consolidatie te werken:

  • Geconsolideerde transacties: alle details van de geselecteerde consolidatie weergeven Op de pagina Geconsolideerde transacties die verschijnt, worden alle transacties in de consolidatie weergegeven.

    Als u meer informatie over een specifieke transactie op de pagina Geconsolideerde transacties wilt weergeven, selecteert u deze in het raster en selecteert u vervolgens in het actievenster Details geconsolideerde transacties. Op de pagina Details geconsolideerde transactie wordt informatie weergegeven, zoals de boeking in het grootboek, gerelateerde verwijzingen in de subadministratie en financiële dimensies.

  • Pauze – Een geselecteerde consolidatie onderbreken die momenteel wordt verwerkt. De pauze wordt pas van kracht nadat de archiveringstaak is gegenereerd. Het kan dus even duren voordat de pauze van kracht wordt. Als een consolidatie wordt gepauzeerd, verschijnt er een vinkje in het veld Huidige update stoppen.

  • Cv – De verwerking hervatten voor een geselecteerde consolidatie die momenteel is onderbroken.

Uw code uitbreiden om aangepaste velden te ondersteunen

Als de tabel InventTrans een of meer aangepaste velden bevat, kan het zijn dat u de code moet uitbreiden om ze te ondersteunen, afhankelijk van welke naam ze hebben gekregen.

  • Als de aangepaste velden uit de tabel InventTrans dezelfde veldnamen hebben als in de tabel InventtransArchive, betekent dit dat ze 1:1 zijn toegewezen. Daarom kunt u de aangepaste velden gewoon in de veldengroep InventoryArchiveFields van de tabel inventTrans plaatsen.
  • Als de aangepaste veldnamen in de tabel InventTrans niet overeenkomen met de veldnamen in de tabel InventtransArchive, moet u code toevoegen om deze toe te wijzen. Als u een systeemveld met de naam InventTrans.CreatedDateTime hebt, moet u bijvoorbeeld een veld in de tabel InventTransArchive met een andere naam maken (zoals InventtransArchive.InventTransCreatedDateTime) en uitbreidingen aan de klassen InventTransArchiveProcessTask en InventTransArchiveSqlStatementHelper toevoegen, zoals wordt weergegeven in de volgende voorbeeldcode.

De volgende voorbeeldcode geeft aan hoe u de vereiste uitbreiding toevoegt aan de klasse InventTransArchiveProcessTask.

[ExtensionOf(classStr(InventTransArchiveProcessTask))]
Final class InventTransArchiveProcessTask_Extension
{

    protected void addInventTransFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTrans, ModifiedBy))
            .add(fieldStr(InventTrans, CreatedBy)).add(fieldStr(InventTrans, CreatedDateTime));

        next addInventTransFields(_selectionObject);
    }


    protected void addInventTransArchiveFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTransArchive, InventTransModifiedBy))
            .add(fieldStr(InventTransArchive, InventTransCreatedBy)).add(fieldStr(InventTransArchive, InventTransCreatedDateTime));

        next addInventTransArchiveFields(_selectionObject);
    }
}

De volgende voorbeeldcode geeft aan hoe u de vereiste uitbreiding toevoegt aan de klasse InventTransArchiveSqlStatementHelper.

[ExtensionOf(classStr(InventTransArchiveSqlStatementHelper))]
final class InventTransArchiveSqlStatementHelper_Extension
{
    private str     inventTransModifiedBy;  
    private str     inventTransCreatedBy;
    private str     inventTransCreatedDateTime;

    protected void initialize()
    {
        next initialize();
        inventTransModifiedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, ModifiedBy)).name(DbBackend::Sql);
        inventTransCreatedDateTime = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedDateTime)).name(DbBackend::Sql);
        inventTransCreatedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedBy)).name(DbBackend::Sql);
    }

    protected str buildInventTransArchiveSelectionFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransArchiveSelectionFieldsStatement();
        
        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransModifiedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedDateTime)).name(DbBackend::Sql));
        }

        return ret;
    }

    protected str buildInventTransTargetFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransTargetFieldsStatement();

        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransModifiedBy);
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedBy);
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedDateTime);
        }

        return ret;
    }
}