ABAP讀取長文字的方法
阿新 • • 發佈:2019-02-15
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.獲取交貨單擡頭、行專案長文字
FORM read_text USING u_name TYPE tdobname "OBJECT NAME,通常是訂單ID&行專案號 u_tdid TYPE tdid "TEXT ID u_tdobject TYPE tdobject "TEXT OBJECT u_split TYPE string CHANGING c_text TYPE string. DATA: ls_stxh TYPE stxh, ls_stxl TYPE stxl, lt_lines TYPE TABLE OF tline WITH HEADER LINE. IF u_tdobject = 'VBBK'. "STXH 擡頭專案文字 透明表 SELECT SINGLE * INTO ls_stxh FROM stxh WHERE tdobject = u_tdobject AND tdname = u_name AND tdid = u_tdid AND tdspras = sy-langu. ELSEIF u_tdobject = 'VBBP'. "STXL 明細專案文字 透明表 SELECT SINGLE * INTO ls_stxl FROM stxl WHERE tdobject = u_tdobject AND tdname = u_name AND tdid = u_tdid AND tdspras = sy-langu. ELSE. "sy-subrc = 0. ENDIF. IF sy-subrc = 0. CALL FUNCTION 'READ_TEXT' EXPORTING * CLIENT = SY-MANDT id = u_tdid language = '1' name = u_name object = u_tdobject * ARCHIVE_HANDLE = 0 * LOCAL_CAT = ' ' * IMPORTING * HEADER = * OLD_LINE_COUNTER = TABLES lines = lt_lines[] * EXCEPTIONS * ID = 1 * LANGUAGE = 2 * NAME = 3 * NOT_FOUND = 4 * OBJECT = 5 * REFERENCE_CHECK = 6 * WRONG_ACCESS_TO_ARCHIVE = 7 * OTHERS = 8 . IF sy-subrc = 0. * Implement suitable error handling here CLEAR c_text. LOOP AT lt_lines. CONCATENATE c_text lt_lines-tdline INTO c_text SEPARATED BY u_split. "解決回車事件 space CLEAR lt_lines. ENDLOOP. CONDENSE c_text NO-GAPS. ENDIF. ENDIF. ENDFORM. "READ_TEXT