Моя программа считывает текст с вкладки «Внутренние наблюдения» кода транзакции MM03
, используя функциональный модуль Read_Text
.
Во время испытаний я столкнулся со странной проблемой. Когда я запускал программу, показывалось только несколько текстов. Я отредактировал некоторые из этих текстов материалов в MM02
(только с пробелом или символом, например 'ABC'
-> 'ABC '
), и они были показаны в моей программе, поэтому я пошел на отладку и увидел, что функция работает отлично для всех.
Возможно, проблема в том, что почти все существующие материалы были изменены в натуральном выражении. Вы когда-нибудь сталкивались с такой проблемой?
Вот моя программа:
MOVE: gs_tab_out_f-matnr TO name,
'IVER' TO id,
'MATERIAL' TO object,
sy-langu TO language.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = id
language = language
name = name
object = object
TABLES
lines = lines
EXCEPTIONS
OTHERS = 8.
IF sy-subrc = 0.
LOOP AT lines INTO line WHERE tdformat EQ '*'.
WRITE line-tdline TO gs_tab_out_f-descricao.
ENDLOOP.
ENDIF.
ENDIF.
Шаги для воспроизведения:
1) Без изменения текста в MM02
, вывод будет:
MATERIAL TEXT
1. ASP-AU247
2. ASP-AU753
3. ASP-AU842
2) Добавить завершающий пробел к тексту в MM02
и сохранить его
3) Запустить программу, вывод:
MATERIAL TEXT
1. ASP-AU247 *A6 01/09-G/LAMAS
2. ASP-AU753 *A6 01/09-GREL
3. ASP-AU842 A6 01/09-FRISO
После изменения текста вручную я могу выполнить транзакцию, и каждый раз для этих материалов текст будет отображаться правильно.