alv에서 edit_mask는 고정적이것을 변환할땐 사용한다고 들었는데요
제가 데이터를 alv 클래스로 뿌리고나서 전화번호필드가 있는데 021231234 이면 02-123-1234 로
보여지게하고 저장은 원래대로 저장되게 하고싶은데요... 전화번호 유형은 한 4가지정도됩니다
제가생각한방법은 일일이 값읽어와서 유형알고 분리해서 - 넣어서 다시넣어주는 방법인데
이러케하면 유형이 많아질수록 로직만 복잡해지고... 더좋은방법이 있지않을까해서 글을 올려봅니다....
선배님들의 조언 부탁드려요!!
댓글 2
-
디셍도
2008.09.11 00:00
-
쿵푸ㅋ
2010.10.15 23:55
그러면 각 경우에 edit_mask 값을 다르게 주시면 되겠군요.
021231234에서 02-123-1234로 변환 시 필드카탈로그에서
edit_mask = '__-___-____'. 로 주시면 됩니다.
실 데이터 값은 021231234로 그대로 있으면서 보여지는 형식만 02-123-1234로 바뀌어서 보일 겁니다.
각 유형에 따라 분리하고 싶으시다면 길이로 체크할 수도 있겠군요.
DATA: LV_LENGTH TYPE I.
LV_LENGTH = STRING( LV_PHONE ).
CASE LV_LENGTH.
WHEN 9.
edit_mask = '__-___-____'.
WHEN 11.
edit_mask = '___-___-____'.
ENDCASE.
이런 식으로 하시면 되지 않을까 생각합니다.
도움이 되었기를 바랍니다.
가장 좋은 방법은 변환루틴을 찾는 것 입니다.
변환루틴만 안다면 ALV Field Catalog의 convexit 속성에 넣어서
데이터는 021231234로 유지되고 ALV에는 02-123-1234로 조회할 수 있습니다.
변환루틴을 찾기 힘들다면 직접 만들 수 도 있습니다.
다만, 변환루틴을 만들려면 Domain, input/output Function도 생성해야 하기 때문에
신중한 결정이 필요합니다.
변환루틴 만드는 방법은 먼저
CONVERSION_EXIT_<변환루틴명>_INPUT (예) 02-123-1234 -> 021231234)
CONVERSION_EXIT_<변환루틴명>_OUTPUT(예) 021231234 -> 02-123-1234)
Function Module을 생성하고 변환 로직 작성 및 import에 input, export에 output 변수를
생성합니다.
다음 위 예제 같으면 전화번호 9자리(출력 11자리) 도메인을 생성하고
변환루틴에 <변환루틴명>을 넣습니다.
이 후 alv 프로그램에서 전화번호에 대한 Field Catalog생성시 CONVEXIT 속성에
위 <변환루틴명>을 넣으면 됩니다.