ABAP으로 스크린(온라인) 프로그램을 개발할 때 화면에 테이블 제어(Table control)를 사용하는 경우가 많습니다.
일반적으로 테이블 컨트롤의 열(Column) 단위로 입력 필드를 지정하거나 출력 필드로 지정해서 입력을 활성 또는 비활성 하게 됩니다.
하지만 조건에 따라 동일한 열(Column)에 있지만 특정 셀만 입력을 활성화 하고 다른 셀들을 입력을 비활성화 해서 서로 구분해서 처리해야 하는 경우가 있습니다.
변경하지 말아야 할 셀까지 입력 필드로 활성화가 되면 사용자가 실수로 잘못 입력할 수 있는 오류가 발생할 수도 있기 때문입니다.
이번 글에서는 화면에 추가 된 테이블제어(Table control)의 전체 열이 아니라 특정 셀만 입력 필드로 활성화 되도 ABAP에서 조건에 따라 테이블 컨트롤의 셀 단위 입력 활성 또는 비활성 처리 방법에 대해 알아보겠습니다.
ABAP에서 조건에 따라 테이블 컨트롤의 셀 단위로 입력 활성 및 비활성 하는 방법
▼ 아래 화면은 테이블 필드의 조건에 따라 각 셀의 입력을 활성 또는 비활성 한 결과를 보여주는 화면입니다.
자재가 있는 경우 입력이 활성화되는 셀과 총재고가 200 이상인 경우 입력이 활성화되는 각 셀에 대한 모습입니다.
1. 화면 요소리스트의 수정그룹/기능의 그룹1에 적당한 이름을 지정합니다.
(3자리로 지정하고, 그룹1,2,3,4 아무것이나 해도 상관 없습니다.)
2. 여기서는 LABST1에 ‘GR1‘이라고 지정하고, LABST3에 ‘GR2‘라고 지정했습니다.
3. 이 상태에서 PBO에서 SCREEN을 변경해 줍니다.
PBO MODULE 소스 코드
▼ 아래 ABAP 소는 화면의 입력 필드를 제어하기 위한 PBO Module 처리 구문입니다.
*———————————————————-*
PROCESS BEFORE OUTPUT.
MODULE STATUS_9000.
LOOP WITH CONTROL TC_9000.
MODULE TABLE_CONTROL_OUTPUT.
MODULE MODIFY_SCREEN.
ENDLOOP.
MODULE TABLE_CONTROL_LINES.
*———————————————————-*
MODULE MODIFY_SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = ‘GR1’. ” 그룹1에 지정했기 때문에
CHECK IT_LIST-MATNR <> ”. ” 자재가 있는 경우
SCREEN-INPUT = 1. ” 입력을 활성화
ENDIF.
IF SCREEN-GROUP1 = ‘GR2’. ” 그룹1에 지정했기 때문에
CHECK IT_LIST-LABST >= 200. ” 총재고가 200 이상인 경우
SCREEN-INPUT = 1. ” 입력을 활성화
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE. ” MODIFY_SCREEN OUTPUT
|
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^