- *--[ Versión 1.0 20200513
- CLASS zcl_msg DEFINITION.
- PUBLIC SECTION.
- TYPES: BEGIN OF ty_msg,
- text TYPE char100sm,
- msgid TYPE symsgid,
- msgty TYPE symsgty,
- msgno TYPE symsgno,
- msgv1 TYPE symsgv,
- msgv2 TYPE symsgv,
- msgv3 TYPE symsgv,
- msgv4 TYPE symsgv,
- END OF ty_msg.
- DATA: t_msg TYPE STANDARD TABLE OF ty_msg.
- METHODS: msg_add_sys IMPORTING iv_msgid TYPE symsgid
- iv_msgno TYPE symsgno
- iv_msgty TYPE symsgty
- iv_msgv1 TYPE symsgv OPTIONAL
- iv_msgv2 TYPE symsgv OPTIONAL
- iv_msgv3 TYPE symsgv OPTIONAL
- iv_msgv4 TYPE symsgv OPTIONAL,
- msg_add_txt IMPORTING iv_text TYPE string
- iv_msgty TYPE symsgty,
- msg_display IMPORTING iv_popup TYPE boolean,
- msg_refresh,
- msg_check_error RETURNING VALUE(rv_result) TYPE boolean.
- ENDCLASS. "ZCL_MSG DEFINITION
- *----------------------------------------------------------------------*
- * CLASS ZCL_MSG IMPLEMENTATION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- CLASS zcl_msg IMPLEMENTATION.
- METHOD msg_check_error.
- DATA: l_msg TYPE ty_msg.
- READ TABLE t_msg WITH KEY msgty = 'E' TRANSPORTING NO FIELDS.
- IF sy-subrc = 0.
- rv_result = 'X'.
- ELSE.
- rv_result = ' '.
- ENDIF.
- ENDMETHOD. "msg_check_error
- METHOD msg_refresh.
- REFRESH t_msg.
- ENDMETHOD. "msg_refresh
- METHOD msg_display.
- TYPE-POOLS esp1.
- DATA: lt_message_tab TYPE esp1_message_tab_type,
- ls_message_tab TYPE LINE OF esp1_message_tab_type,
- l_msg TYPE ty_msg,
- l_lineno TYPE mesg-zeile.
- CHECK t_msg[] IS NOT INITIAL.
- l_lineno = lines( t_msg ).
- IF iv_popup = 'X' OR l_lineno > 1.
- LOOP AT t_msg INTO l_msg.
- IF l_msg-msgid IS INITIAL.
- *--[ Si es sólo texto lo maquillamos
- l_msg-msgid = '00'.
- l_msg-msgno = '398'.
- ENDIF.
- MOVE-CORRESPONDING l_msg TO ls_message_tab.
- l_lineno = l_lineno + 1.
- ls_message_tab-lineno = l_lineno.
- INSERT ls_message_tab INTO TABLE lt_message_tab.
- ENDLOOP.
- CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
- TABLES
- i_message_tab = lt_message_tab.
- ELSEIF iv_popup IS INITIAL OR l_lineno = 1.
- READ TABLE t_msg INTO l_msg INDEX 1.
- IF l_msg-msgid IS INITIAL.
- *--[ Si es sólo texto lo maquillamos
- l_msg-msgid = '00'.
- l_msg-msgno = '398'.
- ENDIF.
- MESSAGE ID l_msg-msgid TYPE l_msg-msgty NUMBER l_msg-msgno WITH l_msg-msgv1 l_msg-msgv2 l_msg-msgv3 l_msg-msgv4.
- ENDIF.
- ENDMETHOD. "msg_display
- METHOD msg_add_txt.
- *--[ Sólo metemos texto sin importar código
- DATA: l_msg TYPE ty_msg,
- l_string TYPE string.
- l_msg-msgv1 = l_string = l_msg-text = iv_text.
- l_msg-msgty = iv_msgty.
- SHIFT l_string LEFT BY 50 PLACES.
- l_msg-msgv2 = l_string.
- INSERT l_msg INTO TABLE t_msg.
- ENDMETHOD. "msg_add_txt
- METHOD msg_add_sys.
- *--[ Metemos todo el mensaje completo
- DATA: l_msg TYPE ty_msg.
- l_msg-msgid = iv_msgid .
- l_msg-msgno = iv_msgno .
- l_msg-msgty = iv_msgty .
- l_msg-msgv1 = iv_msgv1 .
- l_msg-msgv2 = iv_msgv2 .
- l_msg-msgv3 = iv_msgv3 .
- l_msg-msgv4 = iv_msgv4 .
- MESSAGE ID iv_msgid TYPE l_msg-msgty
- NUMBER l_msg-msgno
- INTO l_msg-text
- WITH l_msg-msgv1
- l_msg-msgv2.
- INSERT l_msg INTO TABLE t_msg.
- ENDMETHOD. "MSG_ADD
- ENDCLASS. "ZCL_MSG IMPLEMENTATION
- DATA: obj_msg TYPE REF TO zcl_msg.
Última modificación de la página el 13 May 2020 a las 07h22
Powered by
PmWiki