SAP Screen Painter(SE51) 에서 입력 필드를 배치할 때, 화면 공간은 좁은데 사용자가 입력해야 할 텍스트는 긴 경우가 생깁니다. 비고·요청 사항·주소 같은 긴 텍스트를 화면 한 줄에 다 펼쳐 두면 다른 필드가 들어갈 공간이 없어집니다. 그렇다고 짧게 잘라두면 사용자가 끝까지 입력할 수 없습니다.
이 문제의 해결책은 입력 필드의 가시 길이(Visible Length, 화면에 표시되는 칸 너비) 와 정의 길이(Def.Length, 실제 입력 받을 수 있는 최대 길이) 를 다르게 설정하는 것입니다. 화면에는 짧게(예: 20자) 표시되지만 사용자가 입력하면 자동으로 좌우 스크롤되며 길게(예: 100자) 까지 받을 수 있게 만들 수 있습니다.
이 글은 Screen Painter 의 입력 필드에서 글자 수를 화면 너비와 분리해 길게 받는 방법 — Movable(이동 가능) 체크와 Def.Length 설정 — 을 정리한 메모입니다. 데이터 사전 타입과 CHAR 직접 선언 시의 차이까지 같이 다룹니다.
핵심 — 길이 3종 속성 한눈 비교
Screen Painter 입력 필드의 길이는 세 가지 속성이 함께 결정합니다.
| 속성 | 의미 | 예시 동작 |
|---|---|---|
| Def.Length (정의 길이) | 실제 입력 가능한 최대 글자 수 | 100 → 사용자가 100자까지 입력 가능 |
| Visible Length (가시 길이) | 화면에 표시되는 칸 너비 | 20 → 화면에는 20자 폭으로 표시 |
| Movable (이동 가능 / Scrollable) | 두 길이를 다르게 잡을 수 있게 허용 | 체크 시 — Visible < Def.Length 가능 / 좌우 스크롤 |
핵심 한 줄: Movable 체크 → Def.Length 크게 / Visible Length 작게. 화면에는 좁게 표시되지만 입력은 길게 받습니다. 사용자가 칸 끝까지 입력하면 자동으로 좌우 스크롤되어 가려진 부분이 화면으로 들어옵니다.
1단계 — 문제 확인: 기본 상태의 입력 필드
Screen Painter 에서 데이터 사전(DDIC) 타입을 그대로 가져와 입력 필드를 만들면, 화면 칸 너비와 입력 가능 글자 수가 같은 값으로 묶입니다.
SE51 → 프로그램명 → 화면 번호(예: 0100) → Layout
→ 도구상자에서 입력 필드 배치
→ 더블 클릭 → Attributes 창
Name : GV_REMARK
Format : CHAR
Def.Length : 20 ← 데이터 사전이 정한 값
Visible Length : 20 ← 자동으로 같이 묶임
Movable : ☐ ← 체크 안 됨
이 상태에서는 화면에 20자 너비 칸이 그려지고, 사용자도 20자까지만 입력할 수 있습니다. 화면 공간을 더 넓힐 수 없으면서 사용자가 100자까지 입력해야 한다면 다음 두 가지 변경이 필요합니다.
2단계 — 해결: Movable 체크 + Def.Length 늘리기
위 화면에서 두 속성을 순서대로 손봅니다.
입력 필드 더블 클릭 → Attributes 창
→ [Movable] 체크박스 ☑ ← 먼저 체크
→ Def.Length 값을 100 으로 입력 ← 입력 가능 최대 길이
→ Visible Length 는 20 그대로 유지
→ Apply / 닫기
→ 저장 + 활성화 (Ctrl + S, Ctrl + F3)

순서가 중요 합니다. Movable 을 먼저 체크하지 않으면 Visible Length 와 Def.Length 가 같은 값으로 묶여 있어 따로 변경되지 않습니다. Movable 을 켜야 두 필드가 풀려 분리 설정이 가능해집니다.
Movable 이 회색 처리되어 못 누르는 경우:
일부 환경에서 Movable 옵션이 비활성화되어 있을 수 있습니다. 이 경우 ABAP 측에서 데이터 엘리먼트가 아닌 CHAR 직접 선언으로 변수를 잡는 것이 가장 확실합니다(4단계 참조).
3단계 — 동작 확인: 좁은 칸에 긴 입력
저장·활성화 후 실행하면 화면에 20자 폭의 짧은 칸이 표시되지만, 사용자가 입력하면 자동으로 좌우 스크롤됩니다.
1. 화면 진입 → 비고 입력 필드 (20자 폭) 보임
2. 사용자가 20자 입력 → 칸이 꽉 참
3. 21번째 글자 입력 → 자동으로 한 칸 왼쪽으로 스크롤
화면에는 마지막 20자만 보이지만 내부 버퍼는 21자 보관
4. 100자까지 입력 가능 — 첫 80자는 화면 밖, 마지막 20자만 화면에 표시
5. 사용자가 ← / → 또는 Home / End 로 가린 부분 이동 확인 가능

ABAP 측 변수도 100자 길이로 잡혀 있어야 합니다.
DATA gv_remark TYPE c LENGTH 100. " 화면의 Def.Length 와 동일
화면 Def.Length 와 ABAP 변수 길이가 다르면(예: 변수 50자 / 화면 100자) 활성화 시 길이 불일치 경고가 뜨거나, 사용자가 50자 이상 입력해도 ABAP 측에서 잘려 저장됩니다.
4단계 — Dictionary 타입 vs CHAR 직접 선언
Screen Painter 에서 입력 필드의 길이를 자유롭게 조정하려면 변수가 어떻게 선언됐는지 가 중요합니다.
| 변수 선언 방식 | Visible/Def.Length 분리 | 권장 시나리오 |
|---|---|---|
DDIC 데이터 엘리먼트 (예: TYPE matnr) |
Dictionary 길이에 묶임 / Movable 비활성 가능 | 표준 필드(자재번호·플랜트 등) — 길이 고정이 정상 |
CHAR 직접 선언 (TYPE c LENGTH n) |
자유롭게 분리 가능 / Movable 활성 | 비고·자유 텍스트·요청 사항 같은 임의 텍스트 |
DDIC 타입(예: 자재번호 MATNR, 플랜트 WERKS) 은 데이터 사전이 정한 길이를 따르도록 시스템이 강제합니다. 비고 같은 자유 텍스트 필드를 만들 때는 ABAP 측에서 TYPE c LENGTH 100 으로 직접 선언하고, 화면에서는 Movable + 두 길이 분리로 처리하는 것이 표준 흐름입니다.
* 자유 텍스트 — CHAR 직접 선언 (Movable 활성 가능)
DATA gv_remark TYPE c LENGTH 100.
* DDIC 타입 — 길이 고정 (Movable 비활성)
DATA gv_matnr TYPE matnr. " 18자 고정
흔히 빠뜨리는 함정
Movable 안 켜고 Def.Length 만 변경
Movable : ☐ (체크 안 함)
Def.Length : 100 으로 입력 시도
→ Visible Length 가 자동으로 100 으로 같이 변경됨
→ 화면 칸이 100자 폭으로 넓어져 다른 필드를 덮어버림
Movable 을 먼저 체크해야 두 길이가 독립적으로 움직입니다. 순서 반드시 Movable 체크 → Def.Length 변경.
ABAP 변수 길이와 화면 Def.Length 불일치
DATA gv_remark TYPE c LENGTH 50. " ABAP 50자
" 화면 Def.Length: 100 → 활성화 시 경고 또는 50자 이상 잘림
화면의 Def.Length 와 ABAP 측 변수 길이는 일치시켜야 합니다. 변수를 더 길게 잡거나(상관없음) 둘 다 동일하게.
데이터 사전 타입에 Movable 강제 시도
필드 Format: 데이터 사전 (예: MATNR 18자)
→ Movable 체크 시도 → 비활성 (회색)
→ 강제로 늘릴 방법 없음
표준 자재번호·문서번호 같은 DDIC 필드를 화면에서 늘리려는 시도는 표준 모델에 어긋납니다. 시스템 표준이 정한 길이가 정답이며, 18자보다 긴 자재번호는 SAP 가 보장하지 않습니다.
가시 길이가 너무 짧으면 사용성 저하
화면에 2~3자만 보이는데 100자까지 입력해야 하는 칸은 사용자가 보기 매우 불편합니다. Visible Length 는 일반적으로 20자 이상 으로 유지하는 것이 권장. 100자 이상의 텍스트는 화면 한 줄로 처리하지 말고 Text Editor 컨트롤(CL_GUI_TEXTEDIT) 사용도 검토합니다.
활성화 누락
Attributes 만 수정하고 Ctrl + F3(활성화) 를 빠뜨리면 옛 화면이 그대로 실행됩니다. 화면 저장(Ctrl + S) 과 활성화 두 단계 모두 확인.
요약
| 단계 | 작업 | 핵심 |
|---|---|---|
| 1 | ABAP 변수 | 자유 텍스트 — TYPE c LENGTH n 직접 선언 |
| 2 | Movable 체크 | 두 길이를 분리할 수 있게 허용 — 반드시 먼저 |
| 3 | Def.Length | 실제 받을 글자 수 (예: 100) — ABAP 변수와 일치 |
| 4 | Visible Length | 화면에 표시할 칸 너비 (예: 20) |
| 5 | 저장 + 활성화 | Ctrl + S + Ctrl + F3 둘 다 확인 |
Screen Painter 입력 필드의 글자 수를 늘리는 핵심은 화면에 보이는 길이와 실제 입력 받는 길이를 분리 하는 것입니다. Movable 체크박스 한 번 + Def.Length 숫자 변경 한 번이면 좁은 화면 안에 긴 자유 텍스트를 자연스럽게 받을 수 있습니다. DDIC 타입과 CHAR 직접 선언의 차이만 기억하면 시스템 표준을 어기지 않고 깔끔하게 처리됩니다.
Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다.
Screen Painter(SE51) 의 입력 필드 속성 Def.Length · Visible Length · Movable(Scrollable) 은 ABAP / Dynpro 표준 메커니즘으로 ECC 6.0 / S/4HANA on-premise 환경에서 동일하게 동작합니다. 데이터 사전(DDIC) 데이터 엘리먼트를 사용하는 필드는 시스템이 길이를 강제하므로 임의 변경이 불가하며, 자유 텍스트는 ABAP 측에서 TYPE c LENGTH n 으로 직접 선언한 변수를 사용해야 두 길이를 분리할 수 있습니다. Fiori / SAPUI5 환경의 신규 화면은 sap.m.Input 의 maxLength 속성과 CSS 폭으로 동일 개념을 표현하며, 본문 키워드는 SAP GUI Module Pool / Dynpro 환경에만 적용됩니다.