[SAP] DB 연결, T-code DBCO (DB Connect) 정리

✅ SAP에서 DBCO를 통한 DB Connection 정리

DBCO를 사용하려면 외부 DB 권한이 필요

  • 외부 DB 계정 권한 없으면 SELECT/UPDATE 불가
  • DB / 방화벽 / 네트워크 접근 허용 필요

➡ SAP 차원에서는 DB 접속만 제공하며, 권한은 외부 DB 책임


1. DBCO(DB Connect)의 기능 

  • DBCO는 SAP ABAP AS(Application Server)에서 외부 데이터베이스로 접속하기 위한 DB Connection을 관리하는 트랜잭션이다.
  • SAP에서 제공하는 표준 기능이며 SAP Note/Help 문서에 명시된 기능이다.
  • DBCO에서 생성한 커넥션은 ABAP Open SQL 또는 Native SQL에서 사용 가능하다.

➡ 즉, SAP에서 DBCO는 “SAP → 외부 DB로 접속하는 링크” 기능을 제공하지만
Oracle의 DBLINK처럼 DB 레벨에서 동작하는 기능은 아니다.
→ ABAP 레이어의 Connection이다.


2. DBCO로 연결 가능한 DB

SAP 공식 문서 기준, 아래 DBMS와 연결 설정이 가능하다.

  • Oracle
  • MSSQL
  • SAP HANA
  • IBM DB2
  • MaxDB
  • 기타 SAP 지원 DB

➡ 단, JDBC 드라이버가 필요할 수 있는 DB는 BASIS 설치가 필요하다.


3. DBCO로 외부 DB 연결을 만들 때 필요한 정보

DBCO에서 등록 시 SAP에서 요구하는 항목은 다음 6개뿐이다:

필드 설명
CON_NAME 커넥션 이름
DBMS DBMS 유형
User 외부 DB 사용자
Password 외부 DB 비밀번호
Server 연결 문자열 사용 시 비워둠 가능
Connect string JDBC/Native 접속 문자열

4. ABPB 에서 DBCO 연결 예제

✔ ABAP Open SQL 문법

SELECT * 
  FROM z_table
  CONNECTION ('MYCONN')
  INTO TABLE @DATA(result).
 

✔ Native SQL 문법

EXEC SQL.
  CONNECT TO 'MYCONN'
ENDEXEC.

EXEC SQL.
  SELECT * FROM ext_table
ENDEXEC.
 

✔ Native SQL Error 처리 Rollback

TRY.
    EXEC SQL.
      INSERT INTO emp VALUES ('A')
    ENDEXEC.
  CATCH cx_sy_native_sql_error INTO DATA(lx_sql).
    ROLLBACK WORK.
    " 오라클/외부 DB 오류 메시지 확인
    MESSAGE lx_sql->get_text( ) TYPE 'E'.
ENDTRY.

➡  CX_SY_NATIVE_SQL_ERROR 발생해도 자동 ROLLBACK은 절대 수행되지 않으므로 ROLLBACK 처리