Tuesday, 16 April 2013

How to Handle API Errors?



Every API has 3 out parameters as x_return_status, x_msg_count and x_msg_data. 

Using these 3 parameters, one can use below code to log or debug error in API's i.e 

declare
--variables declaration if u have
begin
--here we write any api to run any procedure
under that below need to add,by adding below,we can identify the issue

dbms_output.put_line (SubStr('x_return_status = '||x_return_status, 1, 255));
dbms_output.put_line ('x_msg_count = '||TO_CHAR(x_msg_count));
dbms_output.put_line (SubStr('x_msg_data = '||x_msg_data, 1, 255));
IF x_msg_count >1 THEN
FOR I IN 1..x_msg_count
LOOP
dbms_output.put_line(I ||'.'|| SubStr(FND_MSG_PUB.Get(p_encoded =>FND_API.G_FALSE ), 1, 255));
END LOOP;
END IF;
END;


SAMPLE SCRIPT TO RUN API:

DECLARE
x_msg_count  VARCHAR2(1000);
x_msg_data VARCHAR2(1000);
x_return_status VARCHAR2(1000);
BEGIN
 po_asl_ths.insert_row
                  (x_row_id                           => l_row_id,
                   x_asl_id                           => l_asl_id,
                   x_item_id                          => REC_po_asl_valid.inventory_item_id,
                   x_vendor_id                        => REC_po_asl_valid.vendor_id,
                   x_vendor_site_id                   => REC_po_asl_valid.vendor_site_id,
                   x_vendor_business_type             => REC_po_asl_valid.vendor_business_type,
                   x_asl_status_id                    => 1,
                   x_created_by                       => l_user_id,

                  );

dbms_output.put_line (SubStr('x_return_status = '||x_return_status, 1, 255));
dbms_output.put_line ('x_msg_count = '||TO_CHAR(x_msg_count));
dbms_output.put_line (SubStr('x_msg_data = '||x_msg_data, 1, 255));
IF x_msg_count >1 THEN
FOR I IN 1..x_msg_count
LOOP
dbms_output.put_line(I ||'.'|| SubStr(FND_MSG_PUB.Get(p_encoded =>FND_API.G_FALSE ), 1, 255));
END LOOP;
END IF;
END;

No comments:

Post a Comment