Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE38 - ABAP Редактор => Тема начата: Паганель от Апрель 02, 2009, 12:31:49 pm

Название: Как динамичесски формировать строку сообщения?
Отправлено: Паганель от Апрель 02, 2009, 12:31:49 pm
В двух словах: делаю вызов транзакции, после вызова имею табличку с кодом ошибки и параметром (номером кредитора) (пример: me025, 1000), по номеру сообщения с T100 вытягиваю строку ошибки "Поставщик & ЗакупОрг & предусмотрен для удаления.".

Внимание вопрос: как сформировать на основе строки ошибки и параметра "нормальное" сообщение, типа "Поставщик 1000 ЗакупОрг 0001 предусмотрен для удаления"?

В Delphi была функция format(str,.....), есть аналог в АБАП?
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Паганель от Апрель 02, 2009, 12:39:42 pm
Есть конечно replace (http://sapforum.biz/index.php/topic,88.0.html) но как динамичесски, т.е. не по искомой строке, а позиционно.
Название: Re: Как динамичесски формировать строку сообщения? (ФМ MESSAGE_TEXT_BUILD)
Отправлено: Uukrul от Апрель 02, 2009, 01:06:16 pm
CALL FUNCTION 'MESSAGE_TEXT_BUILD' - Поможет отцу русской демократии.. параметры там прозрачные.
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Паганель от Апрель 02, 2009, 01:10:05 pm
Спасибо, самое оно
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Dmitriy от Апрель 02, 2009, 01:14:30 pm
Если речь идет о внутренней таблице сообщений структуры BDCMSGCOLL (errtab, например), полученной после выполнения команды CALL TRANSACTION ..., то это делается элементарно:
Код: You are not allowed to view links. Register or Login
DATA: infotext(400).
MESSAGE ID errtab-msgid TYPE 'S' NUMBER errtab-msgnr WITH errtab-msgv1 errtab-msgv2 errtab-msgv3 errtab-msgv4 INTO infotext.
Можно посмотреть по errtab, классу и номеру сообщений, какие переменные из msgv1 - msgv4 актуальны.

P.S. Хотя сам всегда предпочитал ф-цию, про которую написал Uukrul
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Uukrul от Апрель 02, 2009, 01:21:27 pm
You are not allowed to view links. Register or Login
MESSAGE ID errtab-msgid TYPE 'S' NUMBER errtab-msgnr WITH errtab-msgv1 errtab-msgv2 errtab-msgv3 errtab-msgv4 INTO infotext.
А вот это INTO, оно кажется только с определенной версии есть... в 4.6 что-то я такого не нахожу...
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Паганель от Апрель 02, 2009, 01:22:31 pm
You are not allowed to view links. Register or Login
Если речь идет о внутренней таблице сообщений структуры BDCMSGCOLL (errtab, например), полученной после выполнения команды CALL TRANSACTION ..., то это делается элементарно:
Код: You are not allowed to view links. Register or Login
DATA: infotext(400).
MESSAGE ID errtab-msgid TYPE 'S' NUMBER errtab-msgnr WITH errtab-msgv1 errtab-msgv2 errtab-msgv3 errtab-msgv4 INTO infotext.
Можно посмотреть по errtab, классу и номеру сообщений, какие переменные из msgv1 - msgv4 актуальны.

P.S. Хотя сам всегда предпочитал ф-цию, про которую написал Uukrul

Тоже нормально
Код: You are not allowed to view links. Register or Login
MESSAGE ID .... INTO infotext. спасибо тоже можно использовать  :)
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Dmitriy от Апрель 02, 2009, 01:26:39 pm
You are not allowed to view links. Register or Login
А вот это INTO, оно кажется только с определенной версии есть... в 4.6 что-то я такого не нахожу...
Вполне возможно, навскидку не скажу, с 4.6 почти 3 года не работал.
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Uukrul от Апрель 02, 2009, 02:08:16 pm
You are not allowed to view links. Register or Login
Вполне возможно, навскидку не скажу, с 4.6 почти 3 года не работал.
Ну в документации такой конструкции нет, хотя проверил в программке работает...
Название: Re: Как динамичесски формировать строку сообщения?
Отправлено: Паганель от Апрель 08, 2009, 10:05:03 am
Пишу сюда, что бы не плодить топиков, просто забыл как вообще выводить сообщения после вызова транзакции, ФМ и т.д.

Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'XXX'
    .....
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.