Sending a Mail Message to Users Inbox
We are trying to send a sap mail message in a bespoke program to a users inbox. When we try to BDC transaction SO00, it does not let us enter anything within the main body text of the message. The BDC recording does not pick up a field name.
Is there a simpler way to send a message, perhaps a function or bapi or another transaction.
Help would be appreciated.
Use Function: Z_SEND_MAIL
We do not have the function Z_SEND_MAIL. We are on release 4.5B.
Any other ideas?
Try the function module SO_OBJECT_SEND.
Regards
Vasim
Hi,
Have a look at this FM too SO_NEW_DOCUMENT_SEND_API1
Regards,
Sudhir/Mohit
Thanks for the reply. It looks like the function SO_NEW_DOCUMENT_SEND_API1 is going to work.
Z_SEND_MAIL
On our system that is a program name in the customer name space.
REPORT ZMMPUR_MARKET_ORDER_SHEET NO STANDARD PAGE HEADING
LINE-SIZE 132 LINE-COUNT 65 MESSAGE-ID ZMMPUR.
*---------------------------------------------*
* Tables
*---------------------------------------------*
TABLES: EKPO, "Purchasing Document Item
EKKO, "Purchasing Document Header
MCHA, "Batches
MARA, "General Material Data
T001K, "Valuation area
T001, "Company Codes
T001W, "Plants/Branches
USR21, "Assign user name address key
ADRP, "Persons (central address administration)
CABN, "Characteristic
ZMMPUR_ALLOC, "Futures allocation
ZMMPUR_FMCAL. "Futures markets calendar definition
*---------------------------------------------*
* Constants
*---------------------------------------------*
CONSTANTS : C_X(1) TYPE C
VALUE 'X',
C_C(1) TYPE C
VALUE 'C',
C_U(1) TYPE C
VALUE 'U',
C_PATH(3) TYPE C
VALUE 'C:/',
C_MONTH(15) TYPE C
VALUE 'Z_FUTURES_MONTH',
C_YEAR(14) TYPE C
VALUE 'Z_FUTURES_YEAR',
C_PRICE1(15) TYPE C
VALUE 'Z_FUTURE_PRICE1',
C_UNITS(14) TYPE C
VALUE 'Z_FUTURE_UNITS',
C_QTY(13) TYPE C
VALUE 'Z_FUTURES_QTY',
C_BROKER(16) TYPE C
VALUE 'Z_FUTURES_BROKER',
C_GC(2) TYPE C
VALUE 'GC',
C_TX(2) TYPE C
VALUE 'TX',
C_TELEFAX(7) TYPE C
VALUE 'TELEFAX',
C_WK1(3) TYPE C
VALUE 'WK1'.
*---------------------------------------------*
* Variables
*---------------------------------------------*
DATA : W_UNIT LIKE AUSP-ATINN,
W_QTY LIKE AUSP-ATINN,
W_BROKER LIKE AUSP-ATINN,
W_RECIPIENT LIKE SOXEH-REFER,
W_FAX LIKE TSP01-RQTELENUM ,
W_TITLE LIKE SOOD1-OBJDES,
W_OBJECT_TYPE LIKE SOOD-OBJTP VALUE 'RAW',
W_RETCODE LIKE SY-SUBRC,
W_NAME LIKE EKKO-ERNAM,
OK_CODE(4) TYPE C,
W_ZZTXT1 LIKE MARA-ZZTXT1,
W_MON LIKE ZMMPUR_FMCAL-FUT_MONTH,
W_FUT_YEAR LIKE ZMMPUR_FMCAL-FUT_YEAR,
W_COUNTRY LIKE T005-LAND1
VALUE 'CH',
w_land like zmmpur_fmcal-fut_mkt,
EXTERNAL_ADDRESS LIKE SOXEH-REFER.
*---------------------------------------------*
* Internal Table declaration
*---------------------------------------------*
DATA : BEGIN OF T_EKPO OCCURS 0,
MATNR LIKE MCHA-MATNR,
WERKS LIKE MCHA-WERKS,
CHARG LIKE MCHA-CHARG,
END OF T_EKPO.
DATA : BEGIN OF T_ZMMPUR_ALLOC OCCURS 0,
EBELN LIKE ZMMPUR_ALLOC-EBELN,
EBELP LIKE ZMMPUR_ALLOC-EBELP,
WERKS LIKE EKPO-WERKS,
END OF T_ZMMPUR_ALLOC.
DATA : BEGIN OF T_BATCH OCCURS 0,
CHARG LIKE ZMMPUR_ALLOC-CHARG,
LWEDT LIKE MCHA-LWEDT,
EBELN LIKE ZMMPUR_ALLOC-EBELN,
EBELP LIKE ZMMPUR_ALLOC-EBELP,
END OF T_BATCH.
DATA: BEGIN OF HEADER.
INCLUDE STRUCTURE THEAD.
DATA: END OF HEADER.
DATA : BEGIN OF T_DISPLAY_BATCH OCCURS 0,
CHARG LIKE MCHA-CHARG,
OBJEK LIKE AUSP-OBJEK,
ATINN LIKE AUSP-ATINN,
ATWRT LIKE AUSP-ATWRT,
ERNAM LIKE EKKO-ERNAM,
ZZTXT1 LIKE MARA-ZZTXT1,
END OF T_DISPLAY_BATCH.
data : begin of T_download occurs 0,
BATCH LIKE MSEG-CHARG,
BROKER LIKE AUSP-ATWRT,
QUANTITY LIKE AUSP-ATWRT,
MONTH LIKE AUSP-ATWRT,
YEAR LIKE AUSP-ATWRT,
PRICE LIKE AUSP-ATWRT,
UNIT LIKE AUSP-ATWRT,
NAME_FIRST LIKE ADRP-NAME_FIRST,
NAME_LAST LIKE ADRP-NAME_LAST,
END OF T_DOWNLOAD.
DATA : BEGIN OF T_OUTPUT OCCURS 0,
ZZTXT1 LIKE MARA-ZZTXT1,
YEAR LIKE AUSP-ATWRT,
MNR LIKE zmmpur_fmcal-morder,
BATCH LIKE MSEG-CHARG,
BROKER LIKE AUSP-ATWRT,
QUANTITY LIKE AUSP-ATWRT,
MONTH LIKE AUSP-ATWRT,
PRICE LIKE AUSP-ATWRT,
UNIT LIKE AUSP-ATWRT,
NAME_FIRST LIKE ADRP-NAME_FIRST,
NAME_LAST LIKE ADRP-NAME_LAST,
END OF T_OUTPUT.
DATA :T_DISPLAY_CLASS like conf_out OCCURS 0 with header line.
DATA: T_RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE,
W_OBJECT_HD_CHANGE LIKE SOOD1,
T_OBJCONT LIKE SOLI OCCURS 0 WITH HEADER LINE,
T_OBJHEAD LIKE SOLI OCCURS 0 WITH HEADER LINE,
T_MESSAGE LIKE SOLI OCCURS 0 WITH HEADER LINE,
T_OBJPARA LIKE SELC OCCURS 0 WITH HEADER LINE,
T_OBJPARB LIKE SOOP1 OCCURS 0 WITH HEADER LINE,
T_MSGTXT LIKE TLINE OCCURS 0 WITH HEADER LINE.
*---------------------------------------------*
* Select-Options and Parameters
*---------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS : P_WERKS LIKE EKPO-WERKS.
SELECT-OPTIONS : S_ALLOC FOR ZMMPUR_ALLOC-ALLOC_DATE
DEFAULT SY-DATUM.
PARAMETERS : P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
PARAMETERS : P_LON RADIOBUTTON GROUP RAD,
P_NY RADIOBUTTON GROUP RAD.
SELECTION-SCREEN END OF BLOCK B2.
*---------------------------------------------*
* At selection screen
*---------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM FILE_UP.
AT SELECTION-SCREEN ON P_WERKS.
PERFORM VALID_PLANT.
*---------------------------------------------*
* Authorisation Check *
*---------------------------------------------*
PERFORM CHECK_AUTHORISATIONS.
*---------------------------------------------*
* Top of Page
*---------------------------------------------*
TOP-OF-PAGE.
PERFORM WRITE_HEADER.
*---------------------------------------------*
* Start of selection
*---------------------------------------------*
START-OF-SELECTION.
SET PF-STATUS 'ZMMPUR_MARKET_MENU'.
PERFORM REFRESH_ITAB .
PERFORM GET_DATA.
PERFORM DISPLAY_OUTPUT.
PERFORM DOWNLOAND.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'EMAIL'.
CALL SCREEN 100 STARTING AT 15 5 ENDING AT 85 10 .
WHEN 'FAX'.
CALL SCREEN 200 STARTING AT 15 5 ENDING AT 85 10 .
ENDCASE.
PERFORM REFRESH_ITAB .
*&----------------------------------------------------------------
*
*& Form READ_MAIL_TEXT
*&----------------------------------------------------------------
* Read mail
*-----------------------------------------------------------------
FORM READ_MAIL_TEXT.
CLEAR: T_MSGTXT, T_MSGTXT[].
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = 'ST'
LANGUAGE = SY-LANGU
NAME = 'ZMMPUR_MARKET_ORDER_SHEET'
OBJECT = 'TEXT'
TABLES
LINES = T_MSGTXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
* reformat to 132 chars
CALL FUNCTION 'FORMAT_TEXTLINES'
EXPORTING
FORMATWIDTH = 132
TABLES
LINES = T_MSGTXT
EXCEPTIONS
BOUND_ERROR = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " READ_MAIL_TEXT
*&----------------------------------------------------------------
*& Form GENERATE_EMAILS
*&----------------------------------------------------------------
* Copy the output
*-----------------------------------------------------------------
FORM GENERATE_EMAILS.
REFRESH T_MESSAGE.
SORT T_OUTPUT BY MNR BATCH.
LOOP AT T_OUTPUT.
SPLIT T_OUTPUT-QUANTITY AT ' ' INTO W_QTY W_UNIT.
WRITE :T_OUTPUT-BATCH TO T_MESSAGE(15),
T_OUTPUT-BROKER TO T_MESSAGE+16(10),
W_QTY TO T_MESSAGE+29(10),
T_OUTPUT-MONTH TO T_MESSAGE+37(4),
T_OUTPUT-YEAR TO T_MESSAGE+41(4),
T_OUTPUT-PRICE TO T_MESSAGE+55(6),
T_OUTPUT-UNIT TO T_MESSAGE+62(10).
APPEND T_MESSAGE.
CLEAR : W_QTY,
W_UNIT.
ENDLOOP.
W_TITLE = 'GC- Terminal Market Order Sheet'(009).
PERFORM SEND_MAIL USING W_RECIPIENT.
ENDFORM. " GENERATE_EMAILS
*&----------------------------------------------------------------
*& Form SEND_MAIL
*&----------------------------------------------------------------
* Send Mail
*-----------------------------------------------------------------
* -->P_W_RECIPIENT text
*-----------------------------------------------------------------
FORM SEND_MAIL USING P_W_RECIPIENT.
W_OBJECT_HD_CHANGE-OBJLA = SY-LANGU.
W_OBJECT_HD_CHANGE-OBJNAM = 'Object Name'(010).
W_OBJECT_HD_CHANGE-OBJDES = W_TITLE.
W_OBJECT_HD_CHANGE-OBJSNS = C_C.
* Initialise internal tables
CLEAR: T_OBJCONT, T_OBJHEAD, T_OBJPARA, T_OBJPARB,
T_RECEIVERS,
T_OBJCONT[], T_OBJHEAD[], T_OBJPARA[], T_OBJPARB[],
T_RECEIVERS[].
T_RECEIVERS-RECESC = C_U. "FOR EXTERNAL MAIL
T_RECEIVERS-RECEXTNAM = P_W_RECIPIENT.
EXTERNAL_ADDRESS = P_W_RECIPIENT.
APPEND T_RECEIVERS.
WRITE : TEXT-001 TO T_OBJCONT-LINE(10),
T001-BUTXT TO T_OBJCONT-LINE+11(40).
APPEND T_OBJCONT.
WRITE : TEXT-002 TO T_OBJCONT-LINE(10),
S_ALLOC-LOW TO T_OBJCONT-LINE+11(25).
IF S_ALLOC-HIGH NE 0.
WRITE : S_ALLOC-HIGH TO T_OBJCONT-LINE+26(36).
ENDIF.
APPEND T_OBJCONT.
WRITE : TEXT-015 TO T_OBJCONT-LINE(10).
IF P_LON EQ C_X.
WRITE TEXT-016 TO T_OBJCONT-LINE+11(40).
ELSEIF P_NY EQ C_X.
WRITE TEXT-017 TO T_OBJCONT-LINE+11(40).
ENDIF.
APPEND T_OBJCONT.
CLEAR T_OBJCONT.
WRITE : TEXT-003 TO T_OBJCONT-LINE(15),
TEXT-004 TO T_OBJCONT-LINE+16(10),
TEXT-005 TO T_OBJCONT-LINE+27(10),
TEXT-006 TO T_OBJCONT-LINE+37(15),
TEXT-007 TO T_OBJCONT-LINE+55(10).
APPEND T_OBJCONT.
APPEND LINES OF T_MESSAGE TO T_OBJCONT.
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
EXTERN_ADDRESS = EXTERNAL_ADDRESS
OBJECT_HD_CHANGE = W_OBJECT_HD_CHANGE
OBJECT_TYPE = W_OBJECT_TYPE
TABLES
OBJCONT = T_OBJCONT
OBJHEAD = T_OBJHEAD
OBJPARA = T_OBJPARA
OBJPARB = T_OBJPARB
RECEIVERS = T_RECEIVERS
EXCEPTIONS
ACTIVE_USER_NOT_EXIST = 1
COMMUNICATION_FAILURE = 2
COMPONENT_NOT_AVAILABLE = 3
FOLDER_NOT_EXIST = 4
FOLDER_NO_AUTHORIZATION = 5
FORWARDER_NOT_EXIST = 6
NOTE_NOT_EXIST = 7
OBJECT_NOT_EXIST = 8
OBJECT_NOT_SENT = 9
OBJECT_NO_AUTHORIZATION = 10
OBJECT_TYPE_NOT_EXIST = 11
OPERATION_NO_AUTHORIZATION = 12
OWNER_NOT_EXIST = 13
PARAMETER_ERROR = 14
SUBSTITUTE_NOT_ACTIVE = 15
SUBSTITUTE_NOT_DEFINED = 16
SYSTEM_FAILURE = 17
TOO_MUCH_RECEIVERS = 18
USER_NOT_EXIST = 19
X_ERROR = 20
OTHERS = 21.
W_RETCODE = SY-SUBRC.
IF W_RETCODE = 0 AND SY-SUBRC = 0.
MESSAGE S310 .
ELSE.
MESSAGE E309 WITH W_RETCODE.
ENDIF.
LEAVE TO SCREEN 0.
ENDFORM. " SEND_MAIL
*&----------------------------------------------------------------
*& Form REFRESH_ITAB
*&----------------------------------------------------------------
* Refresh Internal tables and variables
*-----------------------------------------------------------------
FORM REFRESH_ITAB.
CLEAR : W_UNIT ,
W_QTY ,
W_RECIPIENT ,
W_TITLE ,
W_RETCODE ,
W_NAME ,
T_DISPLAY_BATCH,
T_BATCH ,
T_OUTPUT.
FREE : T_DISPLAY_BATCH,
T_BATCH,
T_OBJCONT,
T_ZMMPUR_ALLOC,
T_EKPO,
T_DOWNLOAD,
T_OUTPUT.
ENDFORM. " REFRESH_ITAB
*&----------------------------------------------------------------
*& Form INT_CHARACTERISTIC
*&----------------------------------------------------------------
* Internal Characteristic
*-----------------------------------------------------------------
*
FORM INT_CHARACTERISTIC.
CALL FUNCTION 'Z_VB_BATCH_VALUES_FOR_OUTPUT'
EXPORTING
MATERIAL = ZMMPUR_FMCAL-MATNR
PLANT = P_WERKS
BATCH = T_display_BATCH-CHARG
* BATCH_CUOBJ =
LANGUAGE = SY-LANGU
TABLES
CLASSIFICATION = T_DISPLAY_CLASS
EXCEPTIONS
NO_CLASSIFICATION_DATA = 1
OTHERS = 2.
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " INT_CHARACTERISTIC
*&----------------------------------------------------------------
*& Module STATUS_0100 OUTPUT
*&----------------------------------------------------------------
* Screen for Email -PBO
*-----------------------------------------------------------------
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZMMPUR_MARKET_EMAIL_MENU'.
ENDMODULE. " STATUS_0100 OUTPUT
*&----------------------------------------------------------------
*& Module USER_COMMAND_0100 INPUT
*&----------------------------------------------------------------
* Screen for Email- PAI
*-----------------------------------------------------------------
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'OK'.
PERFORM READ_MAIL_TEXT.
PERFORM GENERATE_EMAILS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&----------------------------------------------------------------
*& Module STATUS_0200 OUTPUT
*&----------------------------------------------------------------
* Screen for Fax - PBO
*-----------------------------------------------------------------
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'ZMMPUR_MARKET_EMAIL_MENU'.
ENDMODULE. " STATUS_0200 OUTPUT
*&----------------------------------------------------------------
*& Module USER_COMMAND_0200 INPUT
*&----------------------------------------------------------------
* Screen for Fac - PAI
*-----------------------------------------------------------------
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'OK'.
PERFORM READ_MAIL_TEXT.
PERFORM GENERATE_FAX.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*&----------------------------------------------------------------
*& Form FILE_UP
*&----------------------------------------------------------------
* Get File name
*-----------------------------------------------------------------
FORM FILE_UP.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_PATH = C_PATH
MASK = ',*.*,*.*.'
TITLE = 'Browse for File '(014)
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FILE_UP
*&----------------------------------------------------------------
*& Form write_header
*&----------------------------------------------------------------
* Output header
*-----------------------------------------------------------------
FORM WRITE_HEADER.
WRITE :/40 'Terminal Market Order Sheet'(011) COLOR COL_HEADING
.
SKIP.
WRITE :/2 'Account :'(001) ,T001-BUTXT,
/,
/2 'Date :'(002) ,S_ALLOC-LOW .
IF S_ALLOC-HIGH NE 0.
WRITE :30 '-', S_ALLOC-HIGH.
ENDIF.
SKIP.
IF P_LON EQ C_X.
WRITE :/2 'Market : London'(012).
ELSEIF P_NY EQ C_X.
WRITE :/2 'Market : New York'(013).
ENDIF.
SKIP.
WRITE :/2 'Our reference'(003),
20 'Broker'(004),
33 'Quantity'(005),
45 'Month'(006),
60 'Execution'(007).
ULINE.
ENDFORM. " write_header
*&----------------------------------------------------------------
*& Form downloand
*&----------------------------------------------------------------
* Download in Excel file
*-----------------------------------------------------------------
FORM DOWNLOAND.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = P_FILE
FILETYPE = C_WK1
TABLES
DATA_TAB = T_DOWNLOAD
* FIELDNAMES =
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.
ENDFORM. " downloand
*&----------------------------------------------------------------
*& Form get_data
*&----------------------------------------------------------------
* Reteriving the data
*-----------------------------------------------------------------
FORM GET_DATA.
*Selecting "Lodon or NewYork
IF P_LON EQ C_X.
SELECT SINGLE FUT_MKT MATNR
INTO (ZMMPUR_FMCAL-FUT_MKT, ZMMPUR_FMCAL-MATNR)
FROM ZMMPUR_FMCAL
WHERE FUT_MKT EQ 'LON'.
ELSEIF P_NY EQ C_X.
SELECT SINGLE FUT_MKT MATNR
INTO (ZMMPUR_FMCAL-FUT_MKT, ZMMPUR_FMCAL-MATNR)
FROM ZMMPUR_FMCAL
WHERE FUT_MKT EQ 'NY'.
ENDIF.
w_land = zmmpur_fmcal-fut_mkt.
*Read all the records store it in the internal table
SELECT MATNR WERKS CHARG
INTO CORRESPONDING FIELDS OF TABLE T_EKPO
FROM MCHA
WHERE MATNR EQ ZMMPUR_FMCAL-MATNR AND
WERKS EQ P_WERKS.
IF SY-SUBRC NE 0.
MESSAGE i312 .
ENDIF.
SELECT CHARG LWEDT
INTO CORRESPONDING FIELDS OF TABLE T_BATCH
FROM MCHA FOR ALL ENTRIES IN T_EKPO
WHERE CHARG EQ T_EKPO-CHARG AND
LWEDT IN S_ALLOC.
IF SY-SUBRC NE 0.
MESSAGE i312 .
ENDIF.
*Sort the internaltable with batchno
SORT T_BATCH BY CHARG EBELN.
LOOP AT T_BATCH.
*Read the batchno, internal characteristic no.
*Read the atinn atwrt
SELECT SINGLE CHARG CUOBJ_BM
INTO (MCHA-CHARG, MCHA-CUOBJ_BM)
FROM MCHA
WHERE CHARG EQ T_BATCH-CHARG.
IF SY-SUBRC EQ 0.
T_DISPLAY_BATCH-CHARG = MCHA-CHARG.
ENDIF.
APPEND T_DISPLAY_BATCH.
ENDLOOP.
SORT T_DISPLAY_BATCH BY CHARG OBJEK ATINN.
DELETE ADJACENT DUPLICATES FROM T_DISPLAY_BATCH COMPARING
CHARG OBJEK ATINN.
SORT T_DISPLAY_BATCH BY CHARG.
LOOP AT T_DISPLAY_BATCH.
*At the end of each batch no copy all the batch classfication
*to internal table
AT END OF CHARG.
PERFORM INT_CHARACTERISTIC.
READ TABLE T_DISPLAY_CLASS WITH KEY ATNAM = C_MONTH.
T_OUTPUT-MONTH = T_DISPLAY_CLASS-ATWRT.
W_MON = T_DISPLAY_CLASS-ATWRT.
clear t_display_class.
READ TABLE T_DISPLAY_CLASS WITH KEY ATNAM = C_YEAR .
T_OUTPUT-YEAR = T_DISPLAY_CLASS-ATWRT.
W_FUT_YEAR = T_DISPLAY_CLASS-ATWRT.
clear t_display_class.
READ TABLE T_DISPLAY_CLASS WITH KEY ATNAM = C_PRICE1.
T_OUTPUT-PRICE = T_DISPLAY_CLASS-ATWRT.
clear t_display_class.
READ TABLE T_DISPLAY_CLASS WITH KEY ATNAM = C_UNITS.
T_OUTPUT-UNIT = T_DISPLAY_CLASS-ATWTB.
clear t_display_class.
READ TABLE T_DISPLAY_CLASS WITH KEY ATNAM = C_BROKER.
T_OUTPUT-BROKER = T_DISPLAY_CLASS-ATWRT.
clear t_display_class.
READ TABLE T_DISPLAY_CLASS WITH KEY ATNAM = C_QTY.
T_OUTPUT-QUANTITY = T_DISPLAY_CLASS-ATWRT.
clear t_display_class.
select single morder
into zmmpur_fmcal-morder
from zmmpur_fmcal
where fut_month = w_mon and
FUT_YEAR = W_FUT_YEAR AND
fut_mkt = w_land.
T_OUTPUT-BATCH = T_DISPLAY_BATCH-CHARG.
T_OUTPUT-MNR = zmmpur_fmcal-morder.
APPEND T_OUTPUT.
CLEAR : T_OUTPUT,
W_FUT_YEAR,
W_MON.
ENDAT.
ENDLOOP.
SELECT SINGLE BUKRS
INTO T001K-BUKRS
FROM T001K
WHERE BWKEY EQ P_WERKS.
SELECT SINGLE BUTXT
INTO T001-BUTXT
FROM T001
WHERE BUKRS EQ T001K-BUKRS.
ENDFORM. " get_data
*&----------------------------------------------------------------
*& Form display_output
*&----------------------------------------------------------------
* Display the Output
*-----------------------------------------------------------------
FORM DISPLAY_OUTPUT.
SORT T_OUTPUT BY MNR BATCH.
LOOP AT T_OUTPUT.
SPLIT T_OUTPUT-QUANTITY AT ' ' INTO W_QTY W_UNIT.
WRITE :/ T_OUTPUT-BATCH UNDER TEXT-003,
T_OUTPUT-BROKER UNDER TEXT-004,
35 W_QTY ,
T_OUTPUT-MONTH UNDER TEXT-006,
49 T_OUTPUT-YEAR,
T_OUTPUT-PRICE UNDER TEXT-007,
68 T_OUTPUT-UNIT .
T_DOWNLOAD-BATCH = T_OUTPUT-BATCH.
T_DOWNLOAD-BROKER = T_OUTPUT-BROKER.
T_DOWNLOAD-QUANTITY = W_QTY .
T_DOWNLOAD-MONTH = T_OUTPUT-MONTH .
T_DOWNLOAD-YEAR = T_OUTPUT-YEAR.
T_DOWNLOAD-PRICE = T_OUTPUT-PRICE.
T_DOWNLOAD-UNIT = T_OUTPUT-UNIT.
APPEND T_DOWNLOAD.
clear : t_download,
W_UNIT,
W_QTY.
ENDLOOP.
ENDFORM. " display_output
*&----------------------------------------------------------------
*& Form GENERATE_FAX
*&----------------------------------------------------------------
* Generate fax
*-----------------------------------------------------------------
FORM GENERATE_FAX.
REFRESH T_MESSAGE.
SORT T_OUTPUT BY MNR BATCH.
LOOP AT T_OUTPUT.
SPLIT T_OUTPUT-QUANTITY AT ' ' INTO W_QTY W_UNIT.
WRITE :T_OUTPUT-BATCH TO T_MESSAGE(15),
T_OUTPUT-BROKER TO T_MESSAGE+16(10),
W_QTY TO T_MESSAGE+29(10),
* T_OUTPUT-QUANTITY TO T_MESSAGE+27(10),
T_OUTPUT-MONTH TO T_MESSAGE+37(4),
T_OUTPUT-YEAR TO T_MESSAGE+41(4),
T_OUTPUT-PRICE TO T_MESSAGE+55(6),
T_OUTPUT-UNIT TO T_MESSAGE+62(10).
APPEND T_MESSAGE.
CLEAR : W_QTY,
W_UNIT.
ENDLOOP.
W_TITLE = 'GC- Terminal Market Order Sheet'(009).
PERFORM SEND_FAX .
ENDFORM. " GENERATE_FAX
*&----------------------------------------------------------------
*& Form SEND_FAX
*&----------------------------------------------------------------
* Copy the data to text file
*-----------------------------------------------------------------
FORM SEND_FAX .
W_OBJECT_HD_CHANGE-OBJLA = SY-LANGU.
W_OBJECT_HD_CHANGE-OBJNAM = 'Object Name'(010).
W_OBJECT_HD_CHANGE-OBJDES = W_TITLE.
W_OBJECT_HD_CHANGE-OBJSNS = C_C.
* Initialise internal tables
CLEAR T_OBJCONT.
REFRESH T_OBJCONT[].
WRITE : TEXT-001 TO T_OBJCONT-LINE(10),
T001-BUTXT TO T_OBJCONT-LINE+11(40).
APPEND T_OBJCONT.
WRITE : TEXT-002 TO T_OBJCONT-LINE(10),
S_ALLOC-LOW TO T_OBJCONT-LINE+11(25).
IF S_ALLOC-HIGH NE 0.
WRITE : S_ALLOC-HIGH TO T_OBJCONT-LINE+26(36).
ENDIF.
APPEND T_OBJCONT.
WRITE : TEXT-015 TO T_OBJCONT-LINE(10).
IF P_LON EQ C_X.
WRITE TEXT-016 TO T_OBJCONT-LINE+11(40).
ELSEIF P_NY EQ C_X.
WRITE TEXT-017 TO T_OBJCONT-LINE+11(40).
ENDIF.
APPEND T_OBJCONT.
CLEAR T_OBJCONT.
WRITE : TEXT-003 TO T_OBJCONT-LINE(15),
TEXT-004 TO T_OBJCONT-LINE+16(10),
TEXT-005 TO T_OBJCONT-LINE+27(10),
TEXT-006 TO T_OBJCONT-LINE+37(15),
TEXT-007 TO T_OBJCONT-LINE+55(10).
* TEXT-008 TO T_OBJCONT-LINE+74(15).
APPEND T_OBJCONT.
APPEND LINES OF T_MESSAGE TO T_OBJCONT.
PERFORM SEND_FAX_S TABLES T_OBJCONT
USING W_COUNTRY
W_FAX
SY-UNAME.
W_RETCODE = SY-SUBRC.
IF W_RETCODE = 0 AND SY-SUBRC = 0.
MESSAGE S310 .
ELSE.
MESSAGE E309 WITH W_RETCODE.
ENDIF.
LEAVE TO SCREEN 0.
ENDFORM. " SEND_FAX
*&----------------------------------------------------------------
*& Form SEND_FAX_S
*&----------------------------------------------------------------
* Send Fax
*-----------------------------------------------------------------
* -->P_T_OBJCONT text
* -->P_W_COUNTRY text
* -->P_W_FAX text
* -->P_SY_UNAME text
*-----------------------------------------------------------------
FORM SEND_FAX_S TABLES P_T_OBJCONT STRUCTURE T_OBJCONT
* "Insert correct name for <...>
USING P_W_COUNTRY
P_W_FAX
P_SY_UNAME.
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.
POPT-TDNOPREV = ' '.
POPT-TDNEWID = C_X.
POPT-TDSUFFIX2 = SY-UNAME.
POPT-TDIMMED = C_X.
POPT-TDLIFETIME = 8.
POPT-TDTELENUM = P_W_FAX.
POPT-TDTELELAND = P_W_COUNTRY.
POPT-TDCOVER = ' '.
POPT-TDFAXUSER = P_SY_UNAME. "This is NEW !! rel.3.1
CALL FUNCTION 'PRINT_TEXT'
EXPORTING
APPLICATION = C_TX
DEVICE = C_TELEFAX
DIALOG = ' '
HEADER = HEADER
OPTIONS = POPT
IMPORTING
RESULT = PRES
TABLES
LINES = P_T_OBJCONT
EXCEPTIONS
CANCELED = 01
DEVICE = 02
FORM = 03
OPTIONS = 04
UNCLOSED = 05
UNKNOWN = 06
FORMAT = 07
TEXTFORMAT = 08.
"BCXK004169
IF SY-SUBRC = 0.
* arriving here means we could send:
SID = PRES-TDSPOOLID.
IF SID > '00000'.
MESSAGE S311 WITH SID.
ENDIF.
LEAVE LIST-PROCESSING.
ELSE.
MESSAGE ID 'TD' TYPE 'A' NUMBER '400' WITH 'PRINT_TEXT'.
ENDIF.
ENDFORM. " SEND_FAX_S
*&----------------------------------------------------------------
*& Form VALID_PLANT
*&----------------------------------------------------------------
* Validation of Plant
*-----------------------------------------------------------------
FORM VALID_PLANT.
IF P_WERKS+2(2) <> C_GC.
MESSAGE E000 WITH P_WERKS 'doesnot exist'(018) ',Please
ENTER'(019)
'Plant as xxGC'(020).
ELSE.
SELECT SINGLE WERKS INTO T001W-WERKS FROM T001W WHERE WERKS =
P_WERKS.
IF SY-SUBRC <> 0.
MESSAGE E115 WITH P_WERKS.
ENDIF.
ENDIF.
ENDFORM. " VALID_PLANT
*&--------------------------------------------------------------------
*& Form CHECK_AUTHORISATIONS
*&--------------------------------------------------------------------
* text
*---------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
FORM CHECK_AUTHORISATIONS.
* check the authorisations for the selections and adjust as
*appropriate
* check that user has display authority for each of the plants
*selected
* CLEAR R_WERKS[]. R_WERKS = 'IEQ'.
SELECT WERKS FROM T001W INTO T001W-WERKS
WHERE WERKS EQ P_WERKS.
AUTHORITY-CHECK OBJECT 'M_BEST_WRK'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD T001W-WERKS.
IF SY-SUBRC <> 0.
MESSAGE E054.
ENDIF.
ENDSELECT.
ENDFORM. " CHECK_AUTHORISATIONS
Next time post the relevant part only, please.