Regading Invoice No in .text file
I have a text file in this format
Purchase
Kale Genset Pvt.Ltd. Invoice No. I Dated
392/1, Mahalunge Ingaie, Feb 08/Pur/18 12-Feb-2008
Chakan - Talegaon Road, Supplier's Ref Other Reference(s)
Taluka - Khed, District - Une, � 2846
H No: 02135 - 259120 Buyer's Order No. Dated
ATSPL/ECP/KAR/083 24-Jan-2008
Consignee
Aster Teleservices Pvt.Ltd-ECP Kar - C
No 6/1,2nd Floor,l6th Cross,
GDP-Extension,Vyalikaval,
, Malleswaram,Bangalore - 3
i want to extract the Invoice no and Invoice Date details from the .txt file
I tried in the following way for Invoice No and Invoice Date but unable to suceed
Matcher m1=Pattern.compile(("(Invoice\\s+no\\.\\s+dated([\\s\\S]+?)\\s+(\\d?\\d-[a-z]{3}-\\d{4}))"),Pattern.CASE_INSENSITIVE).matcher(line1);
//Pattern Match for Invoice No and Invoice Date is performed here
while(m1.find())
System.out.println("Invoice No "+m1.group(2));//For Invoice No
System.out.println("Invoice Date "+m1.group(3));//For Invoice Date
break;
Any suggestions please
Regards
V.Praveen
praveenmca09 wrote:
when i execute the code my output will be
392/1, Mahalunge Ingaie, Feb 08/Pur/18
but i need to get only "Feb08/Pur/18"
as it is the Invoice Number
But iam ok with the Invoice Date as it is printing exactlyHere's an example of a working pattern:
public class Example {
public static void main(String args[]) {
String data = "Purchase\n" +
"Kale Genset Pvt.Ltd. Invoice No. I Dated\n" +
"392/1, Mahalunge Ingaie, Feb 08/Pur/18 12-Feb-2008\n" +
"Chakan - Talegaon Road, Supplier's Ref Other Reference(s)\n" +
"Taluka - Khed, District - Une, 2846\n" +
"H No: 02135 - 259120 Buyer's Order No. Dated\n" +
"ATSPL/ECP/KAR/083 24-Jan-2008\n" +
"Consignee\n" +
"Aster Teleservices Pvt.Ltd-ECP Kar - C\n" +
"No 6/1,2nd Floor,l6th Cross,\n" +
"GDP-Extension,Vyalikaval,\n" +
", Malleswaram,Bangalore - 3\n";
Pattern pattern = Pattern.compile("(\\d{2}/\\D{3}/\\d{2})\\s+(\\d{1,2}-\\D{3}-\\d{4})", Pattern.DOTALL);
Matcher matcher = pattern.matcher(data);
if (matcher.find()) {
System.out.println("no " + matcher.group(1));
System.out.println("date " + matcher.group(2));
}Kaj
Similar Messages
-
Problen when Sending the text file as attachment to the external mail
HI,
I am sending the text file as an attachment to a aexternal mai. mailing is going with text file attachment, but text file is empty. No information in the file is going, only empty text file is going. I am sending the code iam using. Please suggest, if I need to change any passing parameters orany other other solution.
tables: knb1,kna1,adr6,ITEMSET,bsid,TSP01.
INTERNAL TABLES
DATA: BEGIN OF it_kna1 occurs 0,
KUNNR LIKE KNA1-KUNNR,
ADRNR LIKE KNA1-ADRNR,
END OF it_kna1.
DATA: BEGIN OF it_email occurs 0,
ADDRNUMBER LIKE ADR6-ADDRNUMBER,
SMTP_ADDR LIKE ADR6-SMTP_ADDR,
END OF it_email.
DATA: BEGIN OF it_bsid occurs 0,
KUNNR LIKE BSID-KUNNR,
BUKRS LIKE BSID-BUKRS,
END OF it_bsid.
DATA: BEGIN OF it_final occurs 0,
KUNNR LIKE KNA1-KUNNR,
ADRNR LIKE ADR6-ADDRNUMBER,
EMAIL LIKE ADR6-SMTP_ADDR,
END OF it_final.
DATA: BEGIN OF BUFFER OCCURS 10000,
TEXT(255) TYPE C,
END OF BUFFER.
data:xtext type solix_tab." occurs 0 with header line."line.
data:xi_pdf type soli_tab.
DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE,
OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,
OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE,
DOC_CHNG LIKE SODOCCHGI1,
PARAMS LIKE PRI_PARAMS,
ARPARAMS LIKE ARC_PARAMS,
DAYS(1) TYPE N VALUE 8,
COUNT(3) TYPE N VALUE 1,
VALID TYPE C,
RECEIVER(30),
STR(256).
data: spoolid type tsp01-rqident,
pdf_table like tline occurs 0 with header line,
v_bytecount type i,
itab_pdf like tline occurs 10 with header line,
xi_pdf like tline occurs 0 with header line,
xi_pdf like buffer occurs 0 with header line,
xi_pdf_1 like xi_pdf,
v_length(2) type p,
html like solisti1 occurs 0 with header line,
xi_temp like bapiqcmime occurs 0 with header line,
xi_mime(255) type c occurs 0 with header line.
VARIABLES
data: g_email type adr6-smtp_addr,
TAB_LINES LIKE SY-TABIX,
G_FLAG(1) TYPE C.
g_norm(1) TYPE C,
g_shbv(1) TYPE C,
g_merk(1) TYPE C,
g_park(1) TYPE C,
g_apar(1) TYPE C.
data: l_lines type i,
line1 type i,
l_temp(500) type c,
l_offset type p,
l_lineslen(2) type p,
l_mimelen(2) type p,
v_spono like tsp01-rqident,
l_tabix like sy-tabix.
*****VIA SELECTION-SCREEN
ENDFORM. " SEND_TO_SPOOL
*& Form GET_SPOOL_ID
*& Form CONVERT_SPOOL_TO_PDF
*& Form SEND_MAIL
FORM SEND_MAIL .
data:l_lin like sy-tabix,
l_lint like sy-tabix,
it_list like abaplist occurs 0,
l_newline(2) type x value '0D0A'.
*--Data for the status output after sending
data: user_address like sousradri1 occurs 1 with header line,
sent_to_all like sonv-flag.
clear: reclist, reclist[],
objtxt , objtxt[],
objpack, objpack[],
objbin , objbin[],
doc_chng.
*--move list to office table objbin
*--Start of Changes to support PDF attachments - UB20030116
loop at html.
objbin-line = html-line.
append objbin.
clear objbin.
endloop.
loop at xi_pdf.
objbin-line = xi_pdf-text.
append objbin.
clear objbin.
endloop.
*--We may write additional text to the main document
*--For faxing this will be the cover page. Like sending from SAPoffice
*--the layout set Office-Telefax will be used.
objtxt-line = 'NOTE : Please Consider the below Headers'.
append objtxt.
clear objtxt.
objtxt-line = 'Assignment --> Purchase order number '.
append objtxt.
clear objtxt.
objtxt-line = 'Document --> Invoice No '.
append objtxt.
clear objtxt.
objtxt-line = 'Amount In DC --> Amount Due '.
append objtxt.
clear objtxt.
objtxt-line = ' '.
append objtxt.
clear objtxt.
objtxt-line = ' '.
append objtxt.
clear objtxt.
objtxt-line = 'Please find attached statement for this week'.
append objtxt.
clear objtxt.
objtxt-line = ' '.
append objtxt.
clear objtxt.
objtxt-line = 'This is an AUTO GENERATED MAIL'.
concatenate objtxt-line 'Please Do not reply to this mail' into
objtxt-line separated by ' '.
append objtxt.
clear objtxt.
describe table objtxt lines tab_lines.
read table objtxt index tab_lines.
*--Create the document which is to be sent
doc_chng-obj_name = 'List'.
doc_chng-obj_name = 'SAPRPT'.
doc_chng-obj_descr = 'Customer statement for the week'.
concatenate 'Customer statement for '
sy-datum into
doc_chng-obj_descr
separated by ' '.
doc_chng-doc_size = ( tab_lines - 1 ) * 255 + strlen( objtxt ).
*--Fill the fields of the packing_list for the main document:
*--It is a text document
clear objpack-transf_bin.
*--The document needs no header (head_num = 0)
objpack-head_start = 1.
objpack-head_num = 0.
*--but it has a body
objpack-body_start = 1.
objpack-body_num = tab_lines.
*--of type RAW
objpack-doc_type = 'RAW'.
append objpack.
*--Create the attachment (the list itself)
describe table objbin lines tab_lines.
*--Fill the fields of the packing_list for the attachment:
*--It is binary document
objpack-transf_bin = 'X'.
*--we need no header
objpack-head_start = 1.
objpack-head_num = 0.
*--but a body
objpack-body_start = 1.
objpack-body_num = tab_lines.
*--of type G_DOC_TYPE
objpack-doc_type = 'PDF'. "commented on 12/13/2007
objpack-doc_type = 'TXT'. "commented on 12/13/2007
objpack-obj_name = 'Attachment'.
objpack-obj_descr = 'Customer Statement'.
concatenate 'Customer Statement' sy-datum into objpack-obj_descr.
objpack-doc_size = tab_lines * 255.
append objpack.
reclist-receiver = g_email.
reclist-rec_type = 'U'.
reclist-com_type = 'FAX'.
append reclist.
data:xi type soli.
xi-line = 'haisdgsfsdf'.
append xi to xi_pdf.
xi-line = 'haisdfdsfd'.
append xi to xi_pdf.
xi-line = 'haisfgsdfsd'.
append xi to xi_pdf.
xi-line = 'haisdfsgfsdgg'.
append xi to xi_pdf.
*xi_pdf-text = 'hai'.
*append xi_pdf.
*xi_pdf-text = 'hai'.
*append xi_pdf.
*xi_pdf-text = 'hai'.
*append xi_pdf.
*xi_pdf-text = 'hai'.
*append xi_pdf.
CALL FUNCTION 'SO_SOLITAB_TO_SOLIXTAB'
EXPORTING
ip_solitab = xi_pdf[]
IMPORTING
EP_SOLIXTAB = xtext[].
**--Send the document by calling the SAPoffice API1 module for sending
**--documents with attachments
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_chng
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
IMPORTING
sent_to_all = sent_to_all
TABLES
packing_list = objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
contents_hex = xtext
receivers = reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
others = 99.HI,
There are lots of bugs.
Please refer this sample program to fix it.
http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm
Best regards,
Prashant -
Writing Records in a Text File to Specific Columns in the Text File
Help Please! I am a noooooooooobbbbbb!
I have searched this forum looking for a procedure that will write records from my database into certain col (positions) in a text file. Example:
1234 TONY TEST 84889922 Y 34 TORCHCOMP 34
5678 BOB JOHNS 43534534 N 56 SAFDWEERE 65
I am thinking I would like to setup variaables like:
Consumer_ID = Consumer(position 1,5)
Name = name(position 10,20)
Invoice_No = Invoice(position 30,40)
etc.
Any input will be greatly appreciated
Thank YouHi,
That's a formatting issue.
Formatting is best done in the front end. For example, using SQL*Plus:
COLUMN consumer_id FORMAT 9999 HEADING c_id
COLUMN filler_6_9 FORMAT A4 HEADING " "
COLUMN name FORMAT A11
COLUMN filler_21_29 FORMAT A9 HEADING " "
COLUMN invoice_no FORMAT 9999999999
SET COLSEP ""
SET PAGESIZE 9999
SPOOL x.dat
SELECT consumer_id
, ' ' AS filler_6_9
, name
, ' ' AS filler_21_29
, invoice_no
FROM table_x;
SPOOL OFFIf you have to do it in the back end, use functions like TO_CHAR and RPAD to make each part exactly the right length, then concatenate them all into one big string:
SET PAGESIZE 0
SPOOL x.dat
SELECT TO_CHAR ( consumer_id
, 'fm99999'
) -- 1-5
|| ' ' -- 6-9
|| RPAD ( name
, 11
) -- 10-20
|| ' ' -- 21-29
|| TO_CHAR ( invoice_no
, 'fm9999999999'
) -- 30-40
FROM table_x;
SPOOL OFFEdited by: Frank Kulash on May 22, 2009 10:40 AM -
Write Query Results into a text file
Hello All,
In SAP B1 Query Generator I'm trying to write the results of a query into a text file (.txt). I've tryed with queryout but it doesn't work.
What I want is something like this:
SELECT * FROM TABLE queryout "C:/textfile.txt"
Any sugestions?
Thanks in advance,
Miguel BarbosaHello All,
Since yesterday and due to your help, I've found how to solve my problem.
This post is only to share with you and with the others users of Expert Forums how to Write the results of an SQL Query in SAP Business One to a Text File without making it by exportation.
Requested Text File by customer:
Document type in R/3 If Invoice -- 'Z100' - Position 1 to 4 - 4 characters
Supplier Code -- dbo.Table.CardCode -- Position 5 to 15 - 10 characters
Item Code -- dbo.Table.ItemCode -- Position 11 to 25 - 14 characters
Client Code -- dbo.Table.CardCode -- Position 26 to 36 - 10 characters
Client Name -- dbo.Table.CardName -- Posiiton 37 to 100 - 63 characters
Fixed Blank Field -- ' ' -- Position 101 to 120 - 19 blank spaces
Quantity -- dbo.Table.Quantity -- Position 121 to 140 -- 19 characters
Unit Price -- dbo.Table.PriceBefDi -- Position 141 to 160 -- 19 characters
If Invoice Fixed identifier -- 'Z01' -- Position 161 to 163 -- 3 characters
Fixed Blank Field -- ' ' -- Position 164 to 220 -- 56 characters
Document Date -- dbo.Table.DocDate -- Position 221 to 229 - 8 characters
Delivery Date -- dbo.Table.ActDelDate -- Position 230 to 238 - 8 characters
Sales Order Number - dbo.Table.DocNum -- Position 239 to 260 - 21 characters
Delivery Number - dbo.Table.DocNum -- Position 261 to 282 - 21 characters
Follows the code:
EXEC master..xp_cmdshell'bcp
SELECT DISTINCT
''Z100''
+ ''ZP00002091''
+ IsNull(Convert(nVarChar(44), Cast(T0.DocNum As Numeric(38, 0))), '''')
+ ''PTAP''
+ '' ''
+ ((LTRIM(RTRIM(T1.U_NumConc)))) + SPACE(10-LEN(LTRIM(RTRIM(T1.U_NumConc)))) + ((LTRIM(RTRIM(T3.BaseRef)))) + SPACE(10-LEN(LTRIM(RTRIM(T3.BaseRef))))
+ '' ''
+ ''Z02''
+ CONVERT(varchar(10), T1.ActDelDate, 112)
+ CONVERT(varchar(10), T0.DocDate, 112)
+ '' ''
+ IsNull(Convert(nVarChar(44), Cast(T1.BaseRef As Numeric(38, 0))), '''')
+ ((LTRIM(RTRIM(T1.ItemCode)))) + SPACE(18-LEN(LTRIM(RTRIM(T1.ItemCode))))
+ ''0'' + REPLACE(SPACE(12-LEN(CONVERT(varchar(12), CAST(T1.Quantity AS NUMERIC (38,3))))),'' '',''0'') + REPLACE(((LTRIM(RTRIM(CONVERT(NUMERIC(38,3),T1.Quantity))))),''.'','''')
+ ''0'' + REPLACE(SPACE(12-LEN(CONVERT(varchar(12), CAST(T1.PriceBefDi AS NUMERIC (38,2))))),'' '', ''0'') + REPLACE(((LTRIM(RTRIM(CONVERT(NUMERIC(38,2),T1.PriceBefDi))))) ,''.'','''')
+ ''ZPHA''
+ '' ''
+ '' ''
+ '' ''
+ ((LTRIM(RTRIM(T4.CardName)))) + SPACE(69-LEN(LTRIM(RTRIM(T4.CardName))))
+ '' ''
+ CONVERT(varchar(10), T0.DocDate, 112)
+ '' ''
FROM
JFOTST.dbo.OINV T0
INNER JOIN JFOTST.dbo.INV1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN JFOTST.dbo.ODLN T2 ON T2.DocNum=T1.BaseRef
INNER JOIN JFOTST.dbo.DLN1 T3 ON T3.DocEntry=T2.DocEntry
INNER JOIN JFOTST.dbo.OCRD T4 ON T1.U_NumConc=T4.AddId
WHERE T0.CardCode=''C52''
queryout "c:\text1.txt" -c -T -x'
Note that in this code everytime you need to use the symbol ' you have to doble it like ''Fixed Text''.
Be aware that there is one UDF so if you try to make this query run in your SB1 you will have to create a UDF called U_NumConc in the document lines.
Database usage:
JFOTST.dbo.OINV T0
JFOTST.dbo - Database Name.
OINV - Table
T0 - Alias
For any doubts I'll be available to help.
Once again thank you very much for all your help.
Together we are stronger!
Kind Regards,
Miguel Barbosa
Edited by: Miguel Barbosa on Aug 18, 2009 12:09 PM
Edited by: Miguel Barbosa on Aug 18, 2009 12:10 PM -
Quarterly Return - Text file generation
Hi
While generating the text file in the Quarterly return for TDS, I see that there are lot of ^s and 0s in addition to the data items. Is it the standard set or there should be only figures and data ? (I mean to ask there should not be any ^s and 0s ?)
RegardsHi
I am configuring accumulation option for EWT for some vendors and the same is being applied from this month onwards (August). As of now, already open items are existing for these vendors (April-July). Once I assign the new tax code and post the invoices for these vendors, the amount gets accumulated and the tax is calculated for the amount exceeding the exempted limit.
My requirement is how to bring the earlier items of these vendors pertaining to the current year i.e. April-July (before activating the tax code for these vendors) also to bring under the accumulation calculation for tax ?
Looking forward your valuable comments;
Regards -
Prepare List with text file fields
Hi,
This is rama krishna. I need to convert text file fields to a List.
My requirement is to read a text file and prepare one list depending up on the fields.
For example I want to read the following foollowing text fields into list(it may be list or linked list).
<b>
Invoice Number voice Date Voucher ID Gross Amountount Available Paid Amount
51169 Nov/17/2005 00538767 7,043.23 0.00 7,043.23
51275 Dec/14/2005 00542544 929.87 0.00 929.87
601001 Jan/08/2006 00542545 1,837.14 0.00 1,837.14
Vendor Number Check No Date Pay Amount Total Discounts tal Paid Amount
21C029 218534 Jan/19/2006 $9,810.24*** $0.00 $9,810.24</b>
I want Vendor number as on list to that list I want add
Invoice nos lists.
Thanks & Regards
Rama KrishnaHi, Rama!
Unfortunatly it' s beyond the scope of this forum to give that detailed advice on basic java se techniques like opening a file input stream and working with collections.
Please refer to the suns standard documentation on file i/o and collections for detailed information on that.
If you' ve any additional questions on more SAP specific problems, don' t hesitate to ask!
Regards,
Thomas -
hi
i want to create BDC program for the data uploding.. but i dont hv much knwloadge of about it. i need to sample code the data upload program. i hv to upload text file format. im using gui_upload funtion if u hv any sample plz send me it plz... thnx
regad
nawaCheck the following code:
Selection screen :
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-020.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETERS: p_locl RADIOBUTTON GROUP g1 " desktop file
DEFAULT 'X' USER-COMMAND fil,
p_phys RADIOBUTTON GROUP g1. " appln server file
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002 .
PARAMETERS: p_ifile TYPE dxfile-filename LOWER CASE, " source file
p_afile TYPE dxfile-filename LOWER CASE, " asset class file
p_cfile TYPE dxfile-filename LOWER CASE, " Cost center file
p_dfile TYPE dxfile-filename LOWER CASE, " Depr key file
p_ofile TYPE dxfile-filename LOWER CASE. " Audit file
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-015.
PARAMETERS: p_test RADIOBUTTON GROUP g2 DEFAULT 'X', " test run
p_create RADIOBUTTON GROUP g2. " data migretion
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF BLOCK b4.
Main program :
REPORT zfaac900
LINE-SIZE 132
LINE-COUNT 65
NO STANDARD PAGE HEADING
MESSAGE-ID ZFAA.
* includes
INCLUDE: zfaac900_top,
zfaac900_selection_screen,
zfaac900_subroutine.
* AT SELECTION SCREEN ON VALUE REQUEST
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ifile.
PERFORM help_input_file USING p_phys p_locl CHANGING p_ifile.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_afile.
PERFORM help_asset_file USING p_phys p_locl CHANGING p_afile.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_cfile.
PERFORM help_cost_file USING p_phys p_locl CHANGING p_cfile.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dfile.
PERFORM help_depr_file USING p_phys p_locl CHANGING p_dfile.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ofile.
PERFORM help_audit_file USING p_phys p_locl CHANGING p_ofile.
* AT SELECTION-SCREEN
AT SELECTION-SCREEN.
PERFORM check_screen USING p_ifile p_afile p_cfile p_dfile
p_ofile p_locl p_phys.
* TOP-OF-PAGE
TOP-OF-PAGE.
ULINE.
PERFORM sjm_heading IN PROGRAM zacai0005.
ULINE.
* START_OF_SELECTION
START-OF-SELECTION.
PERFORM get_input USING p_ifile p_afile p_cfile p_dfile
CHANGING i_input i_asset i_cost i_depr.
Subroutines :
*& Form help_input_file
* text
FORM help_input_file USING p_phys_file TYPE c
p_locl_file TYPE c
CHANGING p_source_path TYPE any.
IF p_phys_file EQ 'X'.
CALL FUNCTION 'F4_DXFILENAME_4_DYNP'
EXPORTING
dynpfield_filename = 'P_IFILE'
dyname = sy-repid
dynumb = sy-dynnr
filetype = 'P'
location = 'A'.
ELSEIF p_locl_file EQ 'X'.
PERFORM help_local_file CHANGING p_source_path.
ENDIF.
ENDFORM. " help_input_file
*& Form help_asset_file
* text
FORM help_asset_file USING p_phys_file TYPE c
p_locl_file TYPE c
CHANGING p_source_path TYPE any.
IF p_phys_file EQ 'X'.
CALL FUNCTION 'F4_DXFILENAME_4_DYNP'
EXPORTING
dynpfield_filename = 'P_AFILE'
dyname = sy-repid
dynumb = sy-dynnr
filetype = 'P'
location = 'A'.
ELSEIF p_locl_file EQ 'X'.
PERFORM help_local_file CHANGING p_source_path.
ENDIF.
ENDFORM. " help_asset_file
*& Form help_cost_file
* text
FORM help_cost_file USING p_phys_file TYPE c
p_locl_file TYPE c
CHANGING p_source_path TYPE any.
IF p_phys_file EQ 'X'.
CALL FUNCTION 'F4_DXFILENAME_4_DYNP'
EXPORTING
dynpfield_filename = 'P_CFILE'
dyname = sy-repid
dynumb = sy-dynnr
filetype = 'P'
location = 'A'.
ELSEIF p_locl_file EQ 'X'.
PERFORM help_local_file CHANGING p_source_path.
ENDIF.
ENDFORM. " help_cost_file
*& Form help_depr_file
* text
FORM help_depr_file USING p_phys_file TYPE c
p_locl_file TYPE c
CHANGING p_source_path TYPE any.
IF p_phys_file EQ 'X'.
CALL FUNCTION 'F4_DXFILENAME_4_DYNP'
EXPORTING
dynpfield_filename = 'P_DFILE'
dyname = sy-repid
dynumb = sy-dynnr
filetype = 'P'
location = 'A'.
ELSEIF p_locl_file EQ 'X'.
PERFORM help_local_file CHANGING p_source_path.
ENDIF.
ENDFORM. " help_depr_file
*& Form help_audit_file
* text
FORM help_audit_file USING p_phys_file TYPE c
p_locl_file TYPE c
CHANGING p_audit_path TYPE any.
IF p_phys_file EQ 'X'.
CALL FUNCTION 'F4_DXFILENAME_4_DYNP'
EXPORTING
dynpfield_filename = 'P_OFILE'
dyname = sy-repid
dynumb = sy-dynnr
filetype = 'P'
location = 'A'.
ELSEIF p_locl_file EQ 'X'.
PERFORM help_local_file CHANGING p_audit_path.
ENDIF.
ENDFORM. " help_audit_file
*& Form help_local_file
* Local File Path
FORM help_local_file CHANGING p_path TYPE any .
DATA: lt_file_table TYPE filetable,
la_file_table LIKE LINE OF lt_file_table,
l_rc TYPE i,
l_pcdsn TYPE cffile-filename.
REFRESH lt_file_table.
CLEAR la_file_table.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = lt_file_table
rc = l_rc.
READ TABLE lt_file_table INTO la_file_table INDEX 1.
l_pcdsn = la_file_table-filename.
MOVE l_pcdsn TO p_path.
ENDFORM. " help_local_file
*& Form check_phys_file
* Validation of Physical File
FORM check_phys_file USING p_file TYPE any.
DATA: l_str(300) TYPE c.
CLEAR l_str.
OPEN DATASET p_file IN TEXT MODE FOR INPUT ENCODING DEFAULT.
IF sy-subrc <> 0.
IF g_file_flag = 'I'.
MESSAGE e000 WITH text-021.
ELSEIF g_file_flag = 'A'.
MESSAGE e000 WITH text-095.
ELSEIF g_file_flag = 'C'.
MESSAGE e000 WITH text-096.
ELSEIF g_file_flag = 'D'.
MESSAGE e000 WITH text-097.
ENDIF.
ENDIF.
READ DATASET p_file INTO l_str.
IF sy-subrc <> 0.
IF g_file_flag = 'I'.
MESSAGE e000 WITH text-017.
ELSEIF g_file_flag = 'A'.
MESSAGE e000 WITH text-098.
ELSEIF g_file_flag = 'C'.
MESSAGE e000 WITH text-099.
ELSEIF g_file_flag = 'D'.
MESSAGE e000 WITH text-100.
ENDIF.
ENDIF.
CLEAR: g_file_flag.
CLOSE DATASET p_file.
ENDFORM. " check_phys_file
*& Form check_local_file
* Validation of Local File
FORM check_local_file USING p_file TYPE any.
DATA: l_size TYPE i.
CLEAR: l_size.
CALL FUNCTION 'TMP_GUI_GET_FILE_EXIST'
EXPORTING
fname = p_file
IMPORTING
* exist = l_exist
filesize = l_size
EXCEPTIONS
fileinfo_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
IF g_file_flag = 'I'.
MESSAGE e000 WITH text-016.
ELSEIF g_file_flag = 'A'.
MESSAGE e000 WITH text-101.
ELSEIF g_file_flag = 'C'.
MESSAGE e000 WITH text-102.
ELSEIF g_file_flag = 'D'.
MESSAGE e000 WITH text-103.
ENDIF.
ENDIF.
IF l_size IS INITIAL.
IF g_file_flag = 'I'.
MESSAGE e000 WITH text-024.
ELSEIF g_file_flag = 'A'.
MESSAGE e000 WITH text-107.
ELSEIF g_file_flag = 'C'.
MESSAGE e000 WITH text-108.
ELSEIF g_file_flag = 'D'.
MESSAGE e000 WITH text-109.
ENDIF.
ENDIF.
CLEAR: g_file_flag.
ENDFORM. " check_local_file
*& Form get_input
* To gate input data from local file or from application server
FORM get_input USING p_ifilename TYPE any
p_afilename TYPE any
p_cfilename TYPE any
p_dfilename TYPE any
CHANGING p_input_table TYPE t_input_table
p_asset_table TYPE t_asset_table
p_cost_table TYPE t_cost_table
p_depr_table TYPE t_depr_table.
* to populate the input table
PERFORM upload_file USING p_ifilename CHANGING i_local.
g_file_flag = 'I'.
PERFORM split_localtable CHANGING p_input_table p_asset_table
p_cost_table p_depr_table.
CLEAR g_file_flag.
REFRESH i_local.
* to populate the asset class table
PERFORM upload_file USING p_afilename CHANGING i_local.
g_file_flag = 'A'.
PERFORM split_localtable CHANGING p_input_table p_asset_table
p_cost_table p_depr_table .
CLEAR g_file_flag.
REFRESH i_local.
* to populate the cost center table
PERFORM upload_file USING p_cfilename CHANGING i_local.
g_file_flag = 'C'.
PERFORM split_localtable CHANGING p_input_table p_asset_table
p_cost_table p_depr_table .
CLEAR g_file_flag.
REFRESH i_local.
* to populate the depr key table
PERFORM upload_file USING p_dfilename CHANGING i_local.
g_file_flag = 'D'.
PERFORM split_localtable CHANGING p_input_table p_asset_table
p_cost_table p_depr_table .
CLEAR g_file_flag.
REFRESH i_local.
ENDFORM. " get_input
*& Form upload_file
* text
FORM upload_file USING p_filename TYPE any
CHANGING p_local_table TYPE t_local_table.
* To get the input data from desktop file
IF p_locl = 'X'.
DATA: l_file TYPE string.
CLEAR: l_file,
p_local_table.
l_file = p_filename.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_file
filetype = 'ASC'
TABLES
data_tab = p_local_table
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE e002 WITH l_file.
ENDIF.
ELSE.
* To get the data from application server file
OPEN DATASET p_filename IN TEXT MODE FOR INPUT ENCODING DEFAULT.
IF sy-subrc <> 0.
MESSAGE e001 WITH p_filename.
ENDIF.
CLEAR: wa_local.
DO.
READ DATASET p_filename INTO wa_local.
IF sy-subrc <> 0.
EXIT.
ENDIF.
APPEND wa_local TO p_local_table.
CLEAR: wa_local.
ENDDO.
CLOSE DATASET p_filename.
ENDIF.
ENDFORM. " upload_file
*& Form split_localtable
* text
FORM split_localtable CHANGING p_input_tab TYPE t_input_table
p_asset_tab TYPE t_asset_table
p_cost_tab TYPE t_cost_table
p_depr_tab TYPE t_depr_table.
DATA: l_cnt TYPE i.
CLEAR: l_cnt, wa_local.
LOOP AT i_local INTO wa_local.
REFRESH i_split[].
SPLIT wa_local AT c_tab INTO TABLE i_split.
CLEAR l_cnt.
ADD 1 TO l_cnt.
CLEAR wa_split.
LOOP AT i_split INTO wa_split.
IF g_file_flag = 'I'.
ASSIGN COMPONENT l_cnt OF STRUCTURE wa_input TO <fs_field>.
ELSEIF g_file_flag = 'A'.
ASSIGN COMPONENT l_cnt OF STRUCTURE wa_asset TO <fs_field>.
ELSEIF g_file_flag = 'C'.
ASSIGN COMPONENT l_cnt OF STRUCTURE wa_cost TO <fs_field>.
ELSEIF g_file_flag = 'D'.
ASSIGN COMPONENT l_cnt OF STRUCTURE wa_depr TO <fs_field>.
ENDIF.
CLEAR <fs_field>.
<fs_field> = wa_split-col.
ADD 1 TO l_cnt.
CLEAR wa_split.
ENDLOOP.
IF g_file_flag = 'I'.
APPEND wa_input TO p_input_tab.
CLEAR: wa_input .
ELSEIF g_file_flag = 'A'.
APPEND wa_asset TO p_asset_tab.
CLEAR: wa_asset .
ELSEIF g_file_flag = 'C'.
APPEND wa_cost TO p_cost_tab.
CLEAR: wa_cost .
ELSEIF g_file_flag = 'D'.
APPEND wa_depr TO p_depr_tab.
CLEAR: wa_depr .
ENDIF.
CLEAR: wa_local .
ENDLOOP.
ENDFORM. " split_localtable -
How to extract/export SD billing invoices to flat data file
Hi,
We are using SAP R/3 4.5b and we have to extract billing invoices to flat data file like csv or xml. How do we do it?
ThanksHi Gyan Der,
There is another simple method to extract the SD Billing values from SAP.
You can find the SD Billing data in the following tables:
<b>VBRK - Header Data
VBRP - Item Details.</b>
You can create a report using these 2 tables in the Transaction <b>SQVI</b>.
check the following link for help to create Quick Views:
http://help.sap.com/saphelp_nw04/helpdata/en/d1/44f2b5c7f411d296080000e82de14a/frameset.htm
In SQVI, you can create table joins for the above 2 tables & extract the required output.
The report output can be transferred to an excel file or text file.
hope this helps!
best regards,
Thangesh -
How Open And Print Proc C Genrated Text File Based Report ON Browser
Dear Sir
I have my old 6i forms from which i runs some Pro*c programmers with the help of HOST() command ,and then that generates a normal text file as a resultant report like file name "kha10"
which i can easily open with any text client ,,,
now what i want is that, to open this file on browser like web Report on my forms 10g like report builder 10g
can anyone help me as it will be a gr8 help otherwise i would have to develop approx 100 reports.....
any solution or any technique plzz help mebro my work is almost done apart from this virtual directory , how to make a virtual directory so that is dosent comes under
http://........../form/
i mean where to put my
<virtual-directory virtual-path="/procrepo" real-path="c:\" />
as my original file looks like bellow
<?xml version="1.0"?>
<!DOCTYPE orion-web-app PUBLIC "-//ORACLE//DTD OC4J Web Application 9.04//EN" "http://xmlns.oracle.com/ias/dtds/orion-web-9_04.dtd">
<orion-web-app
deployment-version="10.1.2.0.2"
jsp-cache-directory="./persistence"
temporary-directory="./temp"
servlet-webdir="/servlet/"
>
<context-param-mapping name="configFileName">D:\DevSuiteHome_1/forms/server/formsweb.cfg</context-param-mapping>
<virtual-directory virtual-path="/html" real-path="D:\DevSuiteHome_1/tools/web/html" />
<virtual-directory virtual-path="/java" real-path="D:\DevSuiteHome_1/forms/java" />
<virtual-directory virtual-path="/webutil" real-path="D:\DevSuiteHome_1/forms/webutil" />
<virtual-directory virtual-path="/jinitiator" real-path="D:\DevSuiteHome_1/jinit" />
<session-tracking cookies="disabled" />
<!-- Uncomment this element to control web application class loader behavior.
<web-app-class-loader search-local-classes-first="true" include-war-manifest-class-path="true" />
-->
<security-role-mapping name="administrators">
</security-role-mapping>
</orion-web-app>
plzzzzzzzzzzz help -
Open and read from text file into a text box for Windows Store
I wish to open and read from a text file into a text box in C# for the Windows Store using VS Express 2012 for Windows 8.
Can anyone point me to sample code and tutorials specifically for Windows Store using C#.
Is it possible to add a Text file in Windows Store. This option only seems to be available in Visual C#.
Thanks
WendelThis is a simple sample for Read/Load Text file from IsolateStorage and Read file from InstalledLocation (this folder only can be read)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Storage;
using System.IO;
namespace TextFileDemo
public class TextFileHelper
async public static Task<bool> SaveTextFileToIsolateStorageAsync(string filename, string data)
byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(data);
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
var file = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
try
using (var s = await file.OpenStreamForWriteAsync())
s.Write(fileBytes, 0, fileBytes.Length);
return true;
catch
return false;
async public static Task<string> LoadTextFileFormIsolateStorageAsync(string filename)
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
string returnvalue = string.Empty;
try
var file = await local.OpenStreamForReadAsync(filename);
using (StreamReader streamReader = new StreamReader(file))
returnvalue = streamReader.ReadToEnd();
catch (Exception ex)
// do somthing when exception
return returnvalue;
async public static Task<string> LoadTextFileFormInstalledLocationAsync(string filename)
StorageFolder local = Windows.ApplicationModel.Package.Current.InstalledLocation;
string returnvalue = string.Empty;
try
var file = await local.OpenStreamForReadAsync(filename);
using (StreamReader streamReader = new StreamReader(file))
returnvalue = streamReader.ReadToEnd();
catch (Exception ex)
// do somthing when exception
return returnvalue;
show how to use it as below
async private void Button_Click(object sender, RoutedEventArgs e)
string txt =await TextFileHelper.LoadTextFileFormInstalledLocationAsync("TextFile1.txt");
Debug.WriteLine(txt);
在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 -
Address book .... importing text file
I am designing an address book which opens a text file called AddressBook.txt which reads in the information in the following format:
lastname,firstname,street,city,state,zip,phonenumber,birthday,persontype
lastname2,firstname2,street2,city2,state2,zip2,phonenumber2,birthday2,persontype2
etc. (with a maximum entries of 500)
I am having a problem reading in the information without the commas and wrapping to the next line. I can either use the BufferedReader or Scanner to input the file and as you can see below, my code is not complete yet. I can't figure out how to code the storeAddress() method in order to get the addressBookEntries[] to include the necessary information for outputting, sorting, etc. If I can get the information read into the addressBookEntries[], I think I will probably be able to proceed in the rest of the required tasks (i.e. sorting by last name, searching by last name, etc.)
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.io.*;
import java.lang.*;
* @created September 14, 2004
* This program uses a JFrame to manipulate data and form an
* address book. The user will be able to load data from a file,
* sort it by last name, print the address, phone number, and date
* of birth, print the names of people whos birthday are between 2
* dates, print the names of people between 2 last names, and/or
* print the names of different person types.
public class AddressBook extends JPanel implements ActionListener{
JFrame frame;
final int numButtons = 7;
JRadioButton[] radioButtons = new JRadioButton[numButtons];
JButton process = new JButton("Process Request");
JLabel title;
JTextArea output = new JTextArea(30,50);
int MAX_ADDRESS_ENTRIES = 500;
AddressBookEntry addressBookEntries[] =
new AddressBookEntry[MAX_ADDRESS_ENTRIES];
String FILE_NAME="AddressBook.txt";
public AddressBook(JFrame frame){
super(new BorderLayout());
this.frame=frame;
JPanel choicePanel = createSimpleDialogBox();
choicePanel.setBorder(BorderFactory.createTitledBorder("Choices" +
" to choose from:"));
title = new JLabel("<html><h2> Thank you for opening the " +
"Address Book. " +
"Please Press the \"Process Request\" " +
"after making a choice.</h2></html>\n",JLabel.CENTER);
title.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
output.setEditable(false);
add(title, BorderLayout.NORTH);
add(choicePanel, BorderLayout.CENTER);
add(output, BorderLayout.SOUTH);
final ButtonGroup group = new ButtonGroup();
final String saveCommand = "Save";
final String sortByLN = "Sort by Last Name";
final String searchLNCommand = "Search By Last Name";
final String printAPD = "Print address, phone number, and DOB";
final String printNamesDOB = "Print names of people whose birthday" +
" falls between 2 dates";
final String printNamesLN = "Print names of people who fall" +
" between 2 last names";
final String printPType = "Print all family members, friends, or" +
" business associates";
private JPanel createSimpleDialogBox(){
radioButtons[0] = new JRadioButton(
"<html>Save the address file</html>");
radioButtons[0].setActionCommand(saveCommand);
radioButtons[1] = new JRadioButton(
"<html>Sort the address file by last name</html>");
radioButtons[1].setActionCommand(sortByLN);
radioButtons[2] = new JRadioButton(
"<html>Search the address file by last name</html>");
radioButtons[2].setActionCommand(searchLNCommand);
radioButtons[3] = new JRadioButton(
"<html>Print the address, phone number, and DOB of a specified" +
" person</html>");
radioButtons[3].setActionCommand(printAPD);
radioButtons[4] = new JRadioButton(
"<html>Print the names of people whose birthday falls between" +
" two dates</html>");
radioButtons[4].setActionCommand(printNamesDOB);
radioButtons[5] = new JRadioButton(
"<html>Print the names of people who fall between two" +
" specified last names</html>");
radioButtons[5].setActionCommand(printNamesLN);
radioButtons[6] = new JRadioButton(
"<html>Print all family members, friends, <u>OR</u>" +
" business associates</html>");
radioButtons[6].setActionCommand(printPType);
for (int i=0; i<numButtons; i++){
group.add(radioButtons);
//set the first button (open file) to be selected
radioButtons[0].setSelected(true);
return createPane(radioButtons, process);
private JPanel createPane(JRadioButton[] radioButtons,
JButton showButton) {
int numChoices = radioButtons.length;
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.PAGE_AXIS));
for (int i = 0; i < numChoices; i++) {
box.add(radioButtons[i]);
JPanel pane = new JPanel(new BorderLayout());
pane.add(box, BorderLayout.NORTH);
pane.add(showButton, BorderLayout.SOUTH);
return pane;
public void actionPerformed(ActionEvent e) {
String command = group.getSelection().getActionCommand();
//else if button pushed is save
if (command == saveCommand){
// save file
//else if button pushed is search by last name
else if (command == sortByLN){
// search by last name
//else if button pushed is sort by last name
else if (command == searchLNCommand){
// sort by last name
// print to screen
//else if button pushed is display address, ph#, dob
else if (command == printAPD){
// display "search by last name" dialog
// search last names
// if last name found
// print data
// else
// print error notification "person not found"
//else if button pushed is list names of people whose
//bday between 2 days
else if (command == printNamesDOB){
// ask for which dates
// search bday
// print to screen
//else if button pushed is print names of people between 2 last names
else if (command == printNamesDOB){
// ask for which two last names
// search last names
// if people found
// print to screen
//else
//print error notification "no one found"
//else if button pushed is print all family members, friends
//or business associates
else if (command == printPType){
//ask for what person type
//search person types
//if people found
//print to screen
//else print "no one found"
public void storeAddress(File addressFile){
Scanner sc=null;
String lname,fname,street,city,state,zip,phone,persontype,bday;
try {
// Delimiters specifiy where to parse tokens in a scanner
sc = new Scanner(addressFile).useDelimiter("\\s*[\\p{,}*\\s+]\\s*");
catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(this,"Could not open the file");
System.exit(-1);
for(int i=0; i<MAX_ADDRESS_ENTRIES; i++){
while (sc.hasNext()) {
lname=(sc.next());
if (!lname.equals("")){
addressBookEntries[i].setLName()=lname;
public class AddressBookEntry{
private extPerson address;
private String date;
private extPerson ExtPerson;
public class Person{
protected String lastName, firstName;
private String address;
private String city;
private String state;
private String zipcode;
private String homephone;
private String extPersonType;
private Date bday;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-DD");
public String toString() {
return lastName+" "+firstName;
public void setLName(String last) {
lastName=last;
public void setFName(String first){
firstName=first;
public String getLastName() {
return lastName;
public String getFirstName() {
return lastName;
public Person() {
lastName="";
firstName="";
public Person(String first, String last){
setLName(last);
setFName(first);
//Set the address and return it
public void setAddress( String addr ){
address = addr;
public String getAddress(){
return address;
//set the city and return it
public void setCity( String town ){
city = town;
public String getCity(){
return city;
//set the state and return it
public void setState( String st )
state = st;
public String getState()
return state;
//Set the zip code and return it
public void setZipCode( String zip ){
zipcode = zip;
public String getZipCode(){
return zipcode;
//Set the home phone and return it
public void setHomePhone( String homeph ){
homephone = homeph;
public String getHomePhone(){
return homephone;
//Set the bday and return it
public Date getBday(){
return bday;
public void setBday(Date newBday) {
bday = newBday;
dateFormat.format(bday);
//Set the extPerson type and return it
public String getPType(){
return extPersonType;
public void setPBusiness(){
extPersonType = "Business Associate";
public void setPFamily(){
extPersonType = "Family Member";
public void setPFriend(){
extPersonType = "Friend";
public class extPerson extends Person{
//new clss People
public class People {
int MAX_PEOPLE=500;
BufferedReader bf;
public String toString() {
StringBuffer sb=new StringBuffer();
for (int i=0; i<nPeople; i++)
sb=sb.append(group[i]+"\n");
return sb.toString();
public void read(){
String str;
try {
bf=new BufferedReader(new FileReader(new File(FILE_NAME)));
str=bf.readLine();
while (str!=null) {
insert(str);
str=bf.readLine();
catch (IOException e) {
// Will jump to here on an eof condition.
try {
bf.close();
catch (IOException e) {}
public void save() {
try {
PrintWriter pw=new PrintWriter(FILE_NAME);
for (int i=0; i<nPeople; i++)
pw.println(group[i]+",");
pw.close();
catch (FileNotFoundException fne) {
System.out.println("Could not Save "+FILE_NAME);
public People() {
group=new extPerson[MAX_PEOPLE];
nPeople=0;
public boolean insert(String data) {
if (nPeople<MAX_PEOPLE) {
//extPerson guy=new extPerson(data);
//group[nPeople]=guy;
nPeople++;
return true;
else {
JOptionPane.showMessageDialog(null,"Error in People" +
"::insert: Max size reached.");
return false;
public void clear() {
// This loop frees up the memory used by each extPerson
for (int i=0; i<nPeople; i++)
group[i]=null;
nPeople=0;
extPerson group[];
int nPeople;
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
public static void createAndShowGUI(){
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Address Book Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = frame.getContentPane();
c.add(new AddressBook(frame));
frame.pack();
frame.setVisible(true);
public static void main (String s[]){
//Schedule a job for the event-dispatching thread:
//creating and showign this application's GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();Ok, I have changed my code to reflect your suggested changes, but I'm still unsure how to use the findInLine you suggested.... This is all very new to me and I've been looking on the java website for suggestions, but I'm still stumped on how to pull this together. I'm unsure on how to set the lastname,firstname,etc. for retrieval...
Here's my code:
//ADDRESS BOOK
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.io.*;
import java.lang.*;
* @created September 14, 2004
* This program uses a JFrame to manipulate data and form an
* address book. The user will be able to load data from a file,
* sort it by last name, print the address, phone number, and date
* of birth, print the names of people whos birthday are between 2
* dates, print the names of people between 2 last names, and/or
* print the names of different person types.
public class AddressBook extends JPanel implements ActionListener{
JFrame frame;
final int numButtons = 7;
JRadioButton[] radioButtons = new JRadioButton[numButtons];
JButton process = new JButton("Process Request");
JLabel title;
JTextArea output = new JTextArea(30,50);
int MAX_ADDRESS_ENTRIES = 500;
AddressBookEntry addressBookEntries[] = new
AddressBookEntry[MAX_ADDRESS_ENTRIES];
public AddressBook(JFrame frame){
super(new BorderLayout());
this.frame=frame;
JPanel choicePanel = createSimpleDialogBox();
choicePanel.setBorder(BorderFactory.createTitledBorder("Choices" +
" to choose from:"));
title = new JLabel("<html><h2> Thank you for opening the " +
"Address Book. " +
"Please Press the \"Process Request\" " +
"after making a choice.</h2></html>\n",JLabel.CENTER);
title.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
output.setEditable(false);
add(title, BorderLayout.NORTH);
add(choicePanel, BorderLayout.CENTER);
add(output, BorderLayout.SOUTH);
final ButtonGroup group = new ButtonGroup();
final String saveCommand = "Save";
final String sortByLN = "Sort by Last Name";
final String searchLNCommand = "Search By Last Name";
final String printAPD = "Print address, phone number, and DOB";
final String printNamesDOB = "Print names of people whose birthday" +
" falls between 2 dates";
final String printNamesLN = "Print names of people who fall" +
" between 2 last names";
final String printPType = "Print all family members, friends, or" +
" business associates";
private JPanel createSimpleDialogBox(){
radioButtons[0] = new JRadioButton(
"<html>Save the address file</html>");
radioButtons[0].setActionCommand(saveCommand);
radioButtons[1] = new JRadioButton(
"<html>Sort the address file by last name</html>");
radioButtons[1].setActionCommand(sortByLN);
radioButtons[2] = new JRadioButton(
"<html>Search the address file by last name</html>");
radioButtons[2].setActionCommand(searchLNCommand);
radioButtons[3] = new JRadioButton(
"<html>Print the address, phone number, and DOB of a specified" +
" person</html>");
radioButtons[3].setActionCommand(printAPD);
radioButtons[4] = new JRadioButton(
"<html>Print the names of people whose birthday falls between" +
" two dates</html>");
radioButtons[4].setActionCommand(printNamesDOB);
radioButtons[5] = new JRadioButton(
"<html>Print the names of people who fall between two" +
" specified last names</html>");
radioButtons[5].setActionCommand(printNamesLN);
radioButtons[6] = new JRadioButton(
"<html>Print all family members, friends, <u>OR</u>" +
" business associates</html>");
radioButtons[6].setActionCommand(printPType);
for (int i=0; i<numButtons; i++){
group.add(radioButtons);
//set the first button (open file) to be selected
radioButtons[0].setSelected(true);
return createPane(radioButtons, process);
private JPanel createPane(JRadioButton[] radioButtons,
JButton showButton) {
int numChoices = radioButtons.length;
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.PAGE_AXIS));
for (int i = 0; i < numChoices; i++) {
box.add(radioButtons[i]);
JPanel pane = new JPanel(new BorderLayout());
pane.add(box, BorderLayout.NORTH);
pane.add(showButton, BorderLayout.SOUTH);
return pane;
public void actionPerformed(ActionEvent e) {
String command = group.getSelection().getActionCommand();
//else if button pushed is save
if (command == saveCommand){
// save file
//else if button pushed is search by last name
else if (command == sortByLN){
// search by last name
//else if button pushed is sort by last name
else if (command == searchLNCommand){
// sort by last name
// print to screen
//else if button pushed is display address, ph#, dob
else if (command == printAPD){
// display "search by last name" dialog
// search last names
// if last name found
// print data
// else
// print error notification "person not found"
//else if button pushed is list names of people whose
//bday between 2 days
else if (command == printNamesDOB){
// ask for which dates
// search bday
// print to screen
//else if button pushed is print names of people between 2 last names
else if (command == printNamesDOB){
// ask for which two last names
// search last names
// if people found
// print to screen
//else
//print error notification "no one found"
//else if button pushed is print all family members, friends
//or business associates
else if (command == printPType){
//ask for what person type
//search person types
//if people found
//print to screen
//else print "no one found"
public class AddressBookEntry{
private extPerson address;
private String date;
private extPerson ExtPerson;
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
public static void createAndShowGUI(){
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Address Book Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = frame.getContentPane();
c.add(new AddressBook(frame));
frame.pack();
frame.setVisible(true);
public static void main (String s[]){
//Schedule a job for the event-dispatching thread:
//creating and showign this application's GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
//PERSON
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.io.*;
import java.lang.*;
public class Person{
protected String lastName, firstName;
private String address;
private String city;
private String state;
private String zipcode;
private String homephone;
private String extPersonType;
private String bday;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-DD");
public void parseString(String s) {
try {
lastName = s.substring(0,s.indexOf(","));
firstName = s.substring(s.indexOf(",")+1);
address = s.substring(s.indexOf(",")+2);
city = s.substring(s.indexOf(",")+3);
state = s.substring(s.indexOf(",")+4);
zipcode = s.substring(s.indexOf(",")+5);
homephone = s.substring(s.indexOf(",")+6);
extPersonType = s.substring(s.indexOf(",")+7);
bday = s.substring(s.indexOf(",")+8);
catch(StringIndexOutOfBoundsException sbe) {
JOptionPane.showMessageDialog(null,"Error " +
"in Person: Could not parse the line "+s);
public String toString() {
return lastName+","+firstName+","+address+","+city+","+
state+","+zipcode+","+homephone+","+bday+","+extPersonType;
public void setLName(String last) {
lastName=last;
public void setFName(String first){
firstName=first;
public String getLastName() {
return lastName;
public String getFirstName() {
return lastName;
public Person() {
lastName="";
firstName="";
public Person(String first, String last){
setLName(last);
setFName(first);
//Set the address and return it
public void setAddress( String addr ){
address = addr;
public String getAddress(){
return address;
//set the city and return it
public void setCity( String town ){
city = town;
public String getCity(){
return city;
//set the state and return it
public void setState( String st )
state = st;
public String getState()
return state;
//Set the zip code and return it
public void setZipCode( String zip ){
zipcode = zip;
public String getZipCode(){
return zipcode;
//Set the home phone and return it
public void setHomePhone( String homeph ){
homephone = homeph;
public String getHomePhone(){
return homephone;
//Set the bday and return it
public String getBday(){
return bday;
public void setBday(String newBday) {
bday = newBday;
dateFormat.format(bday);
//Set the extPerson type and return it
public String getPType(){
return extPersonType;
public void setPBusiness(){
extPersonType = "Business Associate";
public void setPFamily(){
extPersonType = "Family Member";
public void setPFriend(){
extPersonType = "Friend";
public Person(String data) {
parseString(data);
//EXTPERSON
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.io.*;
import java.lang.*;
//new clss extPerson
public class extPerson extends Person {
int MAX_PEOPLE=500;
BufferedReader bf;
String lname,fname,street,city,state,zip,phone,persontype,bday;
String FILE_NAME="AddressBook.txt";
public String toString() {
StringBuffer sb=new StringBuffer();
for (int i=0; i<nPeople; i++)
sb=sb.append(group1[i]+"\n");
return sb.toString();
public void save() {
try {
PrintWriter pw=new PrintWriter(FILE_NAME);
for (int i=0; i<nPeople; i++)
pw.println(group1[i]+",");
pw.close();
catch (FileNotFoundException fne) {
System.out.println("Could not Save "+FILE_NAME);
public extPerson() {
group1=new extPerson[MAX_PEOPLE];
nPeople=0;
public boolean insert(String data) {
if (nPeople<MAX_PEOPLE) {
Person guy = new Person(data);
group1[nPeople]=guy;
nPeople++;
return true;
else {
JOptionPane.showMessageDialog(null,"Error in People" +
"::insert: Max size reached.");
return false;
Person group1[];
int nPeople; -
Attaching text file using SO_NEW_DOCUMENT_ATT_SEND_API1
hello guys, i'm a newbie here.
I'm having trouble attaching an existing text file using function 'SO_NEW_DOCUMENT_ATT_SEND_API1'. It seems i can't find the right combination of parameters that are being passed to this function.
first, i'm using WS_UPLOAD to upload the text file to an internal table then i'm creating all the neccessary internal tables that will be use by this function..
By the way, i'm trying to send mail w/ attachments to external mail and SAPids. Below is my code.
REPORT ZHR_TESTEMAIL .
TABLES: USR02, PA0105, SOSU, SOUC, RLGRAP, IBIPPARMS, DYNPREAD, RSCSEL.
DATA: FOLD_YR(2) TYPE C,
FOLD_TYPE(3) TYPE C,
G_HEADER LIKE SOOD2,
G_FOLMAM LIKE SOFM2,
METHOD1 LIKE SY-UCOMM,
G_DOCUMENT LIKE SOOD4,
G_USER LIKE SOUDNAMEI1,
FOLD_NUMBER(12) TYPE C,
G_NEW_PARENT LIKE SOODK,
G_OWNER LIKE SOUD-USRNAM,
G_REF_DOCUMENT LIKE SOOD4,
G_USER_DATA LIKE SOUDATAI1,
G_AUTHORITY LIKE SOFA-USRACC,
G_OBJCNT LIKE SOLI OCCURS 0 WITH HEADER LINE,
G_OBJHEAD LIKE SOLI OCCURS 0 WITH HEADER LINE,
G_OBJPARA LIKE SELC OCCURS 0 WITH HEADER LINE,
G_OBJPARB LIKE SOOP1 OCCURS 0 WITH HEADER LINE,
G_RECIPIENTS LIKE SOOS1 OCCURS 0 WITH HEADER LINE,
G_REFERENCES LIKE SOXRL OCCURS 0 WITH HEADER LINE,
G_ATTACHMENTS LIKE SOOD5 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF G_FILES OCCURS 10 ,
TEXT(4096) TYPE C,
END OF G_FILES.
DATA: BEGIN OF IT_WS_FILE OCCURS 0,
WS_FILE LIKE RLGRAP-FILENAME,
END OF IT_WS_FILE.
DATA: BEGIN OF IT_SAPID OCCURS 0,
SAPID LIKE USR02-BNAME,
END OF IT_SAPID.
DATA: BEGIN OF IT_EMAIL OCCURS 0,
EMAILADD LIKE PA0105-USRID_LONG,
END OF IT_EMAIL.
DATA: BEGIN OF IT_TSP01 OCCURS 0.
INCLUDE STRUCTURE TSP01.
DATA: END OF IT_TSP01.
DATA: BEGIN OF TAB2 OCCURS 50,
TEXT(200) TYPE C,
END OF TAB2.
DATA: V_DOCDATA TYPE SODOCCHGI1,
V_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
V_OBJHEAD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
V_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
V_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
V_OBJHEX LIKE SOLIX OCCURS 0 WITH HEADER LINE,
IT_RECVRS TYPE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
IT_CONTNT TYPE SOLISTI1 OCCURS 0 WITH HEADER LINE,
IT_BODY LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
V_TLIN TYPE I,
V_LINE TYPE I.
DATA: BEGIN OF IT_TEXTLINE OCCURS 500,
TEXTLINE(5000),
END OF IT_TEXTLINE.
DATA: FYL LIKE RLGRAP-FILENAME,
GV_SUBNO LIKE SOSU-SUBNO,
GV_EMAIL LIKE PA0105-USRID_LONG,
GV_NEXTDAY LIKE SY-DATUM,
YEAR(4) TYPE C,
RECFLAG TYPE C.
SELECTION-SCREEN BEGIN OF BLOCK PARAM WITH FRAME TITLE TEXT-001.
PARAMETERS: SUBJ(254) TYPE C OBLIGATORY, "Subject
DESC(254) TYPE C. "Message
SELECT-OPTIONS: SAPID FOR USR02-BNAME NO INTERVALS. "Recipient's SAP ID
SELECT-OPTIONS: EMAILADD FOR PA0105-USRID_LONG NO INTERVALS.
SELECTION-SCREEN END OF BLOCK PARAM.
SELECTION-SCREEN BEGIN OF BLOCK PARAM2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS: WS_FILE FOR DYNPREAD-FIELDNAME NO INTERVALS.
SELECTION-SCREEN END OF BLOCK PARAM2.
SELECTION-SCREEN BEGIN OF BLOCK PARAM3 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RBUT1 RADIOBUTTON GROUP A USER-COMMAND BUT. "Local PC
SELECTION-SCREEN COMMENT 5(20) FOR FIELD RBUT1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RBUT2 RADIOBUTTON GROUP A. "Server
SELECTION-SCREEN COMMENT 5(20) FOR FIELD RBUT2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RBUT3 RADIOBUTTON GROUP A. "Spool
SELECTION-SCREEN COMMENT 5(20) FOR FIELD RBUT3.
PARAMETERS: SPOOLNUM LIKE RSPOTYPE-RQNUMBER. "Spool Number
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK PARAM3.
SELECTION-SCREEN BEGIN OF BLOCK PROC WITH FRAME TITLE TEXT-004.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: BPROC AS CHECKBOX USER-COMMAND BCK. "Background Processing
SELECTION-SCREEN COMMENT 5(50) FOR FIELD BPROC.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK PROC.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR WS_FILE-LOW.
DATA: WS_FILE_TEMP TYPE IBIPPARMS-PATH.
CLEAR: WS_FILE_TEMP.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SY-REPID
DYNPRO_NUMBER = SY-DYNNR
FIELD_NAME = 'WS_FILE'
IMPORTING
FILE_NAME = WS_FILE_TEMP.
WS_FILE-LOW = WS_FILE_TEMP.
AT SELECTION-SCREEN.
SELECT SAPNAM FROM SOUC
INTO TABLE IT_SAPID
WHERE SAPNAM IN SAPID
AND DELETED = ''.
GV_NEXTDAY = SY-DATUM + 1.
LOOP AT EMAILADD.
IT_EMAIL-EMAILADD = EMAILADD-LOW.
APPEND IT_EMAIL.
CLEAR: IT_EMAIL.
ENDLOOP.
IF NOT BPROC IS INITIAL.
CLEAR: RBUT1, RBUT3.
RBUT2 = 'X'.
ELSE.
CLEAR: RBUT2.
ENDIF.
IF NOT RBUT3 IS INITIAL.
REFRESH: WS_FILE.
ENDIF.
IF SAPID IS INITIAL AND EMAILADD IS INITIAL.
MESSAGE E000(ZZ) WITH TEXT-201.
ELSEIF NOT SAPID IS INITIAL AND EMAILADD IS INITIAL.
CLEAR IT_SAPID.
READ TABLE IT_SAPID.
SELECT SINGLE SUBNO FROM SOSU
INTO GV_SUBNO
WHERE USRNO IN ( SELECT USRNO FROM SOUC
WHERE SAPNAM = IT_SAPID-SAPID ).
IF SY-SUBRC NE 0.
MESSAGE E000(ZZ) WITH TEXT-202.
ENDIF.
CLEAR: IT_SAPID.
ELSEIF NOT SAPID IS INITIAL AND NOT EMAILADD IS INITIAL.
CLEAR: IT_SAPID, IT_EMAIL.
READ TABLE IT_SAPID.
READ TABLE IT_EMAIL.
SELECT SINGLE SUBNO FROM SOSU
INTO GV_SUBNO
WHERE USRNO IN ( SELECT USRNO FROM SOUC
WHERE SAPNAM = IT_SAPID-SAPID ).
IF SY-SUBRC NE 0.
SUBMIT RSSOADM0 WITH USRNAM EQ IT_SAPID-SAPID
WITH NEW_SUBS EQ IT_EMAIL-EMAILADD
WITH SUB_ESC EQ 'U'
WITH EDAT EQ SY-DATUM
WITH BDAT EQ SY-DATUM
WITH BDAT EQ GV_NEXTDAY
WITH EDAT EQ '99991231'
WITH BTIM EQ SY-UZEIT
WITH ETIM EQ '240000'
WITH FORW_ALL EQ 'X'
WITH PSTHR2 EQ ''
AND RETURN.
ENDIF.
CLEAR: IT_SAPID.
ELSEIF NOT EMAILADD IS INITIAL AND SAPID IS INITIAL.
RECFLAG = 'X'.
ENDIF.
START-OF-SELECTION.
PERFORM B_SENDMAIL.
FORM B_SENDMAIL.
YEAR = SY-DATUM+0(4).
LOOP AT WS_FILE.
CLEAR: FYL.
FYL = WS_FILE-LOW.
REFRESH: TAB2.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = FYL
FILETYPE = 'BIN'
TABLES
DATA_TAB = TAB2.
IT_TEXTLINE[] = TAB2[].
DOCUMENT_DATA (SUBJECT OF MAIL)
V_DOCDATA-OBJ_NAME = DESC.
V_DOCDATA-OBJ_DESCR = SUBJ.
V_DOCDATA-OBJ_LANGU = SY-LANGU.
V_DOCDATA-SENSITIVTY = 'C'.
V_DOCDATA-OBJ_PRIO = '1'.
BODY OF MAIL
IT_BODY-LINE = 'Collection Report'.
APPEND IT_BODY.
CONTENTS_TXT (Attachments)
IT_CONTNT[] = IT_TEXTLINE[].
DESCRIBE TABLE IT_CONTNT LINES V_LINE.
READ TABLE IT_CONTNT INDEX V_LINE.
PACKING_LIST
V_OBJPACK-DOC_SIZE = ( V_LINE - 1 ) * 255 + STRLEN( IT_CONTNT ).
V_OBJPACK-TRANSF_BIN = 'X'.
V_OBJPACK-HEAD_START = 1.
V_OBJPACK-HEAD_NUM = 0.
V_OBJPACK-BODY_START = 1.
V_OBJPACK-BODY_NUM = V_LINE.
V_OBJPACK-DOC_TYPE = 'TXT'.
V_OBJPACK-OBJ_NAME = 'ATTACHMENT'.
V_OBJPACK-OBJ_DESCR = 'Attached Document'.
APPEND V_OBJPACK.
CLEAR V_OBJPACK.
RECEIVERS of mail
IF RECFLAG IS INITIAL.
LOOP AT IT_SAPID.
IT_RECVRS-RECEIVER = IT_SAPID-SAPID.
IT_RECVRS-REC_TYPE = 'B'.
IT_RECVRS-COM_TYPE = ''.
IT_RECVRS-EXPRESS = 'X'.
IT_RECVRS-NO_FORWARD = ''.
IT_RECVRS-NO_PRINT = ''.
APPEND IT_RECVRS.
CLEAR IT_RECVRS.
ENDLOOP.
ELSE.
LOOP AT EMAILADD.
IT_RECVRS-RECEIVER = EMAILADD-LOW.
IT_RECVRS-REC_TYPE = 'U'.
IT_RECVRS-COM_TYPE = 'INT'.
IT_RECVRS-EXPRESS = 'X'.
APPEND IT_RECVRS.
CLEAR IT_RECVRS.
ENDLOOP.
ENDIF.
OBJECT_HEADER (Filename)
CONCATENATE 'Collection Report' '_'
SY-DATUM+4(4) YEAR '.TXT'
INTO V_OBJHEAD-LINE.
V_OBJHEAD-LINE = FYL+16(25).
APPEND V_OBJHEAD.
CLEAR V_OBJHEAD.
Function Module For Sending Mail with Attachment
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = V_DOCDATA
TABLES
PACKING_LIST = V_OBJPACK
OBJECT_HEADER = V_OBJHEAD
CONTENTS_HEX = IT_CONTNT
CONTENTS_TXT = IT_BODY
RECEIVERS = IT_RECVRS
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
IF SY-SUBRC = 0.
MESSAGE S000(ZZ) WITH TEXT-005.
ELSE.
MESSAGE S000(ZZ) WITH TEXT-006.
ENDIF.
ENDLOOP.
end of my code *
please help me guys... when i run this program, DOCUMENT_NOT_SENT is what i always get..
waiting for ur reply... thank you vey much and godbless.Hi,
Try this sample code.
FORM SEND_TO_EMAIL USING zFName.
DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
DATA: DOC_CHNG LIKE SODOCCHGI1.
DATA: TAB_LINES LIKE SY-TABIX.
DATA: ctmp(50) TYPE C.
Creation of the document to be sent
DOC_CHNG-OBJ_NAME = 'JOURNAL'.
CONCATENATE 'SAP Payroll Journal file Period' pybegda INTO ctmp
SEPARATED BY SPACE.
DOC_CHNG-OBJ_DESCR = cTmp.
OBJTXT = 'SAP Payroll Journal'.
APPEND OBJTXT.
CONCATENATE 'For Period' pybegda INTO ctmp
SEPARATED BY SPACE.
OBJTXT = ctmp.
APPEND OBJTXT.
CONCATENATE 'Attached File :' zFname INTO ctmp
SEPARATED BY SPACE.
OBJTXT = ctmp.
APPEND OBJTXT.
OBJTXT = 'Please find the attachment.'.
APPEND OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
Creation of the entry for the compressed document
CLEAR OBJPACK-TRANSF_BIN.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'.
APPEND OBJPACK.
Creation of the document attachment
<b>LOOP AT xMail.
CONDENSE xMail-aline.
OBJBIN = xMail-aline.
APPEND OBJBIN.
CLEAR OBJBIN.
ENDLOOP.</b>
DESCRIBE TABLE OBJBIN LINES TAB_LINES.
OBJHEAD = zFname. APPEND OBJHEAD.
Creation of the entry for the compressed attachment
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'.
OBJPACK-OBJ_NAME = 'DATA'.
OBJPACK-OBJ_DESCR = 'SAP Payroll File'.
OBJPACK-DOC_SIZE = TAB_LINES * 255.
APPEND OBJPACK.
Completing the recipient list
LOOP AT PENERIMA.
CONDENSE PENERIMA-PNRM.
RECLIST-RECEIVER = PENERIMA-PNRM.
RECLIST-REC_TYPE = 'U'.
APPEND RECLIST.
ENDLOOP.
Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
PUT_IN_OUTBOX = ' '
TABLES
PACKING_LIST = OBJPACK
OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
CASE SY-SUBRC.
WHEN 0.
WRITE: / 'Result of the send process:'.
LOOP AT RECLIST.
WRITE: / RECLIST-RECEIVER(48), ':'.
IF RECLIST-RETRN_CODE = 0.
WRITE / 'The document was sent'.
ELSE.
WRITE / 'The document could not be sent'.
ENDIF.
ENDLOOP.
WHEN 1.
WRITE: / 'Too many receiver'.
WHEN 2.
WRITE: / 'Document could not be sent to any recipient'.
WHEN 4.
WRITE: / 'No send authorization'.
WHEN OTHERS.
WRITE: / 'Error occurred while sending'.
ENDCASE.
ENDFORM. -
How to input data into an arraylist from a text file?
I am trying to take data from a text file and put that data into an arraylist. First here is the text file:
[item1, 10, 125.0, item2, 10, 12.0, item3, 20, 158.0]
3
4530.0
[item5, 65, 555.5, item4, 29, 689.0]
2
56088.5
[item7, 84, 34.5, item6, 103, 0.5, item8, 85, 1.36]
3
3065.1The text between the [ ] is the output from my arraylists. I have three arraylists. The first [ ] belongs to arraylist A, the second to arraylist B, and the third to arraylist C. The format of the arraylists is this:
<item name>,<# in stock>,<value of one item>
The first number below the arraylists in the text file represents the number of items in the list. The second number below the arraylists represents the total value of the items in the arraylists.
Here is the class file I have (yes, it does everything):
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class Inventory extends Object
public int toAdd = 0;
private boolean done = false; //Are we done yet?
public String strItemName; //The name of the item type.
public int intNumInStock; //The number in stock of that type.
public double dblValueOfOneItem; //The value of one item.
public String strNumberInStock;
public double dblTotalValueA; //The total value of warehouse A.
public double dblTotalValueB; //The total value of warehouse B.
public double dblTotalValueC; //The total value of warehouse C.
public int intWarehouseAItemCount; //Counter for items in warehouse A.
public int intWarehouseBItemCount; //Counter for items in warehouse B.
public int intWarehouseCItemCount; //Counter for items in warehouse C.
ArrayList warehouseAList = new ArrayList(); //Create the Warehouse A ArrayList.
ArrayList warehouseBList = new ArrayList(); //Create the Warehouse B arrayList.
ArrayList warehouseCList = new ArrayList(); //Create the Warehouse C arrayList.
/** Construct a new Inventory object. */
public Inventory()
super();
/**Add items to the Warehouse A ArrayList.*/
private void createWareHouseA()
System.out.println("!" + toAdd + " item types will be added to warehouse A.");
//Cast
String strNumInStock = Integer.toString(intNumInStock);
String strValueOfOneItem = Double.toString(dblValueOfOneItem);
this.strNumberInStock = strNumInStock;
System.out.println("!Initial size of warehouseAList : " +
warehouseAList.size());
//Add items to the array List
warehouseAList.add(this.strItemName);
warehouseAList.add(this.strNumberInStock);
warehouseAList.add(this.dblValueOfOneItem);
System.out.println("!size of arrayList after additions " + warehouseAList.size());
/**Add items to the Warehouse B ArrayList.*/
private void createWareHouseB()
System.out.println("!" + toAdd + " item types will be added to warehouse B.");
//Cast
String strNumInStock = Integer.toString(intNumInStock);
String strValueOfOneItem = Double.toString(dblValueOfOneItem);
this.strNumberInStock = strNumInStock;
System.out.println("!Initial size of warehouseBList : " +
warehouseBList.size());
//Add items to the array List
warehouseBList.add(this.strItemName);
warehouseBList.add(this.strNumberInStock);
warehouseBList.add(this.dblValueOfOneItem);
System.out.println("!size of arrayList after additions " + warehouseBList.size());
/**Add items to the Warehouse C ArrayList.*/
private void createWareHouseC()
System.out.println("!" + toAdd + " item types will be added to warehouse C.");
//Cast
String strNumInStock = Integer.toString(intNumInStock);
String strValueOfOneItem = Double.toString(dblValueOfOneItem);
this.strNumberInStock = strNumInStock;
System.out.println("!Initial size of warehouseCList : " +
warehouseCList.size());
//Add items to the array List
warehouseCList.add(this.strItemName);
warehouseCList.add(this.strNumberInStock);
warehouseCList.add(this.dblValueOfOneItem);
System.out.println("!size of arrayList after additions " + warehouseCList.size());
/**Interpret the commands entered by the user.*/
public void cmdInterpreter()
this.displayHelp();
Scanner cin = new Scanner(System.in);
while (!this.done)
System.out.print(">");
//"line" equals the next line of input.
String line = cin.nextLine();
this.executeCmd(line);
/**Execute one line entered by the user.
* @param cmdLN; The command entered by the user to execute. */
private void executeCmd(String cmdLN)
Scanner line = new Scanner(cmdLN);
if (line.hasNext())
String cmd = line.next();
//What to do when users enter the various commands below.
if (cmd.equals("help"))
this.displayHelp();
else if (cmd.equals("Q!"))
this.done = true;
else if (cmd.equals("F") && line.hasNext())
this.inputFromFile(line.next());
else if (cmd.equals("K") && line.hasNext())
int numItemsToAdd = Integer.valueOf( line.next() ).intValue();
this.toAdd = numItemsToAdd;
this.inputFromKeyboard(numItemsToAdd);
/**What to do if input comes from a file.
* @param inputFile; The name of the input file to process.*/
private void inputFromFile(String inputFile)
Scanner cin = new Scanner(System.in);
System.out.println("!Using input file " + inputFile + ".");
System.out.print("!Enter the name of the output file: ");
String outputFile = cin.next();
System.out.println("!Using output file " + outputFile + ".");
try
BufferedReader in = new BufferedReader(new FileReader(inputFile));
//Scanner in = new Scanner(new File(inputFile));
//Initialize the String variables.
String line1 = null;
String line2 = null;
String line3 = null;
String line4 = null;
String line5 = null;
String line6 = null;
String line7 = null;
String line8 = null;
String line9 = null;
System.out.println(in.equals(",") + " see?");
//System.out.println((char)(char)in.read() + " experiment");
/**This loop assigns values to the string variables based on the
* values on each line in the input file. */
while(in.readLine() != null)
line1 = in.readLine();
line2 = in.readLine();
line3 = in.readLine();
line4 = in.readLine();
line5 = in.readLine();
line6 = in.readLine();
line7 = in.readLine();
line8 = in.readLine();
line9 = in.readLine();
//Print the contents of each line in the input file.
System.out.println("!value of line 1: " + line1);
System.out.println("!value of line 2: " + line2);
System.out.println("!value of line 3: " + line3);
System.out.println("!value of line 4: " + line4);
System.out.println("!value of line 5: " + line5);
System.out.println("!value of line 6: " + line6);
System.out.println("!value of line 7: " + line7);
System.out.println("!value of line 8: " + line8);
System.out.println("!value of line 9: " + line9);
/**Add items to the warehouses.*/
warehouseAList.add(line1);
warehouseBList.add(line4);
warehouseCList.add(line7);
/**Add the item count and total value for warehouse A.*/
int intLine2 = Integer.valueOf(line2).intValue();
this.intWarehouseAItemCount = intLine2;
double dblLine3 = Double.valueOf(line3).doubleValue();
this.dblTotalValueA = dblLine3;
/**Add the item count and total value for warehouse B.*/
int intLine5 = Integer.valueOf(line5).intValue();
this.intWarehouseBItemCount = intLine5;
double dblLine6 = Double.valueOf(line6).doubleValue();
this.dblTotalValueB = dblLine6;
/**Add the item count and total value for warehouse C.*/
int intLine8 = Integer.valueOf(line8).intValue();
this.intWarehouseCItemCount = intLine8;
double dblLine9 = Double.valueOf(line9).doubleValue();
this.dblTotalValueC = dblLine9;
/**Ask the user how many items to add or delete from inventory.*/
System.out.print("Enter the number to add to inventory for " +
warehouseAList.get(0) + ":");
String toAddOrDel = cin.next();
/**Print the contents of all the warehouses. */
System.out.println(" ");
//Print the contents of warehouse A.
System.out.println("!--------------------------------");
System.out.println("!----------Warehouse A:----------");
System.out.println("!--------------------------------");
//Print the item list for warehouse A.
System.out.println(warehouseAList);
//Print the total amount of items in warehouse A.
System.out.println("Total items: " + this.intWarehouseAItemCount);
//Print the total value of the items in warehouse A.
System.out.println("Total value: " + this.dblTotalValueA);
System.out.println("!--------------------------------");
System.out.println("!----------Warehouse B:----------");
System.out.println("!--------------------------------");
//Print the item list for warehouse B.
System.out.println("!warehouseB: " + warehouseBList);
//Print the total amount of items in warehouse B.
System.out.println("Total items: " + this.intWarehouseBItemCount);
//Print the total value of the items in warehouse B.
System.out.println("Total value: " + this.dblTotalValueB);
System.out.println("!--------------------------------");
System.out.println("!----------Warehouse C:----------");
System.out.println("!--------------------------------");
//Print the item list for warehouse C.
System.out.println("!warehouseC: " + warehouseCList);
//Print the total amount of items in warehouse C.
System.out.println("Total items: " + this.intWarehouseCItemCount);
//Print the total value of the items in warehouse C.
System.out.println("Total value: " + this.dblTotalValueC);
in.close();
catch (FileNotFoundException e)
System.out.println("!Error: Unable to open file for reading.");
catch (EOFException e)
System.out.println("!Error: EOF encountered, file may be corrupted.");
catch (IOException e)
System.out.println("!Error: Cannot read from file.");
/**What to do if input comes from the keyboard.
* @param numItems; The total number of items that will be added to the
* Warehouse(s). */
public void inputFromKeyboard(int numItems)
System.out.println("!You will be adding " + numItems + " items to " +
"inventory from the keyboard. ");
this.toAdd = numItems;
Scanner cin = new Scanner(System.in);
//Prompt user for name of output file.
System.out.print("!Enter the name of the output file: ");
String outputFile = cin.next();
/**This loop asks the user for information about the item(s) and inputs
*them into the appropriate array.*/
int count = 0;
while (numItems > count)
//Item name.
System.out.print("!Item name: ");
String addItemName = cin.next();
//Number in stock.
System.out.print("!Number in stock: ");
String addNumInStock = cin.next();
//Initial warehouse.
System.out.print("!Initial warehouse(A,B,C): ");
String addInitWarehouse = cin.next();
//Value of one item.
System.out.print("!Value of one item: ");
String addValueOfOneItem = cin.next();
//Add or delete from inventory
System.out.print("!Enter amount to add or delete from inventory: ");
String strAddOrDelete = cin.next();
System.out.println("!Amount to add or delete: " + strAddOrDelete);
//Cast
int intAddNumInStock = Integer.valueOf(addNumInStock).intValue();
double doubleAddValueOfOneItem = Double.valueOf(addValueOfOneItem).doubleValue();
int intAddOrDelete = Integer.valueOf(strAddOrDelete).intValue();
/**Add intAddNumInStock with intAddOrDelete to determine the amount
* to add or delete from inventory (If a user wishes to remove items
* from inventory simply add negative values). */
intAddNumInStock = intAddNumInStock + intAddOrDelete;
System.out.println("!Inventory after modifications: " + strAddOrDelete);
this.strItemName = addItemName;
this.intNumInStock = intAddNumInStock;
this.dblValueOfOneItem = doubleAddValueOfOneItem;
//Put items into warehouse A if appropriate.
if (intAddNumInStock < 25)
//Increment the warehouse A item count.
this.intWarehouseAItemCount = this.intWarehouseAItemCount + 1;
//Calculate the total value of warehouse A.
this.dblTotalValueA = this.dblTotalValueA + intAddNumInStock * doubleAddValueOfOneItem;
//Create the warehouse A array list.
this.createWareHouseA();
//Put items into warehouse B if appropriate.
if (intAddNumInStock >= 25)
if (intAddNumInStock < 75)
//Increment the warehouse B item count.
this.intWarehouseBItemCount = this.intWarehouseBItemCount + 1;
//Calculate the total value of warehouse B.
this.dblTotalValueB = this.dblTotalValueB + intAddNumInStock * doubleAddValueOfOneItem;
//Create the warehouse B array list.
this.createWareHouseB();
//Put items into warehouse C if appropriate.
if (intAddNumInStock >= 75)
//Increment the warehouse C item count.
this.intWarehouseCItemCount = this.intWarehouseCItemCount + 1;
//Calculate the total value of warehouse C.
this.dblTotalValueC = this.dblTotalValueC + intAddNumInStock * doubleAddValueOfOneItem;
//Create the warehouse C array list.
this.createWareHouseC();
//display helpful information.
System.out.println("!--------------------------------");
System.out.println("!" + addItemName + " is the item name.");
System.out.println("!" + addNumInStock + " is the number in stock.");
System.out.println("!" + addInitWarehouse + " is the initial warehouse.");
System.out.println("!" + addValueOfOneItem + " is the value of one item.");
System.out.println("!--------------------------------------------------");
//Increment the counters.
count++;
/**Create and write to the output file. */
try
//Use the output file specified by the user.
PrintWriter out = new PrintWriter(outputFile);
/**Write warehouse A details.*/
//Blank the first line.
out.println(" ");
//Write the array list for warehouse A.
out.println(warehouseAList);
//Write the amount of items in warehouse A.
out.println(intWarehouseAItemCount);
//Write the total value for warehouse A.
out.println(dblTotalValueA);
/**Write warehosue B details.*/
//Write the array list for warehouse B.
out.println(warehouseBList);
//Write the amount of items in warehouse B.
out.println(intWarehouseBItemCount);
//Write the total value for warehouse B.
out.println(dblTotalValueB);
/**Write warehouse C details.*/
//Write the array list for warehouse C.
out.println(warehouseCList);
//Write the amount of items in warehouse C.
out.println(intWarehouseCItemCount);
//Write the total value for warehouse C.
out.println(dblTotalValueC);
//Close the output file.
out.close();
catch (FileNotFoundException e)
System.out.println("Error: Unable to open file for reading.");
catch (IOException e)
System.out.println("Error: Cannot read from file.");
/**View the contents and the value of each warehouse.*/
System.out.println("!---------------Inventory Summary------------------");
System.out.println("!--------------------------------------------------");
System.out.println("!--------------------LEGEND:-----------------------");
System.out.println("!<item type>, <amount in stock>,<value of one item>");
System.out.println("!--------------------------------------------------");
System.out.println("!------------------Warehouse A:--------------------");
System.out.println("!--------------------------------------------------");
//Display Items in warehouse A.
System.out.println(warehouseAList);
//Total items in warehouse A.
System.out.println("Total items: " + intWarehouseAItemCount);
//Display total value of warehouse A.
System.out.println("Total value: " + "$" + dblTotalValueA);
System.out.println("!--------------------------------------------------");
System.out.println("!------------------Warehouse B:--------------------");
System.out.println("!--------------------------------------------------");
//Display Items in warehouse B.
System.out.println(warehouseBList);
//Total items in warehouse B.
System.out.println("Total items: " + intWarehouseBItemCount);
//Display total value of warehouse B.
System.out.println("Total value: " + "$" + dblTotalValueB);
System.out.println("!--------------------------------------------------");
System.out.println("!------------------Warehouse C:--------------------");
System.out.println("!--------------------------------------------------");
//Display Items in warehouse C.
System.out.println(warehouseCList);
//Total items in warehouse C.
System.out.println("Total items: " + intWarehouseCItemCount);
//Display total value of warehouse C.
System.out.println("Total value: " + "$" + dblTotalValueC);
/**Display a help message.*/
private void displayHelp()
System.out.println("!--------------------------------");
System.out.println("! General Help:");
System.out.println("!--------------------------------");
System.out.println("! ");
System.out.println("!'help' display this help message.");
System.out.println("!'Q!' quit this program.");
System.out.println("!--------------------------------");
System.out.println("! Input File Specific Commands:");
System.out.println("!--------------------------------");
System.out.println("! ");
System.out.println("!'F' <name> type F followed by the name of the " +
"file to be used for input.");
System.out.println("!---------------------------------------");
System.out.println("! Input From Keyboard Specific Commands:");
System.out.println("!---------------------------------------");
System.out.println("! ");
System.out.println("!'K' <number> type K followed by the number of " +
"items that will be added. ");
System.out.println("! ");
}Program file:
public class InventoryProg
public static void main(String[] args)
//Create a new Inventory object.
Inventory test = new Inventory();
//Execute the command interpreter.
test.cmdInterpreter();
}Right now I am stuck on this and I cannot progress any further until I figure out how to input the data in the text file back into a arraylist.
Thanks in advance.Thanks but I figured it out. Heres a sample of the code i used to solve my problem:
try
//Warehouse A BufferedReader.
BufferedReader inA = new BufferedReader(new FileReader(inputFileWarehouseA));
//Warehouse B BufferedReader.
BufferedReader inB = new BufferedReader(new FileReader(inputFileWarehouseB));
//Warehouse C BufferedReader.
BufferedReader inC = new BufferedReader(new FileReader(inputFileWarehouseC));
//Warehouse details BufferedReader.
BufferedReader inDetails = new BufferedReader(new FileReader(inputFileDetails));
//Will hold values in warehouse arraylists.
String lineA = null;
String lineB = null;
String lineC = null;
//Will hold the details of each warehouse.
String line1 = null;
String line2 = null;
String line3 = null;
String line4 = null;
String line5 = null;
String line6 = null;
//Get the item count and total value for each warehouse.
while(inDetails.readLine() != null)
line1 = inDetails.readLine();
line2 = inDetails.readLine();
line3 = inDetails.readLine();
line4 = inDetails.readLine();
line5 = inDetails.readLine();
line6 = inDetails.readLine();
/**Assign the item count and total value to warehouse A.*/
//Cast.
int intLine1 = Integer.valueOf(line1).intValue();
double dblLine2 = Double.valueOf(line2).doubleValue();
//Assign the values.
this.intWarehouseAItemCount = intLine1;
this.dblTotalValueA = dblLine2;
/**Assign the item count and total value to warehouse B.*/
//Cast.
int intLine3 = Integer.valueOf(line3).intValue();
double dblLine4 = Double.valueOf(line4).doubleValue();
//Assign the values.
this.intWarehouseBItemCount = intLine3;
this.dblTotalValueB = dblLine4;
/**Assign the item count and total value to warehouse C.*/
//Cast.
int intLine5 = Integer.valueOf(line5).intValue();
double dblLine6 = Double.valueOf(line6).doubleValue();
//Assign the values.
this.intWarehouseCItemCount = intLine5;
this.dblTotalValueC = dblLine6;
/**Put the items back into the warehouses arraylists. */
//Add items to warehouse A.
while((lineA = inA.readLine()) != null)
warehouseAList.add(lineA);
//Add items to warehouse B.
while((lineB = inB.readLine()) != null)
warehouseBList.add(lineB);
//Add items to warehouse C.
while((lineC = inC.readLine()) != null)
warehouseCList.add(lineC);
}(this isn't the whole try statement its pretty long) -
How to add header and fooder in text file
Hi,
i have created simple application for generate report from database into text file.
But i need to add header and fooder in text file. I dont know is there any API for adding these.
Can anyone help me to create header and fooder in text file.
the below text are needs to be print in the header
name of the table :
Recorder type :
file creation time:
the below text are needs to be print in the footer
Recorder Number:
Record Type;
the actual code is
pst = con.prepareStatement("select REQUEST, DOMAIN_NAME, TRUNC(DATE_OF_CONFIGURATION) AS dateofConfig FROM employee where id=300");
rs = pst.executeQuery();
while (rs.next()) {
request = rs.getString("REQUEST");
domain_name = rs.getString("DOMAIN_NAME");
dateofconfig = rs.getString("dateofConfig");
System.out.println(request + " " + domain_name + " " + dateofconfig);
data.add(request + " " + domain_name + " " + dateofconfig);
System.out.println("before calling method");
writeToFile(data, "c:/Employee.txt");
System.out.println("file created successfull");
rs.close();
pst.close();
private static void writeToFile(List list, String path) {
BufferedWriter out = null;
try {
File file = new File(path);
out = new BufferedWriter(new FileWriter(file, true));
for (Object obj : list) {
String s= obj.toString();
out.write(s);
out.newLine();
out.close();
} catch (IOException e) {
}Thanks
Jasmin
Edited by: user13836688 on Mar 21, 2011 4:06 AM
Edited by: user13836688 on Mar 21, 2011 4:07 AM
Edited by: user13836688 on Mar 21, 2011 4:08 AMuser13836688 wrote:
i have created simple application for generate report from database into text file.First off, when posting code, use [code]...[/code]. or '' tags, not '<code>'.
But i need to add header and fooder in text file. I dont know is there any API for adding these.
Can anyone help me to create header and fooder in text file.Well you plainly have the code to write the file contents; and furthermore your report seems to be contained in a List called 'data'. Why not just add the header and footer lines to it? I'd also suggest making 'data' a LinkedList. That way you can add the header afterwards with no performance hit, just in case the information it contains isn't available at the start of your report loop.
Winston -
How to load Test data from a Text file in ECATT
Hi,
I have created a test configuration with a test script, system data container, and test data container.
I have done the recording of a transaction and created the script. Parameterization is done for the script and have imported those parameters from script in to the data container.
I am trying to load a the data from a text file on the local work-station. The data is not being read.
Please explain this in detail (step by step) as I am very new to ECATT.
I am trying this on SAP ECC 6.0 IDES server.
Thanks in Advance
Vikas PatilPlease explain this in detail (step by step) as I am very new to ECATT.
Thanks in Advance
Vikas Patil
Maybe you are looking for
-
Have safari 3.04 quicktime pro 7.3 can't see video on trailer apple??? Thank's to help me
-
ABAP Programm for calling Proxies
Hi Experts, I was writing a ABAP programm für starting a ABAP proxy. *& Report Z_XI_MAPPING REPORT Z_XI_MAPPING. parameters: PA_WAIT type decimals default 0, PA_LOOP type decimals default 1, PA_EOIO type char1 default 'X',
-
Multithreading in oracle PLSQL
Hi I am having 100000 records in my database, Normally i fetch 1000 records from 100000 in bulk and do the process, after completion of first batch the it took second set of 1000 records from 100000 in bulk and do the process. Say in the 1st batch th
-
NEW Firmware Version 6.01
All, We are releasing version 6.01 firmware for the F5, and F55 motion picture cameras. Thank you for your feedback in discovering the S/Q, Center Scan issue. When S&Q setting was set “On” in 2K Center Scan mode or 2K Full Scan mode and the power was
-
Portege 7220 upgrade to Windows XP
What's the best way to upgrade to Windows XP? (now 98se) Are there maybe people who already upgraded, or is there a manual to do this? Thx in advance Grard (The Netherlands)