2012-05-01 3 views
0

Microsoft SQL 서버 데이터베이스의 일부 데이터를 SAP로 푸시하는 기존 프로그램이 있습니다. mySAP Business Suite에 Microsoft .NET Data Provider를 사용하여 SAP에 연결하고 완벽하게 작동합니다.SAP .NET Connector 3.0, 데이터를 SAP로 푸시하는 중 오류가 발생했습니다.

이제는 개선 계획의 일부로 Microsoft 드라이버에서 새로운 SAP .Net Connector 버전 3.0으로 마이그레이션 할 것을 요청했습니다. 필자는 SAP 커넥터가 아닌 Microsoft 커넥터 중 하나에 대한 경험이 없기 때문에 설명서에서 시작했습니다. 비록 내가 숙제를 끝냈다 고 생각한다고해도 나는 정보를 풀거나 찾을 수 없다는 오류가 발생한다.

내 주요 기능 :

log.Debug("Get the SAP destination") 
    Dim destination As RfcDestination = RfcDestinationManager.GetDestination("SAP") 

    log.Debug("Fetch the function metadata") 
    Dim rfcFunction As IRfcFunction = destination.Repository.CreateFunction("Z_TEC_CAT") 

    log.Debug("Set the import parameters") 
    Dim am As RfcStructureMetadata = destination.Repository.GetStructureMetadata("ZTEC_CAT") 
    Dim exportTable As IRfcTable = rfcFunction.GetTable("ZTEC_CAT") 
    FillIrfTable(exportTable, invoices) 

    log.Debug("Invoking the function Z_TEC_CAT") 
    rfcFunction.Invoke(destination) 


도우미 내가 SAP에 보내야 할 테이블을 채우는 :

Private Sub FillIrfTable(ByVal sapTable As IRfcTable, ByVal dt As DataTable) 

    log.Debug("Started FillIrfTable") 
    For Each row As DataRow In dt.Rows 
     sapTable.Append() 
     Dim index As Integer = 0 
     Do While (index < dt.Columns.Count) 
      Dim columName As String = dt.Columns.Item(index).ColumnName 
      Dim columnValue = row.Item(index) 
      sapTable.SetValue(columName, columnValue) 
      index = (index + 1) 
     Loop 
    Next 

    log.Debug("Completed FillIrfTable") 

End Sub 


내보낼 수있는 변수가 비어

, I NO_DATA 예외가 발생하고 모든 것이 정상이지만 테이블에 레코드가 있으면 throw됩니다.

Failed calling SAP Function Module Z_TEC_CAT 
SAP.Middleware.Connector.RfcAbapException: BDC_OPEN_ERROR 
    at SAP.Middleware.Connector.RfcConnection.ThrowRfcErrorMsg() 
    at SAP.Middleware.Connector.RfcConnection.RfcReceive(RfcFunction function) 
    at SAP.Middleware.Connector.RfcFunction.RfcDeserialize(RfcConnection conn, IRfcIOStream stream) 
    at SAP.Middleware.Connector.RfcFunction.RfcCallReceive(RfcConnection conn, IRfcIOStream stream, RFCID rid) 
    at SAP.Middleware.Connector.RfcFunction.RfcCallReceive(RfcConnection conn) 
    at SAP.Middleware.Connector.RfcFunction.Invoke(RfcDestination destination) 


누군가가 발생 할 수 있습니다 무엇을 알고 있나요? 어떤 제안이라도 대단히 감사하겠습니다.

내가 무슨 일이 있었는지 발견 한이 싸움 전년도의 주 후,

답변

2

감사하고 나는 그것을 게시하는 것은 거기에 많은 시간을 소비하지 않는 다른 사람을 도울 수 있다는 생각 .

SAP 커넥터가 통화에 공간을 삽입하는 것 (Microsoft 커넥터가 아님)으로 인해 SAP 시스템에서 보내고 있던 매개 변수 (exportTable)를 매핑 할 수 없어 실패했습니다.

다른 끝의 SAP 프로그래머가 함수를 수정 했으므로 이제는 공간을 인식하고 모든 것이 잘 작동합니다.

관련 문제