#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. |
#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 |
#3
|
||||
|
||||
Envìo de fax
Muchas gracias
Andyoscky Esto esta perfecto Saludos,
__________________
Daniela Gutierrez Consultor ABAP Venezuela |
#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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|