Code: Alles auswählen.
REPORT ZZZ_SPRANZ_DEMO_SAPSCRIPT.
PARAMETERS: lv_LAND LIKE SOXFX-REC_STATE DEFAULT 'DE' OBLIGATORY.
PARAMETERS: lv_faxn1 LIKE SOXFX-REC_FAX OBLIGATORY.
PARAMETERS: lv_faxn2 LIKE SOXFX-REC_FAX OBLIGATORY.
data: gv_title type TDTITLE.
data: gv_RECIPIENT_ID LIKE SWOTOBJID.
data: gv_APPL_OBJECT_ID LIKE SWOTOBJID.
data: gs_options LIKE ITCPO.
data: begin of lt_testdata occurs 0.
data: KUNNR type kunnr.
data: name3 type AD_NAME3.
data: land type SOXFX-REC_state.
data: faxnr type SOXFX-REC_FAx.
data: end of lt_testdata.
lt_testdata-kunnr = '507101'.
lt_testdata-name3 = 'Saemann, Heilbronn'.
lt_testdata-land = lv_land.
lt_testdata-faxnr = lv_faxn1.
append lt_testdata.
lt_testdata-kunnr = '504630'.
lt_testdata-name3 = 'Voswinkel, Dortmund'.
lt_testdata-faxnr = lv_faxn2.
append lt_testdata.
loop at lt_testdata.
CLEAR gs_OPTIONS.
concatenate lt_testdata-kunnr
'|'
lt_testdata-name3
'|'
'Auftragsrückstände'
into gs_options-tdtitle separated by space.
CALL FUNCTION 'ZIDE_FAX_PREPARE_SAPSCRIPT'
EXPORTING
LAND = lt_testdata-land
NUMBER = lt_testdata-faxnr
IMPORTING
RECIPIENT_ID = gv_RECIPIENT_ID
APPL_OBJECT_ID = gv_APPL_OBJECT_ID.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'MAIL'
DIALOG = 'X'
FORM = 'ZZZ_SPRANZ_DEMO'
OPTIONS = gs_options
* MAIL_SENDER = SENDER_ID
MAIL_RECIPIENT = gv_RECIPIENT_ID
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
CODEPAGE = 5
OTHERS = 6
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
commit work and wait.
endloop.
Code: Alles auswählen.
FUNCTION ZIDE_FAX_PREPARE_SAPSCRIPT.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(LAND) TYPE SOXFX-REC_STATE DEFAULT 'DE'
*" REFERENCE(NUMBER) TYPE SOXFX-REC_FAX
*" EXPORTING
*" REFERENCE(RECIPIENT_ID) TYPE SWOTOBJID
*" REFERENCE(APPL_OBJECT_ID) TYPE SWOTOBJID
*"----------------------------------------------------------------------
* geklaut von report RSSOKIF2.
************************************************************************
* Verwendung des Kommunikations-Interfaces über SAPscript:
*
* Dieser Report zeigt an einem einfachen Beispiel, wie man auch
* über SAPscript von der erweiterten Funktionalität des
* neuen Kommunikations-Interfaces profitieren kann.
* Hier gezeigt am Beispiel des FAXens.
*
************************************************************************
TABLES: SOUD.
* Makros für Zugriff aufs BOR
INCLUDE <CNTN01>.
* Datendeklaration
* * (BOR)
DATA:
SENDER_ID LIKE SWOTOBJID,
* APPL_OBJECT_ID LIKE SWOTOBJID,
* RECIPIENT_ID LIKE SWOTOBJID,
RECIPIENT TYPE SWC_OBJECT,
SENDER TYPE SWC_OBJECT,
RECIPIENT_TAB TYPE SWC_OBJECT OCCURS 0 WITH HEADER LINE,
FOLDER TYPE SWC_OBJECT,
BEGIN OF SOFMFOL_KEY,
FOLDERTYPE LIKE SOFM-FOLTP,
FOLDERYEAR LIKE SOFM-FOLYR,
FOLDERNUMBER LIKE SOFM-FOLNO,
TYPE LIKE SOFM-DOCTP,
YEAR LIKE SOFM-DOCYR,
NUMBER LIKE SOFM-DOCNO,
FORWARDER LIKE SOUB-USRNAM,
END OF SOFMFOL_KEY,
BOR_KEY LIKE SWOTOBJID-OBJKEY,
ADDRESS_STRING LIKE SOXNA-FULLNAME.
* * (SAPscript)
DATA: HEADER LIKE THEAD,
RESULT LIKE ITCPP,
LINES LIKE TLINE OCCURS 0 WITH HEADER LINE,
OTFDATA LIKE ITCOO OCCURS 0.
* OPTIONS LIKE ITCPO.
* Deklaration eines Containers
SWC_CONTAINER CONTAINER.
************************************************************************
* Sender (BOR-Objekt-ID) *
************************************************************************
* Objektreferenz auf ein RECIPIENT-Objekt erzeugen
SWC_CREATE_OBJECT SENDER 'RECIPIENT' SPACE.
* Container leeren
SWC_CLEAR_CONTAINER CONTAINER.
* Adresse (aufrufender interner Benutzer)
SWC_SET_ELEMENT CONTAINER 'AddressString' SY-UNAME.
* Adreßtyp (interner Benutzer)
SWC_SET_ELEMENT CONTAINER 'TypeId' 'B'.
* Aufruf der Methode RECIPIENT.FindAddress
SWC_CALL_METHOD SENDER 'FindAddress' CONTAINER.
* Ausgabe der zur Ausnahme gehörigen Fehlermeldung
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO.
ENDIF.
* Ermittlung der BOR-Objekt-ID
SWC_OBJECT_TO_PERSISTENT SENDER SENDER_ID.
************************************************************************
* Empfänger (BOR-Objekt-ID) *
************************************************************************
* Objektreferenz auf ein RECIPIENT-Objekt erzeugen
SWC_CREATE_OBJECT RECIPIENT 'RECIPIENT' SPACE.
* Container leeren
SWC_CLEAR_CONTAINER CONTAINER.
* Importparameter: Adreßtyp (FAX)
SWC_SET_ELEMENT CONTAINER 'TypeId' 'F'.
* Importparameter: FAX-Nummer
MOVE: LAND TO ADDRESS_STRING,
NUMBER TO ADDRESS_STRING+3.
SWC_SET_ELEMENT CONTAINER 'AddressString' ADDRESS_STRING.
* Aufruf der Methode RECIPIENT.CreateAddress
SWC_CALL_METHOD RECIPIENT 'CreateAddress' CONTAINER.
* Ausgabe der zur Ausnahme gehörigen Fehlermeldung
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO.
ENDIF.
* Ermittlung der BOR-Objekt-ID
SWC_OBJECT_TO_PERSISTENT RECIPIENT RECIPIENT_ID.
* Auflösen des Recipient-Objekts in "flache" Recipient-Objekte mit
* Hilfe der Methode Expand.
* Bei diesem konkreten Beispiel (Recipient = genau eine Fax-Nummer)
* ist diese Auflösung eigentlich nicht nötig. Für den allgemeinen Fall
* wird diese Vorgehensweise jedoch dringend empfohlen und daher in
* diesem Beispiel vorgeführt.
SWC_CLEAR_CONTAINER CONTAINER.
REFRESH RECIPIENT_TAB.
SWC_CALL_METHOD RECIPIENT 'Expand' CONTAINER.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO.
ENDIF.
* "Flache" Recipient-Objekte aus Container lesen
SWC_GET_TABLE CONTAINER 'ResultTable' RECIPIENT_TAB.
IF SY-SUBRC NE 0.
REFRESH RECIPIENT_TAB.
ENDIF.
ENDLOOP.
ENDFUNCTION.