안녕하세요~~
if 조건문을 줄때 sy-subrc = 0 이런식으로 주거나
값이 대변이나 차변일때 주는 것들은 이해가 되는데요..
char 문자를 가지고 조건문을 줄때는 어떻게 하면 될까요??
if p_w_reguh-koinh > 35 이렇게 줘도 상관은 없는건지요..
질문은 저 필드는 char로 되어있는 필드인데 35이상일때 조건이 성립하게 하는겁니다.
댓글 14
-
쭈니
2009.04.09 20:15
-
신조고퍼
2009.04.09 20:16
보통 문자는.. 길이를 보고 하지 않은지요
제가 볼땐
IF STRLEN( p_w_reguh-koinh ) > 35.
이게 맞는것 같은데요.
-
보나
2009.04.09 20:16
F1: strlen
혹은
T-code : ABAPDOCU 의
ABAP Documentation and Examples
- The ABAP Programming Language
- Basic Statements
- Process Data
- Processing Strings
안에있는 예제 demo_data_string 참조
(175 line : * length of a string)
-
쭈니
2009.04.09 20:16
감사합니다
-
쭈니
2009.04.09 20:31
IF STRLEN(P_W_REGUH-KOINH) > 35.
이렇게 했는데 오류메세지가 나왔어요...
Field "STRLEN" is unknown. It is neither in one of the specified tables nor
defined by a "DATA" statement.
이렇게 나오다니...
DATA 선언을 안해놔서 그런건지....
-
보나
2009.04.09 20:34
답글에도 달았었지만....
항상 말씀 드렸던 F1 과 답글의 해당 예제를 참고해 보세요...
strlen 은 문법이므로(변수가 아니므로) data 선언은 필요없습니다.
예상컨데 띄어쓰기에서 오는 문제로 보이네요.
-
BeCool~*
2009.04.09 21:12
보나님 말씀처럼
1. IF STRLEN( p_w_reguh-koinh ) > 35. (O)
2. IF STRLEN(P_W_REGUH-KOINH) > 35. (X)
차이가 아닐까요?
직접코딩하고테스트하면쉽게알수있는문제같은데..
-
SAYA
2009.04.09 21:54
DATA i TYPE I.
☞ STRLEN( P_W_REGUH-KOINH ). <-- 괄호안에 공백이 있어야 합니다.
그리고
STRLEN( P_W_REGUH-KOINH ) 과 35 를 직접 비교는 되지 않습니다.
변수에 담아서 아래처럼 하셔야 합니다.
☞ i = STRLEN( P_W_REGUH-KOINH ).
IF i > 35.
~
ENDIF.
-
BeCool~*
2009.04.09 22:05
직접비교되는데요?
IF STRLEN( p_w_reguh-koinh ) > 35.
ELSE.
ENDIF.
-
쭈니
2009.04.09 22:47
다들 감사합니다~~ 잘 해결이 되었습니다..
직접 비교문을 사용했는데 안되는 이유는 잘모르겠으나, 자꾸 에러가 발생했습니다..
근데 사야님 말씀대로 했는데 이상없이 잘 되었습니다.
이것이 일반 레포트 프로그램이 아닌 펑션이라서 안되는걸지도 모르겠습니다.
자세한건 제가 펑션 자체에도 한번 해보고 결과는 올려드리겠습니다~~
다들 정말 감사합니다~~
-
정군
2009.04.10 02:56
버전따라 다른지는 모르겠지만, 직접 비교가 안되는 경우가 많습니다.
내일 출근하면 제가 쓰는 버전에서 테스트 해보고 말씀드리겠습니다만...
보통은 문자열을 자르는, 예를 들어 char+3(4) > 10 같은건 되어도...
계산식이 들어가는 경우엔 안되더군요.
strlen같은 특별한 함수는 어떤지 궁금해지네요. 결과 올려 드리겠습니다.
-
보나
2009.04.10 17:34
버젼에 따라 다를듯 합니다.
BeCool~* 님의 시스템환경이 어떤지는 정확히 모르겠으나;;;
strlen 의 경우 일반적으로 i type 의 변수를 선언해서 SAYA님 로직처럼 사용하는게 대부분이었다는;;;
F1을 보니 strlen 처럼 length관련된 함수들이 많더라구요.
또한 길이에 관련된 만큼 unicode 인지 non-unicode 인지에 대한 설명도 나와있더군요...
자신의 시스템에서 F1 도움말을 참고해보세요~
-
MM초보^^
2009.04.11 01:51
SAYA님 말씀대로 자릿수를 구할 필드명 앞뒤로 공백이 있어야 하며, 없으면 하기 에러가 나네요.
"Field "STRLEN" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement "
* Enterprise 4.7B에서는 직접 비교가 가능하네요. ^^
-
Will
2009.06.23 20:53
감사합니다 ^^
자세히 설명을 드려야 겠네요.. 저 필드에 char값이 35이상일때가 있어서 그 이상일때는 값이 들어어 갑니다.
그래서 35이상일때 다른 필드에 들어가도록 참조하기 위해서 조건을 35자 이상이 되면 다른 필드에 저장하려고 합니다.
그 조건문으로 저게 성립이 되는건지요.