Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SE38 - ABAP Редактор => Тема начата: Паганель от Апрель 02, 2009, 12:31:49 pm
-
В двух словах: делаю вызов транзакции, после вызова имею табличку с кодом ошибки и параметром (номером кредитора) (пример: me025, 1000), по номеру сообщения с T100 вытягиваю строку ошибки "Поставщик & ЗакупОрг & предусмотрен для удаления.".
Внимание вопрос: как сформировать на основе строки ошибки и параметра "нормальное" сообщение, типа "Поставщик 1000 ЗакупОрг 0001 предусмотрен для удаления"?
В Delphi была функция format(str,.....), есть аналог в АБАП?
-
Есть конечно replace (http://sapforum.biz/index.php/topic,88.0.html) но как динамичесски, т.е. не по искомой строке, а позиционно.
-
CALL FUNCTION 'MESSAGE_TEXT_BUILD' - Поможет отцу русской демократии.. параметры там прозрачные.
-
Спасибо, самое оно
-
Если речь идет о внутренней таблице сообщений структуры BDCMSGCOLL (errtab, например), полученной после выполнения команды CALL TRANSACTION ..., то это делается элементарно:
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.
-
MESSAGE ID errtab-msgid TYPE 'S' NUMBER errtab-msgnr WITH errtab-msgv1 errtab-msgv2 errtab-msgv3 errtab-msgv4 INTO infotext.
А вот это INTO, оно кажется только с определенной версии есть... в 4.6 что-то я такого не нахожу...
-
Если речь идет о внутренней таблице сообщений структуры BDCMSGCOLL (errtab, например), полученной после выполнения команды CALL TRANSACTION ..., то это делается элементарно:
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.
Тоже нормально MESSAGE ID .... INTO infotext.
спасибо тоже можно использовать :)
-
А вот это INTO, оно кажется только с определенной версии есть... в 4.6 что-то я такого не нахожу...
Вполне возможно, навскидку не скажу, с 4.6 почти 3 года не работал.
-
Вполне возможно, навскидку не скажу, с 4.6 почти 3 года не работал.
Ну в документации такой конструкции нет, хотя проверил в программке работает...
-
Пишу сюда, что бы не плодить топиков, просто забыл как вообще выводить сообщения после вызова транзакции, ФМ и т.д.
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.