Friday, January 12, 2018

API Error Handling in Oracle Apps

API Error Handling:
  •   Every API has 3 out parameters as x_return_status, x_msg_count and x_msg_data.
  • Using these 3 parameters, one can use the below code to log or debug errors in APIs.

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;

List of API in Oracle Apps TCA

1. Create a customer account – HZ_CUST_ACCOUNT_V2PUB.CREATE_CUST_ACCOUNT

2. Create a customer account relationship – HZ_CUST_ACCOUNT_V2PUB.CREATE_CUST_ACCT_RELATE

3. Update customer account relationship – HZ_CUST_ACCOUNT_V2PUB.UPDATE_CUST_ACCT_RELATE

4. Update customer account - HZ_CUST_ACCOUNT_V2PUB.UPDATE_CUST_ACCOUNT

5. Create customer profile – HZ_CUSTOMER_PROFILE_V2PUB.CREATE_CUSTOMER_PROFILE

6. Create a customer site – HZ_CUST_ACCOUNT_SITE_V2PUB.CREATE_CUST_ACCT_SITE

7. Create a customer site using – HZ_CUST_ACCOUNT_SITE_V2PUB.CREATE_CUST_SITE_USE

8. Create party site – HZ_PARTY_SITE.V2PUB.CREATE_PARTY_SITE

9. Create party_site_use  - HZ_PARTY_SITE.V2PUB.CREATE_PARTY_SITE_USE

10. Create a person-type party and customer account – HZ_CUST_ACCOUNT_V2PUB.CREATE_CUST_ACCOUNT

11. Create a phone number – HZ_CONTACT_POINT_V2PUB.CREATE_CONTACT_POINT

12. Create customer address – HZ_LOCATION_V2PUB.CREATE_LOCATION

13. Create group – HZ_PARTY_V2PUB.CREATE_GROUP

14. Update a customer profile – HZ_CUSTOMER_PROFILE_V2PUB.UPDATE_CUSTOMER_PROFILE

15. Update customer address – HZ_LOCATION_V2PUB.UPDATE_LOCATION

16. Create an organization-type party and customer account - HZ_CUST_ACCOUNT_V2PUB.CREATE_CUST_ACCOUNT

 17. Create person  - HZ_PARTY_V2PUB.CREATE_PERSON

 18. Create organization – HZ_PARTY_V2PUB.CREATE_ORGANIZATION


Thursday, January 11, 2018

Create Person API in Oracle Apps

DECLARE
   p_person_rec               hz_party_v2pub.person_rec_type;
   x_cust_account_id      NUMBER;
   x_account_number    VARCHAR2 (2000);
   x_party_id                  NUMBER;
   x_party_number         VARCHAR2 (2000);
   x_profile_id                NUMBER;
   x_return_status           VARCHAR2 (2000);
   x_msg_count                NUMBER;
   x_msg_data                  VARCHAR2 (2000);
   l_msg_index_out          NUMBER;
   l_error_message          VARCHAR2 (100);
BEGIN
    p_person_rec.person_first_name :='&person_first_name';
    p_person_rec.person_last_name :='&person_last_name';
    p_person_rec.created_by_module :='TCA_V2_API';
    hz_party_v2pub.create_person( p_init_msg_list => 'T',
                                  p_person_rec    => p_person_rec,
                                  x_party_id => x_party_id,     
                                  x_party_number => x_party_number,
                                  x_profile_id => x_profile_id,   
                                  x_return_status => x_return_status, 
                                  x_msg_count  => x_msg_count,   
                                  x_msg_data => x_msg_data);
  IF x_return_status = fnd_api.g_ret_sts_success THEN
     dbms_output.put_line('output information');
     dbms_output.put_line('x_party_id:' || x_party_id);
     dbms_output.put_line('x_party_number:' || x_party_number);
     dbms_output.put_line('x_profile_id:' || x_profile_id);
   
      IF x_msg_count > 0
      THEN
         FOR i IN 1 .. x_msg_count
         LOOP
            apps.fnd_msg_pub.get (p_msg_index          => i,
                                  p_encoded            => fnd_api.g_false,
                                  p_data               => x_msg_data,
                                  p_msg_index_out      => l_msg_index_out
                                 );
         END LOOP;

         IF l_error_message IS NULL
         THEN
            l_error_message := SUBSTR (x_msg_data, 1, 250);
         ELSE
            l_error_message :=
                       l_error_message || ' /' || SUBSTR (x_msg_data, 1, 250);
         END IF;

         DBMS_OUTPUT.put_line ('*****************************************');
         DBMS_OUTPUT.put_line ('API Error: ' || l_error_message);
         DBMS_OUTPUT.put_line ('*****************************************');
      END IF;
   END IF;
END;      

Create Customer Account Site API in Oracle Apps

DECLARE
   p_cust_acct_site_rec          hz_cust_account_site_v2pub.cust_acct_site_rec_type;
   p_cust_account_rec       hz_cust_account_v2pub.cust_account_rec_type;
   x_return_status        VARCHAR2 (2000);
   x_msg_count            NUMBER;
   x_msg_data             VARCHAR2 (2000);
   x_party_site_id        number;
   x_cust_acct_site_id     number;
   x_account_number         VARCHAR2 (100);
   l_msg_index_out          NUMBER;
   l_error_message          VARCHAR2 (100);
BEGIN
   p_cust_acct_site_rec.cust_account_id :='&cust_account_id';
   p_cust_acct_site_rec.created_by_module :='TCA_V2_API';
   hz_cust_account_site_v2pub.create_cust_acct_site( p_init_msg_list => 'T',
                                  p_cust_acct_site_rec   => p_cust_acct_site_rec,
                                  x_cust_acct_site_id => x_cust_acct_site_id,           
                                  x_return_status => x_return_status, 
                                  x_msg_count  => x_msg_count,   
                                  x_msg_data => x_msg_data);
  IF x_return_status = fnd_api.g_ret_sts_success THEN
     dbms_output.put_line('output information');
     dbms_output.put_line('x_cust_acct_site_id:' || x_cust_acct_site_id);
     DBMS_OUTPUT.put_line ('x_account_number:' || x_account_number);
     DBMS_OUTPUT.put_line ('x_party_site_id:' || x_party_site_id);
   
      IF x_msg_count > 0
      THEN
         FOR i IN 1 .. x_msg_count
         LOOP
            apps.fnd_msg_pub.get (p_msg_index          => i,
                                  p_encoded            => fnd_api.g_false,
                                  p_data               => x_msg_data,
                                  p_msg_index_out      => l_msg_index_out
                                 );
         END LOOP;

         IF l_error_message IS NULL
         THEN
            l_error_message := SUBSTR (x_msg_data, 1, 250);
         ELSE
            l_error_message :=
                       l_error_message || ' /' || SUBSTR (x_msg_data, 1, 250);
         END IF;

         DBMS_OUTPUT.put_line ('*****************************************');
         DBMS_OUTPUT.put_line ('API Error: ' || l_error_message);
         DBMS_OUTPUT.put_line ('*****************************************');
      END IF;
   END IF;
END;      

Create Contact Point API in Oracle Apps

DECLARE
       p_contact_point_rec hz_contact_point_v2pub.contact_point_rec_type;
       p_email_rec   hz_contact_point_v2pub.email_rec_type;
       p_phone_rec   hz_contact_point_v2pub.phone_rec_type;
       p_edi_rec    hz_contact_point_v2pub.edi_rec_type;
       p_telex_rec hz_contact_point_v2pub.telex_rec_type;
       p_web_rec hz_contact_point_v2pub.web_rec_type;
       x_return_status        varchar2(200);
       x_msg_count            number;
       x_msg_data             varchar2(200);
       x_contact_point_id     number;
       l_msg_index_out        number;
       l_error_message           varchar2(100);
       x_owner_table_name     varchar2(50);
       x_email_address           varchar2(200);
       x_phone_area_code       varchar2(20);
       x_phone_number          varchar2(50);
       x_phone_line_type       varchar2(50);
       p_init_msg_list            varchar2(30);
BEGIN
     p_contact_point_rec.contact_point_type:='&contact_point_type';
     p_contact_point_rec.owner_table_id :='&owner_table_id';
     p_contact_point_rec.created_by_module :='TCA_V2_API';
   
     hz_contact_point_v2pub.create_contact_point(p_init_msg_list=> 'T',
                                                 p_contact_point_rec => p_contact_point_rec,
                                                 p_email_rec  => p_email_rec ,
                                                 p_phone_rec => p_phone_rec,
                                                 p_edi_rec => p_edi_rec,
                                                 p_telex_rec => p_telex_rec,
                                                 p_web_rec => p_web_rec,
                                                 x_return_status  => x_return_status ,
                                                 x_msg_count  => x_msg_count ,
                                                 x_msg_data => x_msg_data,
                                                 x_contact_point_id => x_contact_point_id);
     IF x_return_status = fnd_api.g_ret_sts_success THEN
       dbms_output.put_line('output information');
       dbms_output.put_line('x_contact_point_id:' ||  x_contact_point_id);
       dbms_output.put_line ('x_owner_table_name:' || x_owner_table_name);
       dbms_output.put_line  ('x_email_address:' || x_email_address);                                   
       dbms_output.put_line ('x_phone_area_code:' || x_phone_area_code);
       dbms_output.put_line ('x_phone_number:' || x_phone_number);
       dbms_output.put_line ('x_phone_line_type:' || x_phone_line_type);
     IF x_msg_count > 0
      THEN
         FOR i IN 1 .. x_msg_count
         LOOP
            apps.fnd_msg_pub.get (p_msg_index          => i,
                                  p_encoded            => fnd_api.g_false,
                                  p_data               => x_msg_data,
                                  p_msg_index_out      => l_msg_index_out
                                 );
         END LOOP;

         IF l_error_message IS NULL
         THEN
            l_error_message := SUBSTR (x_msg_data, 1, 250);
         ELSE
            l_error_message :=
                       l_error_message || ' /' || SUBSTR (x_msg_data, 1, 250);
         END IF;

         DBMS_OUTPUT.put_line ('*****************************************');
         DBMS_OUTPUT.put_line ('API Error: ' || l_error_message);
         DBMS_OUTPUT.put_line ('*****************************************');
      END IF;
   END IF;
END;
💬