현재 변수에 'ABCDEFGHIJK' 가 담겨 있을때,
'GH'를 따로 가져다 쓸려고 할때, 오른쪽 부터 해당값을 가져 오는 구문이 궁금합니다.
얼핏, RIGHT같은데... F1찾아봐도,없고.. ABAP에서의 RIGHT 역확을 하는 놈과
정확한 구문 좀 부탁드립겠습니다 .
감사합니다.
댓글 8
-
현준탱
2009.04.28 22:18
-
민버미꺼!
2009.04.28 22:30
변수가 constants라면 현준탱님 처럼하시면 되겠고,
변수의 값이 유동적으로 변한다면 그에 따라 코딩이 달라져야 겠는데요
구체적으로 무엇을 요구하는 지에 따라 개발을 하셔야 겠네요..
단순히 용군님의 질문으로 봐서는 현준탱님처럼 하셔도 되고,
Perpomance 생각안하신다면 SHIFT를 이용하셔도 되겠고요...
-
현준탱
2009.04.28 22:38
DATA: str1 TYPE string,
str2 TYPE string.
str1 = 'ABCDEFGH'.
str2 = 'GH'.
IF str1 CA str2.
WRITE: STR1, STR2.
ENDIF.
이런방법도 있습니다. 참고하세요~~
-
용군
2009.04.28 22:51
LS_CHAR+6(2).
이 방법은 왼쪽 부터 셈을 하는거잖아요.
두번째 방법도 'GH'란 값을 하드코딩 하면 안되는 상황이고..
제가 여쭤보고자 하는 핵심은, 문장의 끝인 오른쪽부터 셈을 해와서 값을 가져 와야 한다는거죠..
아무튼 답변해 주셔서 감사합니다.
-
보나
2009.04.28 23:17
PARAMETERS : p_chr(30), "변수
p_i TYPE i, "오른쪽 몇번째부터
p_j TYPE i. "몇자리를 잘라서 사용
DATA: len TYPE i,
result(30).
len = STRLEN( p_chr ).
IF p_i < p_j.
WRITE:/ '사용가능한 자리수보다 입력한 자리수가 큽니다'.
ENDIF.
IF len < p_j OR len < p_i.
WRITE:/ '입력한 변수의 길이가 너무 짧습니다.'.
ENDIF.
len = len - p_i.
result = p_chr+len(p_j).
WRITE: result.
안되면 strlen 으로 카운트해서 빼세요;;;;
오른쪽부터 셈하는 기능은 저도 잘;;;
-
보나
2009.04.28 23:21
변수에 어떤 rule 이 존재한다면 연산자 명령을 쓰는게 좋아보이는데....
변수값들이 전부 무작위한 값인지 아니면 어떤 규칙을 가지고 있는지요?
-
현준탱
2009.04.29 00:17
무조건 오른쪽 끝에 두자리라면 condense 한번 해주시고,
strlen 으로 길이 체크해서 원하시는 값만 읽어오시면 될 것 같군요.
-
용군
2009.05.06 20:08
변수의 길이는 무작위한 값입니다.. 현준탱님 말씀데로 해야겠네요 ㅎ 오른쪽부터 셈하는 기능을 찾아서 좀 편하게 할려고 했는데.. 답변 모두 감사드립니다.~
DATA : LS_CHAR(11) TYPE C.
LS_CHAR = 'ABCDEFGHIJK'.
WRITE: LS_CHAR+6(2).