AP Invoice cancelled not completed

posted on 07 Nov 2016 17:57 by lookpranoi in Oracle

 

ในบางครั้งการ Cancelled AP Invoice  ทำแล้วไม่สมบูรณ์ อย่างเช่น  ยังสามารถคีย์ข้อมูลหรือแก้ไขได้ใน Distribution,  รายการ Accounting ไม่เกิด เป็นต้น




ให้ทำการ Examine เพื่อดูค่า INVOICE_ID และใช้ Script ดังนี้ เพื่ออัพเดทข้อมูล

copy ข้อมูล invoice ที่จะแก้ไปเก็บไว้ใน table ใหม่ก่อน

create table AP_INVOICES_XCX as
select * from AP_INVOICES_ALL
where invoice_id = :p_invoice_id
and org_id = :p_org_id;

ตรวจสอบข้อมูลเพื่อให้แน่ใจก่อนว่าได้ copy ไปแล้วจริง

select * from AP_INVOICES_XCX


อัพเดทข้อมูลใน table ตามนี้

update AP_INVOICES_ALL
set CANCELLED_DATE='',
cancelled_by='',
cancelled_amount='',
temp_cancelled_amount=''
where invoice_id = :p_invoice_id
and org_id = :p_org_id;

อย่าลืม COMMIT  แล้วลองกลับไปหน้า App  เพื่อทำการ Cancel Invoice และ Create Accounting อีกครั้ง   หากไม่มีปัญหาจะสามารถ Cancel ได้


ปล. แนะนำให้ทำในตัว Test Instance ก่อน หรือหากทำใน Production ก็ควรจะทำตาม step มีการ copy ข้อมูลเดิมเก็บไว้ก่อน  เผื่อไม่สำเร็จจะได้คืนค่ากลับไปเป็นค่าเดิมได้ ครับ




APP-SQLAP-10771: Could not reserve record

posted on 29 Dec 2015 08:01 by lookpranoi in Oracle


Solution การแก้ปัญหา APP-SQLAP-10771 : Could not reserve record. อ่านจาก message เข้าใจว่าเกิด session lock  แต่พอเข้าไป monitor session กลับไม่เจอ  ใช้ solution นี้หากพอจะรู้ว่า table ที่มันน่าจะโดน lock ไว้เพือ่หา SID ตัวที่มีปัญหา แล้ว kill session ทิ้งซะ

Credit http://oracler12applicationfunctional.blogspot.com/2015/02/app-sqlap-10771-could-not-reserve-record.html

 

APP-SQLAP-10771: Could not reserve record.

Error:

APP-SQLAP-10771: Could not reserve record.

Unable to pay the AP invoice in full, Got above error while performing the action –> pay in full

Solution:

Database lock from another session is present on the table AP_INVOICES_ALL, AP_INVOICE_LINES_ALL, AP_INVOICE_DISTRIBUTIONS_ALL for the same record that user was trying to modify from application.

1) To determine what session has a lock on this record, please execute the following steps:
         a) Run the following to determine what tables are locked:
                --- --- ---
                SELECT a.object_id, a.session_id, substr(b.object_name, 1, 40)
                FROM v$locked_object a, dba_objects b
                WHERE a.object_id = b.object_id
                AND b.object_name like 'AP_%'
                ORDER BY b.object_name;
                --- --- ---
         b) Look at the results and insert whatever AP_% tables are returned from a) into the script below:
                --- --- ---
                SELECT l.*, o.owner object_owner, o.object_name
                FROM SYS.all_objects o, v$lock l
                WHERE l.TYPE = 'TM'
                AND o.object_id = l.id1
                AND o.object_name in ('AP_INVOICES_ALL', 'AP_INVOICE_LINES_ALL', 'AP_INVOICE_DISTRIBUTIONS_ALL');
                --- ---
                SELECT SID, SERIAL#
                FROM v$session
                WHERE SID = <SID from b)>;
                --- --- ---
  2) Once the locking sessions have been identified, please use the below command to kill such sessions.
            --- --- ---
            ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
            ---
            Note: SID and serial# to be taken from the output from 1c).
            --- --- ---


Alternative Solution
==============

If there are many items locked you may find it easier to follow this alternative solution:
   a) Ensure no-one is working and no processes are running in the system.
   b) Bounce the database.
   c) Retest the issue.

เทคนิคการ custom folder บน Oracle EBS

posted on 29 Oct 2015 10:41 by lookpranoi in Oracle

ว่าด้วยเรื่องการ custom Folder ในหน้า Form ของ Oracle EBS  นั้นสามารถทำได้ดังนี้

เปิดหน้า Form ที่ต้องการขึ้น ไปที่เมนู Folder -> Folder Tool


 

หน้าตาของ Folder Tool ดังรูป

เม้าส์คลิกใน field ที่ต้องการทำรายการ  ลองกดลูกศรเลื่อนซ้าย เพื่อขยับ Field ใน Form ไปยังตำแหน่งที่ต้องการ  ใช้สำหรับในการจัดตำแหน่งของข้อมูลตามความต้องการของผู้ใช้งาน

 

เมนูการเลือก Show Field และ Hide Field  เพื่อแสดงหรือซ่อน ข้อมูลเพิ่มเติม

 


ตัวอย่าง เทคนิค Custom Folder 
จากในรูป Show Field ที่ชื่อว่า Approval Status เพิ่มเข้ามาใน Form

 

หลังจากนั้นเข้าสู่โหมด enter query เพื่อต้องการ filter ข้อมูลที่ต้องการ  และทำการ Ctrl + F11 เพื่อ Query ข้อมูล

 

สังเกตว่าเมื่อได้ข้อมูลที่ต้องการแล้ว  ให้เข้าไป Folder -> View Query จะปรากฎเงื่อนไขของ Query ที่ได้มาของข้อมูลบนหน้าจอ

 

เลือกเมนู Folder -> Save As เพื่อบันทึก Folder นี้ โดยจะมี option ต่างๆ ดังนี้

Folder : กำหนดชื่อ Folder   จากในตัวอย่างต้องการแสดงข้อมูล JV ที่สถานะอนุมัติแล้ว และเป็นของปี 2015 เดือน 3  โดยตั้งชื่อ JV_ApproveMAR2015 เพื่อให้สื่อ เป็นต้น

Autoquery : Always เรียกข้อมูลอัติโนมัติที่เปิด Form , Never ไม่ทำการเรียกข้อมูล , Asl each time ถามก่อนทุกครั้งที่จะเรียกข้อมูล

Open as default : หากเลือกจะเป็นการกำหนด folder นี้เป็น default ทุกครั้งที่เปิด form

Public : หากเลือก Folder นี้ user อื่นๆ จะสามารถเห็นและใช้งานได้

Include Query : ให้เลือกด้วยหากต้องการให้ folder นี้แสดงข้อมูลแบบมีเงื่อนไข

 

 

 

เมื่อเปิด Form จะเป็นไปตามเงื่อนไขที่กำหนด คือ default folder ไปที่ JV_ApproveMAR2015 พร้อมทั้งแสดงข้อมูลให้โดยอัติโนมัติ

 

 

การแก้ไข Folder สามารถทำได้โดยการไปที่เมนู Folder -> Save As  ในรูปลองเอา Open As Default ออกและ Save

 

เมื่อเข้ามาใน Form อีกครั้งจะพบว่า Folder ดังกล่าวไม่ได้ถูกโหลดขึ้นมา  โดยหากต้องการใช้ต้องเลือกจากเมนู Folder ดังในรูป


จากตัวอย่าง เป็นการประยุกต์ใช้งาน Folder เพื่อรองรับการแสดงผลที่หลากหลายขึ้นตามกลุ่มผู้ใช้ เช่น สำหรับกลุ่มผู้ใช้นี้ต้องการให้เห็นข้อมูลบางประเภท , กลุ่มผู้ใช้นี้เห็นข้อมูลบาง Field หรือเห็นเท่าที่ใช้  ลองนำไปประยุกต์ใช้ดู นะครับ

 

 

edit @ 29 Oct 2015 10:47:24 by Lookpranoi

begin
      dbms_application_info.set_client_info(org_id);
end;
 
หรือ
 
begin
      fnd_global.apps_initialize ( user_id      => i_user_id,                                   
                                               resp_id      => g_respon_id,
                                               resp_appl_id => g_appl_id);
end;
 
 

Building an Oracle Report with a Barcode

posted on 19 Nov 2014 08:56 by lookpranoi in Oracle
Before building a report which contains barcode, follow all the required setup steps. These are detailed in the post: 
 
 

ปกติ code_combination_id จะถูกฝังไว้ในแต่ละ transaction อยู่แล้วเมื่อเกิดการเดินรายการทางบัญชี
หากจะดูในรายงานก็ต้องหาให้ได้ว่า code เหล่านั้น ตรงกับชื่อบัญชีอะไร

CODE_COMBINATION_ID |  ACCOUNT NAME   | ACCOUNT DESC
                             1001 | 01.10.1234.000.00 | บริษัทA.แผนกไอที.โบนัสพนง.NA.NA


ใช้ script ดังนี้ในการหา หรือทำเป็น view ไว้เลย เพื่อความสะดวกในการใช้งาน

* ส่วนของ segment เพิ่มเติมเข้าไป เช่น ในระบบใช้ตั้งแต่ segment1 ถึง segment5 ให้เพิ่มเข้าไปใน script 
Credit by http://jayantaapps.blogspot.com/2013/06/gl-code-combination-id-description.html


GL Code Combination Id & Description
 
1) 
select
gcc.segment1||'.'||gcc.segment2||'.'||gcc.segment3
 ACCOUNT,
A1.DESCRIPTION||'-'||A2.DESCRIPTION ||'-'|| A3.DESCRIPTION  DECS
from