5
2014
Teslimat Numarası ile Sevkiyat Yayınlama İşleminin Yapılmasında Kullanılan Örnek Script
burada yapılan işlem ;
örnek olarak teslimata atanmış olan satırlar var diyelim ki, ki fonksiyonel olarak ta teslimata atama işleminin ardından teslimat bazlı yayınlama işlemi yapılabilmektedir aşağıdaki kodlamada fonksiyonel olarak bunu karşılığıdır.
yayınlama işlemi gerekli veya olması gereken değişkenler düzgünce set edilmelidir.
sonucunda procedure nin ürettiği sonuçlar takip edilebilir ,işlem commit siz bir şekilde çalışmaktadır.
PROCEDURE release_batch (
p_delivery_id NUMBER,
p_return_status IN OUT NOCOPY VARCHAR2,
p_message IN OUT NOCOPY VARCHAR2
)
AS
l_msg_count NUMBER;
l_msg_details VARCHAR2 (2400);
l_msg_summary VARCHAR2 (2400);
l_init_msg_list VARCHAR2 (10) := fnd_api.g_true;
l_msg_data VARCHAR2 (2000);
l_return_status VARCHAR2 (1);
l_batch_rec wsh_picking_batches_pub.batch_info_rec;
l_picking_rule_rec wsh_picking_rules%ROWTYPE;
l_ret_batch_id NUMBER;
l_req_id NUMBER;
BEGIN
FOR rec IN (SELECT DISTINCT source_header_id, subinventory_code
FROM protokol_tasima_temp –> subinventory bazında yayınlama yapmak için siparişin header_id ve hangi depodan yayınlanacağı bilgisi burdan alınmaktadır !!!
WHERE 1 = 1 AND delivery_id = p_delivery_id)
LOOP
BEGIN
SELECT ship_from_org_id
INTO l_batch_rec.organization_id
FROM oe_order_headers_all oh
WHERE 1 = 1 AND oh.header_id = rec.source_header_id;
EXCEPTION
WHEN OTHERS
THEN
p_return_status := fnd_api.g_ret_sts_error;
p_message :=
‘Siparis Numarasi uzerinden temin yeri bilgisi alinamadi !’;
RETURN;
END;
l_batch_rec.backorders_only_flag := ‘I’;
–l_batch_rec.document_set_id := l_picking_rule_rec.document_set_id;
l_batch_rec.existing_rsvs_only_flag := ‘N’;
–l_batch_rec.customer_id := l_cust_id;
l_batch_rec.order_header_id := rec.source_header_id;
–l_batch_rec.order_type_id := l_type_id;
l_batch_rec.include_planned_lines := ‘N’;
–> atanan satirlari dahil et
–l_batch_rec.pick_grouping_rule_id := l_picking_rule_rec.pick_grouping_rule_id;
–l_batch_rec.pick_sequence_rule_id := l_picking_rule_rec.pick_sequence_rule_id;
l_batch_rec.autocreate_delivery_flag := ‘N’;
–> teslimat daha onceden olusturuldugundan setup ne olursa olsun teslimat oluşturulmamalıdır
l_batch_rec.autodetail_pr_flag := ‘N’; –> otomatik paylastiracak
–> otomatik paylastırmayi kaldirdim !!! 10.05.2013
–l_batch_rec.default_stage_subinventory := l_picking_rule_rec.default_stage_subinventory;
l_batch_rec.pick_from_subinventory := rec.subinventory_code;
l_batch_rec.auto_pick_confirm_flag := ‘N’;
–> otomatik toplama onayi
–l_batch_rec.ship_confirm_rule_id := l_picking_rule_rec.ship_confirm_rule_id;
l_batch_rec.autopack_flag := ‘N’;
l_batch_rec.autopack_level := 0;
–> teslimatlari otomatik yükle
l_batch_rec.task_planning_flag := ‘N’;
–l_batch_rec.region_id := l_picking_rule_rec.region_id;
–l_batch_rec.zone_id := ‘o’;
–l_batch_rec.category_id := l_picking_rule_rec.category_id;
–l_batch_rec.category_set_id := l_picking_rule_rec.category_set_id;
–l_batch_rec.ac_delivery_criteria := l_picking_rule_rec.ac_delivery_criteria;
–l_batch_rec.rel_subinventory := l_picking_rule_rec.rel_subinventory;
l_batch_rec.append_flag := ‘N’;
–> teslimatlari ekle
–l_batch_rec.task_priority := l_picking_rule_rec.task_priority;
l_batch_rec.delivery_id := p_delivery_id;
–***************************************************************************************
–> locator YOK!!!
/*
IF l_order_source_id <> l_d_order_source_id
THEN
l_batch_rec.pick_from_locator_id := rec.locator_id;
l_batch_rec.default_stage_locator_id := rec.locator_id;
END IF;
*/
–***************************************************************************************
wsh_picking_batches_pub.create_batch
(p_api_version => 1.0,
p_init_msg_list => l_init_msg_list,
p_commit => fnd_api.g_false,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_rule_id => l_picking_rule_rec.picking_rule_id,
p_batch_rec => l_batch_rec,
x_batch_id => l_ret_batch_id
);
IF (l_return_status <> wsh_util_core.g_ret_sts_success)
THEN
wsh_util_core.get_messages (‘Y’,
l_msg_summary,
l_msg_details,
l_msg_count
);
IF l_msg_count > 1
THEN
l_msg_data :=
l_msg_data
|| ‘,’
|| SUBSTR (l_msg_summary || ‘ ‘ || l_msg_details, 1, 500);
ELSE
l_msg_data := l_msg_summary;
END IF;
l_msg_data := LTRIM (l_msg_data, ‘,’);
p_return_status := ‘E’;
p_message := SUBSTR (l_msg_data, 1, 1000);
RETURN;
END IF;
wsh_picking_batches_pub.release_batch
(p_api_version => 1.0,
p_init_msg_list => l_init_msg_list,
p_commit => fnd_api.g_false,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_batch_id => l_ret_batch_id,
p_batch_name => NULL,
p_log_level => 1,
p_release_mode => ‘ONLINE’,
x_request_id => l_req_id
);
IF (l_return_status <> wsh_util_core.g_ret_sts_success)
THEN
wsh_util_core.get_messages (‘Y’,
l_msg_summary,
l_msg_details,
l_msg_count
);
IF l_msg_count > 1
THEN
l_msg_data :=
l_msg_data
|| ‘,’
|| SUBSTR (l_msg_summary || ‘ ‘ || l_msg_details, 1, 500);
ELSE
l_msg_data := l_msg_summary;
END IF;
l_msg_data := LTRIM (l_msg_data, ‘,’);
p_return_status := ‘E’;
p_message := SUBSTR (l_msg_data, 1, 1000);
RETURN;
END IF;
END LOOP;
END release_batch;
Mustafa Korkmaz
Oldu, 2011 Yılında Ahmet Yesevi Üniversitesi Bilgisayar Mühendisliğinde
Yüksek Lisansını Tamamlandı,2012 Yılında Doğuş Üniversitesinde Bilgisayar
Mühendisliği Doktora Eğitimine Başladı.10 yılı aşkın bir zamandır Oracle
Ürünleri Uygulama Yazılım Uzmanı Olarak profesyonel kariyerine devam
etmektedir. İlgi alanları Middleware, CI/CD,
Oracle Database , PL/SQL , Java , Makine Öğrenmesi ve Veri Madenciliği alanlarındadır.
2 versiyon Oracle Database ' (10g, 11g) inde OCA(Oracle Certificate Associate) ve
PL/SQL Certificated Professional ünvanları bulunmaktadır.
Mail: mustafakorkmz@gmail.com
Latest posts by Mustafa Korkmaz (see all)
- Log4j CVE-2021-45046 Zafiyeti - 16 Aralık 2021
- Materialized View Verisi Purge ya da Delete (atomic_refresh) - 12 Kasım 2021
- HTML Görüntüsü için Unicode Dönüşümü - 27 Temmuz 2020