아키텍처 탐색

Objectives

After completing this lesson, you will be able to:
  • 데이터베이스 테이블을 생성합니다.
  • OData UI 서비스의 개발 오브젝트를 생성합니다.

데이터 모델 생성

예제 데이터 모델

이 예제의 데이터 모델은 매우 간단합니다. 항공편 연결 세부사항(항공사, 항공편 번호, 출발 공항 및 목적지 세부사항)이 포함된 단일 데이터베이스 테이블이 있습니다.

노트

이 그림에는 동시성 제어를 관리하기 위해 런타임에 필요한 추가 필드가 포함되어 있지 않습니다. 이 내용은 잠시 후에 살펴보겠습니다.

데이터베이스 테이블 생성

먼저 데이터베이스 테이블을 생성하는 방법을 살펴보겠습니다.

기본 테이블 특성 정의

이제 기본 테이블 특성을 정의하는 방법을 살펴보겠습니다.

테이블 정의 추가

다음 비디오에서는 테이블 정의를 추가하는 방법을 보여줍니다.

기본 제공 ABAP 딕셔너리 유형을 사용하여 테이블 열의 유형을 지정하지 않는 경우, 데이터 요소를 대신 사용하십시오. 데이터 요소는 UUID 또는 항공사 코드와 같은 단일 필드의 유형을 정의하는 ABAP 딕셔너리 오브젝트입니다. 데이터 요소에는 기술적 유형 내역뿐만 아니라 필드 레이블과 같은 의미 정보도 포함됩니다. 데이터 요소를 사용하여 테이블 열의 유형을 정의하면 생성된 사용자 인터페이스에서 필드 레이블을 자동으로 사용할 수 있습니다.

데이터 요소 그림의 데이터 요소는 항공사 필드에 대해 설명합니다. 길이는 3인 문자 필드입니다. 생성된 UI에서 필드 레이블이 자동으로 사용됩니다.

신규 데이터 요소를 생성하려면 파일신규기타 를 선택한 다음 필터 텍스트 필드에 데이터 요소를 입력합니다. 패키지 이름과 데이터 요소 이름을 입력하고 다음 을 선택합니다. 전송 요청을 선택하고 종료 를 선택합니다.

그런 다음 데이터 요소의 데이터 유형을 지정해야 합니다. 이 도메인은 도메인이어야 합니다. 예제는 기존 도메인 /DMO/CITY를 재사용합니다. 두 데이터 요소 모두 동일한 도메인을 사용합니다. 즉, 나중에 누군가가 도메인의 길이를 변경하면 이를 사용하는 모든 데이터 요소에 변경사항이 적용됩니다.

마지막으로, 짧은 필드 레이블, 중간 레이블, 긴 필드 레이블, 열 제목에 사용되는 레이블을 입력합니다. 나중에 Fiori 요소 앱을 생성하면 이 텍스트가 자동으로 사용됩니다.

정의하는 각 테이블에는 기본 키가 있어야 합니다. 테이블 내역의 시작 부분에 있는 일련의 필드로서, 테이블의 각 엔트리를 고유하게 식별합니다.

테이블의 첫 번째 필드(키 정의의 첫 번째 필드 포함)는 클라이언트 필드여야 하며, abap.clnt 데이터 유형이어야 합니다. 또한 예시에서는 고유 키에 UUID를 사용하는 것이 편리합니다. 데이터 요소 sysuuid_x16 을 사용하여 이 필드의 유형을 지정하는 경우, 신규 레코드를 생성할 때 런타임에 UUID가 자동으로 지정되도록 할 수 있습니다.

트레이스 지원을 위해 일부 관리 정보를 데이터(예: 생성 및 최종 변경을 위해 데이터 및 타임스탬프를 생성하거나 변경한 사용자)와 함께 저장하는 것이 좋습니다. 생성하는 데이터베이스 테이블에는 그림에 표시된 필드가 포함되어야 합니다.

노트

이 필드는 나중에 사용할 생성기의 필수 필드입니다. 해당 생성기가 제대로 작동하기 위해 여기에 나열된 데이터 유형을 사용하여 필드도 정의해야 합니다.

특히 fieldslocal_last_changed_atlast_changed_at는 관리 필드만이 아닙니다. ABAP RESTful 어플리케이션 프로그래밍 모델에서는 동시성 제어에도 사용됩니다.

RESTful 어플리케이션은 상태 비저장이므로 배타적 잠금만으로 데이터 일관성을 보장할 수 없습니다. ABAP RESTful 어플리케이션 프로그래밍 모델은 배타적 잠금과 ETag를 함께 사용하여 데이터 불일치를 방지합니다. ETag는 데이터 세트가 업데이트될 때마다 값을 변경하는 필드입니다. ETag 필드의 값을 비교하여 프레임워크는 마지막으로 읽은 이후 데이터 세트가 변경되지 않았는지 확인할 수 있습니다. 마지막 변경의 타임스탬프는 완벽한 ETag 필드를 만듭니다.

ADT에서 데이터베이스 테이블을 활성화하면 해당하는 물리적 테이블이 데이터베이스에 생성됩니다. 이 작업을 완료하면 앱에 필요한 추가 오브젝트를 자동으로 생성할 수 있습니다.

데이터 요소 생성 방법

데이터베이스 테이블 생성 방법

데이터베이스 테이블 복사

이 단원의 연습문제에서는 OData UI 서비스를 생성합니다. 이 UI 서비스는 어플리케이션의 기반을 형성하여 항공편 가격을 변경할 수 있습니다. 먼저 필요한 개발 오브젝트에 대한 전용 패키지를 생성합니다. 그런 다음 데이터베이스 테이블을 복사하고 데이터로 채웁니다.

템플릿:

  • /LRN/S4D400_APT(데이터베이스 테이블)
  • /LRN/CL_S4D400_APT_COPY(전역 클래스)

솔루션:

  • /LRN/S4D400AFLGT(데이터베이스 테이블)
  • /LRN/CL_S4D400_APS_COPY(전역 클래스)

태스크 1: 하위 패키지 생성

자체 패키지 ZS4D400_## (## = 그룹 번호)에 신규 하위 패키지를 생성합니다.

하위 패키지에는 다음과 같은 특성이 있어야 합니다.

특성
이름ZS4D400_##_RAP, ##은 그룹 번호
설명OData UI 서비스의 오브젝트
즐겨찾기 패키지에 추가선택
상위 패키지ZS4D400_## (## = 그룹 번호)

단계

  1. 자체 패키지 ZS4D400_## (## = 그룹 번호)에 하위 패키지를 생성합니다.

    1. 프로젝트 탐색기 에서 ABAP 패키지 ZS4D400_## 을 마우스 오른쪽 버튼으로 클릭하고 신규ABAP 패키지 를 선택합니다.

    2. 패키지 이름 ZS4D400_##_RAP 를 입력합니다. 여기서 ##은 그룹 번호입니다.

    3. 내역으로 OData UI 서비스의 오브젝트 를 입력합니다.

    4. 즐겨찾기 패키지에 추가 체크박스를 선택합니다.

    5. Superpackage 필드에 이미 존재하는 패키지의 이름이 포함되어 있는지 확인합니다.

    6. 다음을 선택합니다.

    7. 소프트웨어 컴포넌트ZSTUDENTS 로 설정되어 있는지 확인합니다.

    8. 다음을 선택합니다.

    9. 전송 요청을 확인하고 Finish를 선택합니다.

태스크 2: 데이터베이스 테이블 복사

신규 패키지에서 데이터베이스 테이블 /LRN/S4D400_APT의 복사본을 생성합니다. 신규 데이터베이스 테이블의 이름을 Z##FLIGHT 로 지정합니다. 여기서 ##은 그룹 번호입니다.

단계

  1. 데이터베이스 테이블 /LRN/S4D400_APT 를 고유 패키지 ZS4D400_##_RAP 에 복사합니다. 여기서 ##은 그룹 번호입니다.

    1. 데이터베이스 테이블 /LRN/S4D400_APT 의 정의를 엽니다.

    2. 프로젝트 탐색기 뷰를 편집기와 연결합니다.

    3. 프로젝트 탐색기 뷰에서 데이터베이스 테이블 /LRN/S4D400_APT 를 마우스 오른쪽 버튼으로 클릭하여 단축 메뉴를 엽니다.

    4. 단축 메뉴에서 Duplicate....를 선택합니다.

    5. 패키지 필드에 패키지 ZS4D400_##_RAP 의 이름을 입력합니다. 이름 필드에 Z##FLIGHT 를 입력합니다. 여기서 ##은 그룹 번호입니다.

    6. 다음을 선택합니다.

    7. 전송 요청을 확인하고 Finish를 선택합니다.

  2. 데이터베이스 테이블 정의를 활성화합니다.

    1. Ctrl + F3 을 눌러 개발 오브젝트를 활성화합니다.

태스크 3: 데이터베이스 테이블 입력

ZS4D400_## 패키지에서 전역 클래스 /LRN/CL_S4D400_APT_COPY의 복사본(권장 이름: ZCL_##_COPY)을 생성합니다. 이 복사본에서 상수 table_name 의 값을 자신의 데이터베이스 테이블 이름으로 변경합니다. 그런 다음 콘솔 앱으로 클래스를 실행합니다. 그러면 데이터베이스 테이블에 데이터가 채워집니다.

단계

  1. 클래스 /LRN/CL_S4D400_APT_COPY를 자체 패키지 ZS4D400_##의 클래스에 복사합니다.

    1. 전역 클래스 /LRN/CL_S4D400_APT_COPY의 소스 코드를 엽니다.

    2. 필요한 경우 프로젝트 탐색기 뷰를 편집기와 연결합니다.

    3. 프로젝트 탐색기 뷰에서 클래스 /LRN/CL_S4D400_APT_COPY 를 마우스 오른쪽 버튼으로 클릭하여 단축 메뉴를 엽니다.

    4. 단축 메뉴에서 Duplicate....를 선택합니다.

    5. 패키지 필드에 ZS4D400_## 을 입력합니다. 이름 필드에 ZCL_##_COPY 를 입력합니다. 여기서 ##은 그룹 번호입니다.

    6. 다음을 선택합니다.

    7. 전송 요청을 확인하고 Finish를 선택합니다.

  2. 복사본에서 IF_OO_ADT_CLASSRUN~MAIN 메소드의 소스 코드를 조정합니다. 상수 table_name 의 값을 자신의 데이터베이스 테이블 이름으로 변경합니다.

    1. 상수 값이 데이터베이스 테이블의 이름과 같아야 합니다.

  3. 클래스를 활성화하고 콘솔 앱으로 실행합니다.

    1. Ctrl + F3 을 눌러 클래스를 활성화합니다.

    2. F9 를 눌러 클래스를 실행합니다.

    3. Console 뷰를 확인합니다. 마지막 출력은 <...>에 데이터가 입력되어 있어야 합니다. <...> 출력이 올바른 유형의 테이블이 아닌 경우 해당 이름의 데이터베이스 테이블이 존재하는지, 활성 상태이고, 템플릿 테이블의 정확한 복사본인지 확인하십시오.

오브젝트 생성기

추가 오브젝트 생성

방금 데이터를 저장할 데이터베이스 테이블을 정의했지만, 생성할 앱에는 이 테이블뿐만 아니라 더 많은 오브젝트가 필요합니다. ADT의 마법사를 사용하여 이러한 오브젝트를 생성할 수 있습니다.

생성된 오브젝트에는 작업 앱에 생성, 읽기, 업데이트, 삭제 기능을 제공하는 데 필요한 모든 정보가 포함되어 있습니다. 나중에 이러한 오브젝트 중 일부를 조정 및 확장하여 사용자 인터페이스의 모양을 변경하고 일부 점검 및 계산을 구현할 예정입니다.

이 동영상에서 추가 오브젝트를 생성하는 방법을 알아보십시오.

추가 오브젝트 생성 방법

OData UI 서비스 미리보기

서비스 게시 및 미리보기

데이터베이스 테이블과 오브젝트 생성기를 사용하여 작동하는 Fiori 요소 앱을 가져오는 데 필요한 모든 오브젝트를 생성할 수 있습니다. 유일한 수동 단계는 서비스를 게시하는 것입니다.

앱을 테스트하려면 먼저 서비스를 게시해야 합니다. 이렇게 하려면 서비스 바인딩을 열고 게시 를 선택합니다. 이렇게 하면 생성한 엔티티(이 경우 연결)가 엔티티 리스트에 표시됩니다. 앱에 표시하고 미리보기 를 선택하여 앱을 테스트합니다.

앱 테스트

미리보기 를 선택하면 브라우저 윈도우가 열리고 신규 항공편 연결을 생성할 수 있습니다. 하지만 이 앱은 유형 점검 이외의 점검은 구현하지 않습니다(예: 항공편 번호 필드에는 숫자만 허용됨).

OData UI 서비스 생성 및 미리보기

이번 연습문제에서는 OData UI 서비스의 저장소 오브젝트를 생성하고 서비스를 SAP Fiori 앱으로 미리 봅니다.

템플릿:

  • 없음

솔루션:

  • /LRN/S4D400_EXERCISE_RAP 패키지에 생성된 개발 오브젝트

노트

사용된 생성기의 구현은 변경될 수 있습니다. 따라서 연습문제에서 생성한 개발 오브젝트는 솔루션의 개발 오브젝트와 다를 수 있습니다.

선행조건

이전 연습문제를 완료했습니다. 데이터베이스 테이블 Z##FLIGHT(## = 그룹 번호)를 생성하고 데이터베이스 테이블에 데이터가 포함되어 있습니다.

태스크 1: 생성기 사용

ABAP RESTful 어플리케이션 프로그래밍 모델OData UI 서비스 생성기를 사용하여 하위 패키지 ZS4D400_##_RAP 에 필요한 개발 오브젝트를 생성합니다. 이렇게 하려면 마법사에서 다음 값 ​​을 지정합니다.

필드
일반참조 오브젝트Z##FLIGHT
일반프로젝트 이름<비어 있음>
일반아티팩트 접두부<비어 있음>
일반아티팩트 접미부<비어 있음>
  
비즈니스 오브젝트데이터 모델CDS 엔티티 이름ZR_##항공편
비즈니스 오브젝트데이터 모델CDS 엔티티 별칭Flight
비즈니스 오브젝트동작구현 클래스ZBP_R_##FLIGHT
비즈니스 오브젝트동작드래프트 테이블 이름Z##FLIGHT_D
  
서비스 프로젝션서비스 프로젝션 엔티티CDS 엔티티 이름ZC_##항공편
서비스 프로젝션서비스 프로젝션 동작동작 구현 클래스ZBP_C_##FLIGHT
  
비즈니스 서비스서비스 정의서비스 정의 이름ZUI_##FLIGHT_O4
비즈니스 서비스서비스 바인딩서비스 바인딩 이름ZUI_##FLIGHT_O4
비즈니스 서비스서비스 바인딩바인딩 유형OData V4 - UI

단계

  1. 데이터베이스 테이블 Z##FLIGHT (## = 그룹 번호)에 대한 오브젝트 생성기를 시작합니다.

    1. Project Explorer 에서 Favorite PackagesZS4D400_##ZS4D400_##_RAPDictionaryDatabase Tables (## = 그룹 번호) 경로를 펼칩니다. 또는 데이터베이스 테이블 Z##FLIGHT 의 정의를 열고 필요한 경우 프로젝트 탐색기 뷰를 편집기와 연결합니다.

    2. 프로젝트 탐색기 뷰에서 데이터베이스 테이블 Z##FLIGHT 를 마우스 오른쪽 버튼으로 클릭하여 단축 메뉴를 엽니다.

    3. 단축 메뉴에서 Generate ABAP Repository Objects....를 선택합니다.

  2. 대화 상자에서 생성기를 선택합니다.

    1. 대화 상자 왼쪽에서 ABAP RESTful 어플리케이션 프로그래밍 모델OData UI 서비스 를 선택합니다.

    2. 다음 을 선택하여 다음 단계로 이동합니다.

  3. 하위 패키지 ZS4D400_##_RAP 에 개발 오브젝트가 생성되었는지 확인합니다.

    1. 윈도우의 상단에 패키지 입력 이 표시되면 패키지 필드에 ZS4D400_##_RAP 가 포함되어 있는지 확인합니다.

    2. 다음 을 선택하여 다음 단계로 이동합니다.

  4. 표에 나와 있는 데이터로 생성기를 구성합니다.

    주의

    모든 데이터를 입력하기 전에 다음 을 선택하지 마십시오.
    1. 대화 상자의 왼쪽에서 항목을 하나씩 선택하고 오른쪽 창에서 해당 필드를 입력합니다. 필요한 값 ​​이 위 테이블에 나와 있습니다.

    2. 모든 데이터를 입력한 후 다음 을 선택합니다.

  5. 생성될 저장소 오브젝트를 확인하고 오브젝트를 생성합니다.

    노트

    인내심을 가지세요. 오브젝트 생성에는 약간의 시간이 소요됩니다. 생성 프로세스가 끝나면 생성된 서비스 바인딩을 편집기에서 열 것인지 묻는 대화 상자가 나타납니다. 열기 를 클릭하여 이 대화 상자를 확인합니다.
    1. 표시된 저장소 오브젝트의 리스트를 확인합니다.

    2. 모든 이름을 올바르게 입력했으면 다음 을 선택합니다.

    3. 전송 요청을 확인하고 Finish를 선택합니다.

    4. 생성 프로세스 종료 시 열기 를 선택하여 다이얼로그 윈도우를 확인합니다.

  6. 프로젝트 탐색기에서 생성기 출력을 분석합니다.

    1. Project Explorer 에서 하위 패키지 ZS4D400_##_RAP 에 커서를 놓고 F5 를 눌러 패키지 컨텐트를 다시 로드합니다.

    2. 생성된 개발 오브젝트의 이름을 보려면 패키지의 모든 하위 노드를 펼칩니다.

태스크 2: 앱 미리보기

OData UI 서비스를 게시하고 결과를 SAP Fiori 앱으로 미리 봅니다.

단계

  1. 로컬 서비스 엔드포인트를 게시합니다.

    노트

    서비스를 게시하는 데 시간이 걸릴 수 있습니다.
    1. 생성된 ZUI_##FLIGHT_O4 서비스 바인딩을 아직 열지 않은 경우 엽니다.

    2. 서비스 바인딩이 비활성 상태이면 Ctrl + F3 을 눌러 활성화합니다.

    3. 서비스를 게시하려면 편집기 중앙에 있는 게시 를 선택합니다.

  2. OData UI 서비스를 SAP Fiori 앱으로 미리 봅니다.

    1. 오른쪽의 서비스 버전 세부사항 섹션에서 항공편 을 선택한 다음 미리보기....

      결과

      SAP Fiori 어플리케이션이 있는 브라우저 윈도우가 열립니다. 메시지가 표시되면 ABAP 시스템 사용자로 어플리케이션에 로그온합니다.
  3. 항공편 리스트를 조회합니다.

    1. 실행 을 선택하여 데이터베이스 테이블 Z##FLIGHT 에 저장된 항공편 리스트를 조회합니다.

  4. 항공편 중 하나에 대해 세부사항 뷰로 이동합니다.

    1. 리스트 엔트리 중 하나를 선택하여 해당 항공편의 세부사항이 있는 오브젝트 페이지로 이동합니다.

  5. 이 항공편의 경우 변경 모드로 전환합니다.

    1. 편집을 선택합니다.

  6. 항공편 가격 필드에 텍스트를 입력합니다(예: a).

  7. 항공편 가격에 마이너스 값을 입력하십시오.