on 2005 Nov 10 4:39 PM
Hi,
If I use the code below I get a blank for my batchnumber.
I know for 100% sure that the batch is filled and If I look at my goodsreceipt the batchnumber is showing
Is this a bug in the DI or am I doing anything wrong
We run SBO004A pl32
Dim delivery As SAPbobsCOM.IDocuments = oCmp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
If delivery.GetByKey(GetDocEntryForDocument(DocNum, SAPbobsCOM.BoObjectTypes.oDeliveryNotes)) Then
With delivery.Lines
For i As Integer = 0 To .Count - 1
.SetCurrentLine(i)
With .BatchNumbers
For j As Integer = 0 To .Count - 1
.SetCurrentLine(j)
Console.WriteLine(".BatchNumber: " + .BatchNumber)
(ors.Fields.Item(0).Value, itemcode)
Next
End With
Next
End With
End If
We do have such problems too, with both serials and batches. In some document-objects serials and batches are not in somehow, even if they should.
As already said, an SQL-query solves the problem.
I was hoping that it would be solved in 2004A as well..
Edit: At the moment, I use following code to get all batch numbers for a stock transfer line (assume to have such a fancy Hashmap in VB6 like me ;-):
Private Function HackGetBatchesForStockTransferLine( _
objSTransfer As SAPbobsCOM.StockTransfer) As Hashmap
Dim objRecSet As SAPbobsCOM.Recordset
Set objRecSet = vCmp.GetBusinessObject(BoRecordset)
objRecSet.DoQuery "SELECT BatchNum, Quantity FROM IBT1 WHERE " & _
"(BaseType = 67) AND (BaseLinNum = " & _
objSTransfer.lines.lineNum & ") AND (BaseEntry = " & _
objSTransfer.DocEntry & " AND (Direction = 1))"
If objRecSet.EOF Then
Log LL_SEVERE, GetS(1330, _
objSTransfer.lines.lineNum & "|" & _
objSTransfer.docNum)
Exit Function
End If
Dim map As Hashmap
Set map = New Hashmap
While Not objRecSet.EOF
map.SetValue _
objRecSet.fields.Item(0).value, _
objRecSet.fields.Item(1).value
objRecSet.MoveNext
Wend
Set HackGetBatchesForStockTransferLine = map
End Function
Of course, I know that I have only one stock transfer line in this document, this function covers only one special case, thats why it has the "Hack"-Prefix. Maybe someone can adopt it's idea to solve own problems.
Message was edited by: Florian Zeller
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
AFAIK, there's an "issue" or a "feature" with Batch and Serial Numbers. I deal the issue with the following Function:
Public Function SBOGetDocLineBatchInfo(ByVal sboDoc As SAPbobsCOM.Documents, ByVal l As Integer)
Dim r As Integer
Dim s As String
Dim s2 As String
Dim strLineINI As String
Dim strLine As String
Dim strSQL As String
strLineINI = INIRead(XPR.xprFilesINI.XMLXPRT_SPEX_INI, "LineInfo", "LineBatchInfo")
strSQL = "SELECT T0.BatchNum, T1.Quantity, T0.ExpDate, T0.PrdDate, T0.WhsCode, T0.Located, T1.WhsCode FROM OIBT T0 INNER JOIN IBT1 T1 ON T1.ItemCode = T0.ItemCode AND T1.BatchNum = T0.BatchNum AND T1.WhsCode = T0.WhsCode INNER JOIN OITM T2 ON T2.ItemCode = T1.ItemCode WHERE (T2.ItemCode = N'_ItemCode_') AND (T1.BaseType = _BaseType_ ) AND (T1.BaseEntry = _BaseEntry_) AND (T1.BaseLinNum = _BaseLinNum_) AND T2.InvntItem = N'Y' AND T2.Canceled <> N'Y' "
strSQL = Replace(strSQL, "_ItemCode_", sboDoc.Lines.ItemCode)
strSQL = Replace(strSQL, "_BaseType_", sboDoc.DocObjectCode)
strSQL = Replace(strSQL, "_BaseEntry_", sboDoc.DocEntry.ToString)
strSQL = Replace(strSQL, "_BaseLinNum_", l.ToString)
gsboRS.DoQuery(strSQL)
If gsboRS.RecordCount >= 1 Then
For r = 0 To gsboRS.RecordCount - 1
strLine = strLineINI
strLine = Replace(strLine, "_BatchNumber_", gsboRS.Fields.Item(0).Value)
strLine = Replace(strLine, "_Quantity_", gsboRS.Fields.Item(1).Value)
s2 = Format(gsboRS.Fields.Item(2).Value, "yyyy.MM.dd")
If s2 = "1899.12.30" Then s2 = "-"
strLine = Replace(strLine, "_ExpiryDate_", s2)
s2 = Format(gsboRS.Fields.Item(3).Value, "yyyy.MM.dd")
If s2 = "1899.12.30" Then s2 = "-"
strLine = Replace(strLine, "_ManufactureDate_", s2)
strLine = Replace(strLine, "_FromWHS_", gsboRS.Fields.Item(4).Value)
strLine = Replace(strLine, "_FromLocation_", gsboRS.Fields.Item(5).Value)
strLine = Replace(strLine, "_ToWHS_", gsboRS.Fields.Item(6).Value)
strLine = Replace(strLine, "_CrLf_", vbCrLf)
s = s & strLine
gsboRS.MoveNext()
Next
End If
Return (s)
End Function
HTH
Juha
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
115 | |
9 | |
8 | |
6 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.