z2soo's Blog

BOPF(5) - BOPF Configuration Tool 본문

SAP/TM Module

BOPF(5) - BOPF Configuration Tool

z2soo 2022. 2. 17. 11:24
반응형

Business object

TM에서 주로 사용되는 TOR business object를 가지고 보다 상세한 설명을 해보도록 하겠다.

 

 

Business object는 개발을 시작하면 일반적으로 현실 업무에 사용되는 instance 별로 데이터 베이스에 객체를 만들게 된다. 좌측 트리 구조를 보면, 해당 business object에 대한 node가 어떤 것이 있는지 확인 가능하다.

  • Node structure
    노드를 트리구조로 보임
  • Node element
    어떤 노드가 있는지 리스트로 보임
  • Group
    business object를 save, modification 하는 시점에 적용되는 validation을 모은 것

우측을 보면 해당 business object, /SCMTMS/TOR 에 대한 정보를 확인할 수 있다.

 

 

  • Business object model generated
    다른 데이터 element framework를 이용해서 node를 생성할 때 체크한다. TM에서는 BO를 직접 생성하기 때문에 사용하지 않는다.
  • Business object can be enhanced
    Enhancement개념으로 타 object로부터 inherit 가능 여부를 의미한다. 이 세팅 안에서 적용되는 BOPF는 standard enhancement보다 더 나아가서 BO를 enhancement하는 것 외에도 신규 function 개발 및 기존 object 재정의를 가능하게 한다. Enhancement BO는 뒤에서 다시 상세하게 다루겠지만, standard BO와 다르게 이름을 z/y로 시작한다.
  • Business object has authorization checks
    BOPF를 이용하면 다양한 level에서 권한 체크가 가능하다. items, root, different node 등 사용자가 어떤 데이터 모델에 엑세스 및 수정할 수 있는지 권한을 체크할 수 있다.
  • Business object is Enter. search enabled
    Business client에 검색 기능을 활용할 수 있게 해주는 기능이다.
  • Business object is abstract
    인스턴스(document)를 생성하기 위해 사용되는 BO가 아니다. 대신, 여러 BO들의 공통된 기능을 하나로 묶는 역할을 한다. 일종의 super class 역할을 하면서 inherit 하는 개념이다.
  • Business object is final
    해당 business object를 타 BO가 물려받지 못하게 강제하는 역할을 한다.
  • Business object is GenIL enabled
  • TM에서 사용되는 것을 본 적이 없어 설명 생략

 

 

  • Root node
    어떤 노드가 root인지 기술하는 것으로 root 외 다른 이름으로 변경하는 것은 권장하지는 않는다. 특히 root 외의 다른 노드 이름을 root로 칭하는것은 시스템에 혼란을 줄 수 있다. BO에는 하나의 root만 존재하며, BO 생성시 자동적으로 생성된다.
  • Buffer
    select 된 데이터를 일시적으로 모아두는 메모리
  • Buffer class
    다수의 데이터의 변경 사항에 대한 정보가 저장된 클래스
  • Buffer dispatcher
    참고로 TM의 buffer dispatcher는 standard에서 function, method를 inherit 하여 enhance 시킨 것

 

그렇다면 buffer, buffer class, buffer dispatcher의 역할은 무엇일까?

Applicaiton을 시작으로 데이터가 일정하게 흐른다. Frontend에서 데이터베이스로 데이터를 요청한다. 데이터베이스에서 데이터가 select 되고 나면, 그 데이터를 넣어두는 곳을 buffer로 이해하자. 보통은 node 별 하나의 buffer를 가진다. 이 경우, 향후 동일한 데이터를 select 할 때, 다시 데이터베이스에 요청하지 않아도 되고, 따라서 시스템의 performance 또한 보장할 수 있게 된다.

 

데이터 여러 건을 수정하고 수정 사항을 rollback 해야 하는 상황을 가정해보자.

이 때, buffer class는 modification에 대해 그 상태를 저장을 한다. 예를 들어 처음은 state1, 두 번째는 state 2 … etc. 이러한 buffer class 덕분에 현재와 이전 상태 비교시 어떤 데이터가 어떻게 변경되었는지 인지 가능하게 된다.

 

그래서 buffer, buffer class, buffer dispatcher를 이용하면 buffer의 상태 관리, 데이터의 관리가 가능하다. 각 노드는 노드 별 buffer class가 있고, 하나의 business object는 buffer class를 관리하는 하나의 buffer dispatcher를 가진다.

아래는 TM의 buffer dispatcher 로써 파란색은 inherit 되어진 메소드, 검정색은 재정의한 메소드이다.

 

 

Node

해당 business object의 노드에 대해 알아보자. 우선, 동일한 business object 내에서 노드명은 중복될 수 없다.

 

 

노드 설정에서 노드의 타입 및 체크 사항은 다음과 같다.

 

 

  • Standard node
    특정한 목적의 노드(lock, property… 등 값 가지는 경우)가 아닌 대부분의 경우 해당 노드에 속한다.
  • Locking node
    모든 standard node에는 locking handling을 위한 sub node가 존재하며, lock 값을 저장한다.
  • Property node
    수정 가능한지의 여부 즉, property 값을 저장한다.
  • Standard node Cat.
    해당 노드가 루트 노드인지 아닌지를 정한다.
  • Node can be loaded seperately
    명시적으로 request 할 때만 node를 로드하거나 아니면 root node를 로드할 때 전부 로드할지를 정한다.
  • Node can be loacked seperately
    parent node가 lock되었을 때, child node도 lock 하는지 여부를 정한다.
  • Transient node
    DB에 저장될 필요 없는 temporary 계산 등에 사용된다. 이 노드는 runtime 시에만 활성화 된다.
  • Subtree properties used
    subtree node의 properties를 정의하는 경우, parents node 변경시 child node는 어떻게 할지 등에 대한 정의이나 잘 사용되지는 않는다.
  • Node can be enhanced
  • 주로 체크한다. 다른 사람에 의해 해당 노드가 enhance될 수 있는지 여부를 정하며, 체크되지 않으면 BO enhancement로 해당 node를 enhance 할 수 없다.

 

해당 노드의 데이터 모델 설정은 다음과 같다.

 

 

  • Data structure
    해당 노드의 모든 attribute를 정의한다. 이는 DB structure와 유사하나 DB key, client number가 없다는 차이점이 있다. 각 노드는 persistent fields를 가진 internal data structure를 가진다.
  • Transient structure
    해당 노드의 transient fields를 포함한 data structure이다. (transient fields는 DB에 값이 저장되지 않고 buffer에만 존재하는 필드)
  • Combined structure
    framework에 의해 만들어지는 structure로써 추가적인 technical key를 가진다.
  • Combined table type
    노드 인스턴스의 데이터를 저장하는 테이블 형태

 

반응형

'SAP > TM Module' 카테고리의 다른 글

BOPF(7) - BOPF Test tool  (0) 2022.02.17
BOPF(6) - Core component & Transaction  (0) 2022.02.17
BOPF(4) - Transaction Code BOPF  (0) 2022.02.17
BOPF(3) - BOPF와 Transportation Management Module  (0) 2022.02.17
BOPF(2) - 구성요소  (0) 2022.02.17
Comments