Quantcast
Channel: SCN : Blog List - ABAP Development
Viewing all articles
Browse latest Browse all 943

ABAP for BASIS : Checking mass usage of printers at one go

$
0
0

Hello,

 

I have created one program which helps Basis team to do a mass test on printers, choosing random printers in a loop of defined count.

It prints one specific spool to any printer which is specified in the selection screen.

I believe such a program is not present in SCN and it would help new ABAPers to work on printers.

 

Output : Written on screen, so if program is run in background mode also, output can be captured in spool.

 

Code:

 

*&---------------------------------------------------------------------*
*& Report  ZBC_SPOOL_MASSREPRINT
*&
*&---------------------------------------------------------------------*


REPORT  ZBC_SPOOL_MASSREPRINT.


INCLUDE ZBC_SPOOL_MASSTOP.                              " Decalartions


*****************Declaration of Selection Screen*****************************
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_spool TYPE TSP01-RQIDENT OBLIGATORY,                                        " Spool Request               p_count TYPE int4 OBLIGATORY.                                                            " Number of Count
SELECT-OPTIONS : s_device FOR TSP03-PADEST NO INTERVALS OBLIGATORY.                              " Device (Printers)
SELECTION-SCREEN END OF BLOCK b1.


*****************End of Declaration of Selection Screen***********************


INCLUDE ZBC_SPOOL_MASSDATAFM.                                        " Include which has FM to print spool


START-OF-SELECTION.
  PERFORM get_set_data.                                                  " FM to print spool on printers
*&---------------------------------------------------------------------*
*&  Include           ZBC_SPOOL_MASSTOP
*&---------------------------------------------------------------------*


TABLES : TSP01, TSP03.                                                                                                    " Tables Dec.  
TYPES : BEGIN OF ty_output,                                                                                          " Type Output        rqident TYPE TSP01-rqident,        count TYPE int4,        padest(10)  TYPE c,        message(20) TYPE c,        END OF ty_output.


DATA : it_output TYPE STANDARD TABLE OF ty_output,                     " Internal Table and Work Area Dec.       wa_output TYPE ty_output,       it_padest TYPE STANDARD TABLE OF TSP03,       wa_padest TYPE TSP03,       v_random TYPE int4,       v_string TYPE string,       v_count type int4 VALUE 0,       v_spool TYPE TSP01-RQIDENT.
*&---------------------------------------------------------------------*
*&  Include           ZBC_SPOOL_MASSDATAFM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  GET_SET_DATA
*&---------------------------------------------------------------------*


FORM get_set_data .


          IF p_count > 500 OR p_count < 1.                                                  " Loop count should be >= 1 and <= 500            MESSAGE text-003 TYPE 'I'.            LEAVE LIST-PROCESSING AND RETURN TO SCREEN 0.          ENDIF.          SELECT * INTO TABLE it_padest                                                                      " Check if printers exists            FROM TSP03            WHERE padest IN s_device.          IF sy-subrc <> 0.            MESSAGE text-004 TYPE 'I'.            LEAVE LIST-PROCESSING AND RETURN TO SCREEN 0.          ENDIF.          SELECT SINGLE rqident INTO v_spool                                                  " Check if spool exists            FROM TSP01            WHERE RQIDENT = p_spool.          IF sy-subrc <> 0.            MESSAGE text-006 TYPE 'I'.            LEAVE LIST-PROCESSING AND RETURN TO SCREEN 0.          ENDIF.          v_count = 1.          WHILE v_count LE p_count.                    DESCRIBE TABLE it_padest LINES v_lines.                    CALL FUNCTION 'RANDOM_I4'                                                            " Generate a random INT4 number                     EXPORTING                       RND_MIN         = 1                       RND_MAX         = v_lines                     IMPORTING                       RND_VALUE       = v_random.                    READ TABLE it_padest INTO wa_padest INDEX v_random.                              " Pick a random printer                    IF sy-subrc <> 0.                              CONTINUE.                    ENDIF.                    CALL FUNCTION 'DIALOG_SET_NO_DIALOG'.                    CALL FUNCTION 'RSPO_OUTPUT_SPOOL_REQUEST'                                                  " Print Spool on Printer                      EXPORTING                              DEVICE                         = wa_padest-padest                              spool_request_id               = p_spool                     EXCEPTIONS                       ARCHIVE_DEST_INVALID           = 1                       ARCHIVE_DEST_NOT_FOUND         = 2                       ARCHIVE_DEST_NO_RIGHT          = 3                       CANNOT_ARCHIVE                 = 4                       CHANGE_ARCHDEST_NO_RIGHT       = 5                       CHANGE_COPIES_NO_RIGHT         = 6                       CHANGE_DEST_NO_RIGHT           = 7                       CHANGE_DEVTYPE_NO_RIGHT        = 8                       CHANGE_PRIO_NO_RIGHT           = 9                       CHANGE_TELENUM_NO_RIGHT        = 10                       CHANGE_TITLE_NO_RIGHT          = 11                       DEST_INVALID                   = 12                       DEST_NOT_FOUND                 = 13                       DEST_NO_RIGHT                  = 14                       INTERNAL_PROBLEM               = 15                       INVALID_FAX_ATTRIBUTE          = 16                       INVALID_PARAMETERS             = 17                       NON_OWNER_NO_RIGHT             = 18                       NO_LAYOUT                      = 19                       NO_SPOOL_REQUEST               = 20                       OUT_AGAIN_NO_RIGHT             = 21                       SPOOLER_PROBLEM                = 22                       OTHERS                         = 23.                    wa_output-rqident = p_spool.                    CALL FUNCTION 'CONVERSION_EXIT_SPDEV_OUTPUT'                                        " Change printer name to full descrip.                      EXPORTING                              input         = wa_padest-padest                     IMPORTING                       OUTPUT        = wa_output-padest.                    IF sy-subrc <> 0.                                                                                " Not Successful. Write Log                              CASE sy-subrc.                                WHEN 1. v_msg = 'ARCHIVE_DEST_INVALID'.                                WHEN 2. v_msg = 'ARCHIVE_DEST_NOT_FOUND'.                                WHEN 3. v_msg = 'ARCHIVE_DEST_NO_RIGHT'.                                WHEN 4. v_msg = 'CANNOT_ARCHIVE'.                                WHEN 5. v_msg = 'CHANGE_ARCHDEST_NO_RIGHT'.                                WHEN 6. v_msg = 'CHANGE_COPIES_NO_RIGHT'.                                WHEN 7. v_msg = 'CHANGE_DEST_NO_RIGHT'.                                WHEN 8. v_msg = 'CHANGE_DEVTYPE_NO_RIGHT'.                                WHEN 9. v_msg = 'CHANGE_PRIO_NO_RIGHT'.                                WHEN 10. v_msg = 'CHANGE_TELENUM_NO_RIGHT'.                                WHEN 11. v_msg = 'CHANGE_TITLE_NO_RIGHT'.                                WHEN 12. v_msg = 'DEST_INVALID'.                                WHEN 13. v_msg = 'DEST_NOT_FOUND'.                                WHEN 14. v_msg = 'DEST_NOT_FOUND'.                                WHEN 15. v_msg = 'INTERNAL_PROBLEM'.                                WHEN 16. v_msg = 'INVALID_FAX_ATTRIBUTE'.                                WHEN 17. v_msg = 'INVALID_PARAMETERS'.                                WHEN 18. v_msg = 'NON_OWNER_NO_RIGHT'.                                WHEN 19. v_msg = 'NO_LAYOUT'.                                WHEN 20. v_msg = 'NO_SPOOL_REQUEST'.                                WHEN 21. v_msg = 'OUT_AGAIN_NO_RIGHT'.                                WHEN 22. v_msg = 'SPOOLER_PROBLEM'.                                WHEN OTHERS. v_msg = 'Cannot Print on this device. Error.'.                              ENDCASE.                              wa_output-message = v_msg.                              DELETE it_padest WHERE padest = wa_padest-padest.     " deleting error printer from list of printers                              WRITE : wa_output-rqident, wa_output-padest, wa_output-message.                    ELSE.                                                                                                                                  " Successful. Write Log                              wa_output-count = v_count.                              v_count = v_count + 1.                              wa_output-message = text-005.                              WRITE :/ wa_output-rqident, wa_output-padest, wa_output-count, wa_output-message.                    ENDIF.                   CLEAR : wa_output, v_msg, v_random, v_lines.                                        " Clear temporary variables          ENDWHILE.
 ENDFORM.                    " GET_SET_DATA

 

Thanks & Regards,

Rajat Bothra

ABAPer


Viewing all articles
Browse latest Browse all 943

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>