Sap журнал ошибок

Автор Сообщение

Заголовок сообщения: Журнал ошибок в тр-ии ME21N

СообщениеДобавлено: Ср, дек 08 2004, 08:36 

Гость


Добрый день!

Подскажите, пожалуйста, каким образом происходит добавление записей в журнал сообщений тр-ии ME21N. И как можно самому добавить запись в журнал, ну , например из юзерекзита?

Спасибо!

Принять этот ответ

Вернуться к началу

EGF

Заголовок сообщения:

СообщениеДобавлено: Ср, дек 08 2004, 11:18 

Почетный гуру
Почетный гуру



Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640

Я думаю, пригодится

BAdi ME_PROCESS_PO_CUST или ME_PROCESS_PO.

Метод CHECK.

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

Loyso

Заголовок сообщения:

СообщениеДобавлено: Ср, май 24 2006, 13:29 



Зарегистрирован:
Ср, янв 12 2005, 13:39
Сообщения: 2811
Откуда: замкадыш

EGF написал(а):

Я думаю, пригодится
BAdi ME_PROCESS_PO_CUST или ME_PROCESS_PO.
Метод CHECK.

Народ, кто может пояснить как это делается. впервые столкнулся с BAdI. С помощью какой транзакции можно их дорабатывать? Вот в этом конкретном случае. (Кстати говоря, если я правильно понял, то журнал ошибок — это окно, вываливающееся после нажатия ‘SAVE’?).


_________________
Что бы выловить случайную ошибку нужно добиться устойчивости её появления.

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

Mike1

Заголовок сообщения:

СообщениеДобавлено: Ср, май 24 2006, 13:33 



Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской

se19/se18

Принять этот ответ

Вернуться к началу

Профиль  

Loyso

Заголовок сообщения:

СообщениеДобавлено: Ср, май 24 2006, 13:45 



Зарегистрирован:
Ср, янв 12 2005, 13:39
Сообщения: 2811
Откуда: замкадыш

Mike1 написал:

se19/se18

тханкс, а нет какой нить доки на мыло кинуть?


_________________
Что бы выловить случайную ошибку нужно добиться устойчивости её появления.

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

OlegDm

Заголовок сообщения:

СообщениеДобавлено: Ср, май 24 2006, 13:56 

Гуру-эксперт
Гуру-эксперт



Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan

Вот для простоты, например, проверка обязательности заполнения какого-нить поля в заголовке заказа:

Code:

method IF_EX_ME_PROCESS_PO_CUST~CHECK.

* ————————————————
  DATA: ls_mepoheader TYPE mepoheader.
* ————————————————
  include mm_messages_mac.
* ————————————————

  ls_mepoheader = im_header->get_data( ).

  if ls_mepoheader-bstyp = ‘F’.

        mmpur_remove_messages_by_id ls_mepoheader-id.

        if ls_mepoheader-<ИмяПоля> is initial.

          mmpur_business_obj_id ls_mepoheader-id.
          mmpur_message_forced ‘E’ ‘ZM’ ‘101’ <Имя поля> » » ».
          ch_failed = ‘X’.

        endif.

        endif.
endmethod.

с проверкой позиций чуток посложней.

Последний раз редактировалось OlegDm Ср, май 24 2006, 14:03, всего редактировалось 1 раз.

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

Loyso

Заголовок сообщения:

СообщениеДобавлено: Ср, май 24 2006, 14:01 



Зарегистрирован:
Ср, янв 12 2005, 13:39
Сообщения: 2811
Откуда: замкадыш

ага, поримерно понял. спасибо. будем посмотреть.


_________________
Что бы выловить случайную ошибку нужно добиться устойчивости её появления.

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

Loyso

Заголовок сообщения:

СообщениеДобавлено: Пт, май 26 2006, 14:58 



Зарегистрирован:
Ср, янв 12 2005, 13:39
Сообщения: 2811
Откуда: замкадыш

отлично, mepoheader — это заголовок.

Подозреваю, что позиции это mepoitem….

Блин, народ, как достучаться до значения поля Site в позициях????

Всё ясно, пятница вечер, какой там АБАП. И правда — чёрт с ним, в понедельник доделаю:)

Но помощь всё равно нужна. Народ, будет время, подскажите плиз!


_________________
Что бы выловить случайную ошибку нужно добиться устойчивости её появления.

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

bossjohn

Заголовок сообщения:

СообщениеДобавлено: Пт, июл 28 2006, 10:32 

Старший специалист
Старший специалист



Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва

А каким образом можно с помощью ME_PROCESS_PO_CUST в поле Вид оценки заменить средство поиска? Как я понимаю при нажатии F4 ни один из методов не срабатывает.

Принять этот ответ

Вернуться к началу

Профиль  

trop

Заголовок сообщения: re

СообщениеДобавлено: Пт, июл 28 2006, 20:45 



Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963

попахивает изменением стандарта )

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

bossjohn

Заголовок сообщения:

СообщениеДобавлено: Чт, авг 17 2006, 15:05 

Старший специалист
Старший специалист



Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва

А может кто знает каким образом в тр. me21n получить данные заголовка и элементов (l_header и l_item).

Сам Сап делает что-то типа этого

Code:

DATA: call_subscreen TYPE sy-dynnr,                         «#EC NEEDED
      call_prog TYPE sy-repid,                              «#EC NEEDED
      call_view TYPE REF TO cl_screen_view_mm,              «#EC NEEDED
     call_view_stack TYPE REF TO cl_screen_view_mm OCCURS 0,»#EC NEEDED
      global_framework TYPE REF TO cl_framework_mm,         «#EC NEEDED
      global_help_view TYPE REF TO cl_screen_view_mm,       «#EC NEEDED
      global_help_prog TYPE sy-repid.                       «#EC NEEDED

CALL METHOD cl_framework_mm=>get_instance
                 IMPORTING ex_instance = global_framework.
      global_help_prog = sy-repid.
      CALL METHOD global_framework->get_view
                  EXPORTING im_prog  = global_help_prog
                            im_dynnr = sy-dynnr
                  IMPORTING ex_view  = global_help_view.
      IF NOT global_help_view IS INITIAL.        CALL METHOD global_help_view->handle_event( ‘EVENT_POV_LIST’ )

дальше в handle_event вызывается метод POV, в котором:

Code:

CALL METHOD POV_LIST( IM_MODEL     = MY_MODEL
                          IM_METAFIELD = WA-METAFIELD
                          IM_MODE      = L_MODE ).

и уже внем путем

Code:

l_item ?= im_model.                                           
call method l_item->get_data importing ex_data = l_mepoitem. 

вытягиваем данные элементов

Весь вопрос в том как мне получить ту самую MY_MODEL из которой можно все вытянуть???

Принять этот ответ

Вернуться к началу

Профиль  

OlegDm

Заголовок сообщения:

СообщениеДобавлено: Пн, авг 21 2006, 07:38 

Гуру-эксперт
Гуру-эксперт



Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan

bossjohn написал(а):

А может кто знает каким образом в тр. me21n получить данные заголовка и элементов (l_header и l_item).

Не совсем понял вопрос… ведь EGF уже подсказал соответствующие BADI. Возьмем, например, ME_PROCESS_PO_CUST и метод CHECK.

В нем можно легко, как уже писал выше, получить данные заголовка:

Code:

  DATA: ls_mepoheader TYPE mepoheader.

  ls_mepoheader = im_header->get_data( ).

Здесь же можно достучаться и до позиций заказа

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

bossjohn

Заголовок сообщения:

СообщениеДобавлено: Пн, авг 21 2006, 10:53 

Старший специалист
Старший специалист



Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва

Так вначале и делал. Но потом оказалось что енто БАДИ отрабатывает не всегда и возникла необходимость сделать по другому. ВОт извращаюсь.

Принять этот ответ

Вернуться к началу

Профиль  

creo

Заголовок сообщения:

СообщениеДобавлено: Ср, окт 04 2006, 15:06 



Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143

Никому не довелось удалять записи из журнала сообщений тр-ии ME21N?

Принять этот ответ

Вернуться к началу

Профиль  

OlegDm

Заголовок сообщения:

СообщениеДобавлено: Чт, окт 05 2006, 07:03 

Гуру-эксперт
Гуру-эксперт



Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan

creo написал(а):

Никому не довелось удалять записи из журнала сообщений тр-ии ME21N?

выше уже было:

OlegDm написал(а):

Вот для простоты, например, проверка обязательности заполнения какого-нить поля в заголовке заказа:

Code:

method IF_EX_ME_PROCESS_PO_CUST~CHECK.

* ————————————————
  DATA: ls_mepoheader TYPE mepoheader.
* ————————————————
  include mm_messages_mac.
* ————————————————

  ls_mepoheader = im_header->get_data( ).

  if ls_mepoheader-bstyp = ‘F’.

        mmpur_remove_messages_by_id ls_mepoheader-id.

        if ls_mepoheader-<ИмяПоля> is initial.

          mmpur_business_obj_id ls_mepoheader-id.
          mmpur_message_forced ‘E’ ‘ZM’ ‘101’ <Имя поля> » » ».
          ch_failed = ‘X’.

        endif.

        endif.
endmethod.

с проверкой позиций чуток посложней.

макрос mmpur_remove_messages_by_id ls_mepoheader-id в вышеприведенном коде как раз удаляет сообщения.

сам макрос находится в инклуде mm_messages_mac

Принять этот ответ

Вернуться к началу

Профиль Отправить email  

При выполнении программы могут возникать ситуации, которые необходимо донести до пользователя. Обычно это ошибки, предупреждения или просто сообщение об успешном выполнении процедуры. Эти сообщения не должны возникать по отдельности через команду MESSAGE. Их нужно собрать и отобразить все вместе в нужный момент. Такой набор сообщений называется журналом. Журнал содержит как заголовочную информацию (код транзакции, пользователь, дата и время создания и т.п.), так и позиционную (сами сообщения).
Для ведения журнала приложений SAP предоставляет мощный инструмент, называемый BAL (Basis Application Log). Журнал приложений применяется для отладки, поддержки и разработки как стандартный, так и Z-приложений. Лог особенно необходим при отладки фоновых задачах, веб-сервисов, рабочих процессов, т.е. где не всегда удобно, а иногда даже просто невозможно использовать стандартный отладчик.
Просмотреть журнал приложения можно в тр. SLG1.
тр. SLG1 - Журнал приложения SAP


Реализация журнала приложений содержится в пакете SZAL.
BC-SRV-BAL - Базис: журнал приложений

Принцип работы

Весь цикл работы журнала приложений можно свести к 3-м этапам:

  • Создание/загрузка журнала. Для создания экземпляра лога используется функциональный модуль BAL_LOG_CREATE. На вход в ФМ передается структура типа BAL_S_LOG, содержащая заголовочную информацию. ФМ возвращает ID журнала приложений BALLOGHNDL.
  • Добавление сообщений. Для добавления сообщений используется функциональный модуль BAL_LOG_MSG_ADD. На вход ФМ передается ID журнала BALLOGHNDL, а также структура типа BAL_S_MSG содержащая информацию о сообщении.
  • Сохранение/отображение журнала. За отображения лога отвечает функциональный модуль BAL_DSP_LOG_DISPLAY.

Пример простого использования журнала приложений

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

*&———————————————————————*

*& Report  ZBAL_LOG_EXAMPLE1

*& BAL Log: Журнал приложений SAP

*&———————————————————————*

*& Пример использования журнала приложений SAP

*& http://abap4.ru/?p=283

*&———————————————————————*

REPORT zbal_log_example1.

START-OF-SELECTION.

  PERFORM main.

FORM main.

  DATA ls_log TYPE bal_s_log.

  DATA ls_msg TYPE bal_s_msg.

  DATA lv_hnd TYPE balloghndl.

  DATA lt_hnd TYPE bal_t_logh.

  DATA lv_dummy TYPE string.

  ls_logextnumber = ‘Журнал приложений’.

  ls_logaluser = syuname.

  ls_logalprog = syrepid.

  CALL FUNCTION ‘BAL_LOG_CREATE’

    EXPORTING

      i_s_log      = ls_log

    IMPORTING

      e_log_handle = lv_hnd.

  MESSAGE s191(bl) INTO lv_dummy.

  ls_msgmsgty = symsgty.

  ls_msgmsgid = symsgid.

  ls_msgmsgno = symsgno.

  ls_msgmsgv1 = symsgv1.

  ls_msgmsgv2 = symsgv2.

  ls_msgmsgv3 = symsgv3.

  ls_msgmsgv4 = symsgv4.

  CALL FUNCTION ‘BAL_LOG_MSG_ADD’

    EXPORTING

      i_s_msg      = ls_msg

      i_log_handle = lv_hnd.

  APPEND lv_hnd TO lt_hnd.

  CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’

    EXPORTING

      i_t_log_handle = lt_hnd.

ENDFORM.

Результат работы программы
Пример использования журнала приложений SAP

Структура заголовка

Параметр Значение
1 EXTNUMBER Внешний идентификатор. Используется в качестве критериев поиска нужного журнала.
2 OBJECT Имя объекта. Объект журнала приложений, применяется при поиске в тр. SLG1.
3 SUBOBJECT Подобъект. Объект журнала приложений, применяется при поиске в тр. SLG1.
4 ALDATE Дата
5 ALTIME Время
6 ALUSER Имя пользователя
7 ALTCODE Код транзакции
8 ALPROG Имя программы
9 ALMODE Режим работы (B — фоновый; D — диалоговый; I — пакетный ввод; A — авто)
10 ALCHDATE Дата последнего изменения
11 ALCHTIME Время последнего изменения
12 ALCHUSER Пользователь, изменивший журнал
13 ALDATE_DEL Дата истечения срока хранения
14 DEL_BEFORE Журнал сохраняется до истечения срока хранения
15 ALSTATE Статус обработки (1 — подлежит обработке; 2 — в обработке; 3 — исполнено)
16 CONTEXT Контекст. Используется для привязки контекста к сообщению.
17 PARAMS Параметры. Используется для детализации сообщений.

В журнале приложений эти поля будут выглядеть следующим образом
BAL Log: Поля структуры BAL_S_LOG

Структура сообщения

Параметр Значение
1 MSGTY Тип сообщения
2 MSGID Класс сообщений
3 MSGNO Номер сообщения
4 MSGV1 Переменная сообщения
5 MSGV2 Переменная сообщения
6 MSGV3 Переменная сообщения
7 MSGV4 Переменная сообщения
8 MSGV1_SRC Происхождение переменных сообщения
9 MSGV2_SRC Происхождение переменных сообщения
10 MSGV3_SRC Происхождение переменных сообщения
11 MSGV4_SRC Происхождение переменных сообщения
12 DETLEVEL Степень детализации (число от 1 до 9)
13 PROBCLASS Класс проблем сообщения (1 — особо важное; 2 — важное; 3 — среднее; 4 — дополнительная информация)
14 ALSORT Критерий сортировки/группировка
15 TIME_STMP Метка времени сообщения
16 MSG_COUNT Число накопленных сообщений
17 CONTEXT Контекст. Используется для привязки контекста к сообщению.
18 PARAMS Параметры. Используется для детализации сообщений.

Параметры MSGV1_SRC, MSGV2_SRC, MSGV3_SRC, MSGV4_SRC используются для анализа сообщений. В них можно записывать параметры или место запуска программы. Например, у нас есть 2 реализации одной и той же операции. Сообщения в журналах будут одинаковыми. Чтобы отличить происхождения сообщений, можно записать служебную информацию в переменные происхождения.
Параметры DETLEVEL, PROBCLASS, ALSORT используются для фильтрации и сортировки сообщений.
Параметр MSG_COUNT является счетчиком накопленных сообщений, в случае если отправляются одинаковые сообщения.

В журнале приложений эти поля будут выглядеть следующим образом
BAL LOG: Поля структуры сообщения BAL_S_MSG

Пример стандартной демо-программы SBAL_DEMO_01.

Детализация сообщений

Сообщения можно детализировать. Процесс детализации заключается в следующем: в параметр PARAMS заполняются необходимые переменные и программу обратной связи для обработки детализации. При двойном клике на поле детализации вызывается программа обратной связи, в которую передаются необходимые параметры.
Параметр PARAMS является структурой типа BAL_S_PARM.

Параметр Значение
1 T_PAR Таблица параметров с именами параметров и их значениями
2 CALLBACK Структура для обратной связи
3 ALTEXT Текст из SE61, в случае если длины текста T100 не достаточно

Программа обратной связи представляет собой функциональный модуль или подпрограмму, принимающие на вход таблицу I_T_PARAMS типа BAL_T_PAR.
В случае, если необходимо вызывать ФМ, то CALLBACK должна быть заполнена следующим образом:
CALLBACK-USEREXITT = ‘F’.
CALLBACK-USEREXITF = ИМЯ_ФМ.
В случае, если необходимо вызывать подпрограмму, то CALLBACK должна быть заполнена следующим образом:
CALLBACK-USEREXITP = ИМЯ_ПРОГРАММЫ.
CALLBACK-USEREXITF = ИМЯ_ПОДПРОГРАММЫ.

Пример журнала приложений с деталицацией

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

*&———————————————————————*

*& Report  ZBAL_LOG_EXAMPLE2

*& BAL Log: Журнал приложений SAP

*&———————————————————————*

*& Пример детализации в журнале приложений SAP

*& http://abap4.ru/?p=283

*&———————————————————————*

REPORT zbal_log_example2.

START-OF-SELECTION.

  PERFORM main.

FORM main.

  DATA ls_log TYPE bal_s_log.

  DATA ls_msg TYPE bal_s_msg.

  DATA lv_hnd TYPE balloghndl.

  DATA lt_hnd TYPE bal_t_logh.

  DATA ls_param TYPE BAL_S_PAR.

  DATA lv_dummy TYPE string.

  ls_logaluser = syuname.

  ls_logextnumber = ‘Журнал приложений’.

  CALL FUNCTION ‘BAL_LOG_CREATE’

    EXPORTING

      i_s_log      = ls_log

    IMPORTING

      e_log_handle = lv_hnd.

  MESSAGE w191(bl) INTO lv_dummy.

  ls_msgmsgty = symsgty.

  ls_msgmsgid = symsgid.

  ls_msgmsgno = symsgno.

  ls_msgmsgv1 = symsgv1.

  ls_msgmsgv2 = symsgv2.

  ls_msgmsgv3 = symsgv3.

  ls_msgmsgv4 = symsgv4.

  ls_msgparamscallbackuserexitp = syrepid.

  ls_msgparamscallbackuserexitf = ‘CALLBACK’.

  ls_paramparname = ‘PAR’.

  ls_paramparvalue = ‘Hello, world!’.

  APPEND ls_param TO ls_msgparamst_par.

  CALL FUNCTION ‘BAL_LOG_MSG_ADD’

    EXPORTING

      i_s_msg      = ls_msg

      i_log_handle = lv_hnd.

  APPEND lv_hnd TO lt_hnd.

  CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’

    EXPORTING

      i_t_log_handle = lt_hnd.

ENDFORM.

FORM callback TABLES i_t_params TYPE bal_t_par.

  DATA ls_param TYPE bal_s_par.

  READ TABLE i_t_params INTO ls_param WITH KEY parname = ‘PAR’.

  CHECK sysubrc EQ 0.

  MESSAGE ls_paramparvalue TYPE rs_c_info.

ENDFORM.

И результат выполнения
BAL LOG: Детализация сообщения

Пример стандартной демо-программы SBAL_DEMO_02.

Привязка контекста

Иногда сообщение имеет смысл только в контексте. Например, сообщение «Документ не может быть удален» возникает при обработке определённого документа. При выводе лога привязка документа теряется. Информация о документе может быть помещена в само сообщение. В этом случае могут возникнуть проблемы при анализе сообщения (в случае если перечень сообщений возвращает пакетный ввод) или число параметром может быть больше чем число переменных сообщения (например, БЕ, завод, склад, год, номер документа, позиция и т.п.).
Журнал приложения предоставляет возможность добавить к сообщениям определенный контекст. В программе просмотра журнала поля контекста можно выводить в отдельном столбце.
BAL LOG: пример вывода полей контекста в ALV

Для добавления контекста необходимо заполнить параметр CONTEXT, который является структурой типа BAL_S_CONT.

Параметр Значение
1 TABNAME Имя структуры ABAP-словаря (см. SE11)
2 VALUE Данные контекста

Если контекстом является плоская структура, все элементы которой типа CLIKE, то контекст можно заполнить прямым присвоением структуры в поле VALUE

  DATA ls_msg TYPE bal_s_msg.

  DATA ls_ctx TYPE zs_bal_ctx.

  ls_msgcontexttabname = ‘ZS_BAL_CTX’.

  ls_msgcontextvalue = ls_ctx.

В остальных случаях (например, если контекст содержит числовые поля) можно воспользоваться таким способом

  DATA ls_msg TYPE bal_s_msg.

  DATA ls_ctx TYPE zs_bal_ctx.

  FIELDSYMBOLS: <lv_ctx> TYPE c.

  ASSIGN ls_ctx TO <lv_ctx> CASTING.

  ls_msgcontexttabname = ‘ZS_BAL_CTX’.

  ls_msgcontextvalue = <lv_ctx>.

Для вывода полей контекста в ALV журнала приложений, необходимо добавить нужное поле в каталог полей. Отображение журнала происходит через функциональный модуль BAL_DSP_LOG_DISPLAY, в который передается параметр профиля отображения I_S_DISPLAY_PROFILE. В профиле есть поле MESS_FCAT — каталог полей. В него нужно добавить нужные столбцы для отображения.
Пример стандартной демо-программы SBAL_DEMO_02.

Объединение сообщений

Некоторые сообщения отправляются программой несколько раз без предоставления новой информации. Такие сообщения могут быть объединены с помощью BAL_LOG_MSG_CUMULATE. Когда повторяется одно и то же сообщение, новое сообщение не добавляется, счетчик MSG_COUNT для старого сообщения увеличивается.
Функциональный модуль BAL_LOG_MSG_CUMULATE имеет спец. параметры, определяющие критерии объединения:
I_COMPARE_ATTRIBUTES = ‘X’
Атрибуты сообщения (класс проблем PROBCLASS, уровень детализации DETLEVEL, критерий сортировки ALSORT) должны совпадать
I_COMPARE_CONTEXT = ‘X’
Контекст должен совпадать
I_COMPARE_PARAMETERS = ‘X’
Параметры сообщения должны совпадать

Дополнительные возможности добавления сообщений

BAL_LOG_MSG_ADD_FREE_TEXT — добавляет текст в журнал

  CALL FUNCTION ‘BAL_LOG_MSG_ADD_FREE_TEXT’

    EXPORTING

      i_msgty = ‘E’

      i_text  = ‘Текст сообщения’.

BAL_LOG_EXCEPTION_ADD — добавляет исключение в журнал

  DATA ls_exc TYPE bal_s_exc.

  DATA lr_root TYPE REF TO cx_root.

  ls_excmsgty = ‘E’.

  ls_excexception = lr_root.

  CALL FUNCTION ‘BAL_LOG_EXCEPTION_ADD’

    EXPORTING

      i_log_handle = lv_log_handle

      i_s_exc      = ls_exc.

Пример стандартной демо-программы SBAL_DEMO_07.

Сохранение журнала приложений

Если журнал нужно сохранять в БД, то при создании лога через BAL_LOG_CREATE в структуру заголовка необходимо передать объект и подобъект (не обязательно).
Создаются объекты и подобъекты в тр. SLG0.
slg0 - создание объекта/подобъекта BAL

Просматривать журнал можно будет в тр. SLG1.
slg1 - просмотр журнала приложений BAL

Чтобы сообщения сохранились нужно вызвать BAL_DB_SAVE, после чего сделать COMMIT WORK.

Просмотр журнала сообщений

За отображения журнала приложений отвечает BAL_DSP_LOG_DISPLAY. На вход нужно передать заполненную структуру BAL_S_PROF. В большинстве случаев, требуется изменить какие-то значения структуры. Чтобы не заполнять профиль целиком, можно считать стандартный профиль и изменить в нем нужные поля. Пример добавляет контекстное поле в ALV.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

FORM log_display.

  DATA ls_display_profile TYPE bal_s_prof.

  DATA ls_fcat TYPE bal_s_fcat.

  CALL FUNCTION ‘BAL_DSP_PROFILE_SINGLE_LOG_GET’

    IMPORTING

      e_s_display_profile = ls_display_profile

    EXCEPTIONS

      OTHERS              = 1.

  IF sysubrc <> 0.

    MESSAGE ID symsgid TYPE symsgty NUMBER symsgno

            WITH symsgv1 symsgv2 symsgv3 symsgv4.

  ENDIF.

  ls_fcatref_table = ‘BAL_S_EX01’.

  ls_fcatref_field = ‘ID’.

  ls_fcatcol_pos   = 100.

  APPEND ls_fcat TO ls_display_profilemess_fcat.

  ls_display_profiledisvariantreport = syrepid.

  ls_display_profiledisvarianthandle = ‘LOG’.

  CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’

    EXPORTING

      i_s_display_profile = ls_display_profile

    EXCEPTIONS

      OTHERS              = 1.

  IF sysubrc <> 0.

    MESSAGE ID symsgid TYPE symsgty NUMBER symsgno

            WITH symsgv1 symsgv2 symsgv3 symsgv4.

  ENDIF.

ENDFORM.

Отображение журнала в модальном окне

Функциональный модуль BAL_DSP_PROFILE_POPUP_GET возвращает настройки профиля для вывода в модальном окне.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

*&———————————————————————*

*& Report  ZBAL_LOG_EXAMPLE3

*& BAL Log: Журнал приложений SAP

*&———————————————————————*

*& Пример детализации в журнале приложений SAP

*& http://abap4.ru/?p=283

*&———————————————————————*

REPORT zbal_log_example3.

START-OF-SELECTION.

  PERFORM main.

FORM main.

  DATA ls_log TYPE bal_s_log.

  DATA ls_msg TYPE bal_s_msg.

  DATA lv_hnd TYPE balloghndl.

  DATA lt_hnd TYPE bal_t_logh.

  DATA ls_prof TYPE bal_s_prof.

  DATA lv_dummy TYPE string.

  CALL FUNCTION ‘BAL_LOG_CREATE’

    EXPORTING

      i_s_log      = ls_log

    IMPORTING

      e_log_handle = lv_hnd.

  MESSAGE w191(bl) INTO lv_dummy.

  ls_msgmsgty = symsgty.

  ls_msgmsgid = symsgid.

  ls_msgmsgno = symsgno.

  ls_msgmsgv1 = symsgv1.

  ls_msgmsgv2 = symsgv2.

  ls_msgmsgv3 = symsgv3.

  ls_msgmsgv4 = symsgv4.

  CALL FUNCTION ‘BAL_LOG_MSG_ADD’

    EXPORTING

      i_s_msg      = ls_msg

      i_log_handle = lv_hnd.

  CALL FUNCTION ‘BAL_DSP_PROFILE_POPUP_GET’

    IMPORTING

      e_s_display_profile = ls_prof.

  ls_profuse_grid = abap_true.

  APPEND lv_hnd TO lt_hnd.

  CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’

    EXPORTING

      i_t_log_handle      = lt_hnd

      i_s_display_profile = ls_prof.

ENDFORM.

Результат будет таким
BAL LOG: Журнал приложения в модальном окне

Информация

Подробную документацию API журнала приложений можно взять тут.
Демо программы:
SBAL_DEMO_01 — простейший вызов журнала приложений
SBAL_DEMO_02 — различные виды сбора сообщений, детализация, контекст
SBAL_DEMO_03 — поиск сообщений в памяти
SBAL_DEMO_04 — разные форматы журнала приложений
SBAL_DEMO_05 — сохранение и загрузка журналов
SBAL_DEMO_06 — добавление комплексных данных к журналу
SBAL_DEMO_07 — добавление исключений
SBAL_DEMO_08 — поиск исключений в памяти

Часто возникает необходимость вывода списка сообщений пользователю SAP. В журнал сообщений ABAP может выводится информация о ходе выполнения программы SAP. Также он необходим для вывода списка ошибок, возникших в результате её выполнения. В результате разберём набор ФМ, предназначенных для вывода журнала сообщений ABAP.

Варианты реализации – это глобальная переменная в программе ABAP или атрибут класса. И в ходе выполнения программы в эту переменную сохраняются сообщения. По окончанию выполнения программы выводится журнал сообщений. Либо происходит сохранение журнала в системе SAP с возможностью просмотра в транзакции SLG1.

Этапы работы с журналом сообщений SAP.

Создание журнала сообщений ABAP.

Создание экземпляра журнала сообщений SAP происходит с использованием функционального модуля BAL_LOG_CREATE.

DATA:

  ls_log   TYPE bal_s_log,

  lv_log_h TYPE balloghndl.

CALL FUNCTION ‘BAL_LOG_CREATE’

  EXPORTING

    i_s_log                 = ls_log

  IMPORTING

    e_log_handle            = lv_log_h

  EXCEPTIONS

    log_header_inconsistent = 0.

Добавление сообщений в журнал SAP.

Добавить новые сообщения в журнал можно используя функциональный модуль BAL_LOG_MSG_ADD.

DATA:

  ls_msg   TYPE bal_s_msg,

  lv_log_h TYPE balloghndl.

ls_msgmsgid = ‘ESH_TAU_MSG’.

ls_msgmsgno = ‘000’.

ls_msgmsgty = ‘E’.

CALL FUNCTION ‘BAL_LOG_MSG_ADD’

  EXPORTING

    i_log_handle = lv_log_h

    i_s_msg      = ls_msg.

Вывод журнала сообщений на экран.

Для вывода журнала сообщений ABAP на экран в виде всплывающего окна используется ФМ BAL_DSP_LOG_DISPLAY.

» Заполняем переменную окна журнала

CALL FUNCTION ‘BAL_DSP_PROFILE_STANDARD_GET’

  IMPORTING

    e_s_display_profile = ls_prof.

» Устанавливаем размеры окна

ls_profstart_row = 5.

ls_profend_row   = 25.

ls_profstart_col = 10.

ls_profend_col   = 150.

ls_profshow_all  = abap_true.

» Выводим окно на экран

CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’

  EXPORTING

    i_s_display_profile = ls_prof.

Удаление из памяти журнала сообщений.

Для удаления из памяти журнала сообщений ABAP используется ФМ BAL_LOG_REFRESH. По идентификатору журнала сообщений i_log_handle он находит журнал и удаляет его из памяти.

DATA:

  lv_log_h TYPE balloghndl.

CALL FUNCTION ‘BAL_LOG_REFRESH’

  EXPORTING

    i_log_handle = lv_log_h

  EXCEPTIONS

    LOG_NOT_FOUND = 0.

Шаблон вывода журнала сообщений ABAP:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

DATA:

  ls_log   TYPE bal_s_log,

  ls_prof  TYPE bal_s_prof,

  lv_log_h TYPE balloghndl.

» Заполняем переменную журнала  

CALL FUNCTION ‘BAL_LOG_CREATE’

  EXPORTING

    i_s_log      = ls_log

  IMPORTING

    e_log_handle = lv_log_h

  EXCEPTIONS

    OTHERS       = 0.

» В цикле добавляем сообщения в журнал

LOOP AT mt_msg REFERENCE INTO DATA(lr_msg).

  CALL FUNCTION ‘BAL_LOG_MSG_ADD’

    EXPORTING

      i_log_handle = lv_log_h

      i_s_msg      = lr_msg>*.

ENDLOOP.

» Заполняем переменную окна журнала

CALL FUNCTION ‘BAL_DSP_PROFILE_STANDARD_GET’

  IMPORTING

    e_s_display_profile = ls_prof.

» Устанавливаем размеры окна      

ls_profstart_row = 5.

ls_profend_row   = 25.

ls_profstart_col = 10.

ls_profend_col   = 150.

ls_profshow_all  = abap_true.

CALL FUNCTION ‘BAL_DSP_LOG_DISPLAY’

  EXPORTING

    i_s_display_profile = ls_prof.

CALL FUNCTION ‘BAL_LOG_REFRESH’

  EXPORTING

    i_log_handle = lv_log_h.

» Чистим глобальную переменную сообщений

CLEAR mt_msg.

В коде используются конструкции:

  • DATA(lr_msg) – Инлайновая декларация ABAP

Готово. В результате получаем на экране журнал сообщений. И в каждой строке есть индикатор в зависимости от типа сообщения с текстом. Также есть возможностью просмотреть подробности каждого сообщения. Можно использовать вариант и без глобальной переменной. Например, мы можем сразу создать объекта сообщений ABAP и сохранять сообщения сразу в журнал. Это подойдёт при фоновом выполнении. Так же на необходимость глобальной переменной влияет нужен полный список сообщений в конце выполнения.

Так же много интересных примеров можно найти в SBAL_DEMO*.

Сайт ABAP программирование YouCoder – это сборник статей и видео о языке программирования ABAP и работе в SAP системе. Есть как уроки abap для начинающих так и новый синтаксис в ABAP и SAP обучение для консультантов SAP.

Что такое системный мониторинг?

Мониторинг системы – это ежедневное рутинное занятие, и этот документ предоставляет систематическую пошаговую процедуру для мониторинга сервера. Он дает обзор технических аспектов и концепций для упреждающего мониторинга системы. Немногие из них:

  • Проверка серверов приложений.
  • Мониторинг общесистемных рабочих процессов.
  • Мониторинг рабочих процессов для отдельных экземпляров.
  • Контроль блокировки записей.
  • Загрузка процессора
  • Доступное пространство в базе данных.
  • Мониторинг процессов обновления.
  • Журнал системы мониторинга.
  • Буферная статистика

Некоторые другие:

  • Мониторинг пакетных заданий
  • Мониторинг запросов буфера.
  • Количество запросов на печать
  • Анализ дампов ABAP.
  • Монитор производительности базы данных.
  • Проверка базы данных.
  • Мониторинг пользователей приложения.

Почему ежедневные базовые проверки / мониторинг системы?

Мониторинг и контроль производительности SAP: полное руководство с кодами

Как мы осуществляем мониторинг системы SAP?

Проверка серверов приложений (SM51)

Эта транзакция используется для проверки всех активных серверов приложений.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Здесь вы можете увидеть, какие службы или рабочие процессы настроены в каждом случае.

Мониторинг рабочих процессов для отдельных экземпляров SM50:

Отображает все запущенные, ожидающие, остановленные и PRIV процессы, связанные с конкретным экземпляром. На этом этапе мы проверяем все процессы; состояние процесса всегда должно быть ожидающим или работающим . Если какой-либо процесс имеет состояние, отличное от ожидающего или запущенного, мы должны проверить этот конкретный процесс и сообщить об этом.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Эта транзакция отображает много информации, как:

  1. Состояние рабочего процесса (занят или нет)
  2. Если рабочий процесс запущен, вы можете увидеть его действие в столбце «Действие».
  3. Вы можете над какой таблицей работать

Некоторые из типичных проблем:

  • Пользователь занимает много времени, чтобы войти / не в состоянии войти / онлайн транзакции очень медленно. Это может быть результатом того, что рабочие процессы ОВД полностью используются. Это также может быть результатом длительных заданий (красный индикатор под столбцом «Время»). При необходимости вы можете отменить сеанс, выбрав задания, а затем перейти к процессу> Отмена без ядра. Это отменит работу и освободит рабочий процесс для другого пользователя / процесса
  • Некоторые пользователи могут иметь статус PRIV в столбце Причина . Возможно, пользовательская транзакция настолько велика, что требует больше памяти. Когда это произойдет, рабочий процесс DIA будет «принадлежать» пользователю и не позволит другим пользователям использовать. Если это произойдет, обратитесь к пользователю и, если возможно, запустите задание в качестве фонового задания.
  • Если в процессе работы SPO есть длинная работа печати, исследуйте проблему. Это может быть проблема, связанная с сервером печати или принтером.

Мониторинг общесистемных рабочих процессов (SM66)

Мониторинг и контроль производительности SAP: полное руководство с кодами

Проверяя нагрузку рабочего процесса с помощью глобального обзора рабочего процесса, мы можем быстро исследовать потенциальную причину проблемы производительности системы.

Мониторинг загрузки рабочего процесса на всех активных экземплярах в системе.

С помощью экрана Global Work Process Overview можно сразу увидеть:

  • Статус каждого сервера приложений
  • Причина, по которой он не работает
  • Был ли он перезапущен
  • Процессор и время выполнения запроса
  • Пользователь, который вошел в систему и клиент, к которому они вошли
  • Отчет, который работает

Пользователь приложения мониторинга (AL08 и SM04)

Эта транзакция отображает всех пользователей активных экземпляров.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Мониторинг процессов обновления (SM13)

Выполните транзакцию SM13, введите ‘ * ‘ в поле USER и нажмите Мониторинг и контроль производительности SAP: полное руководство с кодамикнопку.
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Если записи обновлений не ожидают или обновления не выполняются, эта очередь будет пустой, как показано на снимке экрана ниже.
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Но если обновление не активно, найдите следующую информацию:

  • Активно ли обновление, если нет, было ли оно деактивировано системой или пользователем?

    • Нажмите на Мониторинг и контроль производительности SAP: полное руководство с кодамикнопку и получите информацию.
    • Нажмите на Мониторинг и контроль производительности SAP: полное руководство с кодамикнопку и получите следующую информацию:
  • Любое обновление отменено?
  • Длинная очередь ожидающих обновлений старше 10 минут?

Мониторинг записей блокировки (SM12)

Выполните транзакцию SM12 и введите «*» в поле «Имя пользователя».

Мониторинг и контроль производительности SAP: полное руководство с кодами

SAP предоставляет механизм блокировки, чтобы другие пользователи не могли изменять записи, над которыми вы работаете. В некоторых ситуациях блокировки не снимаются. Это может произойти, если пользователи отключены, то есть из-за проблем с сетью, прежде чем они смогут снять блокировку.

Эти старые блокировки необходимо очистить, иначе это может помешать доступу или изменениям в записях.

Мы можем использовать статистику блокировок для мониторинга блокировок, установленных в системе. Мы записываем только те записи блокировки, которые имеют отметку даты и времени предыдущего дня.
 

Журнал системы мониторинга (SM21)

Мы можем использовать журнал, чтобы точно определить и исправить ошибки, возникающие в системе и ее среде.

Мы проверяем журнал за предыдущий день со следующим выбором / опцией:

  • Введите дату и время.
  • Выбор проблем и предупреждений переключателей
  • Нажмите Перечитать системный журнал.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Резюме мелодии (ST02)

Шаг 1: Перейдите к ST02, чтобы проверить сводку мелодии.

Шаг 2: Если вы видите какие-либо значения красного цвета, в SWAPS дважды нажмите на то же самое.
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Шаг 3: На приведенном ниже экране нажмите на вкладку « Текущие параметры »
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Шаг 4: Запишите значение и параметры профиля
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Шаг 5: Перейдите к RZ10 (для изменения значений параметров профиля).

Шаг 6: Сохраните изменения.

Шаг 7: Перезагрузите сервер, чтобы изменения вступили в силу.
 

Загрузка ЦП (ST06)

Мониторинг и контроль производительности SAP: полное руководство с кодами

Коэффициент использования CPU вхолостую должен составлять 60-65%, если он превышает значение, мы должны начать проверять, по крайней мере, следующие вещи:

  • Запустите команды уровня ОС – top и проверьте, какие процессы занимают больше всего ресурсов.
  • Перейти к SM50 или SM66. Проверьте наличие каких-либо длительных заданий или выполняемых запросов на обновление.
  • Перейдите на SM12 и проверьте записи блокировки
  • Перейдите к SM13 и проверьте обновление активного состояния.
  • Проверьте на ошибки в SM21.

ABAP Dumps (ST22)

Здесь мы проверяем свалки за предыдущий день

Мониторинг и контроль производительности SAP: полное руководство с кодами

Мониторинг запроса буфера (SP01)

Для мониторинга запроса спула выполните SP01 и выберите, как показано ниже:

  • Поставьте ‘*’ в поле Создано
  • Нажмите на Мониторинг и контроль производительности SAP: полное руководство с кодамикнопку выполнить.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Здесь мы записываем только те запросы, которые заканчиваются проблемами.
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Мониторинг пакетных заданий (SM37)

Для мониторинга фоновых заданий выполните SM37 и выберите, как показано ниже:

  • Put «*» в поле User Name и имя задания
  • В разделе Статус работы выберите: Запланированные, Отмененные, Отпущенные и Завершенные запросы.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Транзакционное управление RFC (SM58)

Транзакционный RFC (tRFC, также первоначально известный как асинхронный RFC) – это асинхронный метод связи, который выполняет вызываемый функциональный модуль на сервере RFC только один раз.
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Нам нужно выбрать период отображения, для которого мы хотим просмотреть tRFC, и затем выбрать «*» в поле имени пользователя, чтобы просмотреть все вызовы, которые не были выполнены правильно или ожидают в очереди.
 

Администрирование QRFC ( исходящая очередь -SMQ1)

Мы должны указать здесь имя клиента и посмотреть, есть ли какие-либо исходящие qRFC в состоянии ожидания или ошибки.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Администрация QRFC ( входящая очередь -SMQ2)

Мониторинг и контроль производительности SAP: полное руководство с кодами

Мы должны указать здесь имя клиента и посмотреть, есть ли входящие qRFC в состоянии ожидания или ошибки.

Администрирование базы данных (DB02)

Мониторинг и контроль производительности SAP: полное руководство с кодами

После того, как вы выберете Current Sizes на первом экране, мы перейдем к экрану ниже, который показывает нам текущее состояние всех табличных пространств в системе.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Если какое-либо из табличных пространств превышает 95%, а автоматическое экстент отключено, нам нужно добавить новый файл данных, чтобы база данных не была заполнена.

Мы также можем определить историю табличных пространств.

Мониторинг и контроль производительности SAP: полное руководство с кодами

Мы можем выбрать Месяцы, Недели или Дни здесь, чтобы увидеть изменения, которые происходят в табличном пространстве.

Мы можем определить рост табличного пространства, анализируя эти значения.

 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Мониторинг и контроль производительности SAP: полное руководство с кодами

Журналы резервного копирования базы данных (DB12)

По этой транзакции мы могли определить, когда было выполнено последнее успешное резервное копирование системы. Мы можем просмотреть резервные копии предыдущего дня и посмотреть, все ли в порядке или нет.

Мы также можем просмотреть файлы журналов повторов и посмотреть, было ли успешное резервное копирование журналов повторов.
 

Мониторинг и контроль производительности SAP: полное руководство с кодами

Быстрый обзор

Задачи ежедневного мониторинга

  1. Критические задачи
  2. Система SAP
  3. База данных

  Критические задачи

  нет

задача Сделка Процедура / Замечание

1

Убедитесь, что система R / 3 работает.   Войдите в систему R / 3

2

Убедитесь, что ежедневное резервное копирование выполняется без ошибок DB12 Проверьте резервную копию базы данных.

Система SAP

нет

задача Сделка Процедура / Замечание

1

Убедитесь, что все серверы приложений работают. SM51 Убедитесь, что все серверы работают.

2

Проверьте рабочие процессы (начиная с SM51). SM50 Все рабочие процессы со статусом «работает» или «ожидают»

3

Обзор глобального рабочего процесса SM66 Убедитесь, что рабочий процесс не выполняется более 1800 секунд

3

Ищите любые неудачные обновления (обновление прекращается). SM13
  • Установить дату на один день назад
  • Введите * в идентификатор пользователя
  • Установите «все» обновления. Проверьте наличие строк с помощью «Err.»

4

Проверьте системный журнал. SM21 Установите дату и время до последнего просмотра журнала. Проверить:

  • ошибки
  • Предупреждения
  • Сообщения безопасности
  • Проблемы с базой данных

5

Обзор отмененных вакансий. SM37 Введите звездочку (*) в поле «Идентификатор пользователя». Убедитесь, что все важные задания выполнены успешно.

6

Проверьте «старые» замки. SM12 Введите звездочку (*) для идентификатора пользователя.

7

Проверьте пользователей в системе. SM04AL08 Просмотрите неизвестный или другой идентификатор пользователя и терминал. Эту задачу следует выполнять несколько раз в день.

8

Проверьте наличие проблем с катушкой. SP01 Введите звездочку (*) для Created ByLook для заданий спулинга, которые выполнялись более часа.

9

Проверьте журнал работы SM37 Проверить:

  • Новые рабочие места
  • Неправильные вакансии

10

Просмотрите и устраните дампы. ST22 Ищите чрезмерное количество свалок. Ищите отвалы необычной природы.

11

Просмотрите статистику буфера. ST02 Ищите перестановки.

База данных

нет

задача Сделка Процедура / Замечание

1

Проверьте журнал ошибок на наличие проблем. ST04  

2

Индексы роста базы данных DB02 Если табличное пространство используется более чем на 90%, добавьте в него новый файл данных. Восстановите недостающие индексы.

3

Журнал статистики базы данных DB13  

Всем привет!

В этой статье вы узнаете как добавить в вашу программу хороший журнал с сообщениями об ошибках и/или предупреждениями.

Журнал о котором пойдет речь строится с помощью класса cl_hrpadru_log, который используется например в HRULTAB0 Табель учета рабочего времени (форма Т-13),  HRUL4FSS Форма 4-ФСС, HRULNDFL Подоходный налог (2-НДФЛ) и пр.

Выглядит журнал вот так:

Рис 1

Для того, чтобы его создать достаточно сделать следующее:

  1. Создать объект класса cl_hrpadru_log
  2. В необходимых вам местах программы вызвать методы add_message_to_log_and_table( ) и add_employee_node( )
  3. Для отображения журнала вызвать метод display_log2( ) на вход которому подать форму (FORM) для Call-back вызова
  4. Profit!

Ниже показан пример простой программы, в которой формируется сообщение типа ‘W’ если у пользователя не заполнено поле p0002-inits.

Результат:

Лог Рис 2

P.S.

Вот здесь хорошо описан еще более мощный журнал.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделить с друзьями:
  • Sap gui for windows 730 ошибка
  • Sanyo ошибка е06
  • Sanyo ошибка p09
  • Sanyo ошибка p03
  • Sanyo ошибка p02