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;
/

No comments:

Post a Comment