Package example in ABAP

20100512_package_1
먼저 TEST_FRAMEWORK.ZCL_PRODUCT를 상속받는 TEST_IDCARD.ZCL_IDCARD를 컴파일하면 서로 다른 Package로 인한 경고를 받게 된다.

  1. 일단 TEST_IDCARD의 억세스를 가능하게 하기 위해 TEST_FRAMEWORK 쪽에서 인터페이스를 만들어주어야 한다.
    ZPIF_TEST_FRAMEWORK란 Package Interface를 만들어주고 대외적으로 오픈할 object – 여기서는 ZCL_PRODUCT와 ZCL_FACTORY – 를 추가해준다.
  2. 이때 Derive subclasses 부분도 ‘Allow Usage’ 체크를 해주어야 한다.
  3. 20100512_package_2

  4. TEST_IDCARD의 DCL(Dependency Control List)를 연다. (SE80로 가서 해당 class를 더블클릭하면 관련 탭이 보인다) 여기에 앞서 생성한 Package Interface를 추가한다.

다음으로, TEST_FRAMEWORK와 TEST_IDCARD의 상위 Package인 TEST_FACTORY_PATTERN 아래의 리포트 ZP_FACTORY_METHOD가 하위 Package들의 object를 억세스하게 하기 위해 아래와 같은 조치가 필요하다.

  1. ZPIF_TEST_FACTORY_METHOD라는 상위 Package의 Package Interface를 만든다. 여기에는 아무 것도 추가할 필요 없다. (어쨌건 인터페이스는 필요하다)
  2. 앞서 TEST_FRAMEWORK의 경우와 같이 TEST_IDCARD에서도 외부 억세스를 위한 인터페이스를 만들어야 한다.
    이 Package에 속한 ZCL_IDCARD와 ZCL_IDCARD_FACTORY를 인터페이스에 추가하면 자동적으로 그 부모 class의 object도 추가가 된다.

20100512_package_3

여기까지.
써놓고 보니 어지러워보이긴 하지만 개념 자체는 단순하다. 그래도 Java의 Package 컨셉이 훨씬 깔끔한 건 사실이다.

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

This site uses Akismet to reduce spam. Learn how your comment data is processed.