Kolom "pengiriman untuk kode" kosong secara tiba-tiba setelah Anda menjalankan fungsi mendapatkan penjualan pesanan untuk pesanan khusus dalam pesanan pembelian khusus di Microsoft Dynamics NAV 2009

Templat: CPR - Navision kode perbaikan Template

BUG #: 156421 (pemeliharaan konten)

Artikel ini berlaku untuk Microsoft Dynamics NAV untuk semua negara dan semua bahasa lokal.

Gejala

Setelah Anda menjalankan fungsi Mendapatkan penjualan pesanan untuk pesanan khusus di khusus pesan di Microsoft Dynamics NAV 2009 pembelian, kolom pengiriman untuk kode di kop pesanan pembelian khusus kosong secara tiba-tiba.
Masalah ini terjadi di dalam produk berikut ini:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Pemecahan masalah

Informasi Hotfix

Sekarang tersedia hotfix yang didukung dari Microsoft. Namun, hanya ditujukan untuk memperbaiki masalah yang dijelaskan di artikel ini. Terapkan hanya ke sistem yang mengalami masalah khusus ini. Perbaikan terbaru ini dapat menerima pengujian tambahan. Oleh karena itu, jika Anda tidak terlalu dipengaruhi oleh masalah ini, kami sarankan Anda menunggu paket layanan Microsoft Dynamics NAV 2009 atau versi Microsoft Dynamics NAV berikutnya yang berisi perbaikan terbaru ini.

Catatan Dalam kasus tertentu, biaya yang biasanya diadakan untuk panggilan mungkin dibatalkan apabila profesional dukungan teknis untuk Microsoft Dynamics dan produk-produk terkait dukungan menentukan bahwa pembaruan khusus akan memecahkan masalah Anda. Biaya dukungan biasa akan berlaku untuk pertanyaan dan masalah yang tidak termasuk pada pembaruan tertentu yang dimaksud dukungan tambahan.

Apabila hotfix ini tidak dikirimkan untuk unduhan publik (berarti URL publik untuk hotfix ini tidak disediakan dalam artikel ini), distribusi memerlukan arahan teknis, eskalasi anggota tim, atau persetujuan manajer dan informasi berikut ini berlaku:

  • Untuk menerima hotfix, pelanggan harus mengalami bug yang disebutkan di bagian "Gejala".

  • Anda harus melacak sendiri Pelanggan yang Anda kirimi dan memberikan paket layanan berikutnya kepada mereka setelah hotfix tersedia (setelah paket layanan diedarkan).

Hotfix ini dijadwalkan untuk disertakan dengan Microsoft Dynamics NAV 2009 R2.

VSTF DynamicsNAVSE: 255792

Informasi penginstalan

Microsoft menyediakan contoh pemrogaman hanya untuk ilustrasi, tanpa garansi baik tersurat maupun tersirat. Ini mencakup, namun tidak terbatas pada, garansi yang tersirat dapat diperjualbelikan atau kesesuaian untuk tujuan tertentu. Artikel ini menganggap bahwa Anda sudah terbiasa dengan bahasa pemrograman yang ditunjukkan dan terbiasa dengan alat-alat yang digunakan untuk membuat dan prosedur debug. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, namun mereka tidak akan mengubah contoh tersebut untuk memberikan fungsionalitas tambahan atau menyusun prosedur untuk memenuhi persyaratan khusus Anda.

Catatan Sebelum Anda menginstal perbaikan terbaru ini, verifikasi bahwa semua pengguna klien Microsoft Navision log off sistem. Ini termasuk Microsoft Navision aplikasi Layanan (NAS) klien pengguna. Anda harus klien hanya pengguna yang masuk saat Anda menerapkan perbaikan terbaru ini.

Untuk menerapkan hotfix ini, Anda harus memiliki lisensi pengembang.

Kami menyarankan bahwa akun pengguna di jendela login Windows atau jendela login Database ditetapkan id peran "SUPER" Jika account pengguna tidak dapat menetapkan ID peran "SUPER", Anda harus memverifikasi bahwa account pengguna yang memiliki izin berikut ini:

  • Ubah izin untuk objek yang Anda akan berubah.

  • Izin eksekusi untuk objek sistem objek ID 5210 dan sistem objek ID 9015 objek.



Catatan Anda tidak harus memiliki hak untuk penyimpanan data kecuali jika Anda harus melakukan perbaikan data.

Perubahan kode

Catatan Selalu menguji kode perbaikan di lingkungan yang dikontrol sebelum menerapkan perbaikan untuk komputer produksi.
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:

  1. Ubah kode di fungsi GetDescriptionAndRcptName di dalam ReqJnlManagement codeunit (330) sebagai berikut:
    Kode yang ada

    ...ELSE
    Description := '';

    // Delete the following lines.
    ReqLine.Type::Item:
    IF Item.GET(ReqLine."No.") THEN
    Description := Item.Description
    ELSE
    Description := '';
    // End of the lines.

    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...

    Penggantian kode

    ...ELSE
    Description := '';
    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. Menambahkan variabel global yang baru di Req. Wksh.-membuat urutan codeunit (333), dan kemudian Tentukan variabel sebagai berikut:

    • Nama: DropShptSpecialOrderExists

    • DataType: Boolean

  3. Menambahkan variabel lokal baru di fungsi InsertPurchOrderLine di Req. Wksh.-membuat urutan codeunit (333), dan kemudian Tentukan variabel sebagai berikut:

    • Nama: SalesHeader

    • DataType: catatan

    • Subtipe: Header penjualan

  4. Menambahkan variabel lokal baru di fungsi InsertPurchOrderLine di Req. Wksh.-membuat urutan codeunit (333), dan kemudian Tentukan variabel sebagai berikut:

    • Nama: DropShptSplOrderDiffAddress

    • DataType: Boolean

  5. Ubah kode di fungsi InsertPurchOrderLine di Req. Wksh.-membuat urutan codeunit (333) sebagai berikut:
    Kode yang ada

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;


    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Delete the following line.
    (PrevPurchCode <> "Purchasing Code")

    THEN BEGIN
    ...

    Penggantian kode

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;

    // Add the following lines.
    DropShptSpecialOrderExists := FALSE;
    IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
    DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
    IF DropShptSpecialOrderExists THEN
    DropShptSplOrderDiffAddress :=
    NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
    END;
    // End of the lines.

    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Add the following lines.
    (PrevPurchCode <> "Purchasing Code") OR
    (DropShptSplOrderDiffAddress)
    // End of the lines.

    THEN BEGIN
    ...
  6. Menambahkan variabel lokal baru di fungsi InsertHeader di Req. Wksh.-membuat urutan codeunit (333), dan kemudian Tentukan variabel sebagai berikut:

    • Nama: SalesHeader

    • DataType: catatan

    • Subtipe: Header penjualan

  7. Ubah kode di fungsi InsertHeader di Req. Wksh.-membuat urutan codeunit (333) sebagai berikut:
    Kode yang ada

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    Penggantian kode

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    // Add the following lines.
    IF DropShptSpecialOrderExists THEN BEGIN
    SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.");
    PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
    PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
    PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
    PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
    PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
    PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
    PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
    END;
    // End of the lines.

    PurchOrderHeader.MODIFY;
    ...
  8. Ubah kode di fungsi EnterPurchaseItemCrossRef di codeunit Dist. integrasi (5702) sebagai berikut:
    Kode yang ada

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";

    // Delete the following lines.
    IF ItemCrossReference.Description <> '' THEN BEGIN
    Description := ItemCrossReference.Description;
    "Description 2" := '';
    END;
    // End of the lines.

    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';

    // Delete the following lines.
    IF "Variant Code" <> '' THEN BEGIN
    ItemVariant.GET("No.","Variant Code");
    Description := ItemVariant.Description;
    "Description 2" := ItemVariant."Description 2";
    END ELSE BEGIN
    Item.GET("No.");
    Description := Item.Description;
    "Description 2" := Item."Description 2";
    END;
    // End of the lines.

    GetItemTranslation;
    ...

    Penggantian kode

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';
    GetItemTranslation;
    ...
  9. Ubah kode di fungsi GetSpecialOrders di codeunit Dist. integrasi (5702) sebagai berikut:
    Kode yang ada

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Delete the following line.
    PurchHeader.SetShipToForSpecOrder;

    PurchLine.LOCKTABLE;
    ...

    Penggantian kode

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following lines.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...
  10. Ubah kode di fungsi TransfldsFromSalesToPurchLine di codeunit salinan dokumen Mgt. (6620) sebagai berikut:
    Kode yang ada

    ...VALIDATE("Direct Unit Cost");
    END;
    ...

    Penggantian kode

    ...VALIDATE("Direct Unit Cost");

    // Add the following lines.
    Description := FromSalesLine.Description;
    "Description 2" := FromSalesLine."Description 2";
    // End of the lines.

    END;
    ...
  11. Ubah kode di dalam kode di Purch.-mendapatkan Drop Shpt. codeunit (76) sebagai berikut:
    Kode yang ada 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    PurchLine.LOCKTABLE;
    ...

    Penggantian kode 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following line.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...

    Kode yang ada 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;
    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...

    Penggantian kode 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;

    // Add the following line.
    PurchLine."Description 2" := SalesLine."Description 2";

    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...
  12. Ubah kode di InsertReqWkshLine dalam laporan mendapatkan pesanan penjualan (698) sebagai berikut:
    Kode yang ada

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";
    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...

    Penggantian kode

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";

    // Add the following lines.
    Description := SalesLine.Description;
    "Description 2" := SalesLine."Description 2";
    // End of the lines.

    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...
  13. Menambahkan variabel global yang baru dalam pembelian Header tabel (38), dan kemudian Tentukan variabel sebagai berikut:

    • Nama: NameAddressDetails

    • DataType: teks

    • Panjang: 512

  14. Menambahkan variabel global yang baru dalam pembelian Header tabel (38), dan kemudian Tentukan variabel sebagai berikut:

    • Nama: NameAddressDetails2

    • DataType: teks

    • Panjang: 512

  15. Menambahkan konstanta teks baru dalam pembelian Header tabel (38), dan kemudian Tentukan terus-menerus teks sebagai berikut:

    • Nama: Text051

    • ConstValue: kolom %1 pesanan pembelian %2 harus sama dengan penjualan pesanan %3.

  16. Membuat fungsi CheckAndAddShipToAdd baru di tabel pembelian Header (38). Untuk melakukannya, ikuti langkah-langkah berikut:

    1. Menambahkan parameter lokal baru dalam fungsi CheckAndAddShipToAdd pembelian Header tabel (38), dan kemudian Tentukan parameter sebagai berikut:

      • Var: No

      • Nama: SalesHeader

      • DataType: catatan

      • Subtipe: Header penjualan

    2. Menambahkan parameter lokal baru dalam fungsi CheckAndAddShipToAdd pembelian Header tabel (38), dan kemudian Tentukan parameter sebagai berikut:

      • Var: No

      • Nama: ShowError

      • DataType: Boolean

    3. Menambahkan nilai kembali fungsi CheckAndAddShipToAdd pembelian Header tabel (38), dan kemudian Tentukan nilai kembali sebagai berikut:

      • Mengembalikan Type: Boolean

    4. Menambahkan variabel lokal baru dalam fungsi CheckAndAddShipToAdd pembelian Header tabel (38), dan kemudian Tentukan variabel sebagai berikut:

      • Nama: PurchLine2

      • DataType: catatan

      • Subtipe: PurchLine2

    5. Tambahkan kode berikut dalam fungsi CheckAndAddShipToAdd pembelian Header tabel (38):

      IF ShowError THEN BEGINPurchLine2.RESET;
      PurchLine2.SETRANGE("Document Type","Document Type"::Order);
      PurchLine2.SETRANGE("Document No.","No.");
      IF NOT PurchLine2.ISEMPTY THEN BEGIN
      IF "Ship-to Name" <> SalesHeader."Ship-to Name" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No.");
      IF "Ship-to Name 2" <> SalesHeader."Ship-to Name 2" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Address" <> SalesHeader."Ship-to Address") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No.");
      IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Post Code" <> SalesHeader."Ship-to Post Code") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No.");
      IF ("Ship-to City" <> SalesHeader."Ship-to City") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No.");
      IF ("Ship-to Contact" <> SalesHeader."Ship-to Contact") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No.");
      END ELSE BEGIN
      // no purchase line exists
      "Ship-to Name" := SalesHeader."Ship-to Name";
      "Ship-to Name 2" := SalesHeader."Ship-to Name 2";
      "Ship-to Address" := SalesHeader."Ship-to Address";
      "Ship-to Address 2" := SalesHeader."Ship-to Address 2";
      "Ship-to Post Code" := SalesHeader."Ship-to Post Code";
      "Ship-to City" := SalesHeader."Ship-to City";
      "Ship-to Contact" := SalesHeader."Ship-to Contact";
      END;
      END ELSE BEGIN
      NameAddressDetails :=
      SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" +
      SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" +
      SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" +
      SalesHeader."Ship-to Contact";
      IF NameAddressDetails2 = '' THEN
      NameAddressDetails2 := NameAddressDetails;
      EXIT(NameAddressDetails2 = NameAddressDetails);
      END;
  17. Membuat fungsi DropShptSplOrderExists baru di tabel pembelian Header (38). Untuk melakukannya, ikuti langkah-langkah berikut:

    1. Menambahkan parameter lokal baru dalam fungsi DropShptSplOrderExists pembelian Header tabel (38), dan kemudian Tentukan parameter sebagai berikut:

      • Var: No

      • Nama: SalesHeader

      • DataType: catatan

      • Subtipe: Header penjualan

    2. Menambahkan Ketik nilai kembali fungsi DropShptSplOrderExists pembelian Header tabel (38), dan kemudian Tentukan nilai kembali sebagai berikut:

      • Mengembalikan Type: Boolean

    3. Menambahkan variabel lokal baru dalam fungsi DropShptSplOrderExists pembelian Header tabel (38), dan kemudian Tentukan variabel sebagai berikut:

      • Nama: SalesLine2

      • DataType: catatan

      • Subtipe: baris penjualan

    4. Tambahkan kode berikut dalam fungsi DropShptSplOrderExists pembelian Header tabel (38):

      // returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.RESET;
      SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order);
      SalesLine2.SETRANGE("Document No.",SalesHeader."No.");
      SalesLine2.SETRANGE("Drop Shipment",TRUE);
      IF NOT SalesLine2.ISEMPTY THEN
      EXIT(TRUE);

      SalesLine2.SETRANGE("Drop Shipment");
      SalesLine2.SETRANGE("Special Order",TRUE);
      EXIT(NOT SalesLine2.ISEMPTY);

Prasyarat

Anda harus memiliki salah satu produk berikut ini diinstal untuk menerapkan perbaikan terbaru ini:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Informasi penghapusan

Anda tidak dapat menghapus hotfix ini.

Status

Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Catatan Ini adalah artikel "Penerbitan cepat" dibuat langsung dari dalam organisasi dukungan Microsoft. Informasi yang terkandung di dalamnya disediakan sebagai tanggapan masalah yang muncul. Sebagai akibat dari kecepatan untuk menjadikannya tersedia, materi dapat mengandung kesalahan ketik dan dapat direvisi setiap saat tanpa pemberitahuan. Lihat Ketentuan untuk pertimbangan lainnya.

Penulis: avannini
Penulis: v-zhipen
Pemeriksa teknis: avannini
Editor:

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×