What exactly is the Response that you get from SAP?
If you need help reading the Actual XML that is being exchanged I recommend using Fiddler to capture the XML...(I have had some issues with the .net Proxy generator sometimes not creating accurate code for use with the SAP Webservices). and it is easier to troubleshoot if you know the exact XML being exchanged.
Are you using a Standard Communication Agreement or Have you created you own?
"Business Communication Log" Will only show Success/Failure) message for certain transactions like 3PL or a few others... However they will show invalid logins under "Rejected Web Service Calls" as well as errors in the following format..
.Web service processing error; more details in the web service error log on provider side (UTC timestamp 20140709193523; Transaction ID 00163E06A20D1EE481F4056D9676094D)
If you are getting a response from SAP that is "Valid" just with no results you will not see anything in the communication logs.
You can also try the leave the the lower product as blank.
here is an example used to read a Material in vb.net (very Similar)
Public Shared Function ReadMaterial(oconnection As Connection, MaterialID As String) As QUERYMATERIALIN.MaterialByElementsResponseMessage_sync
Dim oQProd As New QUERYMATERIALIN.binding
oQProd.Credentials = oconnection.CREDS
Dim oreadsync As New QUERYMATERIALIN.MaterialByElementsQueryMessage_sync
oreadsync.MaterialSelectionByElements = New QUERYMATERIALIN.MaterialByElementsQuerySelectionByElements
Dim MAterial = New QUERYMATERIALIN.MaterialByElementsQuerySelectionByInternalID
Dim MAterialList = New List(Of QUERYMATERIALIN.MaterialByElementsQuerySelectionByInternalID)
MAterial.LowerBoundaryInternalID = New QUERYMATERIALIN.ProductInternalID
MAterial.LowerBoundaryInternalID.Value = MaterialID
MAterial.IntervalBoundaryTypeCode = 1
MAterial.InclusionExclusionCode = "I"
MAterialList.Add(MAterial)
oreadsync.MaterialSelectionByElements.SelectionByInternalID = MAterialList.ToArray
oreadsync.ProcessingConditions = New QUERYMATERIALIN.QueryProcessingConditions
oreadsync.ProcessingConditions.QueryHitsUnlimitedIndicator = True
Dim ores = oQProd.FindByElements(oreadsync)
Return ores
End Function