如图要获取长文本的内容,传统方式直接从底表获取数据太复杂,可以使用更简单的方式。
①通过调用"READ_TEXT"函数抓取长文本。
各参数含义:
参数名称 | 解释 |
---|---|
ID | 将要读取的文本的文本标识 |
NAME | 将要读取的文本名 |
OBJECT | 将要读取的文本对象 |
ARCHIVE_HANDLE | 存档句柄 |
DATA:lv_maktx TYPE string.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_alv02-posnr
IMPORTING
output = gs_alv02-posnr.
CONCATENATE gs_alv02-vbeln gs_alv02-posnr INTO ls_tdname.
CLEAR:lt_tline[],lt_tline.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'Z003'
language = '1'
name = ls_tdname
object = 'VBBP'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
lines = lt_tline
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
ELSE.
READ TABLE lt_tline INDEX 1.
lv_maktx = lt_tline-tdline.
ENDIF.
②使用类方法获取长文本内容
DATA:lv_str TYPE string.
*读取长文本---通过id
CALL METHOD cl_eso_extraction_tools=>extract_long_text_by_id
EXPORTING
iv_langu = sy-langu "语言
iv_text_id = 'Z003' "文本标识
iv_name = ls_tdname "文本名
iv_object = 'VBBP' "文本对象
IMPORTING
ev_search_terms = lv_str.