본문 바로가기
ALV · 화면 · 리포트

[SAP ABAP] Screen Painter 입력 필드 글자 수 늘리기 — Movable·Def.Length·Visible Length 분리 (SE51)

by Song.sh 2026. 5. 19.

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 LengthDef.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.InputmaxLength 속성과 CSS 폭으로 동일 개념을 표현하며, 본문 키워드는 SAP GUI Module Pool / Dynpro 환경에만 적용됩니다.