Vous êtes sur la page 1sur 4

REPORT zds_reset_queue_status .

* This report resets qRFC queues of specified states.


* Example: There are NOEXEC queues and the report is executed for queues
* of state NOEXEC. Then it resets the queue state to READY. The
* reseted queues are executed by the scheduler, then.
*
* Parameters: qname : Prefix of qRFC queues, that have to be reset.
* Default is CF*.
* state : All qRFC states that are reset to READY.
* all_luw: Reset all successors of a reset queue, too.

* Some constants
CONSTANTS:
qs_sysfail LIKE trfcqin-qstate VALUE 'SYSFAIL',
qs_cpicerr LIKE trfcqin-qstate VALUE 'CPICERR',
qs_stop LIKE qrfctrace-qstate VALUE 'STOP',
qs_noexec LIKE trfcqin-qstate VALUE 'NOEXEC',
qs_saved LIKE trfcqins-qstate VALUE 'SAVED'.
* Data type declaration
DATA:
lt_qview TYPE TABLE OF trfcqview,
ls_qview TYPE trfcqview,
lv_state TYPE qrfcstate,
nfill TYPE i.

* Input screen
SELECTION-SCREEN BEGIN OF BLOCK start
WITH FRAME
TITLE text-001.
PARAMETERS qname LIKE trfcqin-qname
DEFAULT 'CF*'.
SELECT-OPTIONS status FOR lv_state
NO INTERVALS
OBLIGATORY
DEFAULT qs_noexec.
PARAMETERS all_luws LIKE sy-input
AS CHECKBOX
DEFAULT SPACE.
SELECTION-SCREEN END OF BLOCK start.

START-OF-SELECTION.
* Delete duplicates queue states
SORT status.
DELETE ADJACENT DUPLICATES FROM status.
* Get queues
CALL FUNCTION '/SAPAPO/CIF_QIN_GET_QUEUES'
EXPORTING
qname = qname
TABLES
qview = lt_qview[].
DESCRIBE TABLE lt_qview[] LINES nfill.
IF nfill = 0.
WRITE: / 'Such queue is not available'(002).
EXIT.
ENDIF.
* Reset queue states
nfill = 0.
LOOP AT lt_qview
INTO ls_qview.
IF ls_qview-qstate IN status[].
CALL FUNCTION 'TRFC_QIN_RESET_LUW'
EXPORTING
qname = ls_qview-qname
all_luws = all_luws.
IF sy-subrc = 0.
IF all_luws <> space.
nfill = nfill + ls_qview-qdeep.
ELSE.
nfill = nfill + 1.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
* Activate scheduler
CALL FUNCTION 'QIWK_SCHEDULER_ACTIVATE'.
* Result
WRITE: /(25) 'Number of reset entries:'(003), (4) nfill.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR status-low.


PERFORM status_f4_help.

*&--------------------------------------------------------------------*
*& Form status_f4_help
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM status_f4_help.
****** DATA DEF ********************************************************
DATA: BEGIN OF l_full_table OCCURS 0,
status LIKE trfcqin-qstate,
END OF l_full_table.
DATA: l_selectfield LIKE help_info-fieldname.
DATA: l_ind LIKE sy-tabix.
DATA: BEGIN OF l_fields OCCURS 0.
INCLUDE STRUCTURE help_value.
DATA: END OF l_fields.
DATA: BEGIN OF l_user_sel_fields OCCURS 0.
INCLUDE STRUCTURE dynpread.
DATA: END OF l_user_sel_fields.
DATA: l_rc LIKE sy-subrc.
DATA cursorfield(30). " for name of current dynprofield
DATA: ls_user_selfields LIKE l_user_sel_fields.

****** INIT ************************************************************


* Clear
CLEAR l_full_table. REFRESH l_full_table.
CLEAR l_fields. REFRESH l_fields.
CLEAR l_user_sel_fields. REFRESH l_user_sel_fields.
CLEAR l_selectfield.
* Fields to display (with DDIC relation)
l_fields-tabname = 'TRFCQIN'.
l_fields-fieldname = 'QSTATE'.
l_fields-selectflag = 'X'.
APPEND l_fields.
* Field to select for (with DDIC relation)
l_selectfield = 'QSTATE'.
* Field where to get filter info (with Dynpro relation)
GET CURSOR FIELD cursorfield.
l_user_sel_fields-fieldname = cursorfield.
APPEND l_user_sel_fields.
****** Collect data to be displayed ************************************
APPEND qs_sysfail
TO l_full_table[].
APPEND qs_cpicerr
TO l_full_table[].
APPEND qs_stop
TO l_full_table[].
APPEND qs_noexec
TO l_full_table[].
APPEND qs_saved
TO l_full_table[].
SORT l_full_table[].
****** DISPLAY FILTERED LIST AND GET THE CHOICE ************************
CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
EXPORTING
selectfield = l_selectfield
use_user_selections = 'S'
IMPORTING
ind = l_ind
TABLES
fields = l_fields
full_table = l_full_table
user_sel_fields = l_user_sel_fields
EXCEPTIONS
OTHERS = 1.
l_rc = sy-subrc.
* Error during F4 help processing
IF l_rc <> 0.
MESSAGE i011(/sapapo/cif).
ENDIF.
CHECK l_rc = 0.
* Any value selected?
CHECK l_ind <> 0.
****** PUT DYNPRO VALUES ***********************************************
READ TABLE l_full_table INDEX l_ind.
* Fill fields where to put selection
CLEAR l_user_sel_fields.
REFRESH l_user_sel_fields[].
l_user_sel_fields-fieldname = cursorfield.
l_user_sel_fields-fieldvalue = l_full_table-status.
APPEND l_user_sel_fields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = l_user_sel_fields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
l_rc = sy-subrc.
* Error saving back the selected F4 value
IF l_rc <> 0.
MESSAGE i011(/sapapo/cif).
ENDIF.
CHECK l_rc = 0.
ENDFORM. "status_f4_help

Vous aimerez peut-être aussi