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 

Serkan AKKAVAK
Computer Engineer
ABAP Developer & SAP MM SD Consultant
Contact : serkurumsal@yandex.com