Mar
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

Mustafa Korkmaz

Oracle Applications Developer at Partnera
2005 yılında Dokuz Eylül Üniversitesi Endüstri Mühendisliğinden Mezun
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 E-Business Suite Uygulama Yazılımı
üzerinde Teknik Danışman 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
Mustafa Korkmaz


Yorum yapın

*