SAP 예제가 포함된 ABAP 테이블 제어
테이블 컨트롤과 단계 루프는 스크린에서 스크린에 추가하는 스크린 테이블 표시용 객체입니다. Painter.
프로그래밍 관점에서 볼 때 테이블 컨트롤과 단계 루프는 거의 동일합니다. 테이블 컨트롤은 데스크톱 애플리케이션의 테이블과 관련된 모양과 느낌으로 데이터를 표시하는 향상된 단계 루프입니다.
ABAP 테이블 제어의 특징
테이블 컨트롤을 사용하여 사용자는 다음을 수행할 수 있습니다.
- 테이블을 수직 및 수평으로 스크롤
- 열 너비 크기 조정
- 필드 내에서 스크롤(필드 내용이 필드보다 넓은 경우)
- 표 행 또는 열 선택
- 열 순서 다시 정렬
- 나중에 사용할 수 있도록 현재 디스플레이 설정을 저장합니다.
또한 표 컨트롤은 표를 더 쉽게 보고 사용할 수 있도록 하는 특수 서식 기능(일부는 자동, 일부는 선택 사항)을 제공합니다. 테이블 제어 기능은 다음과 같습니다.
- 사용자가 창 크기를 조정할 때 자동 테이블 크기 조정(세로 및 가로)
- 행과 열 사이의 구분선(세로 및 가로)
- 모든 열의 열 헤더 필드
단계 루프의 한 가지 특징은 테이블 행이 화면에서 두 줄 이상에 걸쳐 있을 수 있다는 것입니다. 반면에 테이블 컨트롤의 행은 항상 한 줄에 포함되어야 합니다(스크롤은 가능하지만).
일반적으로 테이블 컨트롤이 제공하는 많은 기능은 시스템의 로컬에서 처리됩니다. SAPgui 프론트엔드이므로 직접 프로그래밍할 필요가 없습니다. 이에 대한 유일한 예외는 수직 스크롤입니다..
예(트랜잭션 TZ60)
통사론
ABAP 프로그램에서 테이블 컨트롤을 처리하려면 다음 명령문을 사용하여 각 테이블 컨트롤에 대한 프로그램의 선언 부분에서 컨트롤을 선언해야 합니다.
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
어디 ABAP 프로그램 화면의 테이블 컨트롤 이름입니다. 컨트롤을 사용하면 ABAP 프로그램이 테이블 컨트롤의 속성을 읽고 컨트롤에 영향을 미칠 수 있습니다. 테이블의 초기값을 불러오는 화면 번호입니다.
테이블 컨트롤의 커서 위치는 다음과 같은 방법으로 설정할 수 있습니다.
PBO에서는 테이블 컨트롤의 특정 행의 특정 필드에 커서를 설정할 수 있습니다.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
선택적 추가 OFFSET을 사용하면 커서 위치 설정에 설명된 대로 필드에 커서 오프셋을 입력할 수 있습니다.
PAI에서는 현재 커서 위치를 읽을 수 있습니다.
GET CURSOR FIELD <f> LINE <lin> ...
커서 위치 찾기에 제공된 정보 외에도 다음 필드를 입력하십시오. 커서가 현재 테이블 컨트롤의 어느 행에 있는지에 대한 정보를 포함합니다. 당신은 또한 사용할 수 있습니다
GET CURSOR LINE <lin>.
테이블 컨트롤의 행을 결정합니다. SY-SUBRC를 사용하면 커서가 테이블 컨트롤의 행에 있는지 확인할 수 있습니다.
해당 라인을 얻으려면 내부 테이블:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
시스템 변수 stepl – 루프 endloop의 현재 테이블 행 인덱스를 포함합니다. Loopc – 테이블에 표시되는 행 수를 포함합니다.
테이블 컨트롤을 만들려면
1. 화면에 테이블 제어 요소를 추가합니다.
2. 테이블 컨트롤에 이름을 지정합니다. ABAP 프로그램에서 동일한 구조를 선언합니다. 화면을 사용하여 TABLEVIEW 입력 )
3. 필드를 생성하려면 사전/프로그램 필드 기능으로 이동하세요.
- 원하는 필드가 있는 구조의 이름을 입력하세요. (프로그램 사전에서 선택하려면 관련 푸시버튼을 클릭하세요.)
- 필드 목록에서 원하는 필드를 선택하고 확인을 선택합니다.
- 테이블 제어 영역을 클릭하세요.
선택 열이 필요한 경우 속성에서 해당 확인란을 선택하고 이름을 지정합니다. 필드를 만듭니다. ABAP 프로그램.
의회예산처에는 다음과 같은 성명이 있어야 합니다.
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
PAI에는 있어야 합니다.
LOOP at <itab>. ENDLOOP.
화면과 내부 테이블 사이에 데이터 전송이 발생하는 것은 루프 내입니다. 내부 테이블을 채울 때 DESCRIBE TABLE을 사용하세요. 윤곽 -lines, 컨트롤의 총 라인 수를 저장합니다. FIELD 문을 사용하여 데이터 전송이 발생하는 시기를 제어할 수 있습니다.
개별 셀의 속성을 변경하려면 PBO의 SCREEN 테이블을 일시적으로 변경하세요. CONTROLS 문으로 생성된 구조의 속성을 변경할 수 있습니다.
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.