메뉴 건너뛰기

SAP 한국 커뮤니티



2 byte 글자 자르기 관련

정군 2009.04.30 13:34 조회 수 : 6337

질문을 올리신 분이 있어서 ...


참조하시라고 올립니다. 완전히 원하는 바가 나오진 않겠지만, 소스를 곰곰히 보고 있으면 이해 되실 겁니다.


 


 


[IMPORT]


I_STR TYPE C
I_LEN TYPE I


 


[EXPORT]


O_STR TYPE STRING


 


 


[SOURCE]


FUNCTION Z_GET_LONG_TEXT.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_STR) TYPE  C
*"     VALUE(I_LEN) TYPE  I
*"  EXPORTING
*"     REFERENCE(O_STR) TYPE  STRING
*"----------------------------------------------------------------------



*-----------------------------------------------------------------------
*            Data Declaration
*-----------------------------------------------------------------------


  DATA: sta TYPE i,    " HEXA location
            flg.               " current 2Byte Pair status
  FIELD-SYMBOLS: <str>,             " Hexa Value of input String
                            <xstr> TYPE x. " Hexa value of 1byte Charater


 


*-----------------------------------------------------------------------
*            Main Procedure of Function
*-----------------------------------------------------------------------


  DATA: o_len TYPE i.


  CLEAR   : o_str, o_len.


 


*--- if Input String doesn't exist, return
    o_len = STRLEN( i_str ).
    IF o_len = 0.
      EXIT.
    ENDIF.


*- if Input length is greater than total length, check input length
*  if Input length is smaller than total length, check total length
    IF o_len > i_len.
      o_len = i_len.
    ENDIF.


*--- Begin of correction
    ASSIGN i_str TO <str> TYPE 'X'.
    CLEAR: sta, flg.
    DO o_len TIMES.
      sta = sy-index - 1.


      ASSIGN <str>+sta(1) TO <xstr>.
      IF <xstr> >= '80'.       " 2Byte Character
        IF flg = space.
          flg = 'X'.           " 1st Byte of TWO
        ELSE.
          flg = space.         " 2nd Byte of TWO : Normal Case
        ENDIF.
      ENDIF.
    ENDDO.


*- if valid character is incompletede 2Byte,cut from pre-character
    IF flg = 'X'.           " IF Last character was cut abnormally
      o_len = o_len - 1.
    ENDIF.


    o_str = i_str(o_len).      "Return Value
*    APPEND  o_str.  CLEAR o_str.
    SHIFT i_str BY o_len PLACES.
*  ENDDO.


ENDFUNCTION.

번호 제목 글쓴이 날짜 조회 수
984 SMOD와 CMOD - 2 [10] file 정군 2009.06.08 3767
983 SMOD와 CMOD - 1 [13] file 정군 2009.06.08 13644
982 General SAP Tips [12] D.Y.Kim 2009.05.29 36111
981 SAP SCRIPT를 PDF로 다이렉트로 저장시키는 로직. [8] 쿵푸ㅋ 2009.05.25 4158
980 bdc레코딩및예제 [31] file BC고 2009.05.14 5684
979 SAP_Organizational_structure [11] file BC고 2009.05.14 3181
978 ABAP 족보 [15] file 나무 2009.05.08 3737
977 ABAP 교육자료 [21] file 나무 2009.05.08 5072
976 Customizing Guide [3] file 나무 2009.05.08 3579
975 abap 소스 [5] file 나무 2009.05.08 3331
974 1부 효율적인 코딩기법 [7] file 나무 2009.05.08 3320
973 sap 영한 단어집 [19] file 서키트 2009.04.30 3226
972 sap_flex 영문자료 [4] file 서키트 2009.04.30 3579
» 2 byte 글자 자르기 관련 [1] 정군 2009.04.30 6337
970 FV60 BADI screen [12] file 정군 2009.04.30 3592
969 abap 교육자료입니다.(3) [10] file graceKim 2009.04.29 3486
968 abap 교육자료입니다.(2) [8] file graceKim 2009.04.29 3938
967 abap 교육자료입니다.(1) [18] file graceKim 2009.04.29 3334
966 가변 itab 관련 [8] 정군 2009.04.23 62281
965 abap bc dictionary [10] file 우째 .. 2009.04.15 3579