:::: МЕНЮ ::::

Чтение текстов

Для чтения текстов из ABAP используется функциональный модуль READ_TEXT. Ниже представлен пример чтения текста заголовка FI документа.


На вход READ_TEXT передаются:

  • ID идентификатор текста
  • LANGUAGE язык, для которого определен текст
  • OBJECT объект текста, определяется в зависимости от типа объекта (для FI документов BELEG, для заказов VBBK, и т.п.)
  • NAME имя объекта, для которого нужно считать текст

На выходе определяется LINES таблица с текстовыми данными.

Имя NAME объекта обычно является конкатинацией ключа объекта. Пример с объектом BELEG (заголовок документа FI).
Чтение текста ID=0001 заголовка документа FI

Заголовки документа FI хранятся в таблице BKPF. Соответственно ключом будет конкатинация полей BUKRS, BELNR, GJAHR.
Ключ заголовка документа FI

Примечание: соединять поля нужно с учетом пробелов. То есть использовать CONCATENATE с дополнением RESPECTING BLANKS.

Преобразование LINES в строку

Тексты хранятся в таблице типа TLINE, которая содержит поле TDFORMAT, отвечающее за формат и поле с текстом TDLINE. Конкатенация всех TDLINE не всегда даст желаемый результат. Корректно преобразовать таблицу TLINE в строку STRING можно через IDMX_DI_TLINE_INTO_STRING.

Чтение текстов из памяти

При сохранении текста (SAVE_TEXT), тексты предварительно записываются в ABAP-память. Пример ниже показывает как можно считать текст из памяти. Данный способ может пригодится, при чтении текста в OpenFI событии, когда документ еще не был создан, но ему уже был присвоен текст.

Если после SAVE_TEXT был вызван COMMIT_TEXT, то GET_TEXT_MEMORY вернет пустой каталог. В таком случае считать тексты можно следующим споособом.

Массовое чтение текстов

Иногда требуется считать большое число текстов для разных документов, например, при заполнении таблицы ALV. Сделать это можно через READ_TEXT_TABLE.

Если в вашей системе нет функционального модуля READ_TEXT_TABLE, можно выбрать данные напрямую из таблицы STXL.


Комментарии (1)

  • Ответить Yury |

    А вот как устроен STXL, чтобы его разобрать питоном например? У нас репликация во внешнюю систему, там нет никакого абапа и читать абапом на стороне ерп не можем.

Присоединиться к обсуждению...