ABAP Report 프로그램에서 Pushbutton(버튼)을 추가하고 사용하는 방법(통합 메뉴를 구성)


SAP를 제대로 사용하려면 수많은 트랜잭션코드(Transaction code)를 기억하고 있어야 합니다.

자주 사용하는 트랜잭션코드는 대부분 기억하지만 잘 사용하지 않는 트랜잭션코드는 기억을 못해 막상 사용하려고 할 때 트랜잭션코드가 기억이 나지 않아 어려움을 겪는 일이 종종 발생하게 됩니다.

그래서 대부분 사용자들은 트랜잭션코드를 즐겨찾기에 추가해서 사용하게 됩니다.

만약 특정 프로젝트를 수행하면서 만들어진 트랙잰션코드 목록이 있을 경우 이런 트랜잭션코드만 따라 모아 하나의 메인 화면에서 실행 버튼으로 통합 메뉴를 만들어 사용한다면 무척 편리하게 사용할 수 있을 것입니다.

이렇게 통합 메뉴를 만들때는 대부분 Screen(모듈풀) 프로그램으로 개발하게 됩니다.

아래 화면은 특정한 목적을 처리하기 위한 관련 트랜잭션코드들만 별도로 모아 하나의 통합메뉴 형태로 스크린 프로그램으로 만들어 실행한 실제 사용자 화면입니다.

ABAP 스크린 프로그램에서 버튼 사용 예

이러한 통합 메뉴 구성은 스크린 프로그램으로 하면 간단하게 구현이 가능합니다.

스크린 페인터의 화면 구성에서 푸시버튼을 선택해서 원하는 화면 위치에 갖다 놓기만 하면 쉽게 구현해서 사용할 수 있습니다.

하지만 Report 프로그램에서도 위와 같은 통합 메뉴를 구성하는 프로그램을 개발할 수가 있습니다.

오히려 Screen 프로그램보다 더 간단하게 통합 메뉴를 구성할 수도 있는데, 이번 글에서는 ABAP Report 프로그램에서 Pushbutton(버튼)을 추가하고 사용하는 방법(통합 메뉴를 구성)에 대해 알아보겠습니다.

ABAP 레포트 프로그램에서 버튼을 추가 및 통합 메뉴 화면을 구성하는 방법

▶ 아래 화면은 일반적인 레포트(Report) 프로그램에서 PUSHBUTTON을 추가한 모습입니다
간단하게 필요한 버튼을 한, 두 개 추가해서 활용할 할 수 있습니다.

ABAP 레포트 프로그램에서 버튼을 추가 및 통합 메뉴 화면을 구성하는 방법


▶ 아래 화면은 레포트 프로그램으로 개발한 통합 메뉴 구성을 실행한 화면입니다.

2개의 블록과 12개의 푸시버튼을 배치해서 만들어 본 화면입니다.

ABAP Report 프로그램에서 Pushbutton을 추가하고 사용하는 방법(통합 메뉴를 구성)

ABAP Report 프로그램에서 Pushbutton을 사용하여 통합 메뉴를 구성하는 실제 소스

▼ 아래 소스 코드는 위의 실행 화면에 대한 실제 ABAP Report 프로그램 소스입니다.

REPORT  YMM0001 MESSAGE-ID ZCA001.
 
TABLES : SSCRFIELDS.
 
SELECTION-SCREEN : BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
 
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN : POSITION 5, PUSHBUTTON (20) P_BUT1 USER-COMMAND BUT1,
                   PUSHBUTTON (20) P_BUT2 USER-COMMAND BUT2,
                   PUSHBUTTON (20) P_BUT3 USER-COMMAND BUT3.
SELECTION-SCREEN END OF LINE.
 
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN : POSITION 5, PUSHBUTTON (20) P_BUT4 USER-COMMAND BUT4,
                   PUSHBUTTON (20) P_BUT5 USER-COMMAND BUT5,
                   PUSHBUTTON (20) P_BUT6 USER-COMMAND BUT6.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
 
SELECTION-SCREEN : END OF BLOCK BLOCK1.
 
 
SELECTION-SCREEN : BEGIN OF BLOCK BLOCK2 WITH FRAME TITLE TEXT-002.
 
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN : POSITION 5, PUSHBUTTON (20) P_BUT7 USER-COMMAND BUT7,
                   PUSHBUTTON (20) P_BUT8 USER-COMMAND BUT8,
                   PUSHBUTTON (20) P_BUT9 USER-COMMAND BUT9.
SELECTION-SCREEN END OF LINE.
 
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN : POSITION 5, PUSHBUTTON (20) P_BUT10 USER-COMMAND BUT10,
                   PUSHBUTTON (20) P_BUT11 USER-COMMAND BUT11,
                   PUSHBUTTON (20) P_BUT12 USER-COMMAND BUT12.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
 
SELECTION-SCREEN : END OF BLOCK BLOCK2.
 
 
*———————————————————————
INITIALIZATION.
 
  P_BUT1  = ‘자재 생성’.
  P_BUT2  = ‘자재 변경’.
  P_BUT3  = ‘자재 조회’.
  P_BUT4  = ‘구매오더 생성’.
  P_BUT5  = ‘구매오더 변경’.
  P_BUT6  = ‘구매오더 조회’.
  P_BUT7  = ‘판매오더 생성’.
  P_BUT8  = ‘판매오더 변경’.
  P_BUT9  = ‘판매오더 조회’.
  P_BUT10  = ‘생산오더 생성’.
  P_BUT11  = ‘생산오더 변경’.
  P_BUT12  = ‘생산오더 조회’.
 
 
*———————————————————————
AT SELECTION-SCREEN.
  
  CASE SSCRFIELDS-UCOMM.
    WHEN ‘BUT1’.
      CALL TRANSACTION ‘MM01’.
    WHEN ‘BUT2’.
      CALL TRANSACTION ‘MM02’.
    WHEN ‘BUT3’.
      CALL TRANSACTION ‘MM03’.
    WHEN ‘BUT4’.
      CALL TRANSACTION ‘ME21N’.
    WHEN ‘BUT5’.
      CALL TRANSACTION ‘ME22N’.
    WHEN ‘BUT6’.
      CALL TRANSACTION ‘ME23N’.
    WHEN ‘BUT7’.
      CALL TRANSACTION ‘VA01’.
    WHEN ‘BUT8’.
      CALL TRANSACTION ‘VA02’.
    WHEN ‘BUT9’.
      CALL TRANSACTION ‘VA03’.
    WHEN ‘BUT10’.
      CALL TRANSACTION ‘CO01’.
    WHEN ‘BUT11’.
      CALL TRANSACTION ‘CO02’.
    WHEN ‘BUT12’.
      CALL TRANSACTION ‘CO03’.
  ENDCASE.

1. SELECTION-SCREEN에서 PUSHBUTTON을 나열하고, AT SELECTION-SCREEN에서 각각의 푸시버튼에 대한 트랜잭션코드를 지정해서 해당 트랜잭션코드가 실행되도록 하면 됩니다.

2. PUSHBUTTON 사이에 POSITION 값을 적절히 주면 원하는 위치에 버튼을 배치할 수도 있습니다.

3. ‘CALL TRANSACTION‘ 대신 ‘LEAVE TO TRANSACTION‘으로 바꾸어 지정하면 통합 화면의 레포트 프로그램은 완전 종료되고 호출한 트랜잭션코드만 실행되어 세션에 남게 됩니다.

결론

화면에 버튼(Push Button)을 추가해서 사용하는 것은 일반적으로 ABAP의 스크린 프로그램(Screen, Online, 모듈풀)으로 주로 개발해서 사용하게 됩니다.
하지만 리포트(Report) 프로그램에서도 버튼(PUSHBUTTON)을 추가해서 다양하게 활용할 수 있습니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기