Рассмотрим чтение длинных текстов на примере текста к основным данным материала (текстовый объект - MATERIAL, идентификатор - GRUN). Чтение длинного текста осуществляется с помощью функционального модуля READ_TEXT.
Массовое чтение длинных текстов можно выполнить следующим образом.
Неизвестный пользователь в комментариях подсказал, что есть ФМ READ_TEXT_TABLE для массового чтения текстов. ФМ присутствует в более новых версиях (в 7.40 есть, в 7.31 нет).
Текстовые объекты можно найти в ракурсе ведения V_TTXOBI (таблица TTXOB), идентификаторы к текстовым объектам - в ракурсе V_TTXID_N или V_TTXIDI (таблица TTXID), заголовок к длинному тексту - в таблице STXH, сам длинный текст - в таблице STXL.
Основные текстовые объекты:
ANLA - основное средство
BELEG - финансовый документ
EBAN - заявка
EBANH - заголовок заявки
EKKO - заголовок документа закупки
EKPO - позиция документа закупки
MATERIAL - материал
DATA: lv_id TYPE thead-tdid, lv_name TYPE thead-tdname, lv_object TYPE thead-tdobject, ls_header TYPE thead, lt_lines TYPE TABLE OF tline. lv_id = 'GRUN'. lv_name = p_matnr. lv_object = 'MATERIAL'. CALL FUNCTION 'READ_TEXT' EXPORTING * client = sy-mandt id = lv_id language = sy-langu name = lv_name object = lv_object * archive_handle = 0 * local_cat = ' ' IMPORTING header = ls_header 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 EQ 0. " Таблица lt_lines содержит длинный текст ENDIF.
Массовое чтение длинных текстов можно выполнить следующим образом.
TYPES: BEGIN OF ty_mara, matnr TYPE mara-matnr, tdname TYPE stxl-tdname, END OF ty_mara. TYPES: BEGIN OF ty_stxl, tdname TYPE stxl-tdname, clustr TYPE stxl-clustr, clustd TYPE stxl-clustd, END OF ty_stxl. TYPES: BEGIN OF ty_stxl_raw, clustr TYPE stxl-clustr, clustd TYPE stxl-clustd, END OF ty_stxl_raw. DATA: lt_mara TYPE TABLE OF ty_mara, lt_stxl TYPE TABLE OF ty_stxl, lt_stxl_raw TYPE TABLE OF ty_stxl_raw, ls_stxl_raw TYPE ty_stxl_raw, lt_tline TYPE TABLE OF tline. FIELD-SYMBOLS: <lfs_mara> LIKE LINE OF lt_mara, <lfs_stxl> TYPE ty_stxl, <lfs_tline> LIKE LINE OF lt_tline. SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE matnr IN s_matnr. CHECK lt_mara[] IS NOT INITIAL. LOOP AT lt_mara ASSIGNING <lfs_mara>. <lfs_mara>-tdname = <lfs_mara>-matnr. ENDLOOP. SELECT tdname clustr clustd FROM stxl INTO TABLE lt_stxl FOR ALL ENTRIES IN lt_mara WHERE relid = 'TX' AND tdobject = 'MATERIAL' AND tdname = lt_mara-tdname AND tdid = 'GRUN' AND tdspras = sy-langu. LOOP AT lt_stxl ASSIGNING <lfs_stxl>. REFRESH: lt_stxl_raw, lt_tline. ls_stxl_raw-clustr = <lfs_stxl>-clustr. ls_stxl_raw-clustd = <lfs_stxl>-clustd. APPEND ls_stxl_raw TO lt_stxl_raw. IMPORT tline = lt_tline FROM INTERNAL TABLE lt_stxl_raw. " Таблица lt_tline содержит длинный текст ENDLOOP.
Неизвестный пользователь в комментариях подсказал, что есть ФМ READ_TEXT_TABLE для массового чтения текстов. ФМ присутствует в более новых версиях (в 7.40 есть, в 7.31 нет).
DATA: lt_thead TYPE TABLE OF thead, ls_thead LIKE LINE OF lt_thead, lt_text TYPE text_lh. CLEAR ls_thead. ls_thead-tdobject = 'MATERIAL'. ls_thead-tdname = lv_matnr_01. ls_thead-tdid = 'GRUN'. ls_thead-tdspras = sy-langu. INSERT ls_thead INTO TABLE lt_thead. ls_thead-tdname = lv_matnr_02. INSERT ls_thead INTO TABLE lt_thead. CALL FUNCTION 'READ_TEXT_TABLE' * EXPORTING * client_specified = ' ' * archive_handle = 0 * local_cat = ' ' IMPORTING text_table = lt_text * error_table = TABLES text_headers = lt_thead EXCEPTIONS wrong_access_to_archive = 1 OTHERS = 2. IF sy-subrc EQ 0. LOOP AT lt_text ASSIGNING FIELD-SYMBOL(<lfs_text>). " <lfs_text>-lines содержит таблицу с текстом ENDLOOP. ENDIF.
Текстовые объекты можно найти в ракурсе ведения V_TTXOBI (таблица TTXOB), идентификаторы к текстовым объектам - в ракурсе V_TTXID_N или V_TTXIDI (таблица TTXID), заголовок к длинному тексту - в таблице STXH, сам длинный текст - в таблице STXL.
Основные текстовые объекты:
ANLA - основное средство
BELEG - финансовый документ
EBAN - заявка
EBANH - заголовок заявки
EKKO - заголовок документа закупки
EKPO - позиция документа закупки
MATERIAL - материал
Очень помогло, спасибо!
ОтветитьУдалитьПожалуйста!
УдалитьМассовое чтение текстов выполняется стандартным ФМом:
ОтветитьУдалитьREAD_TEXT_TABLE
Спасибо. Добавил.
Удалить