SAPфорум.RU
https://www.sapboard.ru/forum/

ФМ READ_TEXT не выводит тексты для некоторых материалов
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=53759
Страница 1 из 1

Автор:  OK(sic!) [ Вт, сен 29 2009, 13:23 ]
Заголовок сообщения:  ФМ READ_TEXT не выводит тексты для некоторых материалов

День добрый !
Подскажите, пожалуйста, по какой причине для некоторых русских текстов/материалов может не работать ФМ READ_TEXT? Вообще ничего не выводит.
Параметры экспорта:
id = F03
language = RU
name = заказ+номер позиции
object = EKPO
Использую его для SAPScript формуляра под заказ на поставку. Причем INCLUDE с теми же параметрами выдает текст из карточки материала без сбоев. Более того, ФМ READ_TEXT тоже работает для тех материалов, где не работал, в одних случаях, если в самой карточке стереть и набить (вставить) русский текст заново, в других - это не помогает, но "кушает", если в позиции самого заказа в разделе "Тексты" переписать соответствующий русский текст (но тогда решение, соответственно, распространяется только на данный заказ).
INCLUDE не подошел, т.к. 1) текст нужно было вставить в определенную строку с другими переменными до и после, 2) нужно было отрезать нужное количество знаков текста.
Спасибо!

Автор:  SAA [ Вт, сен 29 2009, 13:55 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов  Тема решена

OK(sic!) написала:
Подскажите, пожалуйста, по какой причине для некоторых русских текстов/материалов может не работать ФМ READ_TEXT? Вообще ничего не выводит.

Запусти READ_TEXT в SE37 с теми же параметрами и посмотри, что будет в LINES.
Вполне возможно, пустые строки в начале или пробелы.

Также поищи ноты.

Также попробуй другие тексты посмотреть (другой id).

Автор:  OK(sic!) [ Ср, сен 30 2009, 11:43 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

BINGO! :) Спасибо огромное, изменила код для переноса в формуляр только непустой и, на всякий случай, только первой (!) непустой позиции (нечего в несколько строк названия писать ;-) и все супер работает :)

Автор:  SAA [ Ср, сен 30 2009, 13:07 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

OK(sic!) написала:
только первой (!) непустой позиции (нечего в несколько строк названия писать

CONCATENATE может решить и эту проблему

Автор:  OK(sic!) [ Ср, сен 30 2009, 16:50 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

Меня эта мысль тоже посетила, только сколько этих строчек склеивать: 2? А вдруг их будет 3 или 4. В общем я решила пока не усложнять, потому что обычно у нас описание позиции материала из одной строки состоит... Встанет вопрос - сделаем.
Этак можно сделать и чтобы высота строк в таблице регулировалась в зависимости от длины текста к примеру... Вопрос только, надо ли...
Вот ограничивается же длина текста во многих полях SAP определенным числом знаков. Пусть и тут тоже привыкают ;-) В конце концов, это не текст для документов сбыта (накладная, сч/ф) и не форма установленного образца...
В любом случае - спасибо ;-)

Автор:  DED_MOROZ [ Ср, сен 30 2009, 17:52 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

Зачем вам знать сколько строк возвращает ФМ?
Лепите с помощью CONCATENATE их все.

Автор:  riki11 [ Пт, окт 16 2020, 09:21 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

Добрый день.
Дорогие абаперы, подскажите пожалуйста. Куда в моем случае воткнуть CONCATENATE? ФМ берет не все строчки, а только первую из LINES

Пример кода:
CALL FUNCTION 'READ_TEXT' " Текст с комментарием по согласованию
EXPORTING
id = lc_tdid1
language = ls_head-tdspras
name = ls_head-tdname
object = ls_head-tdobject
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
OTHERS = 7.

IF sy-subrc EQ 0.
READ TABLE lt_lines
REFERENCE INTO lr_line
INDEX 1.
IF sy-subrc EQ 0.
lv_comment = lr_line->tdline.
ENDIF.
ENDIF.

Автор:  John Doe [ Пт, окт 16 2020, 09:25 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

Посмотрите пример в статье Function Example READ_TEXT ABAP wrapper function
Нужно организовать цикл по таблице вместо чтения первой строки.

Code:
CALL FUNCTION 'READ_TEXT'
       EXPORTING
            OBJECT                  = OBJECT
            ID                      = ID
            LANGUAGE                = LANGUAGE
            NAME                    = l_NAME "TR
       IMPORTING
            HEADER                  = TEXTHEADER
       TABLES
            LINES                   = TEXTLINES
       EXCEPTIONS
            ID                      = 1
            LANGUAGE                = 2
            NAME                    = 3
            NOT_FOUND               = 4
            OBJECT                  = 5
            REFERENCE_CHECK         = 6
            WRONG_ACCESS_TO_ARCHIVE = 7
            OTHERS                  = 8.

LOOP AT TEXTLINES.
   CONCATENATE TEXT TEXTLINES into TEXT SEPARATED BY space.
ENDLOOP.

Автор:  riki11 [ Пн, окт 19 2020, 08:44 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

Прописал все вроде правильно, в дамп не вылетает, но и комментарии не хочет вытаскивать, что я не так прописал?

Code:
CALL FUNCTION 'READ_TEXT' " Текст с комментарием по согласованию
      EXPORTING
        id              = lc_tdid1
        language        = ls_head-tdspras
        name            = ls_head-tdname
        object          = ls_head-tdobject
      TABLES
        lines           = lt_lines
      EXCEPTIONS
        id              = 1
        language        = 2
        name            = 3
        not_found       = 4
        object          = 5
        reference_check = 6
        OTHERS          = 7.

    IF sy-subrc EQ 0.
      ELSEIF lt_lines IS NOT INITIAL.
        LOOP AT lt_lines INTO lv_comment WHERE tdformat EQ '*'.
      IF lt_lines IS INITIAL.
        CONCATENATE lr_line->tdline lv_comment INTO lv_comment.
    ELSE.
      CONCATENATE lr_line->tdline lv_comment INTO lv_comment SEPARATED BY '0D0A'.
      ENDIF.
       ENDLOOP.
    ENDIF.

Автор:  ghost [ Пн, окт 19 2020, 10:56 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

riki11 написал:
Прописал все вроде правильно, в дамп не вылетает, но и комментарии не хочет вытаскивать, что я не так прописал?

всё не так после проверки sy-subrc, такое ощущение, что код был собран из разных примеров.
Code:
  DATA:
    lv_comment TYPE string,
    lref_line  TYPE REF TO tline.
 
  CALL FUNCTION 'READ_TEXT' " Текст с комментарием по согласованию
    EXPORTING
      id       = lc_tdid1
      language = ls_head-tdspras
      name     = ls_head-tdname
      object   = ls_head-tdobject
    TABLES
      lines    = lt_lines
    EXCEPTIONS
      OTHERS   = 1.
    IF sy-subrc EQ 0 AND lt_lines IS NOT INITIAL.
      LOOP AT lt_lines REFERENCE INTO lref_line.
        IF lv_comment IS INITIAL.
          lv_comment = lref_line->tdline.
        ELSE.
          CONCATENATE lv_comment lref_line->tdline INTO lv_comment SEPARATED BY '0D0A'.
        ENDIF.
      ENDLOOP.
    ENDIF.

Автор:  riki11 [ Пн, окт 19 2020, 12:11 ]
Заголовок сообщения:  Re: ФМ READ_TEXT не выводит тексты для некоторых материалов

Спасибо большое, все получилось. :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/