Page 1 of 1

Hướng dẫn sử dụng Application Log

Posted: Fri Mar 18, 2022 10:16 pm
by admin
Trong chủ đề này mình sẽ chia sẽ về cách sử dụng lớp cl_rso_application_log trong ABAP nhằm mục đích hiển thị các thông báo tới người dùng như hình minh họa bên dưới đây
applog.png
applog.png (110.02 KiB) Viewed 3559 times
Đây là một dạng log được sử dụng với mục đích hiển thị một lần và không cần phải lưu lại, với loại log cần lưu lại. Để sử dụng được log này trước tiên chúng ta cần thực hiện khởi tạo log

Code: Select all

IF cl_rso_application_log=>appl_log_get_log_handle( ) IS INITIAL.
      CALL METHOD cl_rso_application_log=>appl_log_create
        EXPORTING
          i_object    = rstr_c_appl_log_trfn
          i_subobject = rstr_c_appl_log_trfn_content
          i_extnumber = ''.
    ENDIF.
Log sau khi được khởi tạo các bạn có thể thêm message vào trong log ở bất cứ nơi đâu trong chương trình, tuy nhiên phải đảm bảo log đã được khởi tạo ở một giai đoạn trước khi các message được thêm vào.
Message được thêm vào trong log phải ở dạng message text, do vậy trước khi thực hiện thêm message chúng ta cần phải thêm đoạn mã đọc dữ liệu của message:

Code: Select all

DATA: lv_mess(128) TYPE c.
      MESSAGE ID ls_bapi-id TYPE ls_bapi-type NUMBER ls_bapi-number WITH ls_bapi-message_v1 ls_bapi-message_v2 ls_bapi-message_v3 ls_bapi-message_v4
      INTO lv_mess.
Sau khi dữ liệu text đã được đọc, chúng ta tiếp tục gọi đoan method sau để thêm message vào trong log

Code: Select all

cl_rso_application_log=>add_text(
        EXPORTING
          i_text     = lv_mess                " Text
          i_msgty    = rs_c_error     " Messages, Message Type
          i_detlevel = '1'
      ).
Và bước cuối cùng chúng ta cần làm là nên hiển thị log và xóa log

Code: Select all

IF cl_rso_application_log=>if_rso_application_log~appl_log_get_num_of_msgs( ) > 0.
      cl_rso_application_log=>if_rso_application_log~appl_log_show_as_popup(
        i_one_msg_direct = rs_c_false
        i_one_msg_type_s = rs_c_false ).
      cl_rso_application_log=>appl_log_delete( ).
    ENDIF.