Станьте участником SAPLAND и получите доступ к самым интересным публикациям SAPPRO
Зарегистрироваться
Да ладно, не помню я чтобы SAP удалял такие ФМ, да и вот зашел в одну из систем:
Есть такой модуль как вы видите.
Хотя если совсем все сложно то вот его код, там его написать то и самому вроде как без проблем.
FUNCTION convert_bdcmsgcoll_to_bapiret2.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" TABLES
*" IMT_BDCMSGCOLL STRUCTURE BDCMSGCOLL OPTIONAL
*" EXT_RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
DATA: lv_msgno LIKE sy-msgno,
lv_msgv1 LIKE sy-msgv1,
lv_msgv2 LIKE sy-msgv2,
lv_msgv3 LIKE sy-msgv3,
lv_msgv4 LIKE sy-msgv4.
DATA: ls_bdcmsgcoll LIKE bdcmsgcoll.
LOOP AT imt_bdcmsgcoll INTO ls_bdcmsgcoll.
lv_msgno = ls_bdcmsgcoll-msgnr.
lv_msgv1 = ls_bdcmsgcoll-msgv1(50).
lv_msgv2 = ls_bdcmsgcoll-msgv2(50).
lv_msgv3 = ls_bdcmsgcoll-msgv3(50).
lv_msgv4 = ls_bdcmsgcoll-msgv4(50).
PERFORM collect_message TABLES ext_return
USING ls_bdcmsgcoll-msgid
lv_msgno
ls_bdcmsgcoll-msgtyp
lv_msgv1
lv_msgv2
lv_msgv3
lv_msgv4.
ENDLOOP.
ENDFUNCTION.
Спасибо за ответ, но в ERP 6.0 EHP7 нет такого ФМ - 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'.
Здравствуйте, Екатерина. Ну может быть вы что-нибудь разъясните по УКД? Используете ли вы в ЭДО УКД (корректировочный УПД)? Меня интересует больше всего применение УКД для режима ДИС (документа об изменении стоимости) в случае с ММВ-7-15189@. В ММВ-20-15/86@ был в свою очередь режим 2 - соглашение об изменении стоимости. Для УКД мне не понятно:
1) как ДИС отражается в системе
2) в какие журналы ложится и т.п.
Да таких ФМ в SAP хоть пруд пруди, так как каждый абапящий индус похоже считал своим долгом написать вывод структуры BAPIRET2_TAB в диалоговом экране, чисто по быстрому 'FINB_BAPIRET2_DISPLAY' или 'RSCRMBW_DISPLAY_BAPIRET2' или 'CBIH_IAALD_BAPIRET2_SHOW' и короче есть их там еще.
Что касается вашего второго вопроса, то:
CONVERT_BDCMSGCOLL_TO_BAPIRET2 - Данный модуль позволяет выполнить преобразование таблицы сообщений получаемой после вызова пакетного ввода типа CALL TRANSACTION в таблицу сообщений типа BAPIRET2.
DATA: messtab TYPE STANDARD TABLE OF bdcmsgcoll,
bapiret2 TYPE STANDARD TABLE OF bapiret2.
* Например какой-нить вызов пакетника.
CALL TRANSACTION 'FB05' USING bdcdata
OPTIONS FROM ct_params
MESSAGES INTO messtab.
* Конвертируем результаты выполнения
CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
TABLES
imt_bdcmsgcoll = messtab[]
ext_return = bapiret2.
* Вывод сообщений в диалоговом окне
IF NOT gt_return[] IS INITIAL.
CALL FUNCTION 'FINB_BAPIRET2_DISPLAY'
EXPORTING
it_message = bapiret2.
ENDIF.
Спасибо за статью!
Для быстрого отображения BAPI-сообщений можно использовать ФМ C14ALD_BAPIRET2_SHOW, это тоже очень удобно.
Не подскажет ли кто-то, как быстро и удобно сообщения, полученные после CALL TRANSACTION '...' MESSAGES INTO <...>?
Для массового изменения системы оригинала скажем для всего пакета необходимо выделить выделить узел пакета (выделяться все объекты пакета) и набрать в поле для транзакций функциональный код MASS.
Ну оно ручками как-то, если вам надо сменить систему оригинала для сотни, другой объектов, короче не кошерно будет. Да и устанете. Поэтому есть такой вот отчетик: RSWBO_OBJCAT. Читаем документацию по его использованию и работаем.
======================================================================
Short text
Change Object Directory Entries
Purpose
This program enables you to change local and global object directory entries.
It is aimed particularly at cleaning up inconsistencies between local and global object directory entries.
Caution
This program can cause inconsistencies if used incorrectly.
The changes are not recorded. Include the changed objects manually in a request, and then transport the request.
Description
Select objects on the selection screen by entering a request or specifying the attributes of the object directory.
You then see a list of objects with the local original system, the global original system, the person responsible, and the package. You now have the option of selecting the objects, and copying the local original system to the global object directory, or copying the global object directory to the local original system.
Note the following:
Objects with the generation flag are not selected.
If the global original system is not filled, then there is no entry in the global object directory, and no entry can be included in the global object directory.
Objects from $ or T packages, or objects with generation flags are not included in the global object directory.
Prerequisites
You need administration authorization in the Transport Organizer area.
======================================================================
Ну оно ручками как-то, если вам надо сменить систему оригинала для сотни, другой объектов, короче не кошерно будет. Да и устанете. Поэтому есть такой вот отчетик: RSWBO_OBJCAT. Читаем документацию по его использованию и работаем.
======================================================================
Short text
Change Object Directory Entries
Purpose
This program enables you to change local and global object directory entries.
It is aimed particularly at cleaning up inconsistencies between local and global object directory entries.
Caution
This program can cause inconsistencies if used incorrectly.
The changes are not recorded. Include the changed objects manually in a request, and then transport the request.
Description
Select objects on the selection screen by entering a request or specifying the attributes of the object directory.
You then see a list of objects with the local original system, the global original system, the person responsible, and the package. You now have the option of selecting the objects, and copying the local original system to the global object directory, or copying the global object directory to the local original system.
Note the following:
Objects with the generation flag are not selected.
If the global original system is not filled, then there is no entry in the global object directory, and no entry can be included in the global object directory.
Objects from $ or T packages, or objects with generation flags are not included in the global object directory.
Prerequisites
You need administration authorization in the Transport Organizer area.
======================================================================
Олег, по поводу: "...Так как обычно внутри метода вызывается код работающий с внутренними переменными, доступа к которым мы внутри своей реализации класса не имеем..." (это касаемо Pre, Post или Overwrite)
Мы имеем доступ ко всем атрибутам и методам класса (и приватным в том числе). Обращаться к ним можно CORE_OBJECT-><имя атрибута/метода>
> так как последняя переменная в структуре содержит объявление, заканчивающееся запятой, а объявление расширения вклинивается в эту структуру, то мы получаем проблему, которую в принципе решить невозможно
На самом деле можно поставить DATA: или TYPE: перед добавлением нового поля и всё должно работать.
Например:
data: begin of bvttab occurs 20,
bvtyp(50) type c,
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Структ. BVTTAB, Выход S
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZZZZZ. "active version
DATA: zz_bvtyp_ext(10) TYPE c.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*
end of bvttab.
Комментарий от
Александр Грибов
| 01 февраля 2017, 12:37
Олег Точенюк 01 февраля 2017, 12:22
Да ладно, не помню я чтобы SAP удалял такие ФМ, да и вот зашел в одну из систем:

Есть такой модуль как вы видите.
Хотя если совсем все сложно то вот его код, там его написать то и самому вроде как без проблем.
FUNCTION convert_bdcmsgcoll_to_bapiret2.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" TABLES
*" IMT_BDCMSGCOLL STRUCTURE BDCMSGCOLL OPTIONAL
*" EXT_RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
DATA: lv_msgno LIKE sy-msgno,
lv_msgv1 LIKE sy-msgv1,
lv_msgv2 LIKE sy-msgv2,
lv_msgv3 LIKE sy-msgv3,
lv_msgv4 LIKE sy-msgv4.
DATA: ls_bdcmsgcoll LIKE bdcmsgcoll.
LOOP AT imt_bdcmsgcoll INTO ls_bdcmsgcoll.
lv_msgno = ls_bdcmsgcoll-msgnr.
lv_msgv1 = ls_bdcmsgcoll-msgv1(50).
lv_msgv2 = ls_bdcmsgcoll-msgv2(50).
lv_msgv3 = ls_bdcmsgcoll-msgv3(50).
lv_msgv4 = ls_bdcmsgcoll-msgv4(50).
PERFORM collect_message TABLES ext_return
USING ls_bdcmsgcoll-msgid
lv_msgno
ls_bdcmsgcoll-msgtyp
lv_msgv1
lv_msgv2
lv_msgv3
lv_msgv4.
ENDLOOP.
ENDFUNCTION.