cancel
Showing results for 
Search instead for 
Did you mean: 

file upload

Former Member
0 Kudos

Hello Community,

I try to write an upload functionality for a text file but I fail. I created a FileUpload input and connected a method to the onAction property. No matter what type of file I always get an error message "Parse method is not possible for this type" from the webdynpro application.

Can somebody help me to create this simple file upload?

Regards, Robert.

Accepted Solutions (1)

Accepted Solutions (1)

thomas_chadzelek
Participant
0 Kudos

Hello Robert,

the tricky part here is that you must modify (at runtime) the type of the attribute that will hold the uploaded data.

At design time, you use "binary" as type. Then, in wdDoInit() of the controller whose context contains that attribute, you write something like the following (adjust the names to your needs):

IWDModifiableBinaryType type = (IWDModifiableBinaryType) wdContext.nodeXYZ().getNodeInfo().getAttribute(IPrivateABCView.IXYZElement.ATTRIBUTE).getModifiableSimpleType();

Best regards,

Thomas

Former Member
0 Kudos

thank's a lot. I Got it. Happy Weekend.

former_member374
Active Contributor
0 Kudos

Hi Robert,

You are thanking a poster for his answer.

Please next time also give him points.

See: /people/mark.finnern/blog/2004/08/10/spread-the-love

This time I did it for you.

Remember: When you ask a question you also assume the responsibility to assign points.

Please check your other questions and if the answers were good.

Spread the love and give some points.

Thanks in advance, Mark.

Former Member
0 Kudos

Hi Thomas,

I am using Netweaver developer studio 2.0.7 version.

I want to use the Fileupload control. I checked the link in SDN forum but I can't see any Upload or Download UI-element.

On clicking the button i want to upload a file, read the contents of the file and INSERT the same in SAP database. I want to pass the "<b>FilePath</b>" (as a STRING) to an RFC which will do the INSERTION part. Please help me in this regard urgently.

I've checked the documentation also in Help -NDS.

I have tried what you told..but it didn't work.

Do you have any example regarding this.

<b>Regards,

Sai.</b>

Former Member
0 Kudos

Dear Robert

I am also making a similar application in Webdynpro for uploading an excel file to the server. Can you please give me a demo application so that I can run it and see whether my server is configured or not. Also I have made the application right now and have coded the need full. But when I select a file and say submit it shows me a page not found error. Currently I am working round the clock and am stuck up here. Its very urgent can any body help please with an example or a demo application.

Regards Gaurav

Former Member
0 Kudos

First You have to download the jxl.jar file. You can get this file from the Below site

JExcelApi v2.6.4 (1747kbytes)

It will be in Compressed Fromat So Unzip it to get the Contents

After Unzipping The File You will get a Folder (jexcelapi/jxl.jar)

Now in NWDS open web dynpro explorer, Right Click Your Project, a popup menu will appear and in that click Properties

You will get window displaying your Project Properties

On Left Side of the window You Will Find "Java Build Path"

Click That "Java Build Path" and you will get 4 Tabs Showing ( Source,Projects,Libraries,Order and Export)

Click Libraries Tab

You will find options many options buttons

In that click the Button "Add External Jars"

You will get Window in order to fecth the jxl.jar file from the location you had stored

After selecting the jxl.jar i will get displayed and click ok

Now Open Navigator

Open Your Project

You will find Lib folder

Copy the jxl.jar to that lib folder

Note : You cannot Read the Content from the excel file directly

First You Have to copy that file to the Server,

And from the Server you can get the file absolute path

With the absolute path you can read the contents of the Excel file

You have to save the Excel file as .xls Format and Not as xlsx format i will not accept that...

You have Upload the Excel file from the Server Using the File Upload UI Element

This Coding will extract 3 columns from the Xls File

Coding

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import com.sap.fileupload.wdp.IPrivateFileUpload_View;

import com.sap.tc.webdynpro.services.sal.datatransport.api.IWDResource;

public void onActionUpload_File(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

{

//@@begin onActionUpload_File(ServerEvent)

IPrivateFileUpload_View.IContextElement element1 = wdContext.currentContextElement();

IWDResource resource = element1.getFileResource();

element1.setFileName(resource.getResourceName());

element1.setFileExtension(resource.getResourceType().getFileExtension());

//@@end

}

public void onActionUpload_File_in_Server(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

{

//@@begin onActionUpload_File_in_Server(ServerEvent)

InputStream text=null;

int temp=0;

try

{

File file = new File(wdContext.currentContextElement().getFileResource().getResourceName().toString());

FileOutputStream op = new FileOutputStream(file);

if(wdContext.currentContextElement().getFileResource()!=null)

{

text=wdContext.currentContextElement().getFileResource().read(false);

while((temp=text.read())!=-1)

{

op.write(temp);

}

}

op.flush();

op.close();

path = file.getAbsolutePath();

wdComponentAPI.getMessageManager().reportSuccess(path);

}

catch(Exception e)

{

e.printStackTrace();

}

//@@end

}

public void onActionUpload_Data_into_Table(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

{

//@@begin onActionUpload_Data_into_Table(ServerEvent)

try

{

Workbook wb =Workbook.getWorkbook(new File(path));

Sheet sh = wb.getSheet(0);

//wdComponentAPI.getMessageManager().reportSuccess("Columns = "+sh.getColumns());

//wdComponentAPI.getMessageManager().reportSuccess("Rows = "+sh.getRows());

int columns = sh.getColumns();

int rows = sh.getRows();

int i=0;

for(int j=1;j<=rows;j++)

{

ele=wdContext.nodeTable_Data().createTable_DataElement();

Cell c1 = sh.getCell(i,j);

ele.setTab_Name(c1.getContents());

Cell c2 = sh.getCell(i+1,j);

ele.setTab_Degree(c2.getContents());

Cell c3 = sh.getCell(i+2,j);

ele.setTab_Percentage(c3.getContents());

wdContext.nodeTable_Data().addElement(ele);

}

}

catch(Exception ex)

{

wdComponentAPI.getMessageManager().reportSuccess(ex.toString());

}

//@@end

}

/*

  • The following code section can be used for any Java code that is

  • not to be visible to other controllers/views or that contains constructs

  • currently not supported directly by Web Dynpro (such as inner classes or

  • member variables etc.). </p>

*

  • Note: The content of this section is in no way managed/controlled

  • by the Web Dynpro Designtime or the Web Dynpro Runtime.

*/

//@@begin others

String path;

IPrivateFileUpload_View.ITable_DataElement ele;

//@@end

make sure that the cardinality of the node i.e. upload node is 1:1

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Robert,

did you use binary type for the attribute you want to use for the file data?

Best regards

Stefan

PS: There's an example project for fileup- and download available <a href="http://sapmats-de.sap-ag.de/download/download.cgi?id=5K7EPLB7EVF9CXQUXGEJNNMSYWZ8XX8VUQDU61CO88MT7NDX1L">here</a>. Maybe you check if this works first.

Message was edited by: Stefan Klensch