in src/zrest/zrest_screen.prog.abap [0:0]
METHOD handle_user_command.
DATA: lt_rows TYPE lvc_t_row,
l_row TYPE lvc_s_row,
sel_row LIKE LINE OF itab,
message_val TYPE string,
sel_tab TYPE TABLE OF ty,
lw_monitor TYPE zrest_monitor, "v-javeda - MS2K948543
lv_ans TYPE char1. "v-javeda - MS2K948543
CASE e_ucomm.
** v-javeda - MS2K948543 : Delete function added
WHEN 'DELETE'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
IF lt_rows IS INITIAL.
MESSAGE 'Please select a row.'(003) TYPE 'I'.
EXIT.
ELSEIF lines( lt_rows ) > 1.
MESSAGE 'Please select only one row.'(004) TYPE 'I'.
EXIT.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'Do you want to Proceed for deletion'
text_button_1 = 'Yes'
icon_button_1 = 'ICON_CHECKED'
text_button_2 = 'No'
icon_button_2 = 'ICON_INCOMPLETE'
display_cancel_button = 'X'
start_column = 25
start_row = 6
IMPORTING
answer = lv_ans.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lv_ans = '1'.
FREE MEMORY ID 'ABCD'.
READ TABLE lt_rows INDEX 1 INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
IF sy-subrc = 0 .
SELECT SINGLE * FROM zrest_monitor INTO lw_monitor WHERE zmessageid = sel_row-zmessageid.
IF sy-subrc = 0.
lw_monitor-zdelete = 'X'.
lw_monitor-deleteuser = sy-uname.
lw_monitor-deletedate = sy-datum.
lw_monitor-deletetime = sy-uzeit.
MODIFY zrest_monitor FROM lw_monitor." WHERE messageid = sel_row-zmessageid.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
lo_report->get_data( ).
PERFORM layout.
PERFORM display_output.
**
WHEN 'DOWNLOAD'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
DATA: count_row TYPE i.
DESCRIBE TABLE lt_rows LINES count_row.
IF count_row <> 1.
DATA: lv_id TYPE icon-id.
SELECT SINGLE id
FROM icon
INTO lv_id
WHERE name = 'ICON_MESSAGE_WARNING'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'Warning'
txt1 = lv_id
txt2 = 'Select only one row.'
EXCEPTIONS
OTHERS = 1.
ELSE.
FREE MEMORY ID 'ABCD'.
READ TABLE lt_rows INDEX 1 INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
DATA: pay_body TYPE zrest_mo_payload-payload.
SELECT payload FROM zrest_mo_payload INTO pay_body WHERE messageid = sel_row-zmessageid.
ENDSELECT.
TRY.
CALL METHOD zcl_rest_utility_class=>download_payload_file( xstring = pay_body message_id = sel_row-zmessageid ).
* Authorization check VSTF # 2163894 | DGDK903413
CATCH zcx_http_client_failed INTO lv_textid.
lv_text2 = lv_textid->if_t100_message~t100key.
MESSAGE ID lv_text2-msgid TYPE 'I' NUMBER lv_text2-msgno.
EXIT.
ENDTRY.
* end of changes VSTF # 2163894 | DGDK903413
ENDIF.
ENDIF.
WHEN 'HEADERS'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
IF lt_rows IS INITIAL.
MESSAGE 'Please select a row.'(003) TYPE 'I'.
EXIT.
ELSEIF lines( lt_rows ) > 1.
MESSAGE 'Please select only one row.'(004) TYPE 'I'.
EXIT.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
FREE MEMORY ID 'ABCD'.
CLEAR sel_tab.
FREE MEMORY ID 'ABCD'.
READ TABLE lt_rows INDEX 1 INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
TRY.
CALL METHOD zcl_rest_utility_class=>show_submitted_headers
EXPORTING
message_id = sel_row-zmessageid.
* Changed for Authorization Check VSTF # 2163894 | DGDK903413
CATCH zcx_http_client_failed INTO lv_textid.
lv_text2 = lv_textid->if_t100_message~t100key.
MESSAGE ID lv_text2-msgid TYPE 'I' NUMBER lv_text2-msgno.
EXIT.
ENDTRY.
* End of changes VSTF # 2163894 | DGDK903413
ENDIF.
WHEN 'RETRY'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
FREE MEMORY ID 'ABCD'.
DATA obj TYPE REF TO zcl_rest_utility_class.
CREATE OBJECT obj .
LOOP AT lt_rows INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
** v-javeda - MS2K948543 - validation for not retrying deleted payload
SELECT SINGLE * FROM zrest_monitor INTO lw_monitor
WHERE zmessageid = sel_row-zmessageid
AND zdelete EQ 'X'.
IF sy-subrc = 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sel_row-zmessageid
txt1 = 'Cannot process for Deleted message id : '(500).
ELSE.
** v-javeda - MS2K948543
IF obj IS BOUND.
TRY.
CALL METHOD obj->retry( message_id = sel_row-zmessageid method = 'None' ).
* Authorization check VSTF # 2163894 | DGDK903413
CATCH zcx_http_client_failed INTO lv_clnt_failed.
lv_text2 = lv_clnt_failed->if_t100_message~t100key.
MESSAGE ID lv_text2-msgid TYPE 'I' NUMBER lv_text2-msgno.
EXIT.
ENDTRY.
* end of changes VSTF # 2163894 | DGDK903413
ENDIF.
ENDIF." v-javeda - MS2K948543
ENDLOOP.
ENDIF.
lo_report->get_data( ).
PERFORM layout.
PERFORM display_output.
WHEN 'SHOW PAYLOAD'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
IF lt_rows IS INITIAL.
MESSAGE 'Please select a row.'(003) TYPE 'I'.
EXIT.
ELSEIF lines( lt_rows ) > 1.
MESSAGE 'Please select only one row.'(004) TYPE 'I'.
EXIT.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
FREE MEMORY ID 'ABCD'.
READ TABLE lt_rows INDEX 1 INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
DATA: payload_body TYPE zrest_mo_payload-payload.
DATA ob TYPE REF TO zcl_rest_utility_class.
CREATE OBJECT ob .
IF ob IS BOUND.
* Changed for Authorization Check VSTF # 2163894 | DGDK903413
TRY.
CALL METHOD ob->show_payload( message_id = sel_row-zmessageid ).
CATCH zcx_http_client_failed INTO lv_textid.
lv_text2 = lv_textid->if_t100_message~t100key.
MESSAGE ID lv_text2-msgid TYPE 'I' NUMBER lv_text2-msgno.
EXIT.
ENDTRY.
* end of changes VSTF # 2163894 | DGDK903413
ENDIF.
ENDIF.
WHEN 'SHOW RESPONSE'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
IF lt_rows IS INITIAL.
MESSAGE 'Please select a row.'(003) TYPE 'I'.
EXIT.
ELSEIF lines( lt_rows ) > 1.
MESSAGE 'Please select only one row.'(004) TYPE 'I'.
EXIT.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
FREE MEMORY ID 'ABCD'.
READ TABLE lt_rows INDEX 1 INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
CREATE OBJECT ob .
IF ob IS BOUND.
TRY.
CALL METHOD ob->show_payload( message_id = sel_row-zmessageid response = abap_true ).
* Authorization changes V-DEVEER
CATCH zcx_http_client_failed INTO lv_textid.
lv_text2 = lv_textid->if_t100_message~t100key.
MESSAGE ID lv_text2-msgid TYPE 'I' NUMBER lv_text2-msgno.
EXIT.
ENDTRY.
* end of changes V-DEVEER
ENDIF.
ENDIF.
WHEN 'RETRY_LOG'.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
IF lt_rows IS INITIAL.
MESSAGE 'Please select a row.'(003) TYPE 'I'.
EXIT.
ELSEIF lines( lt_rows ) > 1.
MESSAGE 'Please select only one row.'(004) TYPE 'I'.
EXIT.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ELSE.
FREE MEMORY ID 'ABCD'.
READ TABLE lt_rows INDEX 1 INTO l_row.
READ TABLE itab INDEX l_row-index INTO sel_row.
CREATE OBJECT ob .
IF ob IS BOUND.
TRY.
CALL METHOD ob->retry_log( message_id = sel_row-zmessageid response = abap_true ).
* Authorization changes V-DEVEER
CATCH zcx_http_client_failed INTO lv_textid.
lv_text2 = lv_textid->if_t100_message~t100key.
MESSAGE ID lv_text2-msgid TYPE 'I' NUMBER lv_text2-msgno.
EXIT.
ENDTRY.
* end of changes V-DEVEER
ENDIF.
ENDIF.
ENDCASE.