SAP Table 일괄 소스

이 페이지에서는 SAP 애플리케이션 데이터에서 일괄 추출을 구성하는 방법을 설명합니다.

SAP Table 일괄 소스 플러그인(SAP Table 플러그인)을 사용하면 SAP 표준 및 커스텀 테이블 또는 뷰에서 데이터를 읽을 수 있습니다. Cloud Data Fusion을 사용하여 SAP 애플리케이션에서 BigQuery 또는 기타 지원되는 대상 시스템으로 일괄 데이터를 수집할 수 있습니다. 이 플러그인에는 다음과 같은 주요 기능이 있습니다.

  • SAP ECC, SAP S4/HANA 또는 SAP BW를 소스 시스템으로 사용
  • 데이터 소스에서 신규 및 델타 데이터를 추적하고 추출하는 데 SAP CDC(변경 데이터 캡처)를 사용하지 않음
  • 일괄 추출 모드 사용
  • SAP Table 및 ABAP CDS 뷰를 데이터 소스로 지원
  • 애플리케이션 레이어를 통해 SAP 데이터에 액세스

다음에서 데이터를 읽을 수 있습니다.

  • 투명 테이블
  • 클러스터 테이블
  • 풀 테이블
  • ABAP CDS 뷰
  • SAP BW ADSO 객체

지원되는 소프트웨어 버전

소프트웨어 버전
SAP S4/HANA SAP S4/HANA 1909 이상
SAP ECC SAP ERP6 NW 7.31 SP16 이상
SAP JCo SAP JCo 버전 3.0.20 이상
Cloud Data Fusion 6.3 이상

Google Cloud 기반 SAP에 대한 자세한 내용은 Google Cloud 기반 SAP 개요를 참조하세요.

시작하기 전에

SAP Table 플러그인에서 사용되는 다음 시스템과 서비스를 설정합니다.

  1. SAP ERP 시스템 구성. 이 프로세스에는 다음 단계가 포함됩니다.
    • SAP 전송 파일을 설치합니다.
    • 필요한 SAP 승인 및 역할을 설정합니다.
    • SAP 자바 커넥터를 설정합니다.
  2. Cloud Data Fusion에 플러그인 배포.

    • 중요: Cloud Data Fusion 버전과 호환되는 플러그인 버전을 선택하세요.
    • Cloud Data Fusion 인스턴스 또는 플러그인 버전을 업그레이드하는 경우 파이프라인의 기능 범위 및 성능에 미치는 변경사항이 미치는 영향을 평가합니다.
  3. Cloud Data Fusion과 SAP 사이에 RFC 연결을 설정합니다.

    • Cloud Data Fusion 인스턴스와 SAP 서버 간에 통신이 사용 설정되어 있는지 확인합니다.
    • 비공개 인스턴스의 경우 VPC 네트워크 피어링을 설정합니다.
    • SAP 시스템과 Cloud Data Fusion 인스턴스는 동일한 프로젝트에 있어야 합니다.

플러그인 구성

  1. Cloud Data Fusion 웹 인터페이스로 이동하고 Studio를 클릭하세요.
  2. 데이터 파이프라인 - 배치가 선택되었는지 확인합니다(실시간 아님).
  3. 소스 메뉴에서 SAP Table을 클릭합니다. SAP Table 노드가 파이프라인에 표시됩니다.
  4. 소스를 구성하려면 SAP Table 노드로 이동하고 속성을 클릭합니다.
  5. 다음 속성을 입력합니다. 전체 목록은 속성을 참조하세요.

    1. SAP Table 노드의 라벨을 입력합니다(예: SAP tables).
    2. 다음 연결 세부정보를 입력합니다. 새로운 일회성 연결 또는 재사용 가능한 기존의 연결을 설정할 수 있습니다.

      새로운 연결

      SAP에 일회성 연결을 추가하려면 다음 단계를 수행합니다.

      1. 연결 사용을 사용 중지된 상태로 유지합니다.
      2. 연결 섹션에서 SAP 계정의 다음 정보를 이러한 필드에 입력합니다.

        1. 참조 이름 필드에 계보에 대해 이 소스를 식별하는 연결 이름을 입력합니다.
        2. SAP 클라이언트 필드에 SAP 내 특정 인스턴스 또는 환경의 클라이언트 이름을 입력합니다. SAP 관리자가 클라이언트 이름을 제공할 수 있습니다.
        3. SAP 언어 필드에 SAP 로그온 언어를 입력합니다. 기본값은 EN(영어)입니다.
        4. 다음 연결 유형 중 하나를 선택합니다.

          • 직접(SAP 애플리케이션 서버 사용). 이 기본 유형을 선택하는 경우 SAP 애플리케이션 서버 호스트, SAP 시스템 번호, SAP 라우터 필드에 정보를 입력합니다.
          • 부하 분산(SAP 메시지 서버 사용) 이 유형을 선택하는 경우 SAP 메시지 서버 호스트, SAP 메시지 서버 서비스 또는 포트 번호, SAP 시스템 ID(SID), SAP 로그온 그룹 이름에 정보를 입력합니다.
        5. SAP Table/뷰 이름 필드에 SAP 시스템의 테이블 또는 뷰 이름을 입력합니다.

        6. SAP 사용자 인증 정보 제공: SAP 관리자에게 SAP 로그온 사용자 이름비밀번호를 요청합니다.

        7. JCo 라이브러리 Cloud Storage 경로 필드에 업로드한 SAP JCo 라이브러리 파일이 포함된 Cloud Storage의 SAP Java 커넥터(SAP JCo) 경로를 입력합니다.

        8. SAP의 메타데이터를 기반으로 SAP에서 SAP 데이터 유형을 해당 Cloud Data Fusion 데이터 유형에 매핑하는 스키마를 생성하려면 스키마 가져오기를 클릭합니다. 자세한 내용은 데이터 유형 매핑을 참조하세요.

        9. (선택사항) SAP의 수집 부하를 최적화하려면 다음 필드에 정보를 입력합니다.

          1. 필터 옵션을 사용하면 정의된 값 집합이 있는 열과 같은 선택 조건을 기준으로 레코드를 추출할 수 있습니다. WHERE 절에 OpenSQL 구문의 조건을 정의합니다. 예를 들어 이 쿼리는 Roster 테이블의 모든 행을 반환합니다. 여기서 SchoolID 열에는 SchoolID > 52 값이 포함됩니다.

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            자세한 내용은 지원되는 필터를 참조하세요.

          2. 가져올 행 수 필드에 양의 정수 행을 제공하여 추출된 데이터를 제한할 수 있습니다.

          3. 분할 수 필드에서 파티션을 만들어 데이터 레코드를 동시에 추출할 수 있으므로 성능이 향상됩니다. 분할 수는 SAP 작업 프로세스에 영향을 줄 수 있으므로 신중하게 선택해야 합니다.

          4. 패키지 크기 필드에 단일 SAP 네트워크 호출에서 추출할 레코드 수를 지정합니다. 패키지 크기는 성능 및 사용 가능한 리소스에 영향을 미치므로 신중하게 선택해야 합니다.

      재사용 가능한 연결

      기존 연결을 재사용하려면 다음 단계를 따르세요.

      1. 연결 사용을 사용 설정합니다.
      2. 연결 찾아보기를 클릭합니다.
      3. 연결 이름을 클릭합니다.

      연결이 존재하지 않는 경우 재사용 가능한 연결을 만들려면 다음 단계를 수행합니다.

      1. 연결 추가 > SapTable을 클릭합니다.
      2. SapTable 연결 만들기 페이지가 열리면 연결 이름과 설명을 입력합니다.
      3. SAP 클라이언트 필드에 SAP에 있는 특정 인스턴스 또는 환경의 클라이언트 이름을 입력합니다. SAP 관리자가 클라이언트 이름을 제공할 수 있습니다.
      4. SAP 언어 필드에 SAP 로그온 언어를 입력합니다. 기본값은 EN(영어)입니다.
      5. 다음 연결 유형 중 하나를 선택합니다.

        • 직접(SAP 애플리케이션 서버 사용). 이 기본 유형을 선택하는 경우 SAP 애플리케이션 서버 호스트, SAP 시스템 번호, SAP 라우터 필드에 정보를 입력합니다.
        • 부하 분산(SAP 메시지 서버 사용) 이 유형을 선택하는 경우 SAP 메시지 서버 호스트, SAP 메시지 서버 서비스 또는 포트 번호, SAP 시스템 ID(SID), SAP 로그온 그룹 이름에 정보를 입력합니다.
      6. SAP 사용자 인증 정보 제공: SAP 관리자에게 SAP 로그온 사용자 이름비밀번호를 요청합니다.

      7. JCo 라이브러리 Cloud Storage 경로 필드에 업로드한 SAP JCo 라이브러리 파일이 포함된 Cloud Storage의 SAP Java 커넥터(SAP JCo) 경로를 입력합니다.

      8. (선택사항) 추가 SAP 연결 속성 필드에 SAP JCo 기본값을 재정의해야 하는 키-값 쌍을 입력합니다.

      9. 만들기를 클릭합니다.

속성

속성 매크로 사용 설정 필수 속성 설명
라벨 아니요 데이터 파이프라인의 노드 이름
연결 사용 아니요 아니요 재사용 가능한 연결을 사용합니다. 연결을 사용하는 경우 사용자 인증 정보를 제공할 필요가 없습니다. 자세한 내용은 연결 관리를 참조하세요.
참조 이름 아니요 연결 사용이 사용 설정되지 않은 경우 이 필드가 표시됩니다. 계보에 사용할 연결의 이름입니다.
이름 아니요 연결 사용이 사용 설정되어 있으면 이 필드가 표시됩니다. 재사용 가능한 연결의 이름입니다.
SAP 클라이언트 SAP 시스템의 인스턴스 또는 환경입니다.
스냅샷 만들기 SAP에서 데이터 스냅샷을 사용 설정합니다.
스냅샷을 사용 설정하는 경우:
  • 활성 트랜잭션 테이블 데이터에서 추출
  • 데이터 쿼리가 더 느리고 추출 호출마다 더 많은 메모리를 사용하는 테이블에서 추출

스냅샷을 사용 중지해야 하는 경우: 대량의 대용량 데이터 추출을 동시에 실행합니다. 스냅샷은 SAP에서 버퍼 테이블을 사용하므로 SAP에서 out of memory 문제가 발생할 수 있습니다. 그러나 데이터 추출이 완료되면 버퍼 테이블이 삭제됩니다.
SAP 언어 SAP 사용자 인터페이스와 데이터가 표시되고 처리되는 언어입니다.
연결 유형 아니요 SAP 연결 유형: 직접 또는 부하 분산.
SAP 애플리케이션 서버 호스트 아니요 직접 연결 유형의 경우에만 이 호스트 이름은 SAP 클라이언트(예: SAP 웹 인터페이스, 웹브라우저 또는 모바일 앱)와 기본 데이터베이스를 사용합니다.
SAP 시스템 번호 아니요 직접 연결 유형의 경우에만 이 번호가 각 SAP 시스템에 할당된 고유 식별자입니다. 예를 들면, 00입니다.
SAP 라우터 아니요 직접 연결 유형의 경우에만 SAP 시스템과 외부 클라이언트 또는 파트너 간의 통신을 위한 보안 채널을 제공하는 프록시 서버의 라우터 문자열입니다.
SAP 메시지 서버 호스트 아니요 부하 분산 연결 유형에 한해 호스트의 이름으로, SAP의 여러 애플리케이션 서버 간에 부하 분산을 용이하게 합니다.
SAP 메시지 서버 서비스 또는 포트 번호 아니요 부하 분산 연결 유형의 경우에만 SAP 메시지 서버가 SAP 내의 SAP 클라이언트 및 애플리케이션 서버에서 들어오는 연결을 리슨하는 네트워크 포트입니다.
SAP 시스템 ID(SID) 아니요 부하 분산 연결 유형의 경우에만 각 SAP 시스템에 이 ID가 할당됩니다.
SAP 로그온 그룹 이름 아니요 여러 SAP 애플리케이션 서버의 논리적 그룹 또는 구성의 이름입니다. 기본값은 PUBLIC입니다.
SAP Table/뷰 이름 대소문자를 구분하지 않는 유효한 테이블 또는 뷰 이름으로, 모든 열을 추출할 수 있습니다.
SAP 로그온 사용자 이름 SAP용 사용자 이름
권장: 사용자 이름이 주기적으로 변경되는 경우 매크로를 사용합니다.
SAP 로그온 비밀번호 SAP 비밀번호
권장: 보안 매크로를 사용하세요.
GCP 프로젝트 ID Google Cloud 프로젝트 ID입니다.
SAP JCo 라이브러리 GCS 경로 SAP JCo 라이브러리 파일을 업로드한 Cloud Storage의 경로입니다.
스키마 가져오기 해당 사항 없음 해당 사항 없음 플러그인은 SAP의 메타데이터를 기반으로 SAP에서 스키마를 생성하고, 이는 SAP 데이터 유형을 해당 Cloud Data Fusion 데이터 유형에 매핑합니다. 데이터 유형 매핑을 참조하세요.
추가 SAP 연결 속성 아니요 추가적인 SAP JCo 속성을 설정하여 SAP JCo 기본값을 재정의합니다. 예를 들어 jco.destination.pool_capacity = 10을 설정하면 기본 연결 풀 용량이 재정의됩니다.
필터 아니요 SQL WHERE 절을 사용하여 필터링하는 Open SQL 구문에 지정된 조건입니다. 정의된 값 집합이 있는 열 또는 값 범위가 있는 열과 같은 조건을 기준으로 레코드를 추출합니다.
자세한 내용은 지원되는 필터를 참조하세요.
가져올 행 수 아니요 추출된 레코드 수 제한
  • 양수를 입력하세요.
  • 값이 0이거나 비워 두면 Cloud Data Fusion이 테이블에서 모든 레코드를 추출합니다.
  • 다른 필터 값을 기준으로 선택한 레코드 수보다 큰 양수를 입력하면 Cloud Data Fusion이 선택한 레코드만 추출합니다.
생성할 분할 수 아니요 병렬로 레코드를 추출할 파티션을 만듭니다.
런타임 엔진은 레코드를 추출하는 동안 지정된 수의 파티션(및 SAP 연결)을 만듭니다.
이 값을 늘릴 때는 SAP와의 동시 연결이 증가하므로 주의해야 합니다.
권장: 각 파이프라인에 대한 SAP 연결과 동시에 실행되는 총 파이프라인 수를 계획하세요.
값이 0이거나 비워 두면 Cloud Data Fusion이 사용 가능한 실행자 수, 추출할 레코드, 패키지 크기를 기준으로 적절한 값을 선택합니다.
패키지 크기 아니요 단일 SAP 네트워크 호출에서 추출할 레코드 수입니다. 네트워크 추출이 호출될 때마다 SAP가 메모리에서 버퍼링하는 레코드 수입니다.
이 속성을 설정할 때는 주의하세요.. 데이터를 추출하는 데이터 파이프라인이 여러 개이면 메모리 사용량이 최고치에 이를 수 있고 Out of memory 오류로 인해 실패할 수 있습니다.
  • 양수를 입력하세요.
  • 0이거나 비워 두면 플러그인에서 표준 값 70000 또는 적절하게 계산된 값을 사용합니다.
  • 데이터 파이프라인이 Out of memory 오류로 인해 실패하면 패키지 크기를 줄이거나 SAP 작업 프로세스에 사용할 수 있는 메모리를 늘립니다.

지원되는 필터

다음 필터 조건이 지원됩니다.

비교 연산자가 포함된 필터

비교 연산자를 사용하면 값 간 비교에 따라 보다 복잡한 필터링을 수행할 수 있습니다.

구문
    SELECT * FROM table_name WHERE column_name > value; \
    SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
    
AUDAT GT '20230914'

LIKE 연산자가 포함된 필터

패턴 일치에 LIKE 연산자를 사용합니다. 일치하는 문자를 찾으려면 % 기호를 와일드 카드로 사용합니다.

구문
    SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
    
ERNAM LIKE 'KIRAN%'

IN 연산자가 포함된 필터

IN 연산자를 사용하여 일치시킬 값 목록을 지정합니다.

구문
    SELECT * FROM table_name WHERE column_name \
      IN ('value1', 'value2', 'value3');
    
ERNAM IN ( 'LEE' , 'KIRAN' )

논리 연산자가 포함된 필터

논리 연산자를 사용하여 일치시킬 값 목록을 지정합니다.

구문
    SELECT * FROM table_name WHERE condition1 AND condition2; \
      SELECT * FROM table_name WHERE condition1 OR condition2; \
      SELECT * FROM table_name WHERE NOT condition;
    
예시
  • ( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
  • ( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )

기간을 포함하는 필터

날짜 범위를 사용하여 날짜/시간 열이 특정 날짜 범위 내에 있는 행을 검색합니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
    
AUDAT GE '20230910' AND AUDAT LE '20230914'

날짜 비교가 포함된 필터

날짜 비교를 사용하여 날짜/시간이 사용되는 행을 검색합니다.

구문
    SELECT * FROM table_name WHERE datetime_column > 'target_date';
    
AUDAT GE '20230910' AND AUDAT LE '20230914'

날짜 및 시간 결합 필터링

날짜/시간 열에 날짜와 시간이 모두 포함되어 있으면 그에 따라 필터링할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= 'target_datetime' \
      AND datetime_column <= 'target_datetime';
    
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'

(타임스탬프 형식 : YYYYMMDDHHMMSS)

여러 조건을 논리 연산자로 결합하는 필터

ANDOR 같은 논리 연산자를 사용하여 여러 조건을 충족하는 행을 검색할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' AND column2 > value2) \
      OR (column3 = 'value3' AND column4 < value4);
    
    ( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \
      OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
    

중첩된 조건 결합 필터링

중첩된 방식으로 조건을 결합하여 복잡한 필터를 만들 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \
      AND column4 = 'value4';
    
    ( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \
      AND FMBDAT EQ '20220722'
    

서브 쿼리를 사용하는 필터

서브 쿼리를 사용하여 다른 쿼리의 결과를 기반으로 필터링할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
    
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )

날짜 및 값 조건의 결합 필터링

복잡한 필터로 날짜 기반 조건과 값 기반 조건을 결합할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR column2 = 'value2') \
      AND datetime_column > 'target_datetime';
    
    ( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
    

형식 지정 날짜가 포함된 필터

SAP에서 날짜 및 시간 필드는 데이터베이스 수준에서 항상 - 또는 : 없이 저장됩니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \
      AND datetime_column <= 'YYYY-M
    

지원되지 않음: 함수 및 비교 연산자가 포함된 필터

SAP에서 QUERY의 WHERE 절에 있는 함수는 지원되지 않습니다.

지원되지 않음: 간격이 포함된 필터

SAP에서 NOW() 함수는 지원되지 않습니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= NOW() - INTERVAL X DAY;
    

지원되지 않음: 필터 추출 날짜 구성요소

SAP에서는 오프셋 필터링이 지원되지 않습니다.

    WHERE YEAR+0(4) = 2023
    

데이터 유형 매핑

다음 표에서는 해당 Cloud Data Fusion 유형의 SAP 데이터 유형 목록을 보여줍니다.

SAP 데이터 유형 ABAP 유형 SAP 설명 Cloud Data Fusion 데이터 유형
INT1 (숫자) b 1바이트 정수 int
INT2 (숫자) s 2바이트 정수 int
INT4 (숫자) i 4바이트 정수 int
INT8 (숫자) 8 8바이트 정수 long
DEC (숫자) p BCD 형식의 압축 번호(DEC) decimal
DF16_DEC, DF16_RAW (숫자) a 10진 부동 소수점 8바이트 IEEE 754r double
DF34_DEC, DF34_RAW (숫자) e 10진 부동 소수점 16바이트 IEEE 754r double
FLTP (숫자) f 바이너리 부동 소수점 수 double
CHAR, LCHR (문자) c 문자열 string
SSTRING, GEOM_EWKB (문자) string 문자열 string
STRING (문자) string 문자열 CLOB bytes
NUMC, ACCP (문자) n 숫자 텍스트 string
RAW, LRAW (바이트) x 바이너리 데이터 bytes
RAWSTRING (바이트) xstring 바이트 문자열 BLOB bytes
DATS (날짜/시간) d 날짜 date
TIMS (날짜/시간) t 시간 time
TIMS (날짜/시간) utcl (Utclong), TimeStamp timestamp

사용 사례

두 가지 추출 컨텍스트가 지원됩니다.

  • SAP 데이터베이스 테이블 및 뷰
  • SAP ABAP CDS

각 컨텍스트에서 SAP Table 플러그인은 표준 및 커스텀 데이터베이스 테이블과 뷰를 지원합니다.

제한사항

SAP Table 플러그인에는 다음과 같은 제한사항이 있습니다.

  • 테이블 조인을 지원하지 않습니다.
  • 매개변수가 있는 CDS 뷰를 지원하지 않습니다.
  • 키 필드가 없으면 지원되지 않습니다.
  • 스냅샷 기능이 사용 설정된 경우 패키지 크기가 30,000을 초과하면 파이프라인 오류가 발생할 수 있습니다. 이 패키지 크기는 SAP Table의 열 수에 따라 달라질 수 있습니다. 행 크기(문자 수) * 5 수식을 사용하여 테이블의 최적 패키지 크기를 계산할 수 있습니다.
  • 연결 관리자를 사용하면 최대 1,000개의 SAP Table 이름을 찾아볼 수 있습니다.
  • 싱크 오류와 같은 파이프라인 오류가 발생하면 SAP Table 플러그인은 정리를 위한 커스텀 RFM을 호출하여 추출과 관련된 활성 SAP 측 프로세스를 정리하려고 시도합니다: /GOOG/RFC_READ_TABLE_CLEANUP.

다음 단계