18
2016
Teslim Alma İşlemi Yapılmış RMA satırının AWAITING_RETURN statüsünde Kalması
Merhaba,
Bu yazımda teslim alma işlemi gerçekleşmiş (rcv_transactions) ancak sipariş satır iş akışı statüsünün AWAITING_RETURN olarak kalmaya devam etmesi probleminin çözümüne ilişkin datafix scriptini paylaşacağım.
Sipariş satırı AWAITING_RETURN statüsünde iken teslim alma işlemine gelir. Teslim alması tamamlanan RMA (Return Material Authorization) satırı işakışı adımı olarak faturalandırılır ve statüsü INVOICED haline gelir. Faturalanan satırın son statüsü CLOSED dur.
Ancak versiyondan kaynaklanan bug nedeniyle teslim alma işlemi gerçekleşen bazı RMA sipariş satırlarının statüsü AWAITING_RETURN olarak kalmaya devam eder. Teslim alması tamamlandığı halde teslim alma alacaklar ekranına satır geldiği için teslim alma işlemine devam edilip çoklamasına sebeb olabilir. Ayrıca fatura aşamasına geçmediği için malzeme stoklara dönse bile memo credit faturası oluşmadığı için iade ödemesi de yapılmayacaktır. Bu hatanın düzeltilmesi ve satırın CLOSED statüsüne gelebilmesi için aşağıdaki datafix kullanılır.
Bug Number : 2065364,2062444
DECLARE l_line_id NUMBER; l_ordered_qty NUMBER; CURSOR line_info IS SELECT line_id, ordered_quantity FROM oe_order_lines_all ool WHERE ool.line_id = l_line_id AND ool.flow_status_code = 'AWAITING_RETURN' AND NVL (ool.shipped_quantity, 0) = 0 AND EXISTS ( SELECT 'x' FROM mtl_material_transactions mmt ,rcv_transactions rcv WHERE mmt.trx_source_line_id = ool.line_id AND mmt.transaction_type_id = 15 AND rcv.oe_order_line_id = ool.line_id AND mmt.rcv_transaction_id = rcv.transaction_id) FOR UPDATE NOWAIT; x_user_id NUMBER; x_org_id NUMBER; x_resp_id NUMBER; x_appl_id NUMBER; x_return_status VARCHAR2 (10); x_msg_count NUMBER; x_msg_data VARCHAR2 (2000); TYPE number_tbl IS TABLE OF NUMBER; l_num number_tbl := number_tbl (); BEGIN l_num := number_tbl (56588925 ,56803990 ,56634433 ,55866645 ,54607012 ,56750271 ,56080727 ,56071594 ,53991849 ,54102972 ); FOR i IN 1 .. l_num.COUNT LOOP l_line_id := l_num (i); DBMS_OUTPUT.put_line ('line_id : ' || l_line_id); IF NVL (l_line_id, 0) > 0 THEN OPEN line_info; FETCH line_info INTO l_line_id, l_ordered_qty; IF line_info%notfound THEN CLOSE line_info; DBMS_OUTPUT.put_line ( 'Error: Invalid Line Id, Re-enter.' || CHR (10) ); -- return; GOTO loop_sonu; END IF; CLOSE line_info; -- else -- return; -- goto loop_sonu; END IF; rcv_oe_rma_receipts_sv.rma_get_org_info (x_user_id ,x_org_id ,x_resp_id ,x_appl_id ,l_line_id ); fnd_global.apps_initialize (x_user_id, x_resp_id, x_appl_id); UPDATE oe_order_lines SET fulfilled_quantity = NULL ,last_updated_by = -2054224 ,last_update_date = SYSDATE WHERE line_id = l_line_id; BEGIN oe_rma_receiving.push_receiving_info (l_line_id ,l_ordered_qty ,'NO PARENT' ,'RECEIVE' ,'N' ,x_return_status ,x_msg_count ,x_msg_data ); IF x_return_status = 'S' THEN oe_rma_receiving.push_receiving_info (l_line_id ,l_ordered_qty ,'RECEIVE' ,'DELIVER' ,'N' ,x_return_status ,x_msg_count ,x_msg_data ); END IF; oe_debug_pub.add ('no. of OE messages :' || x_msg_count, 1); DBMS_OUTPUT.put_line ('no. of OE messages :' || x_msg_count); FOR k IN 1 .. x_msg_count LOOP x_msg_data := oe_msg_pub.get (p_msg_index => k ,p_encoded => 'F'); oe_debug_pub.add (SUBSTR (x_msg_data, 1, 255)); oe_debug_pub.add (SUBSTR (x_msg_data, 255, LENGTH (x_msg_data))); DBMS_OUTPUT.put_line ('Error msg: ' || SUBSTR (x_msg_data, 1, 200) ); END LOOP; fnd_msg_pub.count_and_get (p_encoded => 'F' ,p_count => x_msg_count ,p_data => x_msg_data ); oe_debug_pub.add ('no. of FND messages :' || x_msg_count, 1); DBMS_OUTPUT.put_line ('no. of FND messages :' || x_msg_count); FOR k IN 1 .. x_msg_count LOOP x_msg_data := fnd_msg_pub.get (p_msg_index => k ,p_encoded => 'F'); DBMS_OUTPUT.put_line ('Error msg: ' || SUBSTR (x_msg_data, 1, 200) ); oe_debug_pub.add (SUBSTR (x_msg_data, 1, 255)); END LOOP; IF x_return_status <> 'S' THEN oe_debug_pub.add ('Error occurred, rolling back changes.', 1); DBMS_OUTPUT.put_line ('Error occurred, please fix the errors and retry.'); ROLLBACK; ELSE COMMIT; END IF; END; DBMS_OUTPUT.put_line ( 'For details, see OM Debug File: ' || oe_debug_pub.g_dir || '/' || oe_debug_pub.g_file ); <<loop_sonu>> NULL; END LOOP; END; |
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