300x250
728x90
Table Control이란?
# ALV가 나오기 전, 대량의 데이터를 보여줄 때 필요했던 것이 Table Control이다.
Table Control 전체적인 그림
# Table Control은 LOOP문을 통해서 라인을 계속 그려줘야 한다.
# PBO, PAI에서 그려주고 인터널테이블을 업데이트시켜 주는 형식
# 또한 라인선택, 더블클릭에 대한 내용도 봐보자.
시작해 보자.
Table Control 설정 ( TOP )
# 다음과 같이 설정해 보자. 여기서 중요한 것은 Table Control 이름을 잘 기억해야 한다.
# 또한 SCARR에 대한 Internal Table과 Structure 만들어주자.
* Table Control
CONTROLS CTR_100 TYPE TABLEVIEW USING SCREEN '0100'.
DATA:
GT_LIST TYPE TABLE OF SCARR,
GS_LIST TYPE SCARR.
Call Screen 전에 SELECT 하기.
# 참고로 Table Control에 SY-DBCNT는 무조건 해줘야 한다
Table Control 생성( Screen 0100 )
#1. 원하는 스크린에서 Table Control 생성을 해보자.
#2. 상단에 있는 레이아웃 버튼을 클릭하고,
#3. Table Control( 테이블 제어 ) 생성해 보자.
#4. Table Control 이름을 설정해줘야 하는데 TOP에서 설정했던 이름을 넣어주자.
#5. Dictionary / 프로그램필드 버튼을 클릭 후, 프로그램에서 얻기를 클릭, TOP에서 설정했던 스트럭처를 선택해 주자.
#6. 다음과 같이 Table Control안에 필드를 넣어주면 된다.
# 7. Table Control 생성 완료.
Table Control 속성 설정
#1. 사용자가 보기 쉽게 분리자에서 수직, 수평을 누르면 라인이 생긴다.
#2. 또한 상단에 Title을 만들어야 하기 때문에 텍스트 필드를 통해서 값을 넣어보자.
#3. 라인마다 텍스트 필드를 넣으면 다음과 같이 나올 것이다. 이제 이름을 설정해 보자.
#4. 이름 설정, 라인 넓이 설정, 소문자/대문자 설정도 가능하다. ( 상황에 맞게 설정 ), 모든 설정이 끝났으면 엑티베이트 하자.
화면 그려주기 ( PROCESS BEFORE OUTPUT )
#1. 다음과 같이 LOOP문을 돌아서 화면을 그려줘야 한다.
LOOP AT GT_LIST INTO GS_LIST WITH CONTROL CTR_100.
ENDLOOP.
# Table Control 설정을 하고 싶으면 LOOP문 안에서 설정을 하면 된다.
## 필드를 활성화/비 활성화 또는 필수 값 등등..
변환 화면 그려주기 ( PROCESS AFTER INPUT )
#1. LOOP문을 돌면서 변경된 값을 업데이트시켜 주자.
LOOP AT GT_LIST.
MODULE PAI_TABLE_CONTROL.
ENDLOOP.
#2. 다음과 같이 변경된 GS_LIST 값을 업데이트시켜 주자.
MODIFY GT_LIST FROM GS_LIST INDEX CTR_100-CURRENT_LINE.
실행시켜 보자.
# 필드 비활성화/ 활성화는 로직으로도 변환 가능하고 Table Control 속성에서도 변경할 수 있다.
# Table Control 라인 선택 설정하기
# 01. TOP에서 MARK라는 필드를 선언을 해줘야 한다. 방법은 여러 가지지만 기존에 있던 GT_LIST에서 MARK라는 필드를 확장해서 사용하겠다.
TYPES: BEGIN OF TY_S_LIST.
INCLUDE STRUCTURE SCARR.
TYPES: MARK TYPE C,
END OF TY_S_LIST.
DATA:
* GT_LIST TYPE TABLE OF SCARR, AS-IS
GT_LIST TYPE TABLE OF TY_S_LIST," TO-BE
GS_LIST TYPE TY_S_LIST.
# 02. 스크린 페인터에서 선택열포함을 체크체크한 후? " GS_LIST-MARK " 필드를 넣어보자.
# GS_LIST-MARK를 넣어줘야 로직을 따로 설정 안 해줘도 된다.
# 테스트를 하기 위해서 "변경"이라는 버튼을 만들었다.
# 03. 그리고 다음과 같이 " AZ "라는 라인을 선택 후, "변경"이라는 버튼을 클릭하면
# 04. 다음과 같이 디버깅을 보게 되면 GT_LIST에 MARK에 " X " 값이 찍혀있는 걸 볼 수 있다. 이것을 통해서 해당하는 라인을 가져와서 데이터를 변경하거나 삭제하거나 할 수 있게 된다.
# Table Control 더블 클릭 이벤트( table control double click )
# Table Control에서 더블클릭 할 경우가 생긴다. 그럴 때 설정하는 방법을 알아보자
#01. 우선 설정이 되어있는 Table Control의 Screen에서 STATUS로 들어가 보자.
#02. F2, Choose( 빨간 상자 )에서 USER-COMMAND을 설정해 보자. ( PICK )
#03. USER_COMMAND 설정을 해보자.
#04. "GET CURSOR FIELD"을 통해서 선택한 필드에 정보를 얻어와 보자.
#05. 선택한 라인과 해당 필드명을 가져오면 다음과 같이 특정한 필드에 트리거가 되게 조건문을 걸어보자. ( 여기서는 " CARRID " 필드 조건을 걸겠다 ).
#06. 디버깅을 걸어보면 다음과 같이 나오게 되는 걸 볼 수 있다.
끝.
도움이 되셨으면 하단에 있는 광고 한 번씩 눌러주세요!!
728x90
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP WatchPoint 정리 (0) | 2023.12.12 |
---|---|
SAP Table Technical Setting 설정 (0) | 2023.12.12 |
SAP GUI 한글(폰트) 깨짐 (2) | 2023.11.02 |
SAP Self Join 정리 (1) | 2023.10.31 |
SAP Lock Object 정리 (2) | 2023.10.27 |