Envío de Fax

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Daniela Gutierrez
    Junior Member
    • ene
    • 11

    #1

    Envío de Fax

    Hola Foro,

    Por favor si tienen alguna información de enviar y recibir documentos directamente desde y hacia sistemas SAP, les sabría agradecer me lo hicieran llegar.
    Muchas gracias,

    Daniela G.
    Daniela Gutierrez
    Consultor ABAP

    Venezuela
  • andyoscky
    Miembro Honorario
    • mar
    • 73

    #2
    Programa

    Aca te envio un programa que encontre que te puede ayudar con los primeros pasos
    How can you send a fax from within ABAP/4 programs?
    The following program shows you how to send a fax from within ABAP/4. The report is delivered
    in the standard system and is used in Transaction SCOM for the function "Send test fax".

    Only the method via the call of SAPscript with DEVICE='TELEFAX', described below, ensures the
    generation of a correct transmission request, independent of the R/3 release and of the used
    fax server solution and its configuration.

    The regular printing (for example, with NEW-PAGE PRINT ON...) on an output device created in
    the spool administration of the device class 'Telefax' does generally not work!

    REPORT RSKSENDF MESSAGE-ID SK.
    ************************************************** ********************

    * Test report to send a test fax
    * sends a fax to the number <TO_CNTRY>-<TO_NMBER>
    * containing an automatically generated message text.
    ************************************************** ********************

    TABLES: USR03.
    PARAMETERS: TO_CNTRY LIKE T005-LAND1 OBLIGATORY,
    TO_NMBER LIKE TSP01-RQTELENUM OBLIGATORY,
    FROM_USR(30) TYPE C DEFAULT SY-UNAME,
    TO_RECIP(30) TYPE C DEFAULT SY-UNAME.
    * SAPscript content ITAB
    DATA: BEGIN OF TEST_DOC OCCURS 10.
    INCLUDE STRUCTURE TLINE.
    DATA: END OF TEST_DOC.
    * SAPscript header struct
    DATA BEGIN OF HEADER.
    INCLUDE STRUCTURE THEAD.
    DATA END OF HEADER.
    ************************************************** ********************

    INITIALIZATION.
    ************************************************** ********************

    * get county from user addres in usr03
    * system->user profile->user address
    * check if not empty
    SELECT SINGLE * FROM USR03 WHERE BNAME = SY-UNAME.
    IF SY-SUBRC = 0 AND USR03-LAND1 <> SPACE.
    TO_CNTRY = USR03-LAND1.
    ENDIF.
    ************************************************** ********************

    START-OF-SELECTION.
    ************************************************** ********************

    PERFORM FILL_UP_TEST_DOC.
    PERFORM SHOW_TEST_DOC.
    ************************************************** ********************

    AT PF08.
    ************************************************** ********************

    PERFORM SEND_FAX TABLES TEST_DOC USING TO_CNTRY
    TO_NMBER.
    ************************************************** ********************

    AT SELECTION-SCREEN ON TO_NMBER.
    ************************************************** ********************

    PERFORM CHECK_NUMBER USING TO_CNTRY TO_NMBER.
    *&---------------------------------------------------------------------*

    *& Form CHECK_NUMBER
    *&---------------------------------------------------------------------*

    FORM CHECK_NUMBER USING
    COUNTRY
    NUMBER.
    DATA: SERVICE LIKE TSKPA-SERVICE VALUE 'TELEFAX',
    LEN LIKE SY-FDPOS.
    FIELD-SYMBOLS <P>.
    * windows GUI push the ? from mandatory input instead
    of overwriting it
    LEN = STRLEN( TO_NMBER ).
    IF LEN > 1.
    SUBTRACT 1 FROM LEN.
    ASSIGN TO_NMBER+LEN(1) TO <P>.
    IF <P> = '?'.
    <P> = SPACE.
    ENDIF.
    ENDIF.
    * official check FM
    CALL FUNCTION 'TELECOMMUNICATION_NUMBER_CHECK'
    EXPORTING
    COUNTRY = COUNTRY
    NUMBER = NUMBER
    SERVICE = SERVICE.
    * on old 21?/22? release you may have to handle the
    exception
    * because the Function uses RAISE instead of
    MESSAGE... RAISING....
    ENDFORM. " CHECK_NUMBER
    *&---------------------------------------------------------------------*

    *& Form FILL_UP_TEST_DOC
    *&---------------------------------------------------------------------*

    * fills test text in itab TEST_DOC *
    * real life example needs to get real life data *
    *----------------------------------------------------------------------*

    FORM FILL_UP_TEST_DOC.
    DATA: DATUM(12) TYPE C,
    UZEIT(10) TYPE C.
    * SAPscript initialization
    * of course, you may want to set a few parameter
    (FORM,LAYOUT,....)
    CALL FUNCTION 'INIT_TEXT'
    EXPORTING
    ID = 'ST '
    LANGUAGE = SY-LANGU
    NAME = 'FOO-BAR'
    OBJECT = 'TEXT'
    IMPORTING
    HEADER = HEADER
    TABLES
    LINES = TEST_DOC
    EXCEPTIONS
    OTHERS = 1.
    IF SY-SUBRC <> 0.
    MESSAGE A400 WITH 'INIT_TEXT'.
    ENDIF.
    PERFORM ADD_EMPTY_LINE.
    WRITE: SY-DATUM TO DATUM.
    WRITE: SY-UZEIT TO UZEIT.
    PERFORM ADD_LINES USING 'This is test Telefax'(001)
    DATUM UZEIT.
    PERFORM ADD_EMPTY_LINE.
    PERFORM ADD_LINES USING 'From: &'(002) FROM_USR SPACE.

    PERFORM ADD_LINES USING 'To: &'(003) TO_RECIP SPACE.
    PERFORM ADD_LINES USING 'Fax number: & &'(004)
    TO_CNTRY TO_NMBER.
    PERFORM ADD_EMPTY_LINE.
    PERFORM ADD_LINES USING
    'This is a test fax send by Report RSKSENDF'(005)
    SPACE SPACE.
    PERFORM ADD_LINES USING 'on SAP system & '(006)
    SY-SYSID SPACE.
    PERFORM ADD_EMPTY_LINE.
    PERFORM ADD_LINES USING
    'the quick brown fox jumps over the lazy dog.'(101)
    SPACE SAPCE.
    PERFORM ADD_LINES USING
    'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.'(102)
    SPACE SAPCE.
    PERFORM ADD_EMPTY_LINE.
    PERFORM ADD_LINES USING 'End of test'(007) SPACE
    SPACE.
    ENDFORM. " FILL_UP_TEST_DOC
    *&---------------------------------------------------------------------*

    *& Form ADD_LINES
    *&---------------------------------------------------------------------*

    * printf a line an appends it in test_doc *
    *----------------------------------------------------------------------*

    * --> cformat format.
    * --> p1 param1
    * --> p2 param2
    *----------------------------------------------------------------------*

    FORM ADD_LINES USING CFORMAT P1 P2.
    TEST_DOC-TDFORMAT = '/'.
    TEST_DOC-TDLINE = CFORMAT.
    IF TEST_DOC-TDLINE CA '&'.
    REPLACE '&' WITH P1 INTO TEST_DOC-TDLINE.
    IF TEST_DOC-TDLINE CA '&'.
    REPLACE '&' WITH P2 INTO TEST_DOC-TDLINE.
    ENDIF.
    ENDIF.
    APPEND TEST_DOC.
    ENDFORM. " ADD_LINES
    *&---------------------------------------------------------------------*

    *& Form ADD_EMPTY_LINE
    *&---------------------------------------------------------------------*

    * appends an empty line to test_doc *
    *----------------------------------------------------------------------*

    FORM ADD_EMPTY_LINE.
    TEST_DOC-TDFORMAT = '/'.
    CLEAR TEST_DOC-TDLINE.
    APPEND TEST_DOC.
    ENDFORM. " ADD_EMPTY_LINE
    *&---------------------------------------------------------------------*

    *& Form SHOW_TEST_DOC
    *&---------------------------------------------------------------------*

    * lists the test doc for aproval *
    * *
    *>>>> this is for fun only because PRINT_TEXT also
    offers a preview *
    *
    *----------------------------------------------------------------------*

    FORM SHOW_TEST_DOC.
    FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
    WRITE: / 'Test fax would look like this:'(020).
    ULINE.
    SKIP.
    LOOP AT TEST_DOC.
    IF TEST_DOC-TDLINE <> SPACE.
    WRITE:/ TEST_DOC-TDLINE.
    ELSE.
    SKIP.
    ENDIF.
    ENDLOOP.
    SKIP.
    ULINE.
    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE: 'Press PF8 to send it'(021).
    ENDFORM. " SHOW_TEST_DOC
    *&---------------------------------------------------------------------*

    *& Form SEND_FAX
    *&---------------------------------------------------------------------*

    * send fax by calling SAPscript *
    *----------------------------------------------------------------------*

    * Note: Instead of using PRINT_TEXT you may also *
    * call OPEN_FORM / WRITE_FORM_LINES / CLOSE_FORM, *
    * this allows you to use a similar program structure *

    * as with NEW-PAGE PRINT ON / WRITE / NEW-PAGE PRINT
    OFF *
    *----------------------------------------------------------------------*

    FORM SEND_FAX
    TABLES DOC2FAX STRUCTURE TEST_DOC
    USING COUNTRY
    NUMBER.
    DATA: SID(5) TYPE N.
    DATA BEGIN OF POPT.
    INCLUDE STRUCTURE ITCPO.
    DATA END OF POPT.
    DATA BEGIN OF PRES.
    INCLUDE STRUCTURE ITCPP.
    DATA END OF PRES.
    CLEAR POPT.
    POPT-TDCOPIES = 1. " one copy
    * POPT-TDDEST = " done internaly by script,
    * POPT-TDPRINTER = " do not fill !!!
    POPT-TDNEWID = 'X'. " do not reuse old spool request
    POPT-TDDATASET = 'TEST'(022). " fill as you want
    POPT-TDSUFFIX1 = 'FAX'(023). " fill as you want
    POPT-TDSUFFIX2 = SY-UNAME. " fill as you want
    POPT-TDIMMED = 'X'. " send now
    POPT-TDLIFETIME = 8. " keep 8 days in spool
    POPT-TDTELENUM = NUMBER. " number without country code

    POPT-TDTELELAND = COUNTRY. " country of recipient
    POPT-TDCOVER = 'test fax'(024).
    POPT-TDCOVTITLE = 'test fax'(024).
    * POPT-TDIEXIT = 'X'.
    CALL FUNCTION 'PRINT_TEXT'
    EXPORTING
    APPLICATION = 'TX'
    ARCHIVE_INDEX = ' '
    ARCHIVE_PARAMS = ' '
    DEVICE = 'TELEFAX' "<<< here we say: fax it !
    DIALOG = 'X'
    HEADER = HEADER
    OPTIONS = POPT
    IMPORTING
    RESULT = PRES
    TABLES
    LINES = DOC2FAX
    EXCEPTIONS
    OTHERS = 01.
    * do not bother with exception in sample code
    * CANCELED = 01
    * DEVICE = 02
    * FORM = 03
    * OPTIONS = 04
    * UNCLOSED = 05
    * UNKNOWN = 06
    * FORMAT = 07
    * TEXTFORMAT = 08
    * EXTERNAL = 09.
    IF SY-SUBRC = 0.
    * arriving here means we could send:
    SID = PRES-TDSPOOLID.
    IF SID > '00000'.
    MESSAGE S433 WITH SID.
    ENDIF.
    LEAVE .
    ELSE.
    * do not bother with exception in sample code
    MESSAGE A400 WITH 'PRIN_TEXT'.
    ENDIF.
    ENDFORM. " SEND_FAX

    Comentario

    • Daniela Gutierrez
      Junior Member
      • ene
      • 11

      #3
      Envìo de fax

      Muchas gracias
      Andyoscky

      Esto esta perfecto

      Saludos,
      Daniela Gutierrez
      Consultor ABAP

      Venezuela

      Comentario

      • CARLOS.ARGUETA
        Junior Member
        • ene
        • 1

        #4
        Te funciono?, tengo el siguiente error...

        Err.tmpo.ejec. CALL_FUNCTION_UC_STRUCT
        Excep. CX_SY_DYN_CALL_ILLEGAL_TYPE
        Fecha y hora 22.01.2007 11:39:05
        Linea 253

        241 POPT-TDNEWID = 'X'. " do not reuse old spool request
        242 POPT-TDDATASET = 'TEST'(022). " fill as you want
        243 POPT-TDSUFFIX1 = 'FAX'(023). " fill as you want
        244 POPT-TDSUFFIX2 = SY-UNAME. " fill as you want
        245 POPT-TDIMMED = 'X'. " send now
        246 POPT-TDLIFETIME = 8. " keep 8 days in spool
        247 POPT-TDTELENUM = NUMBER. " number without country code
        248
        249 POPT-TDTELELAND = COUNTRY. " country of recipient
        250 POPT-TDCOVER = 'test fax'(024).
        251 POPT-TDCOVTITLE = 'test fax'(024).
        252 * POPT-TDIEXIT = 'X'.
        >>>>> CALL FUNCTION 'PRINT_TEXT'
        254 EXPORTING
        255 APPLICATION = 'TX'
        256 ARCHIVE_INDEX = ' '
        257 ARCHIVE_PARAMS = ' '
        258 DEVICE = 'TELEFAX' "<<< here we say: fax it !
        259 DIALOG = 'X'
        260 HEADER = HEADER
        261 OPTIONS = POPT
        262 IMPORTING
        263 RESULT = PRES
        264 TABLES
        265 LINES = DOC2FAX
        266 EXCEPTIONS
        267 OTHERS = 01.

        Carlos Argueta
        ABAP

        Comentario

        Trabajando...