ALV에서 필터를 활용하는 방법은 특정 내역만 화면에 뿌려주거나 먼저 필터를 지정해 조회하도록 구성하는 것이 핵심이다. TOP에서 ALV 필터를 선언하고, 데이터 타입 gt_filter 와 gs_filter를 정의한 뒤, ALV Display 전에 필터 정보를 입력한다. 예시로 CURRENCY가 USD인 경우를 설정하고, gs_filter-fieldname, sign, option, low 값을 각 속성에 채운 뒤 gt_filter에 APPEND한다. 이후 SET_TABLE_FOR_FIRST_DISPLAY를 호출할 때 it_filter를 전달하면, 화면에 표시되는 데이터에 한정된 필터가 적용된다. 보통은 레이아웃을 저장해 두는 방식으로 필터를 관리하되, 상황에 따라 필터의 위치와 방식은 달라진다.
필터의 핵심은 요청사항과 프로그램 구성에 따라 달라지지만, 사용자들은 SAP보다 엑셀에 더 익숙한 편이라는 점이 있다. 따라서 SAP의 필터와 엑셀의 필터 기능은 기능적으로 유사하되 개발 관점에서의 구현 차이가 존재한다. 필터를 거는 경우 화면에 보이는 범위의 데이터에만 특정 기능을 적용하도록 로직을 구성하는 것이 일반적이다. 로직의 흐름은 FORM get_selected_visible_data로 정리되는데, 먼저 go_grid->get_selected_rows로 선택 행을 얻고, 이어 go_grid->get_filtered_entries로 필터로 숨겨진 행을 파악한다. 그리고 LOOP를 통해 현재 화면에 보이는 행만 선택하도록 구성한다. 소계나 집계 라인은 제외 조건을 확인하고, 현재 화면에 보이는 행의 인덱스에 해당하는 데이터를 gt_data에서 찾아 selected를 지정한다. 이처럼 화면상 보이는 라인만 처리되도록 가공하여 전표 생성이나 화면 내역 제거 등을 수행할 수 있다.
또한 미리 로직을 준비해 두면 도움이 되지만, 실제 요구사항은 다양하게 나타난다. 예를 들어 “무조건 화면에 나온 리스트 전체를 전표 생성”이나 “필터를 걸지 않되 1개라도 오류가 나면 전표를 기표하지 않는다”와 같은 구체적 요구가 있을 수 있다. 요구사항을 명확히 파악해 반영하는 것이 중요하며, 이러한 관점에서 필터와 화면 표시 데이터의 조합은 실무에서 큰 차이를 만든다. 개발에 도움이 되길 바란다. 감사합니다.
#
ABAP
#
구축
#
개발자
#
개발
#
SM
#
SI
#
SAP
#
Filter
#
ALV
#
운영
원문 링크 : SAP ABAP - ALV Filter