Showing posts with label FPO(Firm Planned Orders) Cancellation API. Show all posts
Showing posts with label FPO(Firm Planned Orders) Cancellation API. Show all posts

Friday, 27 January 2012

FPO(Firm Planned Orders) Cancellation API

Specification


CREATE OR REPLACE PACKAGE APPS.XXXXX_GME_BATCH_CANCEL_PKG IS

PROCEDURE batch_cancel (errbuf out varchar2,retcode out varchar2, p_plant_Code VARCHAR2, p_batch_no VARCHAR2);

END XXXXX_GME_BATCH_CANCEL_PKG;
/

----Body


CREATE OR REPLACE PACKAGE BODY APPS.XXXXXX_GME_BATCH_CANCEL_PKG AS

PROCEDURE batch_cancel (errbuf out varchar2,retcode out varchar2, p_plant_Code VARCHAR2, p_batch_no VARCHAR2)
IS
      p_api_version              NUMBER := gme_api_pub.api_version;
      p_validation_level         NUMBER := gme_api_pub.max_errors;
      p_init_msg_list            BOOLEAN := FALSE ;
      p_commit                   BOOLEAN := FALSE ;
      x_return_status            VARCHAR2 (1);
      x_msg_count                NUMBER;
      x_msg_list                 VARCHAR2 (2000);
      x_msg_data                 VARCHAR2 (2000);
      x_msg_index                NUMBER;
      p_batch_header             gme_batch_header%ROWTYPE;
      x_batch_header             gme_batch_header%ROWTYPE;
      ln_user_id                 NUMBER;
      ln_org_id                  NUMBER;
      ln_resp_id                 NUMBER;
      ln_resp_app_id             NUMBER;
     
      CURSOR lcur_can_batch (p_plant_code VARCHAR2, p_batch_no VARCHAR2) IS
     
        SELECT batch_id, plant_code, batch_no, batch_type
        FROM gme_batch_header
        WHERE batch_type = 10
        AND plant_code = nvl(p_plant_code,plant_code)
        AND batch_no = nvl(p_batch_no,batch_no)
        AND batch_status = 1;    
       
 BEGIN

      --- Initialization values
      ln_user_id        := APPS.FND_PROFILE.VALUE('USER_ID');
      ln_resp_id        := APPS.FND_PROFILE.VALUE('RESP_ID');
      ln_resp_app_id    := APPS.FND_PROFILE.VALUE('RESP_APPL_ID');
      ln_org_id         := APPS.FND_PROFILE.VALUE('ORG_ID');
     
       BEGIN
       FND_client_info.set_org_context(ln_org_id);
       END;
     
       BEGIN
       FND_GLOBAL.apps_initialize(ln_user_id,ln_resp_id,ln_resp_app_id);
       END;
   
   FOR i IN lcur_can_batch (p_plant_code,p_batch_no) LOOP
   EXIT WHEN lcur_can_batch%NOTFOUND;
     
    --- passing batch values for cancellation
     
    p_batch_header.batch_id   := i.batch_id;
    p_batch_header.plant_code := i.plant_code;
    p_batch_header.batch_no   := i.batch_no;
    p_batch_header.batch_type := i.batch_type;
   
           gme_api_main.cancel_batch (
               p_api_version          => p_api_version,
               p_validation_level     => p_validation_level,
               p_init_msg_list        => p_init_msg_list,
               p_commit               => p_commit ,
               x_message_count        => x_msg_count,
               x_message_list         => x_msg_list,
               x_return_status        => x_return_status,
               p_batch_header         => p_batch_header,
               x_batch_header         => x_batch_header
               );
     
   
   IF x_return_status <> 'S' THEN
         gme_api_grp.count_and_get(
                p_encoded    => 'F',
                x_data       => x_msg_data,
                x_count         => x_msg_index);
              FND_FILE.PUT_LINE (FND_FILE.LOG, 'Plant Code = ' ||i.plant_code||' '||' Batch No = '||i.batch_no||' '||'has been Errored');
   ELSE
              FND_FILE.PUT_LINE (FND_FILE.LOG, 'Plant Code = ' ||i.plant_code||' '||' Batch No = '||i.batch_no||' '||'has been cancelled');
   END IF;
 
   END LOOP;
   COMMIT;
 END;
           
END XXXXXX_GME_BATCH_CANCEL_PKG;
/