Del via


Konsolider lagertransaksjoner

Over tid vil lagertransaksjonstabellen (InventTrans) fortsette å vokse og bruke mer databaseplass. Spørringer som opprettes mot tabellen, vil derfor gradvis gå saktere. Denne artikkelen beskriver hvordan du kan bruke funksjonen Konsolidering av lagertransaksjon til å konsolidere data om lagertransaksjoner for å forbedre systemytelsen.

Notat

Bare økonomisk oppdaterte lagertransaksjoner kan konsolideres i en valgt lukket finansperiode. For å bli konsolidert må økonomisk oppdaterte utgående lagertransaksjoner ha avgangsstatusen Solgt, og innkommende lagertransaksjoner må ha mottaksstatusen Kjøpt.

Når du konsoliderer lagertransaksjoner, flyttes alle relaterte transaksjoner til tabellen InventTransArchive . Lageravgangstransaksjoner og lagermottakstransaksjoner konsolideres separat basert på kombinasjonen av vare-ID (itemId) og lagerdimensjons-ID (inventDimId), og de plasseres i transaksjoner for summert avgang og summert mottak.

Hvis en and-kombinasjon bare inneholder én mottaks- eller avgangstransaksjon, konsolideres ikke transaksjonen itemId inventDimId .

Notat

Når du har konsolidert lagertransaksjonene, kan du optimalisere lagrings- og systemytelsen ytterligere ved å bruke funksjonen Arkiver med Dataverse langsiktig oppbevaring til å flytte InventTransArchive poster til en Microsoft Azure datasjø. Hvis du vil ha mer informasjon, kan du se Arkivere lagertransaksjonsdata i Dynamics 365 Supply Chain Management.

Aktivere funksjonen i systemet

Hvis systemet ikke allerede inneholder funksjonen som er beskrevet i denne artikkelen, går du til Funksjonsbehandling og aktiverer funksjonen Lagertransaksjonskonsolidering . Denne funksjonen kan ikke deaktiveres etter at den er aktivert.

Ting du bør vurdere før du konsoliderer lagertransaksjoner

Før du konsoliderer lagertransaksjoner, bør du vurdere følgende forretningsscenarier, fordi de vil bli påvirket av operasjonen:

  • Når du kontrollerer lagertransaksjoner fra relaterte dokumenter, for eksempel bestillingslinjer, vises de som konsoliderte. Hvis du vil se gjennom de konsoliderte transaksjonene, må du gå til Periodiske oppgaver for lagerstyring > Rydd opp > i lagertransaksjonskonsolidering > .
  • Lagerlukking kan ikke annulleres for konsoliderte perioder.
  • Standard kostnadskonvertering kan ikke utføres for konsoliderte perioder.
  • Lagerrapporter som hentes fra lagertransaksjoner, påvirkes når du konsoliderer lagertransaksjoner. Disse rapportene omfatter rapporten for aldersfordeling for lager og lagerverdirapporter.
  • Lagerprognoser kan påvirkes hvis de kjøres i tidshorisonten for konsoliderte perioder.

Nødvendig programvare

Lagertransaksjoner kan bare konsolideres i perioder der følgende betingelser er oppfylt:

  • Finansperioden må være avsluttet.
  • Lagerlukking må kjøres på eller etter til-periodedatoen for konsolideringen.
  • Perioden må være minst ett år før fra-perioden datoen for konsolideringen.
  • Det må ikke finnes eksisterende lagerberegninger.

Konsolider lagertransaksjonene

Hvis du vil konsolidere lagertransaksjoner, gjør du følgende.

  1. Gå til Lagerstyring>Periodiske oppgaver>Rydd opp>Konsolidering av lagertransaksjon.

    Siden Lagertransaksjonskonsolidering vises med en liste over konsoliderte prosessposter.

  2. I handlingsruten Velg Lagertransaksjonskonsolidering for å opprette en lagertransaksjonskonsolidering.

  3. I dialogboksen Lagertransaksjonskonsolidering angir du følgende felter i hurtigfanen Parametere :

    • Fra dato i lukket finansperiode – Velg den tidligste transaksjonsdatoen som skal tas med i konsolideringen.
    • Til dags dato i lukket finansperiode – Velg den nyeste transaksjonsdatoen som skal tas med i konsolideringen.

    Notat

    Bare perioder som oppfyller forutsetningene, vil være tilgjengelige for valg.

  4. Definer detaljer for satsvis behandling i hurtigfanen Kjør i bakgrunnen etter behov. Følg de vanlige trinnene for satsvise jobber i Microsoft Dynamics 365 Supply Chain Management.

  5. Velg OK.

  6. Du får en melding som ber deg om å bekrefte at du ønsker å fortsette. Les meldingen nøye, og velg deretter Ja hvis du vil fortsette.

    Du får en melding om at konsolideringsjobben for lagertransaksjon er lagt til i partikøen. Jobben begynner å konsolidere lagertransaksjoner fra den valgte perioden.

Vise konsoliderte lagertransaksjoner

Siden Lagertransaksjonskonsolidering viser hele konsolideringsloggen. Hver rad i rutenettet viser informasjon som datoen da konsolideringen ble opprettet, brukeren som opprettet den, og statusen.

I rullegardinlisten øverst på siden Velg en av følgende verdier for å filtrere konsolideringene som vises i rutenettet:

  • Aktiv – Vis bare aktive konsolideringer.
  • Alle – Vis alle konsolideringer.

For hver konsolidering i rutenettet angis følgende informasjon:

  • Aktiv – En hake angir at konsolideringen er aktiv.
  • Fra-dato – Datoen for den eldste transaksjonen som kan inkluderes i konsolideringen.
  • Til dags dato – Datoen for den nyeste transaksjonen som kan inkluderes i konsolideringen.
  • Planlagt av – Brukerkontoen som opprettet konsolideringen.
  • Utført – Datoen da konsolideringen ble opprettet.
  • Stopp gjeldende oppdatering – En hake angir at konsolideringen pågår, men den er stanset midlertidig.
  • Delstat – Behandlingsstatusen for konsolideringen. De mulige verdiene er Venter, Pågår og Avsluttet.

Verktøylinjen over rutenettet har følgende knapper som du kan bruke til å arbeide med en valgt konsolidering:

  • Konsoliderte transaksjoner – Vis alle detaljene for den valgte konsolideringen. Siden Konsoliderte transaksjoner som vises, viser alle transaksjonene i konsolideringen.

    Hvis du vil vise mer informasjon om en bestemt transaksjon på siden Konsoliderte transaksjoner , Velg du den i rutenettet og deretter Velg Konsoliderte transaksjonsdetaljer i handlingsruten. Siden Konsoliderte transaksjonsdetaljer som vises, viser informasjon som finanspostering, relaterte underfinansreferanser og finansdimensjoner.

  • Pause – Stans midlertidig en valgt konsolidering som for øyeblikket behandles. Pausen trer først i kraft etter at arkiveringen oppgave er generert. Det kan derfor ta litt tid før den midlertidige stansen trer i kraft. Hvis en konsolidering stanses midlertidig, vises det et merke i feltet Stopp gjeldende oppdatering .

  • Fortsett – Gjenoppta behandlingen for en valgt konsolidering som for øyeblikket er midlertidig stanset.

Utvide koden for å støtte egendefinerte felter

Hvis tabellen InventTrans inneholder ett eller flere egendefinerte felt, må du kanskje utvide koden for å støtte dem, avhengig av hvordan de navngis.

  • Hvis de egendefinerte feltene fra tabellen InventTrans har de samme feltnavnene som i tabellen InventtransArchive , betyr det at de er tilordnet 1:1. Derfor kan du bare plassere de egendefinerte feltene i feltgruppen InventoryArchiveFields i tabellen inventTrans.
  • Hvis de egendefinerte feltnavnene i tabellen InventTrans ikke samsvarer med feltnavnene i tabellen InventtransArchive, må du legge til kode for å tilordne dem. Hvis du for eksempel har et systemfelt kalt InventTrans.CreatedDateTime, må du opprette et felt i tabellen InventTransArchive med et annet navn (for eksempel InventtransArchive.InventTransCreatedDateTime) og legge til utvidelser i klassene InventTransArchiveProcessTask og InventTransArchiveSqlStatementHelper, som vist i eksempelkoden nedenfor.

Følgende eksempelkode viser et eksempel på hvordan du legger til den nødvendige utvidelsen i klassen 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);
    }
}

Følgende eksempelkode viser et eksempel på hvordan du legger til den nødvendige utvidelsen i klassen 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;
    }
}