Saturday, November 21, 2015

API For GRN Inspection

This script will help you to do Inspection of GRN. I have developed it as per my requirement you can do the changes in code as per your requirement.

DECLARE
   CURSOR grn_dt
   IS
      SELECT grn_number, item_code, accept_qty, reject_qty
        FROM xx_grn_detail_tl;   ---- Replace this custom table by your table

   v_header_id       NUMBER;
   v_line_id         NUMBER;
   v_item_id         NUMBER;
   v_p_line_id       NUMBER;
   v_p_header_id     NUMBER;
   v_p_line_loc_id   NUMBER;
   v_to_org_id       NUMBER;
   v_uom             VARCHAR2 (250);
   v_emp_id          NUMBER;
   v_vendor_id       NUMBER;
   v_org_id          NUMBER;
   v_trn_id          NUMBER;
BEGIN
   FOR i IN grn_dt
   LOOP
------ Query to get GRN Header Id and Vendor Id -----------------------
      SELECT shipment_header_id, vendor_id
        INTO v_header_id, v_vendor_id
        FROM rcv_shipment_headers
       WHERE TRIM (receipt_num) = TRIM (i.grn_number);

----------- Query to get GRN Line ID,PO Line ID, PO header Id,PO Line Location Id,Ship to Organization Id,UOM -------------------
      SELECT shipment_line_id, item_id, po_line_id, po_header_id,
             po_line_location_id, to_organization_id, rsl.unit_of_measure,
             employee_id
        INTO v_line_id, v_item_id, v_p_line_id, v_p_header_id,
             v_p_line_loc_id, v_to_org_id, v_uom,
             v_emp_id
        FROM rcv_shipment_lines rsl, mtl_system_items_b msib
       WHERE msib.inventory_item_id = rsl.item_id
         AND TRIM (msib.segment1) = TRIM (i.item_code)
         AND shipment_header_id = v_header_id
         AND msib.organization_id = 88;

--- Query to get Operating Unit ID ----------------
      SELECT org_id
        INTO v_org_id
        FROM po_headers_all
       WHERE po_header_id = v_p_header_id;

----- Query to get Transaction Id ---------------
      SELECT transaction_id
        INTO v_trn_id
        FROM rcv_transactions
       WHERE shipment_line_id = v_line_id AND transaction_type = 'RECEIVE';

-------- If condition to insert Accepted Qty Data into Interface Table -----------------------
      IF i.accept_qty IS NOT NULL
      THEN
         INSERT INTO rcv_transactions_interface
                     (interface_transaction_id,
                      GROUP_ID, last_update_date, last_updated_by,
                      creation_date, created_by, last_update_login,
                      transaction_type, transaction_date,
                      processing_status_code, processing_mode_code,
                      transaction_status_code, quantity, unit_of_measure,
                      item_id, employee_id, shipment_header_id,
                      shipment_line_id, receipt_source_code, vendor_id,
                      source_document_code, to_organization_id,
                      parent_transaction_id, po_header_id, po_line_id,
                      po_line_location_id, inspection_status_code,
                      inspection_quality_code, org_id, validation_flag
                     )
              VALUES (rcv_transactions_interface_s.NEXTVAL,--INTERFACE_TRANSACTION_ID
                      rcv_interface_groups_s.NEXTVAL,               --GROUP_ID
                      SYSDATE,                          --LAST_UPDATE_DATE
                      0,                                     --LAST_UPDATE_BY
                      SYSDATE,                                 --CREATION_DATE
                      0,                                  --CREATED_BY
                      0,                         --LAST_UPDATE_LOGIN
                      'ACCEPT',                             --TRANSACTION_TYPE
                      SYSDATE,                     --TRANSACTION_DATE
                      'PENDING',                      --PROCESSING_STATUS_CODE
                      'BATCH',                --PROCESSING_MODE_CODE
                      'PENDING',                     --TRANSACTION_STATUS_CODE
                      i.accept_qty,                       --QUANTITY
                      v_uom,          --UNIT_OF_MEASURE
                      v_item_id,                                     --ITEM_ID
                      v_emp_id,                        --EMPLOYEE_ID
                      v_header_id,     --SHIPMENT_HEADER_ID
                      v_line_id,                            --SHIPMENT_LINE_ID
                      'VENDOR',                --RECEIPT_SOURCE_CODE
                      v_vendor_id,              --VENDOR_ID
                      'PO',                             --SOURCE_DOCUMENT_CODE
                      v_to_org_id,                   --TO_ORGANIZATION_ID
                      v_trn_id,                        --PARENT_TRANSACTION_ID
                      v_p_header_id,                   --PO_HEADER_ID
                      v_p_line_id,         --PO_LINE_ID
                      v_p_line_loc_id,                   --PO_LINE_LOCATION_ID
                      'ACCEPTED',     --INSPECTION_STATUS_CODE
                      'Excellent',                   --INSPECTION_QUALITY_CODE
                      v_org_id,                           --ORG_ID
                     'Y'               --Validation_flag
                     );
      END IF;

----- If Condition to insert Rejected Qty Data into Interface Table -----------------
      IF i.reject_qty IS NOT NULL
      THEN
         INSERT INTO rcv_transactions_interface
                     (interface_transaction_id,
                      GROUP_ID, last_update_date, last_updated_by,
                      creation_date, created_by, last_update_login,
                      transaction_type, transaction_date,
                      processing_status_code, processing_mode_code,
                      transaction_status_code, quantity, unit_of_measure,
                      item_id, employee_id, shipment_header_id,
                      shipment_line_id, receipt_source_code, vendor_id,
                      source_document_code, to_organization_id,
                      parent_transaction_id, po_header_id, po_line_id,
                      po_line_location_id, inspection_status_code,
                      inspection_quality_code, org_id, validation_flag
                     )
              VALUES (rcv_transactions_interface_s.NEXTVAL, --INTERFACE_TRANSACTION_ID
                      rcv_interface_groups_s.NEXTVAL,               --GROUP_ID
                      SYSDATE,   --LAST_UPDATE_DATE
                      0,    --LAST_UPDATE_BY
                      SYSDATE,                                 --CREATION_DATE
                      0,                                  --CREATED_BY
                      0,                         --LAST_UPDATE_LOGIN
                      'REJECT',                             --TRANSACTION_TYPE
                      SYSDATE,                     --TRANSACTION_DATE
                      'PENDING',                      --PROCESSING_STATUS_CODE
                      'BATCH',                --PROCESSING_MODE_CODE
                      'PENDING',                     --TRANSACTION_STATUS_CODE
                      i.accept_qty,                       --QUANTITY
                      v_uom,          --UNIT_OF_MEASURE
                      v_item_id,                                     --ITEM_ID
                      v_emp_id,                        --EMPLOYEE_ID
                      v_header_id,     --SHIPMENT_HEADER_ID
                      v_line_id,                            --SHIPMENT_LINE_ID
                      'VENDOR',                --RECEIPT_SOURCE_CODE
                      v_vendor_id,              --VENDOR_ID
                      'PO',                             --SOURCE_DOCUMENT_CODE
                      v_to_org_id,                   --TO_ORGANIZATION_ID
                      v_trn_id,                        --PARENT_TRANSACTION_ID
                      v_p_header_id,                   --PO_HEADER_ID
                      v_p_line_id,         --PO_LINE_ID
                      v_p_line_loc_id,                   --PO_LINE_LOCATION_ID
                      'REJECTED',     --INSPECTION_STATUS_CODE
                      'Damaged',                     --INSPECTION_QUALITY_CODE
                      v_org_id,                             --ORG_ID
                      'Y'                 --Validation_flag
                     );
      END IF;


UPDATE xx_grn_detail_tl
   SET flag = 'S'
 WHERE grn_number = i.grn_number AND item_code = i.item_code;

fnd_file.put_line (fnd_file.output,'===========================================================================');
fnd_file.put_line (fnd_file.output,
                            'Inspection done successfully for GRN :-'||' '||i.grn_number||' '||i.item_code
                           );
fnd_file.put_line (fnd_file.output,'===========================================================================');

EXCEPTION
   WHEN OTHERS
   THEN
  
fnd_file.put_line (fnd_file.output,'===========================================================================');
      fnd_file.put_line (fnd_file.output,
                            'Error Occured while processing GRN :-'||' '||i.grn_number||' '||i.item_code
                           );
fnd_file.put_line (fnd_file.output,'===========================================================================');
     
UPDATE xx_grn_detail_tl
   SET flag = 'E'
 WHERE grn_number = i.grn_number AND item_code = i.item_code;

END LOOP;
   COMMIT;
END;

1.First Made the changes in code as per requirement and create procedure. 
2.Execute the code.
3.Run Receiving Transaction Processor in Purchasing

No comments:

Post a Comment

Launch Concurrent Program from Menu

The below detailed steps help you to call concurrent program form Menu. Step 1: Create a Form Function Navigation: Application Develope...