Code20090526 - ooxxvv/MySAPnotes GitHub Wiki
PageOutline {{{#!comment -------------------- 以上的部份是固定的,不要變動 ----- --------------------------------------- 在建立連結時,請標明連結的頁面類型,例如:wiki:WikiStart,而不要只用 WikiStart ----- }}}
code20090526
- 在 non-unicode 系統中,依指定長度分割中英夾雜的字串
Code
{{{#!abap
**Program name: ZJOEY_20080110 **Description : 在 non-unicode 的系統中,中英夾雜字串的切割 **Date/Author : 2009.05.26 / Joey Lee
** M O D I F I C A T I O N L O G
** ChangeDate Programmer Request Description ** ========== ========== ========== ================== ** 2009.05.26 Joey Lee New Program
REPORT ztest005 NO STANDARD PAGE HEADING LINE-SIZE 535 LINE-COUNT 58(2). *======================================================================= *=================================================Global Date declear=== DATA: g_lenout(2) TYPE i, g_trunc(2) TYPE i, g_out(132) TYPE c, g_temp(132) TYPE c, g_len TYPE i.
DATA: BEGIN OF it_truncate OCCURS 0, num TYPE i, trun_text(200) TYPE c, END OF it_truncate. *======================================================================= *=====================================================Selection Sceen===
*======================================================================= *========================================================Initial Data=== *LOAD-OF-PROGRAM *INITIALIZATION.
*======================================================================= *=============================================Selection Screen Events=== *AT SELECTION-SCREEN OUTPUT. *AT SELECTION-SCREEN ON VALUE-REQUEST for <para/sel-opt>. *AT SELECTION-SCREEN. *AT SELECTION-SCREEN ON . *AT SELECTION-SCREEN ON BLOCK <>.
*======================================================================= *=============================================Selection Screen Events=== *AT SELECTION-SCREEN OUTPUT. *AT SELECTION-SCREEN ON VALUE-REQUEST for <para/sel-opt>. *AT SELECTION-SCREEN. *AT SELECTION-SCREEN ON . *AT SELECTION-SCREEN ON BLOCK <>.
*======================================================================= *=======================================================Report Events=== START-OF-SELECTION. *-Testing Data g_temp = '中文夾雜的字串ABC1213中文夾雜的字串ABC1213AA'. CONCATENATE g_temp '中文夾雜的字串ABC1213中文夾雜的字串ABC1213中文夾' INTO g_temp. CONCATENATE g_temp '中文夾雜的字串ABC1213中文夾雜的字串ABC1213中文夾' INTO g_temp. CONCATENATE g_temp '雜的字串ABC1213中文夾雜的字串ABC1213中文夾雜的字' INTO g_temp. CONCATENATE g_temp '串ABC1213' INTO g_temp.
g_len = 35.
CONDENSE g_temp NO-GAPS. IF g_len IS INITIAL. EXIT. ENDIF.
*-Split string DO. *---確定在指定長度中,可以切多長的字串 CALL FUNCTION 'TRUNCATE_MULTIPLE_BYTE_STRING' EXPORTING string = g_temp target_length = g_len IMPORTING use_length = g_lenout.
IF g_lenout = 0.
g_lenout = g_len.
ENDIF.
*---依取得的長度切割字串 CALL FUNCTION 'RKD_WORD_WRAP' EXPORTING textline = g_temp outputlen = g_lenout IMPORTING out_line1 = g_out.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF NOT g_out IS INITIAL.
*-------將切割後的字串放到 Internal Table 中 it_truncate-num = sy-index. it_truncate-trun_text = g_out. APPEND it_truncate. CLEAR it_truncate. *-------重置原字串 g_trunc = 132 - g_lenout. g_temp = g_temp+g_lenout(g_trunc). ELSE. EXIT. ENDIF. ENDIF.
ENDDO.
END-OF-SELECTION. LOOP AT it_truncate. WRITE: it_truncate-num, space, space, space, it_truncate-trun_text. SKIP. ENDLOOP.
*======================================================================= *=========================================================List Events=== *TOP-OF-PAGE. *END-OF-PAGE. *AT LINE-SELECTION. *TOP-OF-PAGE DURING LINE-SELECTION. *AT USER-COMMAND.
*======================================================================= *=========================================================Subroutines=== }}}