반응형

    이전 포스팅에서 유지보수 뷰를 생성하는 방법을 살펴보았습니다. 이번 포스팅에서는 Table Maintenance Generator를이용해 Table Maintenance Dialog를 생성하는 방법을 살펴보겠습니다.

     

    SAP에서 제공하는 유지보수 프로그램을 자동으로 생성하기 위해서 반드시 유지보수 뷰가 필요한 것은 아닙니다.Table or 유지보수 뷰에 모두 유지보수 프로그램을 만들 수 있습니다.

     

    이전 포스팅에서 만든 Table ZTMPT0003에 테스트를 위해 아래의 필드를 추가하고 유지보수 프로그램을 만들어 보겠습니다. 

    ERNAM : 입력인
    ERDAT : 입력일
    ERTIM : 입력시간

     

    1) Table Maintenance Generator 속성

    SE80에서 ZTMPT0003 테이블 조회후 수정 모드로 변경하고 Utilities -> Table Maintenance Generator를 실행합니다.

    간단하게 주요 항목을 살펴보자

     

    i) Authorization Group :

    일종의 테이블에 데이타를 넣는 프로그램을 짜는 것이므로 권한 그룹을 지정하여 권한 체크가 가능합니다. 권한 오브젝트와 그룹이 필요하다면 BC에게 문의해보자.

    보통은 권한그룹을 할당하지 않는 &NC& 값을 선택하고, 유지보수 프로그램 또한 프로그램이니 T-CODE가 할당이 가능하고 T-CODE에 권한을 주는 것으로 권한 관리를 하는 것이 일반적인다.

     

    ii) Function Group :

    SAP 개발 시 공통으로 쓰이는 기능을 Function으로 만들어 사용한다. 유지보수 프로그램의 경우 일반적인 프로그램이 아닌 Function으로 개발되게 된다. Function은 펑션 그룹에 할당되어야 하므로 어떤 Function Group에 자동으로 프로그램을 생성할지 Function Group명을 지정하는 필드이다.

     

    자동으로 생성되는 소스코드가 방대하므로 유지보수 프로그램용으로 사용할 Function Group을 따로 분리하여 사용하는 게 좋다. 사용자가 생성하는 Function은 다른 Function Group을 이용하자.

     

    Function Group은 일종의 운명 공동체이다. 소스를 공유하기 때문에 이안의 펑션 중 하나만 오류가 있어 작동을 안 하면 Function Group안 모든 펑션이 작동하지 않는다. 신규 프로젝트를 수행한다면 기존의 Function Group을 사용하는 것보다는 새로 Function Group을 만들어 분리 사용하는 것이 잘 돌아가고 있는 기존 업무에 영향을 미치지 않는 현명함이 될 수 있다.

     

    iii) Maintenance type :

    유지보수 프로그램의 화면을 한 단계로 가져갈지 두 단계로 가져갈지 정할 수 있다.

    One Step : 리스트 화면 상태에서 입력 수정을 하는 방법으로 마치 Excel 편집과 같다.

    Two Step : 리스트 화면과 별도로 입력을 위한 화면이 하나 더 만들어지며 필드가 Edit box형태로 제공된다. 

     

    One Step 생성 시 입력화면 예시.

    Two Step 생성 시 입력화면 예시.

    iv) Recording routine:

    간혹 마스터 데이터를 개발기에서 입력하면 QA, 운영까지 한 번에 반영되면 좋겠다는 생각을 한다. 물론 이는 극히 조심해야 할 사항이다. 테스트하겠다고 엉망으로 넣은 개발기 데이터가 운영기에 반영되어 있다는 생각은 하기도 싫다. 암튼

     

    이렇게 테이블 유지보수 프로그램을 통해 입력한 데이터를 CTS를 통해 전송하고 싶을 때 Standard recording routine을 선택하면 데이터 저장 시 CTS생성을 통해 연관시스템으로 전송이 가능하다. 기본값은 그렇지 않다 이다.

     

    2) 유지보수 Dialog 생성

     

    2-1) SE80에서 ZTMPT0003 테이블 조회 후 수정 모드로 변경하고 Utilities -> Table Maintenance Generator를 실행 후 아래의 파라미터 값을 넣는다.

     

    Authorization Group : &NC&

    Function group        : ZTMPG0001

    Maintenance type     : one step

     

    2-2)  상단의 Find Scr. Number(s) (화면번호 찾기) 버튼을 눌러 화면번호를 결정한다.

    화면번호 찾기 버튼을 누르면 화면번호를 결정하는 방법을 결정하는 radio button들이 나타난다.

    데이터를 입력하는 화면을 자동으로 만들어 주기 전에 원하는 화면번호 선택하는 옵션을 보여준다.

    물론 Maint. Screen No. 에 손으로 수기로 입력을 하여도 상관없다. 하지만 이미 사용하고 있는 화면번호와 겹쳐서 기존 프로그램이 날아가는 불상사가 없도록 조심해야 한다.

     

    첫 번째 선택은 빈 번호 중 가장 빠른 번호를 제안해준다. 두 번째 옵션은 빈 번호범위를 보여준다. 세 번째는 사용되었거나 보호된 번호를 보여주어 피할 수 있게 해 준다. 수기입력이 꼭 필요치 않다면 첫 번째를 선택하여 사용하자. 번호가 중요한 요소가 아니므로 큰 힘을 들일 필요는 없겠다.

     

    2-3) 파라미터 설정이 끝났다면 화면 상단 왼쪽의 Create 버튼을 누른다.

    CTS생성 대화 상자를 입력하면 유지보수 Dialog가 생성되었다. SM30으로 생성된 화면을 확인하면 되겠다.

     

    3) 유지보수 Dialog 프로그램의 구조

    SE80에서 해당 Function Group을 조회해보자.

     

     

    난 클릭 몇 번으로 뭔가 했지만 엄청 많은 소스가 자동으로 생성되어 있다. 펑션 그룹의 명칭이 Extended Table Maintenance (Generated) 라면 유지보수 프로그램이 있는 곳이다 알 수 있다.

     

    우리가 생성한 화면번호 0001로 화면이 생성되어 있는 것 또한 볼 수 있다.

     

    이렇게 소스가 보인다면 화면부터 소스까지 모두 수정이 가능하다는 얘기다 

     

    3-1) 화면 필드의 수정

    기본적으로 모든 필드는 Edit가 가능하게 열려있습니다. 데이터를 입력하는 생성인, 생성일, 생성시간 필드는 읽기 전용으로 바꾸고 자동으로 값들이 들어가게 수정을 해보겠습니다.

    화면을 선택하고 상단의 Layout 버튼을 누르면 Screen Painter 화면이 호출됩니다. 

    원하는 필드행을 더블클릭하여 필드 속성 창을 호출 후 Attribute -> Program 탭 -> Input Field 체크를 해제하고 

    저장합니다. 3개의 필드 모두 Output 만 가능하도록 변경해 줍니다. 

    그런 후 활성화하고 다시 SM30으로 조회해보면 3개의 필드가 읽기 전용으로 변경되어 있습니다.

    M-type 프로그램을 작성할 때 자세히 살펴보겠지만 칼럼의 넓이, 명칭 등 여러 가지 화면 요소를 Screen Painter로 변경 가능하고 이 속성은 Function Group에서 Screen 번호를 선택하고 속성에서도 변경이 가능합니다.

    3-2) 유지보수 Dialog 이벤트 설정

    Table Maintenance Generator를 다시 실행 후 Environment-> Modifiaction->Events 메뉴를 눌러보자.

    Event 필드에서 Possible Entry를 호출해 보면 사용할 수 있는 이벤트의 목록이 나타난다.

    이벤트는 데이터를 입력하는 여러 시점에 사용자가 데이터를 가공할수 있는 기회를 제공합니다. 그 중 자주사용하는 몇가지를 설펴보겠습니다.

    데이타를 입력 후 엔터를 치면 자동으로 생성일, 생성인, 생성 기간을 시스템에서 받아와 완성하고 싶다면

    21번 이벤트를 주로 사용합니다.

     

    21번 이벤트 등록 -> 이벤트 발생 시 수행될 Form명을 지정 -> 이벤트 발생 시 수행될 Form문을 Include 하고 코딩

    하는 순서로 이벤트를 구현해 보겠습니다.

     

    이벤트 21, Form 명을 FILL_ZTMPT0003_21을 넣고 편집기 칼럼의 아이콘을 누릅니다.

     

    Form문을 구현할 Include파일명이 나타나고 확인을 누르면 Function group에 Include 파일을 자동 추가하고 코딩이 가능한 상태로 화면에 보입니다.

     

    여기에 위에서 지정한 FILL_ZTMPT0003_21로 Form문을 구현합니다.

    저는 include문 명을 테이블명과 동일하여 이 include문이 어느 테이블의 이벤트를 구현한 것인지 알기 쉽게 사용합니다.

    시스템의 사용자, 입력일, 입력시간을 자동으로 입력하는 코딩을 추가하고 활성화합니다.

    데이터를 입력하고 엔터를 치면 자동으로 필드 값이 채워짐을 알 수 있습니다.

    어떤 필드의 값을 채우는데 꼭 21번 이벤트를 사용하는 것은 아닙니다.

     

    이러한 이벤트로 많이 사용하는 것은 아래와 같으며 이벤트의 테스트는 위와 같이 이벤트 코딩을 넣고 자신이 원하는 값이 반영되는 시점을 찾아서 사용하는 것이 현명하리라 봅니다. 

     

    01 : 데이터베이스에 데이터를 저장하기 전
    02 : 데이터베이스에 데이터를 저장한 후
    03 : 조회한 데이타를 삭제하기 전
    04 : 조회한 데이타를 삭제한 후
    05 : 신규 엔트리 생성

    21 : 숨은 필드 채우기

     

    4) 유지보수 Dialog T-CODE생성.

     

    SE80에서 Transaction 코드 생성을 선택합니다. T-CODE종류 중에 5번째 TCODE With parameters를 선택합니다.

     

    Transaction은 해당 파라미터로 호출할 프로그램을 넣습니다. 유지보수 Dialog를 조회하는 SM30을 넣습니다.

    Skip initial screen 항목에 체크하여 줍니다. 체크하지 않으면 SM30 화면이 먼저 나오게 됩니다.

     

    하단의 Default Values 항목에는

     

    VIEWNAME  / ZFIT0424
    UPDATE       / X

     

    Name of screen field 필드에는 VIEWNAME를 선택하고 값으로는 유지보수 Dialog를 만든 원천 테이블이나 뷰를 넣어 주고 UPDATE, SHOW 중 하나를 선택하여 초기 화면이 수정 모드/조회 모드 중 어떤 것으로 보일지 선택합니다.

     

     

    이상으로 유지보수 뷰에 대한 포스팅을 마치겠습니다. 

     

    긴 글 읽어주셔서 감사합니다.

    728x90
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기