SELECTEDROWCOUNT()💡 핵심 요약
기능: 테이블 변수 내에서 SELECTED = 1로 설정되거나 사용자가 UI 테이블에서 선택한 행(Row)의 총 개수를 반환합니다
구문: SELECTEDROWCOUNT({테이블명})
장점: 전체 테이블을 LOOP문으로 순회하지 않고 한 줄로 선택 수량을 파악할 수 있어 코드가 간결해지고 성능이 향상됩니다
-- 여러개 썼는지 확인하고 싶을 때
IF SELECTEDROWCOUNT(TMPLIST) > 1 THEN
MESSAGE SYS E998 WITH '하나의 그룹코드만 선택하세요.';
RETURN;
ENDIF;
트랜잭션 시작:
데이터베이스 트랜잭션의 시작을 선언합니다
이 명령어 이후에 실행되는 데이터 변경 작업(INSERT, UPDATE, DELETE 등)은 하나의 트랜잭션 단위로 묶입니다
트랜잭션 확정:
BEGINTRAN 실행 이후 작업한 모든 데이터베이스 변경 사항을 최종적으로 DB에 영구 반영(Commit)하고 트랜잭션을 정상 종료합니다
트랜잭션 취소:
로직 수행 중 에러가 발생했거나 조건에 맞지 않을 때, BEGINTRAN 시점 이후에 변경된 모든 데이터베이스 작업을 취소하고 이전 상태로 되돌립니다(Rollback)
💻 코드 작성 예시
/* 1. 메모리 테이블에 새 행 추가 */
APPEND ROW TO TMPCOMCODEMASTER;
/* 2. 추가된 새 행(Active Row)의 각 컬럼에 값 세팅 */
TMPCOMCODEMASTER_COMPANY = SYS_COMPANY;
TMPCOMCODEMASTER_COMCODE = 'C001';
TMPCOMCODEMASTER_COMNAME = '공통코드명';
APPEND DOMAINCOLUMN {컬럼명}, {도메인명} TO {가상 테이블};
가상 테이블(Virtual Table)에 새로운 컬럼을 추가하는 것,
새 컬럼을 만들면서 지정한 도메인의 타입과 길이 정보를 사용하는 것
APPEND COLUMN과 APPEND DOMAINCOLUMN의 차이점
| 구분 | APPEND COLUMN | APPEND DOMAINCOLUMN |
|---|---|---|
| 컬럼명 | 직접 지정 | 직접 지정 |
| 데이터 타입 | 직접 지정 | 도메인에서 가져옴 |
| 컬럼 길이 | 직접 지정 | 도메인에서 가져옴 |
| 예시 | STRING, 50 | STEXT |
| 사용 목적 | 타입과 길이를 직접 설정하여 컬럼 생성 | 기존 도메인의 정의를 활용하여 컬럼 생성 |
예시 코드
APPEND COLUMN은 데이터 타입과 길이를 직접 지정합니다.
APPEND COLUMN NEWNAME, STRING, 50 TO TABLEX;
APPEND DOMAINCOLUMN은 지정한 도메인에 정의된 타입과 길이를 사용합니다.
APPEND DOMAINCOLUMN NEWNAME, STEXT TO TABLEX;
INSERT현재 활성화된 데이터베이스 상에서 트랜잭션이 진행 중인지 여부(Boolean: 1 또는 0)를 반환하는 시스템 변수
PARAMETERS :
INTEGER COLUMNORDER;
-- 그리고 사용법
THIS.METHODNAME(1);
💡 기본 속성
데이터 타입: INTEGER (선택됨: 1, 선택 안 됨: 0)
동작 방식: 사용자가 UI 테이블 화면에서 체크박스나 클릭으로 행을 선택하면 시스템이 자동으로 1로 세팅되며, 개발자가 TROIA 코드로 직접 1 또는 0을 대입하여 제어할 수도 있습니다
-- 선택되지 않았다면 RETURN
IF TMPCOMCODEMASTER_SELECTED == 0 THEN
RETURN;
ENDIF;
공통 줌(Zoom) 처리 및 시스템 공통 로직을 담당하는 클래스 인스턴스(표준 SYSCOMMON을 NK 구분을 붙여 커스터마이징한 클래스)입니다.
SYSCOMMONNK.ZOOMLISTING(SCCOMPANY,STRBIZCOMPID);
특정 비즈니스 컴포넌트의 Zoom(검색 팝업 / F4 돋보기) 목록 다이얼로그를 실행하는 핵심 메소드
💡 주요 역할 및 작동 방식
검색 팝업 창(Zoom Dialog) 실행:
자재, 거래처, 사원, 부서 등 지정된 비즈니스 컴포넌트(STRBIZCOMPID) 에 연결된 데이터 검색/선택 팝업 다이얼로그를 화면에 모달(Modal) 형태로 호출합니다
회사 및 조건별 데이터 목록 제공:
첫 번째 파라미터인 회사 코드(SCCOMPANY) 조건에 맞춰 해당 회사의 가용 기준 데이터 목록을 팝업창에 조회합니다
선택한 데이터 리턴:
사용자가 팝업창에서 원하는 행(Row)을 클릭하여 선택하면, 해당 코드 값(예: 자재코드, 거래처코드)이 호출한 원본 화면의 입력 필드로 전달됩니다
🔍 연관 이벤트 (Zoom Events)
ZOOMBEFORE:
Zoom 팝업창이 열리기 바로 직전에 실행되는 이벤트
팝업이 열리기 전 특정 검색 파라미터나 Zoom Filter 조건을 동적으로 전달할 때 작성합니다
ZOOMAFTER:
사용자가 Zoom 팝업에서 선택을 완료하고 데이터가 리턴된 직후 실행되는 이벤트
리턴된 코드값으로 관련 명칭, 규격, 단가 등을 자동 재조회하여 화면을 갱신할 때 작성합니다
변수에 값을 복사할 때 사용하는 대입 명령어
MOVE 'Hello World' TO STRINGVAR1; /* 문자열 대입 */
MOVE STRINGVAR1 TO STRINGVAR2; /* 변수 대입 */
MOVE 3 TO INTEGERVAR1; /* 숫자 대입 */
테이블 간 데이터 복사
두 테이블의 구조가 완전히 일치하지 않아도, 이름이 같은 컬럼들만 자동으로 매핑하여 활성화된 행(ACTIVEROW)의 데이터를 채워줌
MOVE-CORRESPONDING SOURCETABLE TO TARGETTABLE;
테이블 반복문(LOOP) 돌릴 때,
조건에 맞는 특정 컬럼만 빠르게 필터링 순회
LOOP AT [테이블명] CRITERIA COLUMNS [컬럼1, 컬럼2] VALUES [값1, 값2] [NOTCASESENSITIVE]
BEGIN
/* 조건에 맞는 행에서만 실행될 로직 */
ENDLOOP;
WHERE 대신 CRITERIA COLUMNS 쓰는 이유
1. 속도 빠름: 직접 일치하는 행만 검사 (JAVA 엔진 레이어에서)
2. 행 상태 플래그(Row Flag) 조건 지정 가능:
ex) LOOP AT IASMATBASICLIST CRITERIA COLUMNS SELECTED VALUES 1
RUNFILE {filepathonclient};
경로 지정해주면,
default application 프로그램 자동 실행 (ex. Chrome, Excel 등)