Goods movement with serial numbers

Hi,
1. Is there any report or table where I can see goods movement of material with their serial numbers?
2. Also in MMBE i can see 'On order stock'. I know this is PO open PO quantity.
Now this open PO qty will not be there against any storage location. I got some stock on this status in some storage location.
How I can move to 'unrestricted stock' status?
Please advice.

Hi
Check these tables,
SER00 General Header Table for Serial Number Management
SER01 Document Header for Serial Numbers for Delivery
SER02 Document Header for Serial Nos for Maint.Contract (SD Order)
SER03 Document Header for Serial Numbers for Goods Movements
SER04 Document Header for Serial Numbers for Inspection Lot
SER05 Document Header for Serial Numbers for PP Order
SER06 Document Header for Serial Numbers for Handling Unit-Content
SER07 Document Header for Serial Numbers in Physical Inventory
And in order to move On Order stock to Unrestricted you need to close those POs by doing GR.
Hope it helps
Rgds
ramesh

Similar Messages

  • Goods Receipt with serial numbers

    Hello everyone
    I'm having problems when i try to add a goods receipt with serial numbers
    Code:
            OReceipt = oCompany.GetBusinessObject(BoObjectTypes.oInventoryGenEntry)
            OReceipt.Series = 18
            OReceipt.DocDate = Date.Now
            OReceipt.TaxDate = Date.Now
            OReceipt.Lines.ItemCode = "MP.PP.241"
            OReceipt.Lines.Quantity = 1
            OReceipt.Lines.SerialNumbers.InternalSerialNumber = "SN-01"
            OReceipt.Lines.SerialNumbers.ManufacturerSerialNumber = "SN-01"
            OReceipt.Lines.AccountCode = "_SYS00000000109"
            OReceipt.Lines.WarehouseCode = "MPfabrik"
            OReceipt.Comments = ".NET"
            res = OReceipt.Add()
    Any help will be greatly appreciated!

    Hi Nestor
    All forums on SCN contain a description of what the forums is for. This forum's  Overview page:
    Looking at the overview, I suspect you want to post your query elsewhere? Perhaps one of  Microsoft's forums?
    - Ludek
    Senior Support Engineer AGS Product Support, Global Support Center Canada
    Follow us on Twitter

  • DTW General Entry (Goods Receipt) with Serial numbers

    Hi all,
    I want to import 540 items with serial numbers using the General Entry templates. Some items have as many as 200 serial numbers. Total number of serial numbers for 540 items are about 24,000.
    In the Serial Numbers template, will I have to cover 24,000 rows? Is it possible to auto-create the serial numbers with DTW?
    In which field should I put the serial numbers - Internal or System?
    Thanks,
    Ajay Audich

    Hi Ajay Audich,
    You may check this thread first:
    Re: Upload inventory transfer trnsaction with DTW
    Thanks,
    Gordon

  • Material movements with serial no.- Report

    Experts,
    Is there a standard SAP report that lists all movements with serial numbers associated with the movements? Similar to MB51 but with serial no.
    I understand an ABAP report could be written but would like to avoid it. Any help will be rewarded with points.
    Thanks
    UV

    Go to SA38 and Execute Program "RIOBJK00"
    Also you can write an ABAP Query using Table SER03 and MSEG instead of going for ABAP Report.

  • Handling unit with serial numbers in return delivery

    There is a handling unit (HU),whose system status is PSTD(goods issue posted). The delivery is posted. The billing document are issued. Handling unit was packed with materials with equipments and serial numbers.
    Now I am creating another sales document(I want to return the good) and return delivery. No handling unit is attached to return delivery.  (Why not?  Returning original sales document is created with reference to original sales document)
    Now I attach the serial numbers to the return delivery. (the same serial numbers which are included(packed) in the above mentioned HU).  The return delivery is successfully posted. The status of equipment/serial numbers is on stock.
    The problem is that this serial number with equipment is still packed in the original HU.
    How can unpack the equipment from HU?   I think the problem is the status of HU which is PSTD(goods issue posted).
    Or alternative: can I move the HU unit from original delivery and attach it to return delivery?
    The changing of the status of HU is not posssible because the original delivery is posted and I do not want to change this original documents anymore too.

    I am afraid you are right
    - The return delivery was created without HU. ( i mean HU which was originally sold in original delivery. )
    Do you think I should create HU for return delivery with the same/different ID?  How can I transfer equipment from original delivery HU to return delivery and HU ?
    The problem seem to be that the original delivery and HU is locked (sytem status= posted )after posting.  If I cancel posting of return delivery then I can attach a new HU. But the equipment is still part of the original HU.
    Can I move equipment/serial numbers from original to returned HU? Is that possible at all?
    I am talking about phisical  same HU, so I guess there should be not 2 different HUs in the SAP system created.
    I am looking for the scenario to sell equipment in one HU and return it in the same HU with return delivery.
    thank you for your effort and responses

  • PO Goods Receipt with Serial / Batch number with DI API

    I am creating PO Goods Receipt with DI API. This works fine. But when i have items with serial numbers and batch numbers in the same PO, then i am getting either of the following errors:
    1. [OITM]Item has no serial number management
    2. [OIBT] Invalid Item Code.
    I debugged the code and the values i set seems to be correct. I am using VB.Net and SAP 2004 with Patch 23.
    Thanks
    Anand

    Anand,
    When you are working with a Serialized item in the first scenario, have you tested working with the item in the Business One application itself?  Have you tried to have the system assign a serial number for the item when issuing a Goods Receipt?  Do you get the same issue through the Business One interface.  With respect to working with Batches, have you setup the Batches for inventory items through the Business One interface yet?  If you have not setup Batches, this would be why you would not have any data in the OIBT table.
    HTH,
    Eddy

  • Physical Inventory with serial numbers

    Hi friends,
    we are trying to post physical inventory with materials having serial numbers.
    However during post the system gives 2 errors.
    1)
    Stock data of serial number 2 not suitable for movement
    Message no. IO231
    "The current stock information for the serial number 2 contradicts the stock information of the movement to be posted... "
    2)
    Serial number 2 cannot be used here
    Message no. IO201
    "You have entered a serial number already present in the system..."
    Let me try to explain the situation.
    For example we have two storage locations.
    A material, say SERIAL, have some stocks in one storage location, say 0001, with serial numbers.
    Assume that in the system serial number 2 of the material SERIAL is in the storage location 0001.
    However, when physically counted, this serial number 2 shows up in the storage location 0002.
    Therefore we would like to enter count for the storage location 0002 to post the serial number 2.
    Doing so, we get the errors above.
    Is there any solution to that problem? Thanks in advance.
    Best regards,
    Yusuf

    Thank you Lakshman,
    yes the stock transfer between storage locations or removal first from storage location 0001 with pyhsical inverntory can be done in the system. However I wonder is there any better way to do this, without making any abap development.
    I would like to make a count for the storage location 0002 as in our case (or this can be a customer consigment either in another case). Here I expect the serial number 2 will be removed from storage location 0001 and will be placed in sorage location 0002 at the same time. Do you know any way of doing this?
    Best regards,
    Yusuf

  • Creation of sub item with serial numbers in outbound delivery

    Hi All,
    We need to create a sub item for an Outbound Delivery main item in change mode with serial numbers for sub item.
    Process flow:
    1. Sales order item created with main item
    2. Outbound Delivery created with main item
    3. Outbound Delivery interfaced to external logistics sytem
    4. External logistics system pick the main item and a sub item (packaging) from warehosue and ship to customer
    5. External logistics sytems send delivery pick confirmation interface with main item details and serial numbers for sub item
    Now we have to create a sub item with serial numbers in the delivery referencing the same main item.
    NB: Delivey can have multiple similar main items but there is only material number in SAP for sub item. Hence the requirement to identify relevant sub item serial numbers to each delivery main item.
    Can you kindly tell me in what possible ways we can create sub item with serial numbers for a deliveyr main item in change mode.
    Thanks in advance
    Best  Regards
    Veer

    Hi,
    Does anybody have an answer?
    Thanks in advance.

  • Restrict Equipment Master (with serial numbers) creation

    Hello All,
    I am faced with an issue where the client will be using Serial Numbers for 2 sets of materials. I have assigned a Serial Number profile to these materials in Material Master.
    I am able to create equipment master data for these materials with serial numbers without any issue.
    However, I am also able to create equipment master data (with serial numbers) for materials to which I have not assigned a Serial Number profile.
    Is there a way to restrict the creation of equipment master data (with serial numbers)  to only those material that have a Serial Number profile assigned in material master data...?
    Thanks
    Jensi

    Thanks for the reply Amuthan.
    Unlike what you wrote in the reply, the system does allow me to create/save a equipment number for those serial numbers that I assign to materials that do not have a serial number profile.
    Is there any validation, any check or something of that sort that I can activate so that the system will prevent assignment of serial numbers (and in turn creation of equipment master data) for those materials which do not have a serial number profile assigned in the material master data?
    Thanks
    Jensi

  • DIAPI posting Delivery Document with Serial Numbers SP1

    Release 2005A, SP1 PL4 seems to have broken code that worked with SP00.  When trying to create a Delivery Document that contains Serial Numbers, an error is generated: Error -1, General Error.  When adding a delievery document which does not contain serial numbers, the document adds successfully.
    The following code loops through a recordset to create documents, add expenses and add serial numbers when appropriate.  Is this a new 'feature' or can we make a coding change to eliminate this error?
    Sample code:
        Try
          oSalesOrder = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
          RecSet = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet2 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet3 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet4 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet5 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet6 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          '-- Select Documents to process and loop through recordset
          lsSQL = "SELECT DocEntry FROM DeliveryTable WHERE ProcessResult IS NULL Group by DocEntry"
          RecSet.DoQuery(lsSQL)
          While Not RecSet.EoF
            oSalesOrder.GetByKey(RecSet.Fields.Item(0).Value)
            If bDocuments(piCompany).DelDraft = False Then
              oDelivery = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
            Else
              oDelivery = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts)
            End If
            oDelivery.CardCode = oSalesOrder.CardCode
            oDelivery.Comments = "Based On Sales Order " & oSalesOrder.DocNum & "."
            oDelivery.DocDate = Today
            oDelivery.ContactPersonCode = oSalesOrder.ContactPersonCode
            oDelivery.DocCurrency = oSalesOrder.DocCurrency
            oDelivery.DocDueDate = Today
            If bDocuments(piCompany).DelDraft = True Then
              oDelivery.DocObjectCode = SAPbobsCOM.BoObjectTypes.oDeliveryNotes
            End If
            '-- Handle Expenses for Document
            Dim ExpenseLoop As Integer
            Dim ExpenseCount As Integer = 0
            For ExpenseLoop = oSalesOrder.Expenses.Count - 1 To 0 Step -1
            ExpenseCount += 1
              '-- Create new Expense if needed
              If ExpenseCount > oDelivery.Expenses.Count Then
                oDelivery.Expenses.Add()
              End If
              oSalesOrder.Expenses.SetCurrentLine(ExpenseLoop)
              '-- Copy all non-readonly properties
              If oSalesOrder.Expenses.LineTotal > 0 Then
                oDelivery.Expenses.BaseDocEntry = oSalesOrder.Expenses.BaseDocEntry
                oDelivery.Expenses.BaseDocLine = oSalesOrder.Expenses.BaseDocLine
                oDelivery.Expenses.BaseDocType = oSalesOrder.Expenses.BaseDocType
                oDelivery.Expenses.DeductibleTaxSum = oSalesOrder.Expenses.DeductibleTaxSum
                oDelivery.Expenses.DistributionMethod = oSalesOrder.Expenses.DistributionMethod
                oDelivery.Expenses.ExpenseCode = oSalesOrder.Expenses.ExpenseCode
                oDelivery.Expenses.LineTotal = oSalesOrder.Expenses.LineTotal
                oDelivery.Expenses.Remarks = oSalesOrder.Expenses.Remarks
                oDelivery.Expenses.TaxCode = oSalesOrder.Expenses.TaxCode
                oDelivery.Expenses.VatGroup = oSalesOrder.Expenses.VatGroup
              End If
            Next ExpenseLoop
            Dim i As Integer = 0
            Dim liMinRef As Integer = -1
            For x = 0 To oSalesOrder.Lines.Count - 1
              lsSQL = "SELECT ISNULL(MIN(CAST(LineRef as int)),999999) as MinLineRef FROM DeliveryTable WHERE DocEntry = " & RecSet.Fields.Item(0).Value & " AND CAST(LineRef as int) > " & liMinRef
              RecSet5.DoQuery(lsSQL)
              If Not RecSet5.EoF Then
                '-- It's possible that the DeliveryTable has less records then the RDR1 table - if that's the case
                '-- we may be at the end, so set the liMinRef field to something out of range
                liMinRef = RecSet5.Fields.Item(0).Value
              End If
              '-- get line items for each document
              lsSQL = "Select * from DeliveryTable WHERE DocEntry = " & RecSet.Fields.Item(0).Value & " AND LineRef = " & x & " AND ProcessResult IS Null"
              RecSet2.DoQuery(lsSQL)
              RecSet2.MoveFirst()
              While Not RecSet2.EoF
                '-- We need to walk through the SO to find the item that we are receiving based on the LineNum
                Dim liCurrentLine As Integer = x
                Dim lbFound As Boolean = False
                While liCurrentLine <= (oSalesOrder.Lines.Count - 1)
                  '-- We need to get the PO Line number (x is NOT the LineRef)
                  oSalesOrder.Lines.SetCurrentLine(liCurrentLine)
                  If oSalesOrder.Lines.LineNum = liMinRef Then
                    lbFound = True
                    Exit While
                  End If
                  liCurrentLine += 1
                End While
                If lbFound Then
                  i += 1
                  If i > oDelivery.Lines.Count Then
                    oDelivery.Lines.Add()
                  End If
                  oDelivery.Lines.BaseEntry = oSalesOrder.DocEntry
                  oDelivery.Lines.Quantity = RecSet2.Fields.Item(6).Value
                  oDelivery.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
                  oDelivery.Lines.LineTotal = oSalesOrder.Lines.LineTotal * (oDelivery.Lines.Quantity / oSalesOrder.Lines.Quantity)
                  oDelivery.Lines.UserFields.Fields.Item("U_WhseLoc").Value = RecSet2.Fields.Item(8).Value
                  oDelivery.Lines.AccountCode = oSalesOrder.Lines.AccountCode
                  oDelivery.Lines.Address = oSalesOrder.Lines.Address
                  oDelivery.Lines.Currency = oSalesOrder.Lines.Currency
                  oDelivery.Lines.ItemCode = oSalesOrder.Lines.ItemCode
                  oDelivery.Lines.BaseLine = liMinRef
                  oDelivery.Lines.ItemDescription = oSalesOrder.Lines.ItemDescription
                  oDelivery.Lines.WarehouseCode = oSalesOrder.Lines.WarehouseCode
                  lsUserID = RecSet2.Fields.Item("UserID").Value
                  '-- manage serial numbers
                  j = -1
                  lsSQL = "Select * from DeliverySerial WHERE DocEntry = " & oDelivery.Lines.BaseEntry & " AND LineRef = " & liMinRef
                  lsSQL += " AND WIPLineRef = " & RecSet2.Fields.Item("WIPLineRef").Value
                  RecSet3.DoQuery(lsSQL)
                  While Not RecSet3.EoF
                    '-- get the next SystemSerialNumber for the Inventory Item
                    lsSQL = "EXEC " & gsDB(piCompany) & "xspGetSysSerial " & sparm(oDelivery.Lines.ItemCode) & ", " & sparm(RecSet3.Fields.Item("LotNo").Value)
                    lsSQL += ", " & sparm(RecSet3.Fields.Item("ManSerNo").Value) & ", " & sparm(RecSet3.Fields.Item("IntSerNo").Value)
                    lsSQL += ", " & RecSet3.Fields.Item("QTY").Value & ", " & sparm(oDelivery.Lines.WarehouseCode) & ", " & sparm(RecSet2.Fields.Item(8).Value)
                    RecSet4.DoQuery(lsSQL)
                      j += 1
                      If j + 1 > oDelivery.Lines.SerialNumbers.Count Then
                        oDelivery.Lines.SerialNumbers.Add()
                      End If
                      oDelivery.Lines.SerialNumbers.SetCurrentLine(j)
                      oDelivery.Lines.SerialNumbers.BatchID = RecSet3.Fields.Item("LotNo").Value
                      oDelivery.Lines.SerialNumbers.ManufacturerSerialNumber = RecSet3.Fields.Item("ManSerNo").Value
                      oDelivery.Lines.SerialNumbers.InternalSerialNumber = RecSet3.Fields.Item("IntSerNo").Value
                      oDelivery.Lines.SerialNumbers.SystemSerialNumber = RecSet4.Fields.Item(0).Value
                      oDelivery.Lines.SerialNumbers.BaseLineNumber = oDelivery.Lines.BaseLine
                    RecSet3.MoveNext()
                  End While
                  '-- 'end manage serial numbers
                End If
                RecSet2.MoveNext()
              End While
            Next x
            '-- now add object to SAP
            If 0 <> oDelivery.Add() Then
              Dim liError As Long
              Dim lsError As String
              Call oCompany(piCompany).GetLastError(liError, lsError)
              '-- write error code to table - Delivery document creation was unsuccessful
              lsSQL = "Update DeliveryTable SET ProcessResult = " & liError & ", ProcessDate = GetDate() WHERE DocEntry = " & oSalesOrder.DocEntry & " AND ProcessResult Is Null"
              RecSet2.DoQuery(lsSQL)
              lsuWriteEvent("AR Delivery", bDocuments(piCompany).DelDraft, oSalesOrder.DocEntry, liError, lsError, piCompany)
            Else
              lsuWriteEvent("AR Delivery", bDocuments(piCompany).DelDraft, oSalesOrder.DocEntry, 0, "Success", piCompany)
            End If
            RecSet.MoveNext()
          End While
        Catch
          LogErrorMessage(Err.Description)
        Finally
          If Not RecSet Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet)
          End If
          If Not RecSet2 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet2)
          End If
          If Not RecSet3 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet3)
          End If
          If Not RecSet4 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet4)
          End If
          If Not RecSet5 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet5)
          End If
          If Not RecSet6 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet6)
          End If
          If Not oSalesOrder Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oSalesOrder)
          End If
          If Not oDelivery Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oDelivery)
          End If
          GC.WaitForPendingFinalizers()
        End Try

    We have narrowed down the issue to this:
    If you are just adding a delivery document with serial numbers, the DIAPI works OK.  If you are adding a delivery document which is based upon a sales order and add the 3 lines that reference it:
    oDelivery.Lines.BaseEntry = oSalesOrder.DocEntry
    oDelivery.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
    oDelivery.Lines.BaseLine = liMinRef
    then you receive a error of -1, General error.  This is functionality that did work in 2004 and 2005 SP00.  I believe this is a bug.

  • Group By reports with Serial Numbers

    hi,
    i am creating group by reports with serial numbers. i use the
    following code to generate the serial numbers using a formula
    column:
    function SNOFormula return Number is
    SNO NUMBER(5);
    begin
    SNO := :SNO + 1;
    RETURN(SNO);
    end;
    I am able to acheive the required output with the above code in
    the case of Normal Tablular reports. But in the case of Group by
    reports, the output goes as follows:
    for example:
    sno,groupno,empno
    1,g1,e1
    e2
    e3
    4,g2,e5
    e6
    Any way out?. pls help.
    Regards,
    Prabhu S

    create a summary column in the group . set the function to
    count. set the source to the group name. set the reset at value
    as report. create a field in the lay our editor left of the
    group field. set the source as the summary column. you will see
    the numbering.
    Ex :
    Query : Select * From Emp;
    Group Field : Deptno
    Summary Field : CS_Count
    Properties of Cs_Count - Function => Count
    Source => DEPTNO
    Reset At => Report
    Now create a field in the lay out editor left side of deptno
    field lets say "SEQ", set the source to Cs_Count.
    It will disply the serial number of the groups.

  • Goods Movements with Handling Units

    Hi:
    Any one knows how can I get make Goods Movement with Handling Units  inter plants?
    I am trying by VLMOVE but this Tcode just has process for into a Plant not for Transfer posting plant to plant., so, I need give out for materials in Handling Units and Receive the sames in the Receptor Plant
    Is there a special configuration for get this?
    Thanks in advance.
    Omar Perea

    Hi Vishal:
    You're right... I was missing the 301, 303 y 305, but with this operations I can try to resolve my Isuue.
    Thanks
    OP

  • BAPI for Goods Movement with Movement Type 701

    Hi,
    I want to post a goods movement with movement type 701.
    Is there any BAPI I can take?
    I already tried the movement with 'BAPI_GOODSMVT_CREATE' but i got an error message that the movement ist not possible.
    Can anyone help me?
    Regards, Alex

    why dont you tell what message was issued?

  • DTW Stock with Serial Numbers

    Hi all, I DTW'd some stock in through the GRPO template. I then AP'd the invoice. Due to some administrative issues I had to credit the Invoice thus reversing the stock. So the Serial Numbers are all reflecting as unavailable.
    I need to re-import the stock with the same serial numbers and different costs. The DTW is giving me an error "(Serial Number) for item (Item Code) in line 1 already exists (in unique field)/Application defined or object defined error65171"
    I realise that these serial numbers are already in the system, but if I manually capture these on the GRPO the the application asks me to confirm this already exists. There are almost 2000 items to capture. Please could someone advise if there is possibly a field on the DTW template (purchase delivery) I could populate that overides this error"

    Are you using the oInventoryGenEntry templates? The serial numbers template I have contains 3 serial numbers - Internal, Manufacturer & System. The system serial number is the unique key and is system generated.
    Try the following to get a list of on hand stock with serial numbers:
    {SELECT T0.ItemCode, T0.ItemName,
          T1.WhsCode, CASE WHEN ISNULL(T2.SysSerial,-1) = -1 THEN T1.OnHand ELSE 1 END [Quantity], T0.AvgPrice,
          T2.SysSerial, T2.IntrSerial
    FROM OITM T0
          INNER JOIN OITW T1 ON T1.ItemCode = T0.ItemCode
          LEFT OUTER JOIN OSRI T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.WhsCode AND T2.[Status] = 0
    WHERE T1.OnHand <> 0    and t0.ManSerNum = 'Y'
    ORDER BY T0.ItemCode, T1.WhsCode, T2.SysSerial}
    You may need to tweak it a bit for your eviironment.

  • How to get item stock from bin location with serial numbers?

    Dear experts
    I want to write query for getting item stock from bin location with serial numbers..
    Thank you
    Santosh Dhere.

    Hi Santosh,
    Try this:
    SELECT T0.[ItemCode], T5.[DistNumber], T5.[MnfSerial], T5.[LotNumber], T3.[OnHandQty]
      , T1.[BinCode], T1.[WhsCode]
    FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
    WHERE T1.[AbsEntry] >= (0)  AND  (T3.[AbsEntry] IS NOT NULL)
    UNION ALL
    SELECT T0.[ItemCode], T5.[DistNumber], T5.[MnfSerial], T5.[LotNumber], T0.[OnHandQty]
      , T1.[BinCode], T1.[WhsCode]
    FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
    WHERE T1.[AbsEntry] >= (0)  AND  (T2.[AbsEntry] IS NULL   AND  T3.[AbsEntry] IS NULL)
    UNION ALL
    SELECT T0.[ItemCode], T0.[SRNDistNumber], T0.[SRNMnfSerial], T0.[SRNLotNumber], T0.[IBQOnhandQty] - T0.[OnHandQty]
      , T0.[BinCode], T0.[WhsCode]
    FROM  (
      SELECT T0.[BinAbs], T0.[ItemCode], MAX(T0.[OnHandQty]) AS 'IBQOnhandQty', SUM(T2.[OnHandQty]) AS 'OnHandQty', N'' AS 'BTNDistNumber', N'' AS 'BTNMnfSerial'
      , N'' AS 'BTNLotNumber', N'' AS 'SRNDistNumber', N'' AS 'SRNMnfSerial', N'' AS 'SRNLotNumber', MIN(T5.[AbsEntry]) AS 'AbsEntry', MIN(T1.[BinCode]) AS 'BinCode'
      , 10000044 AS 'SnbType', MIN(T5.[AbsEntry]) AS 'BTNAbsEntry', MIN(T5.[AbsEntry]) AS 'SRNAbsEntry', MIN(T1.[WhsCode]) AS 'WhsCode', MIN(T1.[SL1Code]) AS 'SL1Code'
      , MIN(T1.[SL2Code]) AS 'SL2Code', MIN(T1.[SL3Code]) AS 'SL3Code', MIN(T1.[SL4Code]) AS 'SL4Code', MIN(T1.[SL1Abs]) AS 'SL1Abs'
      , MIN(T1.[SL2Abs]) AS 'SL2Abs', MIN(T1.[SL3Abs]) AS 'SL3Abs', MIN(T1.[SL4Abs]) AS 'SL4Abs'
      FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
      WHERE T1.[AbsEntry] >= (0 )  AND  (T2.[AbsEntry] IS NOT NULL)
      GROUP BY T0.[BinAbs], T0.[ItemCode]
      UNION ALL
      SELECT T0.[BinAbs], T0.[ItemCode], MAX(T0.[OnHandQty]) AS 'IBQOnhandQty', SUM(T3.[OnHandQty]) AS 'OnHandQty', N'' AS 'BTNDistNumber', N'' AS 'BTNMnfSerial'
      , N'' AS 'BTNLotNumber', N'' AS 'SRNDistNumber', N'' AS 'SRNMnfSerial', N'' AS 'SRNLotNumber', MIN(T4.[AbsEntry]) AS 'AbsEntry', MIN(T1.[BinCode]) AS 'BinCode'
      , 10000045 AS 'SnbType', MIN(T4.[AbsEntry]) AS 'BTNAbsEntry', MIN(T4.[AbsEntry]) AS 'SRNAbsEntry', MIN(T1.[WhsCode]) AS 'WhsCode', MIN(T1.[SL1Code]) AS 'SL1Code'
      , MIN(T1.[SL2Code]) AS 'SL2Code', MIN(T1.[SL3Code]) AS 'SL3Code', MIN(T1.[SL4Code]) AS 'SL4Code', MIN(T1.[SL1Abs]) AS 'SL1Abs'
      , MIN(T1.[SL2Abs]) AS 'SL2Abs', MIN(T1.[SL3Abs]) AS 'SL3Abs', MIN(T1.[SL4Abs]) AS 'SL4Abs'
      FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
      WHERE T1.[AbsEntry] >= (0 )  AND  (T3.[AbsEntry] IS NOT NULL)
      GROUP BY T0.[BinAbs], T0.[ItemCode]
      ) T0
    WHERE T0.[IBQOnhandQty] > T0.[OnHandQty]
    Regards,
    JC.

Maybe you are looking for