Вы находитесь на странице: 1из 4

DATA:

lo_message_manager
lo_el_ui
lo_el_attr
lv_attr
lt_message
lv_field
lv_field_group
lv_field_value
*
lv_group_nego
FIELD-SYMBOLS:
<ls_message>

TYPE REF TO if_wd_message_manager,


TYPE REF TO if_wd_context_element,
TYPE REF TO if_wd_context_element,
TYPE string,
TYPE hrpad_message_tab,
TYPE string,
TYPE string,
TYPE string.
TYPE abap_bool.

TYPE hrpad_message.

** Check if we're called from group negotiation.


* lo_el_ui = wd_context->get_child_node( name = wd_this->wdctx_ui )>get_element( ).
* Get message manager.
lo_message_manager = wd_this->wd_get_api( )->get_message_manager( ).
CALL METHOD io_message_handler->get_message_list
IMPORTING
messages = lt_message.

* Remove duplicates
SORT lt_message BY msgty msgid msgno msgv1 msgv2 msgv3 msgv4 message field_l
ist.
DELETE ADJACENT DUPLICATES FROM lt_message
COMPARING msgty msgid msgno msgv1 msgv2 msgv3 msgv4 message field_list.
* Process messages and map to UI fields.
LOOP AT lt_message ASSIGNING <ls_message>.
CLEAR lv_attr.
*Ignoring warning message zhr_02
*>>z8xpj on 08.04.2015 kp91 sp34 defect 735 - ReqID96 - Pension% - Individual
negotiation
IF <ls_message>-msgty = 'W' AND
<ls_message>-msgid = 'ZHR_02' AND
<ls_message>-msgno = '833'.
CONTINUE.
ENDIF.
*<<z8xpj on 08.04.2015 kp91 sp34 defect 735 - ReqID96 - Pension% - Individual
negotiation
READ TABLE <ls_message>-field_list INDEX 1 INTO lv_field.
IF sy-subrc = 0.
lv_field_group = segment( val = lv_field index = 1 sep = '-' ).
lv_field_value = segment( val = lv_field index = 2 sep = '-' ).
CASE lv_field_group.
WHEN 'WORKTIME'.
lo_el_attr = wd_context->path_get_node( path = 'EMPLOYEE.WORKTIME'
)->get_element( ).
CASE lv_field_value.
WHEN 'NUMERATOR'.
lv_attr = 'NUMERATOR'.
WHEN 'DENOMINATOR'.
lv_attr = 'DENOMINATOR'.
WHEN 'REDUC_CODE'.
*
FIXME: Doesn't work.
lo_el_attr = wd_context->path_get_node( path = 'UI.REDUCTION_COD
E' )->get_element( ).
lv_attr = 'CODE'.
WHEN 'PCT_CALC'.
lv_attr = 'PCT_CALC'.
ENDCASE.
WHEN 'ASSIGNMENT'.
lo_el_attr = wd_context->path_get_node( path = 'EMPLOYEE.ASSIGNMENT'
)->get_element( ).

CASE lv_field_value.
WHEN 'POSITION'.
lo_el_attr = wd_context->path_get_node( path = 'UI.POSITION' )>get_element( ).
lv_attr = 'PLSTX'.
ENDCASE.
WHEN 'PAY_GRADING'.
lo_el_attr = wd_context->path_get_node( path = 'EMPLOYEE.PAY_GRADING
' )->get_element( ).
CASE lv_field_value.
WHEN 'PAY_GRADE'.
lo_el_attr = wd_context->path_get_node( path = 'UI.PAY_GRADE' )>get_element( ).
lv_attr = 'ZLOENKLASSE_NR'.
WHEN 'SENIORITY_DATE'.
lv_attr = 'SENIORITY_DATE'.
WHEN 'EXPERIENCE_DATE'.
lv_attr = 'EXPERIENCE_DATE'.
ENDCASE.
ENDCASE.
ENDIF.
IF lv_attr IS INITIAL.
No reference to a specific field; just output the message.
CALL METHOD lo_message_manager->report_t100_message
EXPORTING
msgty = <ls_message>-msgty
msgid = <ls_message>-msgid
msgno = <ls_message>-msgno
p1
= <ls_message>-msgv1
p2
= <ls_message>-msgv2
p3
= <ls_message>-msgv3
p4
= <ls_message>-msgv4.
*
JLU, 02.06.2014: Removed reference to V_MAIN as I could not reprodu
ce the popup problem.
*
I tried to provoke an error from the "transfer to payroll" popup, a
nd the message was
*
displayed correctly after closing the popup window. The reason, how
ever, for removing it,
*
is that we don't have the view, when we arrive from group negotiati
on.
*
*
view = 'V_MAIN'. " else messages made related to a popup are not
shown
*

view

= if_wd_message_manager=>co_any_window

ELSE.
Connect the message with the relevant field.
CALL METHOD lo_message_manager->report_attribute_t100_message
EXPORTING
msg
= <ls_message>-message
element
= lo_el_attr
attribute_name = lv_attr.
ENDIF.
ENDLOOP.

Вам также может понравиться