다음을 통해 공유


SAP용 데이터 공급자 문제 해결

이 섹션에서는 문제 해결 기술을 사용하여 mySAP Business Suite용 .NET Framework Data Provider를 사용할 때 발생할 수 있는 운영 오류를 resolve 설명합니다.

SAP용 데이터 공급자를 사용하는 알 수 없는 매개 변수 오류

문제

SAP용 데이터 공급자는 다음 오류를 제공합니다.

Microsoft.Data.SAPClient.SAPException: Failed to retrieve data from SAP server --- > Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: Unknown Parameter OUT_ZDATATABLE.  

원인

SAP 시스템에 설치된 사용자 지정 RFC(Z_EXTRACT_DATA_OO)는 최신이 아닙니다. SAP용 데이터 공급자는 사용자 지정 RFC Z_EXTRACT_DATA_OO 사용하여 SAP 테이블에서 SELECT 작업을 수행합니다.

해결 방법

사용자 지정 RFC를 사용 가능한 최신 버전으로 업데이트해야 합니다. Z_EXTRACT_DATA_OO 이 RFC는 adapterpacknoversion과 함께 사용할 수 있습니다. 사용자 지정 RFC를 설치하고 제거하는 방법에 대한 자세한 내용은 SAP용 데이터 공급자에 대한 사용자 지정 RFC 설치를 참조하세요.

SAP 테이블에서 데이터를 선택할 때 메모리 부족 예외

문제

SAP용 데이터 공급자는 SAP 시스템에서 데이터를 선택할 때 메모리 부족 예외를 throw합니다.

원인

기본적으로 SAP용 데이터 공급자는 한 번에 10,000개의 행을 검색합니다. 또한 SAP 시스템에서 검색된 행의 각 일괄 처리는 메모리에 저장됩니다. 따라서

  • 데이터를 검색하는 테이블에 많은 수의 행이 포함된 경우 또는

  • 테이블에 상당한 양의 메모리를 사용하는 데이터 형식의 열이 포함된 경우

    SAP용 데이터 공급자의 메모리 사용량이 크게 증가하여 메모리 부족 예외가 발생할 수 있습니다.

    해결 방법

    SAP 시스템에서 검색된 최대 행 수를 변경할 수 있습니다. SELECT 문을 사용하여 'batchsize' 옵션을 지정하면 됩니다. 예:

SELECT * FROM <tablename> OPTION 'batchsize 1000'  

이제 SAP용 데이터 공급자는 한 번에 1000개의 행만 검색하므로 많은 양의 메모리를 사용하지 않습니다.

날짜 값이 있는 매개 변수를 사용하는 쿼리를 실행하는 동안 예외 발생

문제

날짜 값을 사용하는 매개 변수가 있는 EXECQUERY 명령을 사용하여 쿼리를 실행할 때 다음 예외가 발생합니다.

ErrorCode=RFC_SYS_EXCEPTION. ErrorGroup=RFC_ERROR_SYSTEM_FAILURE.   
SapErrorMessage=Enter date in the format __.__.____.  

원인

EXECQUERY 명령을 사용하여 쿼리를 실행할 때는 항상 날짜 값을 YYYYMMDD 형식으로 지정해야 합니다.

해결 방법

날짜 값을 YYYYMMDD 형식으로 지정해야 합니다. 예:

EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1='20080606'  

EXECQUERY 명령을 사용하여 쿼리를 실행하는 예외 NO_VARIANT

문제

EXECQUERY 명령을 사용하여 쿼리를 실행할 때 다음 예외가 발생합니다.

Exception: Details: ErrorCode=RFC_EXCEPTION. ErrorGroup=RFC_ERROR_APPLICATION_EXCEPTION. SapErrorMessage=NO_VARIANT.  
AdapterErrorMessage=Error returned by RfcCallReceiveEx while calling RFC: <RFC name>  

원인

이 예외에 대한 두 가지 가능한 원인이 있을 수 있습니다.

  1. 실행하려는 쿼리에는 SAP 시스템에 정의된 변형이 있습니다. 변형은 SAP 쿼리를 실행하는 동안 지정할 수 있는 저장된 선택 조건 집합을 나타냅니다. 예를 들어 변형을 사용하여 쿼리의 기본값을 지정할 수 있습니다.

  2. 실행하려는 쿼리에는 변형이 정의되어 있지 않으며 매개 변수 값이 전달될 것으로 예상됩니다.

    해결 방법

  3. 이유 1의 경우 쿼리와 연결된 변형의 이름을 지정해야 합니다. 예:

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @variant =  ‘variant1’  
    
  4. 이유 2의 경우 쿼리 명령을 지정하는 동안 더미 매개 변수 이름 및 값을 제공해야 합니다. 예를 들어 "myquery" 쿼리를 실행할 매개 변수가 필요하지 않은 경우 EXECQUERY 명령을 다음과 같이 지정해야 합니다.

    EXECQUERY myquery @usergroup='mygroup',@P1 = 'dummy_value'  
    

참고 항목

SAP 어댑터 문제 해결