보통 뷰에서 view api 의 REQUEST_FOCUS 메소드를 호출하여 포커스를 지정합니다.

ALV에는 SET_FOCUS 라는 메소드가 있습니다.

그런데 SET_FOCUS를 실행해도 포커스 지정이 안되고 무시되는 경우가 있습니다.

 

노트 1399068 에 답이 있습니다.

 Note that the time in the Web Dynpro phase model at which you set the focus is relevant. If you set the focus very early in the phase model, the data may be changed and the focus lost in a subsequent phase. We recommend that you set the focus at the time WDDOPOSTPROCESSING.

다른 요인으로 인해 포커스가 다시 변경될수 있으니, 컴포넌트컨트롤러의 WDDOPOSTPROCESSING 메소드에서 포커스 지정하는 코드를 넣으라고 하네요.

그리고 서버 버전도 확인하시기 바랍니다.

 

Solution

  • SAP NetWeaver 7.00
    Import Basis Support Package 21.
  • SAP NetWeaver 7.01
    Import Basis Support Package 6.
  • SAP NetWeaver 7.02
    Import Basis Support Package 2.
  • SAP NetWeaver 7.10
    Import Basis Support Package 10.
  • SAP NetWeaver 7.11
    Import Basis Support Package 5.
  • SAP NetWeaver 7.20
    Import Basis Support Package 2.

 

 

SAP ABAP에 버전관리 기능이 있습니다.

CTS를 릴리즈 하면 자동으로 그 당시 내용으로 버전이 기록됩니다.

메뉴에 유틸리티 > 버전 > 버전 관리 로 이동합니다.

비교할 버전과 그 아래 버전 두개만 선택하고 비교 버튼을 누릅니다.

변경 로직을 확인 합니다.

위가 새로직 아래가 기존로직 입니다.

단일열/병렬 버튼을 누르면 좌우로 한꺼번에 비교해 보는 화면으로 바뀝니다.

세팅에 다양한 옵션이 있는데 더이상 자세한 설명은 생략합니다.

일단. OPEN SQL 문법적으로는 답이 없습니다.

 

 

방법 1.  Native SQL을 이용한다.

오라클 DB 나 다른 DB들 대부분 지원하는 기능인데요.

쿼리시에 upper 펑션을 사용하여 양쪽 모두 대문자로 변환한 다음 비교하는 방법이 있습니다.

WHERE 절에 아래 처럼 조건을 넣으면 됩니다.

 upper(컬럼명) LIKE '%'||upper('검색어')||'%'

별로 좋은 방법은 아닙니다. 왜냐하면 가능하면 쓰지말라는 native SQL을 쓰기 때문이죠.

 

 

방법 2. 몽땅 가져와서 LOOP 돌면서 ABAP문법으로 비교한다.

속도가 느리겠죠. 메모리도 많이 사용합니다.

데이터 양이 적을때는 할만합니다. 구현이 간단합니다.

 

 

방법 3. 대문자로 변환하여 저장해둔 필드에 검색한다.

SAP 스탠다드에서 주로 쓰는 방법입니다. 배워두면 유용합니다.

예를 들어 MAKT-MAKTG , PA0002-NCHMC, PA0002-VNAMC, HRP1000-MC_SEARK 등이 있습니다.

위 테이블 내용을 살펴보시면 똑같은 내용을 대문자로 변환하여 추가 필드로 저장한 것을 볼 수 있습니다.

SQL 구성시 WHERE 절에 MAKTX 대신 MAKTG를 넣고 대문자로 변환한 검색어를 조건으로 넣어 주세요.

대소문자 구분없이 검색이 가능합니다.

예를들어 Kg가 저장되어 있는데 검색어 kg를 입력하였다면

MAKT-MAKTX 에는 Kg가 MAKT-MAKTG에는 KG가 저장되어 있고

검색어는 kg에서 대문자로 변환하면 KG가 되기 때문에 양쪽 모두 KG로 일치하게 됩니다.

한가지 단점은 데이터 저장시 대문자 변환하여 추가 필드에 저장해야 한다는 점입니다.

MAKT처럼 스탠다드 테이블의 경우 스탠다드에서 이미 그렇게 처리하고 있습니다.

우리가 Z테이블을 만든다면 대문자 변환 추가 필드를 만들고 저장할때 대문자로 저장하는 로직도 추가 해야 합니다.

 

+ Recent posts