SAP中所有的項目文本都存在以下兩張數據表中:
1. STXH 抬頭項目文本 透明表
2. STXL 明細項目文本 透明表
長文本讀取方法
首先在STXH和STXL中根據OBJECT NAME, TEXT ID,TEXT OBJECT查找到需要的文本對象,
然后通過READ_TEXT / READ_TEXT_INLINE函數來讀取文本內容。
以讀取交貨單文本為例:
1.獲取OBJECT NAME, TEXT ID,TEXT OBJECT
2.獲取交貨單抬頭、行項目長文本
1 FORM read_text USING u_name TYPE tdobname "OBJECT NAME,通常是訂單ID&行項目號 2 u_tdid TYPE tdid "TEXT ID 3 u_tdobject TYPE tdobject "TEXT OBJECT 4 u_split TYPE string 5 CHANGING c_text TYPE string. 6 DATA: ls_stxh TYPE stxh, 7 ls_stxl TYPE stxl, 8 lt_lines TYPE TABLE OF tline WITH HEADER LINE. 9 IF u_tdobject = 'VBBK'. 10 "STXH 抬頭項目文本 透明表 11 SELECT SINGLE * INTO ls_stxh FROM stxh WHERE tdobject = u_tdobject AND tdname = u_name AND tdid = u_tdid AND tdspras = sy-langu. 12 ELSEIF u_tdobject = 'VBBP'. 13 "STXL 明細項目文本 透明表 14 SELECT SINGLE * INTO ls_stxl FROM stxl WHERE tdobject = u_tdobject AND tdname = u_name AND tdid = u_tdid AND tdspras = sy-langu. 15 ELSE. 16 "sy-subrc = 0. 17 ENDIF. 18 IF sy-subrc = 0. 19 CALL FUNCTION 'READ_TEXT' 20 EXPORTING 21 * CLIENT = SY-MANDT 22 id = u_tdid 23 language = '1' 24 name = u_name 25 object = u_tdobject 26 * ARCHIVE_HANDLE = 0 27 * LOCAL_CAT = ' ' 28 * IMPORTING 29 * HEADER = 30 * OLD_LINE_COUNTER = 31 TABLES 32 lines = lt_lines[] 33 * EXCEPTIONS 34 * ID = 1 35 * LANGUAGE = 2 36 * NAME = 3 37 * NOT_FOUND = 4 38 * OBJECT = 5 39 * REFERENCE_CHECK = 6 40 * WRONG_ACCESS_TO_ARCHIVE = 7 41 * OTHERS = 8 42 . 43 IF sy-subrc = 0. 44 * Implement suitable error handling here 45 CLEAR c_text. 46 LOOP AT lt_lines. 47 CONCATENATE c_text lt_lines-tdline INTO c_text SEPARATED BY u_split. "解決回車事件 space 48 CLEAR lt_lines. 49 ENDLOOP. 50 CONDENSE c_text NO-GAPS. 51 ENDIF. 52 ENDIF. 53 ENDFORM. "READ_TEXT