Validate Excel Sheet Contents
JDeveloper PS5
We have a feature where the user could upload an excel sheet. We would need to validate the contents of the excel sheet.
What are the different ways - we could validate the excel sheet?
I am aware of libraries like jExcelApi and Apache POI - but would like to know - if there are any in-built features as part of Fusion Middleware.
Thanks,
Navaneeth
You may want to consider ADF Desktop Integration as an alternate way to integrate your web app with Excel.
http://www.oracle.com/technetwork/developer-tools/adf/overview/index-085534.html
Similar Messages
-
Read Excel sheet contents using java/javabeans
I want to read the contents of an MS Excel file from java, is it possible using JavaBeans-ActiveX bridge or by any other java technologies, if possible, how ?
I want to read the contents of an MS Excel file from
java, is it possible using JavaBeans-ActiveX bridge or
by any other java technologies, if possible, how ?Bridge2Java from IBM Alphaworks will do the trick for you.
You can get it from here:
http://www.alphaworks.ibm.com/aw.nsf/techs/bridge2java
Using it, you can do things like the following (taken and abbreviated from the samples provided with the package):
import Excel.*;
public class QuickExcel
public static void main(java.lang.String[] args) {
Application app;
Workbooks wbs;
Workbook wb;
Worksheet sheet;
Range rangeA1, rangeA2;
try
com.ibm.bridge2java.OleEnvironment.Initialize();
app = new Application(); // Excel.Application !!! :-)
app.set_Visible(true);
wbs = app.get_Workbooks();
wb = wbs.Add();
sheet = new Worksheet(wb.get_ActiveSheet());
rangeA1 = sheet.get_Range("A1");
String out = new String("This is a test");
rangeA1.set_Value(out);
// Wait five seconds
Thread.sleep(5000);
// Close the workbook without saving
wb.Close(new Boolean("false"));
app.Quit();
} catch (com.ibm.bridge2java.ComException e)
System.out.println( "COM Exception:" );
System.out.println( Long.toHexString((e.getHResult())) );
System.out.println( e.getMessage() );
} catch (Exception e)
System.out.println("message: " + e.getMessage());
} finally
app = null;
com.ibm.bridge2java.OleEnvironment.UnInitialize();
} -
How to get(copy) the contents i.e the cell of an excel sheet to other excel
How to get(copy) the contents i.e the cells of an excel sheet to another excel sheet.
I can read the contents i.e the text in the cells and able to display it in the Java console
i want these contents to be copied to another excel sheet with the cells data.
I am using Java Swing for the UI, POI framework for the excel work.
Please anyone suggest some code to this requirement.[spreadsheets with poi|http://poi.apache.org/spreadsheet/converting.html] Hi
on the poi apache site there's a number of good examples...
I started with poi only a week ago, but just from reading these examples
(especially SS Usermodel code) i managed all i needed to know (so far).
kind regards
BB
Edited by: BugBunny on Feb 22, 2010 4:36 AM -
Download a page's content into Excel sheet
Hi All,
I generate a JSP Page with contents retrieved by querying the DB. The JSP Page displays say, 10 rows of records. I need to populate these rows of records into an excel sheet and download the excel sheet on click of an Icon or button.
How do I achieve this? Please guide.
Thanks.POI-HSSF is a Java API to access/create Excel format files. Below is a code snippet to write a table's column names to an excel sheet using this API.
import org.apache.poi.hssf.util.*;
import org.apache.poi.hssf.usermodel.*;
File excelFile = null;
// Open a temporary file to write to
excelFile = File.createTempFile("excel", ".xls");
FileOutputStream fos = new FileOutputStream(excelFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
// Create a Workbook with one work sheet
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("WorkSheet1");
HSSFCellStyle cs = wb.createCellStyle();
HSSFFont f = wb.createFont();
f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cs.setFont(f);
Class.forName(" /*driver name goes here.....*/ ");
Connection connection = DriverManager.getConnection(connectionURL );
Statement statement = connection.createStatement();
String query = "select * from table1";
ResultSet resultSet = statement.executeQuery(query);
ResultSetMetaData rsMetaData = resultSet.getMetaData();
int colCount = rsMetaData.getColumnCount();
HSSFRow titleRow = sheet.createRow((short) 0);
HSSFCell titleCell = titleRow.createCell((short) 1);
titleCell.setCellValue("TABLE DATA");
titleCell.setCellStyle(cs);
sheet.addMergedRegion(new Region(0,(short)1,0,(short)2));
HSSFRow headerRow = sheet.createRow(2);
HSSFCell headerCell[] = new HSSFCell[colCount-1];
for( int i=0; i<colCount-1; i++ )
headerCell[i] = headerRow.createCell((short) i, HSSFCell.CELL_TYPE_STRING);
headerCell.setCellValue( rsMetaData.getColumnName(i+1) );
headerCell[i].setCellStyle(cs);
Iffat Tahsin -
On excel sheet upload read the workbook and populate data to sharepoint list
Requirement in my current project:
In a document library when I upload an excel sheet, a specific workbook has to be read and the contents have to be uploaded to a sharepoint custom list.
The approach followed was create an event receiver and register as a feature. Following is the code for event receiver.
public override void ItemAdded(SPItemEventProperties properties)
base.ItemAdded(properties);
var list = getSPList("{150301BF-D0BD-452C-90D7-2D6CD082A247}");
SPListItem doc = properties.ListItem;
doc["Msg"] = "items deleted from req list";
doc.Update();
string excelname=doc.File.Name;
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", "calling read excel");
string filepath = doc.File.Url.ToString();
doc["Msg"] = "excel name" + excelname + filepath;
doc.Update();
readExcel(excelname,filepath);
private static SPList getSPList(String SPListGuid)
// SPSite Site = SPContext.Current.Site;
SPSite Site = new SPSite("http://omistestsrv:32252/sites/OMD");
SPWeb web = Site.OpenWeb();
Guid listid = new Guid(SPListGuid);
web.AllowUnsafeUpdates = true;
SPList List = web.Lists[listid];
return List;
private void readExcel(string excelname,string filepath)
try
SPSecurity.RunWithElevatedPrivileges(delegate()
using (SPSite Site = new SPSite("http://omistestsrv:32252/sites/OMD"))
SPWeb web = Site.OpenWeb();
string workbookpath = web.Url + "/" + filepath;
web.AllowUnsafeUpdates = true;
var _excelApp = new Microsoft.Office.Interop.Excel.Application();
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", "iside read excel");
//my code breaks or fails when cursor reaches this statement. I am not able to open the excel sheet, there is no //problem related to the permission. same code snippet works in a console application. but when tried as an
event //handler in sharepoint it breaks. can anyone help me to resolve the problem
workBook = _excelApp.Workbooks.Open(workbookpath, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing,
Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing);
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", "after excel open");
int numSheets = workBook.Sheets.Count;
// Iterate through the sheets. They are indexed starting at 1.
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", numSheets.ToString());
for (int sheetNum = 12; sheetNum < 13; sheetNum++)
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", "inside first for
loop");
Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets[sheetNum];
Microsoft.Office.Interop.Excel.Range excelRange = sheet.get_Range("A13",
"P89") as Microsoft.Office.Interop.Excel.Range;
object[,] valueArray = (object[,])excelRange.get_Value(
Microsoft.Office.Interop.Excel.XlRangeValueDataType.xlRangeValueDefault);
var list = getSPList("{150301BF-D0BD-452C-90D7-2D6CD082A247}");
for (int L = 1; L <= excelRange.Rows.Count; L++)
string stringVal = valueArray[L, 1] as string;
if ((valueArray[L, 1] != null) && (!string.IsNullOrEmpty(stringVal)))
System.Diagnostics.EventLog.WriteEntry("ExcelUpload",
"inside second for loop");
SPListItemCollection
listItems = list.Items;
SPListItem item = listItems.Add();
item["Product"] = valueArray[L,
1];
item["App"] = valueArray[L,
2];
web.AllowUnsafeUpdates
= true;
item.Update();
web.AllowUnsafeUpdates = false;
//Or Another Method with valueArray Object like "ProcessObjects(valueArray);"
_excelApp.Workbooks.Close();
//workBook.Close(false, excelname, null);
//Marshal.ReleaseComObject(workBook);
catch (Exception e)
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", e.Message.ToString());
finally
System.Diagnostics.EventLog.WriteEntry("ExcelUpload", "finally block");
Is this the only approach to meet this requirement or is there any other way to crack it. sharepoint techies please help me.as you described the scenario of the event that it should happen when user upload excel to a document library. Event Receiver is your best bet. However if you would have a requirement that users can send excel files any time to a network file location and
you want to pick it, read it and create list items etc. You would write a sharepoint timer job that would run every 10 minute to check for file and if available on the network drive, perform the operation etc. so that users who send excel file does not need
to come to the sharepoint etc. You can see that you have Event Receivcer option or Timer job option OR you would write a console application to trigger the code at a scheduled time on sharepoint server etc. so you are using the event receiver in the correct
scenario.
Moonis Tahir MVP, MCPD, MCSD.net, MCTS BizTalk 2006/SQL 2005/SharePoint Server 2007 (Dev & Config) -
Hi ,
i have attached an excel sheet with wbs after that when i change contents or write something and when i saved it the sheet is not changing . i have unprotectd the sheed ,
can anybody clear me what is the problem
Thanks in advance
Regards
Rama Shanker SharmaHi,
Would you please share your experience to solve this problem?
Recently, we got the same problem.
Thanks ahead,
Ecco -
How to read the data in excel sheet
Dear sir,
How to read the data in excel sheet when i recieve a data serial communication... ie i have store a data in excel such that
Cell A Cell B
A Apple
B Ball
C Cat
D Doll
when i recieve A from serial communication i have to display Apple, and when i recieve B i have to display Ball and so on..Hi,
I would recommend you to have a look at the VI attached. It makes use of a VI named 'Read from Spreadsheet' to read the row and column data from the tab delimited excel file. The read data is then searched for the Alphabet specified and finally returns you the corresponding string. The test file used to validate the operation of the VI is also attached.
Trust this would help you solve the issue.
Regards,
Sagar G Yadav | Application Engineer | National Instruments
Attachments:
read_from_excel.vi 10 KB
Book1.txt 1 KB -
we are getting error while refreshing connection on excel sheet which containing data from data source in form of power pivot.
error is "An error occurred during an attempt to establish a connection to the external data source. The following connections failed to refresh:"
I am confused about Configuring the Analysis Service in SharePoint Mode.
What account should be used for Configuring the Analysis Service in SharePoint Mode?
what are the steps and what permissions are required and where to add it?
can you please explain in detail so i can make sure about my account permission properly in my environment?
Do we need to install Analysis service on sharepoint server box or not? if yes, then what are steps to follow it?
it is mentioned here to have two services are running under manages services under sharepoint central,
https://msdn.microsoft.com/en-us/library/jj682085.aspx#bkmk_verify_powerpivot
but we don't have SQL Server Analysis Services
running under Manage
services on server.
what need to be done here to fix this issue ?
Thanks,
Deepak PatelHi Deepak,
We are currently looking into this issue and will give you an update as soon as possible.
Thank you for your understanding and support.
Meanwhile, could you please check if there is any related ULS log for help troubleshoot the issue when error occurs.
http://social.technet.microsoft.com/wiki/contents/articles/3870.troubleshoot-powerpivot-data-refresh.aspx
http://blogs.technet.com/b/excel_services__powerpivot_for_sharepoint_support_blog/archive/2013/04/02/powerpivot-for-sharepoint-manual-data-refresh-failing.aspx
Thanks
Daniel Yang
TechNet Community Support
Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
[email protected] -
Hi,
Being an experienced Excel user before Power BI, I am just starting to explore the M and Power Query capabilities, and need help already (ain't easy to google this use case somehow):
I need to import the table which sits in the Excel file with header row in the row 17 of Excel sheet, with some metadata header in the preceding rows of the columns A and B.
01: Report name, Quick Report
02: Report Date, 1/1/2014
17: Employee Name, Manager, etc...
18: John Doe, Matt Beaver, etc.
Both (a) direct attempt to load as Excel file and (b) the indirect way through [From Folder] and formula in custom column -- both lead to the same error: "[DataFormat.Error] External table is not in the expected format."
Specifically, I tried to use the [Power Query -> From File -> From Folder] functionality, select an Excel file and add a custom column to access the binary content: [Add Custom Column] with formula "=Excel.Workbook([Content])".
It looks like Power Query expects a rectangular range with headers full-width followed by a contiguous table range to import anything, and refuses to load if that is not the case...
QUESTION: Is there any way to load whatever-formatted data from Excel first, and then manipulate the overall imported range (like referring to rows starting from 17th using "Table.SelectRows" etc.) to read the actual data? Reading and using
the metadata from header would be a bonus, but that comes second... The main issue is to get something from a non-regular Excel file to later work with using M formulae ...
Thanks!
SAMFinally found the answer to this one in ():
You Cannot Open a Password-Protected Workbook
If the Excel workbook is protected by a password, you
cannot open it for data access, even by supplying the correct password with
your connection settings, unless the workbook file is already open in the
Microsoft Excel application. If you try, you receive the following error
message:
Could not decrypt file.
ANSWER: So, will have either weave in the work with temporary unprotected files or requires opening them before updating the data source (although this almost defeats the purpose of automation...)
ANSWER to ORIGINAL QUESTION: password was preventing Power Query from reading the Excel file. For solution see above.
Thanks anyway for participation and inspiration, Imke! -
Is there a way to get phone numbers back on my iphone / or excel sheet?
Is there a way to get phone numbers back on my iphone / or excel sheet?
What I've done:
I've upgraded my iphone from 2.0 to 2.1. To be able to do this I've upgraded to the latest iTunes and switched my USB port several times until it was finaly installed. Then, despite iTunes taking 3 hours time for making backups, I found my phone to be completely empty when it was finished. So, I tried to restored the phone. This gave an error 1602 and bricked my phone. Tried it all over again two times more with same results.
The bottom line is that I have an empty phone and I really would like to have my phone numbers back. There's some 1.02 GB of backup information in the apple directory, so I guess they must be something there. But how do I know which file I need and how to decode it?Your contacts should still be on whatever program you sync your iphone to (i.e. Outlook, address book).
The iphone is not a stand alone device. It is designed to be synced with a computer. If you have not been syncing with a compatible program, then you are out of luck. Your contacts are not included in the back-up because it is meant to be synced with your computer.
"Although iTunes backs up most of your iPhone and iPod touch settings, downloaded applications, and other information (Contacts, calendars, notes, images in the Camera Roll), your audio, video, and photo content are not included in the backup."
http://support.apple.com/kb/HT1414 -
Hi,
we all sometime or the other have faced the problem with SO_NEW_DOCUMENT_ATT_SEND_API1, it passes all the data into a single excel sheet. the following is the code i have written using the same standard FM to resolve the issue.
Problem's Facing : To send the output of a report as mail attachment (Excel sheet) from SAP, to the User's outlook or TCP/IP
What is happening : All the data which is being passed to the excel is being put in a single cell of the excel sheet.
Cause : the difficulty lies in getting the internal table from SAP report, passing it to email Function Module If the structure of the internal Table is unknown .
Solution:
if the user while sending data to the Function module ( created using the following code) puts a '#' between field values, all the fields gets separated into individual cells and the data gets printed as required.
<b>advantages</b> of the following code are:
1) User just need to type userid or multiple userid's separated by comma.
2) Performs multiple tasks with one function module.
3) It can be used to send file with subject only
4) It can be used to send file with subject and body
5) It can be used to send file with subject, body, and attachment
6) Attachment can be of 'TXT' format or 'XLS' format depending upon the choice of the user.
7) User specific parameters for EMAILID, subject, body and attachment type avoiding the dump error of "Type conflict"
8) If the user requires to send output of a report as an excel file, then a single internal table will store the total output separating the field values by ' # ' and the data gets printed evenly. the ' # ' symbol is used as Tab delimiter.
FUNCTION zemail_attachment.
""Local Interface:
*" IMPORTING
*" REFERENCE(EMAILID)
*" REFERENCE(SUBJECT)
*" REFERENCE(ATYPE)
*" TABLES
*" ATTACH_FILE STRUCTURE SOLISTI1
*" BODY OPTIONAL
*" EXCEPTIONS
*" INCORRECT_PARAMETERS
This table requires information about how the data in the
tables OBJECT_HEADER, CONTENTS_BIN and CONTENTS_TXT are
to be distributed to the documents and its attachments.
DATA it_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
This table must contain the summarized data dependent on each object type.
SAPscript objects store information here about forms and styles,
for example. Excel list viewer objects store the number of rows and columns
amongst other things and PC objects store their original file name.
DATA it_objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
This table must contain the summarized content of the objects identified as binary objects.
DATA it_objbin TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
This table must contain the summarized content of the objects identified as ASCII objects.
DATA it_objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
This table must contain the document recipients.
DATA it_reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE .
This structure must contain the attributes of the document to be sent.
DATA: doc_ching LIKE sodocchgi1.
DATA: tab_lines LIKE sy-tabix.
Create the internal table for body , subject
DATA: it_body LIKE solisti1 OCCURS 10 WITH HEADER LINE.
*creation of internal table for Email-id.
DATA: BEGIN OF it_mailid OCCURS 0,
email LIKE kna1-name1 ,
END OF it_mailid.
*VARIABLES
DATA : v_hash(1) TYPE c VALUE '#'.
DATA: v_string1 LIKE kna1-name1,
v_string2 LIKE kna1-name1,
v_string3(12) TYPE c VALUE '@GMAIL.COM'.
*CONSATNTS
CONSTANTS: c_con_cret TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
c_con_tab TYPE c VALUE cl_abap_char_utilities=>cr_lf,
c_raw(3) TYPE c VALUE 'RAW',
c_comma(1) TYPE c VALUE ',',
c_rec_type(1) TYPE c VALUE 'U',
c_space(1) TYPE c VALUE ''.
Move Body to Internal Table (body into it_body)
LOOP AT body .
MOVE body TO it_body .
APPEND it_body .
ENDLOOP.
doc_ching-obj_descr = subject. "Subject of the Email
Move the Subject and Body to OBJTXT
it_objtxt[] = it_body[].
DESCRIBE TABLE it_objtxt LINES tab_lines.
READ TABLE it_objtxt INDEX tab_lines.
doc_ching-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( it_objtxt ).
CLEAR it_objpack-transf_bin.
it_objpack-head_start = 1.
it_objpack-head_num = 0.
it_objpack-body_start = 1.
it_objpack-body_num = tab_lines.
it_objpack-doc_type = c_raw.
APPEND it_objpack.
Convert to Excel format
IF NOT attach_file[] IS INITIAL.
IF atype IS INITIAL.
RAISE INCORRECT_PARAMETERS.
ELSEIF atype = 'XLS' .
LOOP AT attach_file .
CONCATENATE attach_file v_hash INTO attach_file.
REPLACE ALL OCCURRENCES OF v_hash IN attach_file WITH c_con_cret.
IF sy-tabix = 1.
MOVE attach_file TO it_objbin.
ELSE.
CONCATENATE c_con_tab attach_file INTO it_objbin.
ENDIF.
APPEND it_objbin.
ENDLOOP.
ELSEIF atype = 'TXT' .
Convert to Text format
LOOP AT attach_file .
REPLACE ALL OCCURRENCES OF v_hash IN attach_file WITH c_con_cret.
CONCATENATE attach_file c_con_tab INTO it_objbin .
APPEND it_objbin .
ENDLOOP.
ENDIF.
DESCRIBE TABLE it_objbin LINES tab_lines.
it_objhead = subject. APPEND it_objhead.
Creating the entry for the compressed attachment
it_objpack-transf_bin = 'X'.
it_objpack-head_start = 1.
it_objpack-head_num = 1.
it_objpack-body_start = 1.
it_objpack-body_num = tab_lines.
*check for XLS ,TXT files
IF atype = 'XLS'.
it_objpack-doc_type = atype.
ELSEIF atype = 'TXT'.
it_objpack-doc_type = c_raw.
ENDIF.
it_objpack-obj_name = 'ATTACHMENT'.
it_objpack-obj_descr = 'ATTACHMENT'. "Attachment File Name
it_objpack-doc_size = tab_lines * 255.
APPEND it_objpack..
ENDIF.
Entering names in the distribution list
Concatenating the email with '@GMAIL.COM if the user doesnot specify any mail extension
recipent type as U - for internet usage
SPLIT emailid AT c_comma INTO TABLE it_mailid.
APPEND it_mailid.
LOOP AT it_mailid.
SHIFT it_mailid-email LEFT DELETING LEADING c_space.
SPLIT it_mailid-email AT '@' INTO: v_string1 v_string2.
IF v_string2 IS INITIAL AND NOT it_mailid-email IS INITIAL.
CONCATENATE v_string1 v_string3 INTO it_reclist-receiver.
it_reclist-rec_type = c_rec_type.
APPEND it_reclist.
CLEAR: v_string1,v_string2.
ELSE.
it_reclist-receiver = it_mailid-email.
it_reclist-rec_type = c_rec_type.
APPEND it_reclist.
ENDIF.
ENDLOOP.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_ching
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = it_objpack
object_header = it_objhead
contents_bin = it_objbin
contents_txt = it_objtxt
receivers = it_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
operation_no_authorization = 4
OTHERS = 99.
ENDFUNCTION.
If anyone, has a better solution, please share
Cheers
Ajayissue resolved
-
How to set the Data types of the Excel sheet while exporting details to it.
Hi All,
We are trying to export some order details to the excel sheet from a jsp. It is working fine when the local system language is set to English.
But when i change it to Russian. the details like Line Numbers(e.g: 1.1, 1.2, 1.3 and so on... ) are getting changed into some other data type(e.g: 01.янв, 02.янв, 03.янв and so on....).
i guess this is mainly due to some data type mismatch, so i tried setting all the possible charset for response in the jsp, but could not succeeded.
This is only for the details which or of decimal format, working fine for the details which are in String type. like Description, Item name etc...
As it is high preference issue for our client, Please help me in this regard ASAP.
Thanks & Regards,
Praveen Reddy Bhi Shiv..
Its not an OAF page but it is from Apps only (i.e.Oracle iStore).
we tried writing this:
<%response.setContentType("application/vnd.ms-excel; charset=UTF-8");%>
<%response.setHeader("Content-Disposition", "attachment; filename=downloadOrders.xls" );%>
<head>
<title>Logitech_iStore</title>
<style>
table {
border-style: solid;
table th.mainHeader {
border-style: solid;
background-color:#000099;
border-color:#000000;
color:#FFFFFF;
font-family:Arial, Helvetica, sans-serif;
font-weight:bold;
font-size:13pt;
table th {
border-style: solid;
background-color:#6687C4;
border-color:#000000;
color:#FFFFFF;
font-family:Arial, Helvetica, sans-serif;
font-weight:bold;
font-size:12pt;
table td.color1 {
border-style: solid;
background-color:#FFFFFF;
border-color:#000000;
color:#000000;
font-family:"Times New Roman", Times, serif;
font-weight:normal;
font-size:12pt;
table td.color2 {
border-style: solid;
background-color:#C0C0C0;
border-color:#000000;
color:#000000;
font-family:"Times New Roman", Times, serif;
font-weight:normal;
font-size:12pt;
table td {
border-style: solid;
background-color:#FFFFFF;
border-color:#000000;
color:#000000;
font-family:"Times New Roman", Times, serif;
font-weight:normal;
font-size:12pt;
</style>
</head>
<body>
<%
/*BigDecimal resp_id=RequestCtx.getResponsibilityId();
String respIdParam="";
String respkey="";
if(resp_id!=null)
respIdParam=resp_id.toString();
out.println("respIdParam"+respIdParam);
logi.oracle.apps.ibe.util.LogiDAOImpl dao=new logi.oracle.apps.ibe.util.LogiDAOImpl();
respkey=dao.getRespKey(respIdParam);
out.println("respkey"+respkey);
logi.oracle.apps.ibe.util.LogiOrderDetailsBean orderDetailsBean = new logi.oracle.apps.ibe.util.LogiOrderDetailsBean();
java.util.ArrayList ls = new java.util.ArrayList();
String resp_key=request.getParameter("respkey");
System.out.println(resp_key);
String noofDays=request.getParameter("noOfDays");
String qCustAcctId=request.getParameter("qCustAcctId");
logi.oracle.apps.ibe.util.LogiDAOImpl daoimpl=new logi.oracle.apps.ibe.util.LogiDAOImpl();
String decideTab=request.getParameter("decideTab");
String startDate=request.getParameter("startDate");
String endDate=request.getParameter("endDate");
String queryCondition=request.getParameter("queryCondition");
String queryOperator=request.getParameter("queryOperator");
String queryValue=request.getParameter("queryValue");
String queryDateValue=request.getParameter("queryDate");
System.out.println("queryDateValue"+queryDateValue);
%>
<table cellspacing="1" cellpadding="1" width="100%" border="0" class="OraBGAccentDark">
<tr>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_ORD_NUM")%></th>
<th>Customer Name</th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_ORD_DATE")%></th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_BOOKED_DATE")%></th>
<th>Request Date</th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_ORD_STATUS")%></th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_ORD_PO")%></th>
<th>Currency</th>
<th>Payment Terms</th> <th>Freight Terms</th>
<th>FOB</th>
<th>Sales Channel</th>
<th>Ship to Location</th>
<th>Bill to Location</th>
<th>SalesTerritory Country</th>
<th>Order Type</th>
<th>Order Total</th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_LINE_NUM")%></th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_ITEM")%></th>
<th>Customer SKU</th>
<th>Description</th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_QTY")%></th>
<th>Shipped Quantity</th>
<th>ScheduleShip Date</th>
<th>Unit Price</th>
<th>Extented Amount</th>
<th>Taxes Total</th>
<th>Freight Charges</th>
<th>Case pack charge</th>
<th>Charges Total</th>
<th><%=AOLMessageManager.getMessageSt("IBE","IBE_LGT_LINE_STATUS")%></th>
<th>Ship Date</th>
<th>Warehouse</th>
<th>Tracking Number</th>
<th>Waybill Number</th>
<th>Delivery Number</th>
<th>Pro Number</th>
<th>Hold Applied</th>
<th>Pallet Qty</th>
<th>Pallet#</th>
<th>Invoice Number</th>
<th>Promo Number</th>
<th>Ship Method</th>
</tr>
<%
int pSiteid=0;
java.math.BigDecimal mSiteId=oracle.apps.ibe.util.RequestCtx.getMinisiteId();
if(mSiteId!=null)
pSiteid=mSiteId.intValue();
out.println("pSiteid"+pSiteid);
if(decideTab!=null && decideTab.trim().equalsIgnoreCase("days"))
if(qCustAcctId!=null)
ls=daoimpl.downOrderDetails(qCustAcctId,noofDays,pSiteid);
else if(decideTab!=null && decideTab.trim().equalsIgnoreCase("dates"))
if(qCustAcctId!=null)
ls=daoimpl.downOrderDateDetails(qCustAcctId,queryDateValue,startDate,endDate);
else if(decideTab!=null && decideTab.trim().equalsIgnoreCase("condition"))
if(qCustAcctId!=null)
ls=daoimpl.downOrderConditionDetails(qCustAcctId,queryCondition,queryOperator,queryValue);
for(int i=0;i<ls.size();i++)
orderDetailsBean=(logi.oracle.apps.ibe.util.LogiOrderDetailsBean)ls.get(i);
String orderNumber= orderDetailsBean.getOrderNumber(); //Order Number
if(orderNumber==null)orderNumber="";
String customerName=orderDetailsBean.getCustomerName(); //Customer Name
if(customerName==null)customerName="";
String orderedDate=orderDetailsBean.getOrderDate(); //Order Date
if(orderedDate==null)orderedDate="";
String bookeddate= orderDetailsBean.getBookedDate(); //Booked Date
if(bookeddate==null)bookeddate="";
String requestdate= orderDetailsBean.getRequestDate(); //Requested Date
if(requestdate==null)requestdate="";
String orderstatus= orderDetailsBean.getOrderStatus(); //Order Status
if(orderstatus==null)orderstatus="";
String ponumber= orderDetailsBean.getPoNumber(); //PO Number
if(ponumber==null)ponumber="";
String currency=orderDetailsBean.getCurrencyCode(); //Currency
if(currency==null)currency="";
String paymentterms= orderDetailsBean.getPaymentTerms(); //Payment Terms
if(paymentterms==null)paymentterms="";
String frieghtterms=orderDetailsBean.getFreightTerms(); //Freight Terms
if(frieghtterms==null)frieghtterms="";
String fobterms=orderDetailsBean.getFobTerms(); //Fob Terms
if(fobterms==null)fobterms="";
String saleschannel=orderDetailsBean.getSalesTerms(); //Sales Channel
if(saleschannel==null)saleschannel="";
String billtoloc=orderDetailsBean.getBillToLocation(); // Bill to Location
if(billtoloc==null)billtoloc="";
String shiptoloc=orderDetailsBean.getShipToLocation(); //Ship To Location
if(shiptoloc==null)shiptoloc="";
String salesterr=orderDetailsBean.getSalesCountry(); // Sales Territory
if(salesterr==null)salesterr="";
String ordertype=orderDetailsBean.getOrderType(); // Order Type
if(ordertype==null)ordertype="";
String ordertotal=orderDetailsBean.getOrderTotal(); //Order Total
if(ordertotal==null)ordertotal="";
String linenumber=orderDetailsBean.getLinenumber(); //Line Number
if(linenumber==null)linenumber="";
String item= orderDetailsBean.getItem(); //Item Name
if(item==null)item="";
String sku= orderDetailsBean.getCustomerSKU(); // Customer SKU
if(sku==null)sku="";
String desc= orderDetailsBean.getDescription(); //Item Description
if(desc==null)desc="";
desc = URLEncoder.encode(desc); // Added by Sunil
desc = URLDecoder.decode(desc);
String qty=orderDetailsBean.getQty(); //Ordered Quantity
if(qty==null)qty="";
String shippedqty=orderDetailsBean.getShippedQty(); //Shipped Quantity
if(shippedqty==null)shippedqty="";
String scheduleqty=orderDetailsBean.getScheduleDate(); //Schedule Date
if(scheduleqty==null)scheduleqty="";
String unitprice=orderDetailsBean.getUnitPrice(); //Unit Price
if(unitprice==null)unitprice="";
String xamount=orderDetailsBean.getXAmount(); //Extended Amount
if(xamount==null)xamount="";
String taxestotal=orderDetailsBean.getTaxesTotal(); //Taxes Total
if(taxestotal==null)taxestotal="";
String freightcharges=orderDetailsBean.getFreightCharges();//Freight Charges
if(freightcharges==null)freightcharges="";
String palletcharges=orderDetailsBean.getPalletSurcharge(); //Pallet Charges
if(palletcharges==null)palletcharges="";
String chargestotal=orderDetailsBean.getChargesTotal(); //Charges Total
if(chargestotal==null)chargestotal="";
String linestatus=orderDetailsBean.getLinestatus(); //Line Status
if(linestatus==null)linestatus="";
String shipdate=orderDetailsBean.getShipDate(); //Ship Date
if(shipdate==null)shipdate="";
String warehouse=orderDetailsBean.getWareHouse(); //Ware House
if(warehouse==null)warehouse="";
String trackingnumber=orderDetailsBean.getTrackingNumber();//Tracking Number
if(trackingnumber==null)trackingnumber="";
String waybill=orderDetailsBean.getWayBillnumber(); //Waybill Number
if(waybill==null)waybill="";
String deliverynumber=orderDetailsBean.getDeliveryNumber(); //Delivery Number
if(deliverynumber==null)deliverynumber="";
String pronumber=orderDetailsBean.getProNumber(); //Pro Number
if(pronumber==null)pronumber="";
String holdapplied=orderDetailsBean.getHoldApplied(); //Hold Applied
if(holdapplied==null)holdapplied="";
String palletqty=orderDetailsBean.getPalletQty(); //Pallet Qty
if(palletqty==null)palletqty="";
String pallethash=orderDetailsBean.getPalletHash(); //Pallet Hash
if(pallethash==null)pallethash="";
String invoicenumber=orderDetailsBean.getInvoiceNumber(); //invoice Number
if(invoicenumber==null)invoicenumber="";
String promonumber=orderDetailsBean.getPromoNumber(); //Promonumber
if(promonumber==null)promonumber="";
String shipmethod=orderDetailsBean.getShipMethod(); //Promonumber
if(shipmethod==null)shipmethod="";
%>
<tr>
<td><%=orderNumber%></td>
<td><%=customerName%></td>
<td><%=orderedDate%></td>
<td><%=bookeddate%></td>
<td><%=requestdate%></td>
<td><%=orderstatus%></td>
<td><%=ponumber%></td>
<td><%=currency%></td>
<td><%=paymentterms%></td>
<td><%=frieghtterms%></td>
<td><%=fobterms%></td>
<td><%=saleschannel%></td>
<td><%=billtoloc%></td>
<td><%=shiptoloc%></td>
<td><%=salesterr%></td>
<td><%=ordertype%></td>
<td><%=ordertotal%></td>
<td><%=linenumber%></td>
<td><%=item%></td>
<td><%=sku%></td>
<td><%= desc %></td>
<td><%=qty%></td>
<td><%=shippedqty%></td>
<td><%=scheduleqty%></td>
<td><%=unitprice%></td>
<td><%=xamount%></td>
<td><%=taxestotal%></td>
<td><%=freightcharges%></td>
<td><%=palletcharges%></td>
<td><%=chargestotal%></td>
<td><%=linestatus%></td>
<td><%=shipdate%></td>
<td><%=warehouse%></td>
<td><%=trackingnumber%></td>
<td><%=waybill%></td>
<td><%=deliverynumber%></td>
<td><%=pronumber%></td>
<td><%=holdapplied%></td>
<td><%=palletqty%></td>
<td><%=pallethash%></td>
<td><%=invoicenumber%></td>
<td><%=promonumber%></td>
<td><%=shipmethod%></td>
</tr>
<% }
%>
</table>
</body>
</html>
Please suggest the needful...
Praveen Reddy -
How to download internal table to excel sheet
I have a requirement to download nearly 8 to 10 internal tables to excel sheets(for each internal table one excel sheet) without displaying the diolog box showing open and save buttons.
scenario :
I will enter the path name like this - C:\myfolder\Custom_programs.xls.
C:\myfolder\Custom_tables.xls.
(File name does not exit..it has to created inside the
specified folder)
in submit button I populate 2 internal tables say it1 and it2. then I need to move the tables contents to the path I have specified above.
attach_file_to_response method is not working for the above reqt since it is showing the dialog box.
Please provide a suitable solution...Please ignore all the responders that are stating that you can use GUI_DOWNLOAD from Web Dynpro ABAP. As you found out, this absolutely will not work, since this function module and other download logic like it depends upon a connection to the SAPGUI. People posting to use the GUI_DOWNLOAD from WDA need to learn a little more about the architecture of WDA before they go posting incorrect repsonses in the forum. I have little tollerance for people posting outright incorrect information in the WDA Forum.
What you want to do - download silent - is not easily done from WDA. There are rules about how web applications must behave in a browser. Normal HTML/JavaScript does not allow silent downloads for security reasons. Obviously there are many untrustworthy websites on the internet that you wouldn't want to allow to directly access your local machine. WDA must live within these same browser limitations.
SAP has done some work using a Java Applet to get around some of these security issues. This funcitonality comes in NetWeaver 7.01. It is the AcfUpDownload UI element:
http://help.sap.com/saphelp_nw70ehp1/helpdata/en/47/b9157c878a2d67e10000000a42189c/frameset.htm
However it is designer for usage with the Content or KPro server - so even it might not meet your needs. -
Data transfer from sap r/3 into excel sheet for mi01
hi gurus,
as i am a xi consultant i got requirement to write a program for data transfer from sap r/3 into excel sheet for MI01.can any body help me by giving sample code or example for this requirement.please help me.Hi Rohit,
This is an upload program and it has used both function modules to upload from an excel to R3 and to download from R3 onto excel.
GUI_UPLOAD
GUI_DOWNLOAD
are the function modules used.
Hope this helps,
*Output: Downloads error records onto presentation server,
* Displays report with number of success and error records
REPORT ZMCG047CONTR NO STANDARD PAGE HEADING
LINE-SIZE 255
MESSAGE-ID ZM.
*& Table declarations
TABLES : T001W, "Plants/Branches
T024E, "Purchasing Organizations
T001. "Company Codes
* TYPE-POOLS DECLARATION
TYPE-POOLS : SLIS.
* Types Declaration *
TYPES: BEGIN OF T_RECORD, "record storing contract info
LIFNR(010), "Vendor Number
EVART(004), "Agreement Type
EKORG(004), "Purchasing Organization
EKGRP(003), "Purchasing Group
WERKS(004), "Plant
LGORT(004), "Storage Location
KDATB(010), "Valid start Date
KDATE(010), "Valid End Date
ZTERM(004), "Payment Terms
KTWRT(020), "Target Value
EPSTP(001), "Item Category
EMATN(018), "Material Number
KTMNG(017), "Target Quantity
NETPR(014), "Net Price
PEINH(006), "Net Price Unit
BPRME(003), "Net Price Order Price Unit
IDNLF(035), "Vendor Material number
WEBRE(001), "GR Based-IV
MEPRF(001), "Pricing Date Category
LTEX1(040), "Info Text
DATAB(010), "Valid From
DATBI(010), "Valid To
KSCHL(004), "Condition Type
KBETR(016), "Condition Rate if scale is not given
KONWA(005), "Currency
KPEIN(005), "Condition Pricing Unit
KMEIN(003), "Condition Unit of Measure
KSTBM(019), "Scale
KBETR_01(016), "Scale Rate
DEL_FLAG, "Delete Flag Indicator
ERR_MSG(100), "Error Message
END OF T_RECORD,
BEGIN OF T_ERR_RECORD, "to have error records stored
LIFNR(010), "Vendor Number
EVART(004), "Agreement Type
EKORG(004), "Purchasing Organization
EKGRP(003), "Purchasing Group
WERKS(004), "Plant
LGORT(004), "Storage Location
KDATB(010), "Valid start Date
KDATE(010), "Valid End Date
ZTERM(004), "Payment Terms
KTWRT(020), "Target Value
EPSTP(001), "Item Category
EMATN(018), "Material Number
KTMNG(017), "Target Quantity
NETPR(014), "Net Price
PEINH(006), "Net Price Unit
BPRME(003), "Net Price Order Price Unit
IDNLF(035), "Vendor Material number
WEBRE(001), "GR Based-IV
MEPRF(001), "Pricing Date Category
LTEX1(040), "Info Text
DATAB(010), "Valid From
DATBI(010), "Valid To
KSCHL(004), "Condition Type
KBETR(016), "Condition Rate if scale is not given
KONWA(005), "Currency
KPEIN(005), "Condition Pricing Unit
KMEIN(003), "Condition Unit of Measure
KSTBM(019), "Scale
KBETR_01(016), "Scale Rate
DEL_FLAG, "Delete Flag Indicator
ERR_MSG(100), "Error Message
END OF T_ERR_RECORD,
BEGIN OF T_LOEKZ, "To have deletion indicators for materials
LOEKZ(001), "Deletion indicator in purchasing document
EMATN(018), "Material Number
WERKS(004), "Plant
LGORT(004), "Storage Location
BSTYP(001), "Purchasing document category
END OF T_LOEKZ,
BEGIN OF T_MATNR, " Type definition to store details of materials
MATNR(018), "Material Number
END OF T_MATNR,
BEGIN OF T_T001, " Type definition for company codes
BUKRS(004), " Company Code
END OF T_T001,
BEGIN OF T_ZMVXREF, "Cross-Reference table type
D_ALTKN(10), "Legacy Vendor Number
D_BUKRS(4), "Legacy Company Code
M_ALTKN(10), "SAP Company Code
END OF T_ZMVXREF,
BEGIN OF T_LFA1, "Master data of vendors
LIFNR(10), "Vendor Number
END OF T_LFA1,
* Type Declaration for T024E (Company Codes)
BEGIN OF T_T024E,
EKORG LIKE T024E-EKORG, "Purchasing organization
BUKRS LIKE T024E-BUKRS, "Company Code
END OF T_T024E,
* Type Declaration for t001w (Plant)
BEGIN OF T_T001W,
WERKS LIKE T001W-WERKS, "Plant
END OF T_T001W,
* Type Declatation for String Line
BEGIN OF T_STR1, "#EC NEEDED
SLINE(6000) TYPE C,
END OF T_STR1.
TYPES: BEGIN OF T_BDCDATA. "BDC Data
INCLUDE STRUCTURE BDCDATA.
TYPES: END OF T_BDCDATA.
* Internal Tables Declaration *
DATA:
* Internal table to store input file data
I_RECORD TYPE STANDARD TABLE OF T_RECORD INITIAL SIZE 0,
* Internal table to capture errors
I_ERR_REC TYPE STANDARD TABLE OF T_ERR_RECORD INITIAL SIZE 0,
* Internal table to check for deletion indicators
I_LOEKZ TYPE STANDARD TABLE OF T_LOEKZ INITIAL SIZE 0,
* Internal table to check for material numbers
I_MATNR TYPE STANDARD TABLE OF T_MATNR INITIAL SIZE 0,
* Internal table used for storing Cross-Reference data of Vendor
I_ZMVXREF TYPE STANDARD TABLE OF T_ZMVXREF INITIAL SIZE 0,
* Internal table for holding Vendor Numbers from Master table
I_LFA1 TYPE STANDARD TABLE OF T_LFA1 INITIAL SIZE 0,
* Internal table for holding Purchase Org and Company Codes
I_T024E TYPE STANDARD TABLE OF T_T024E INITIAL SIZE 0,
* Internal table for holding Plants
I_T001W TYPE STANDARD TABLE OF T_T001W INITIAL SIZE 0,
* Internal table for storing a list of Company Codes
I_T001 TYPE STANDARD TABLE OF T_T001 INITIAL SIZE 0,
* Internal table used for ALV Reporting
I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
* Internal table used for holding List Header
I_LISTHEADER TYPE SLIS_T_LISTHEADER, "EC NEEDED
* Internal table to hold ALV Event
I_ALV_EVENT TYPE SLIS_T_EVENT,
* Internal table to hold Sort Info for ALV Report
I_SORT TYPE SLIS_T_SORTINFO_ALV,
* Internal table for BDC Data
I_BDCDATA TYPE STANDARD TABLE OF T_BDCDATA INITIAL SIZE 0,
* Internal table for messages
I_MESSTAB TYPE TABLE OF BDCMSGCOLL,
* Internal table for String line
I_STR1 TYPE STANDARD TABLE OF T_STR1 INITIAL SIZE 0.
* Work Area Declaration *
DATA:
* Work Area to hold data for the Open Contract
WA_RECORD TYPE T_RECORD,
* Work Area to hold previous record data
WA_RECORDPREV TYPE T_RECORD,
* Work Area to hold errors
WA_ERR_REC TYPE T_ERR_RECORD,
* Work Area to hold the Deletion Indicator of materials
WA_LOEKZ TYPE T_LOEKZ,
* Work Area to hold Material numbers of required materials
WA_MATNR TYPE T_MATNR, "EC NEEDED
* Work Area to hold errors occured while performing BDC
WA_MESSTAB TYPE BDCMSGCOLL,
* Work Area to hold field catalog for ALV Reports
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
* Work Area to hold list header data for ALV reports
WA_LISTHEADER TYPE SLIS_LISTHEADER,
* Work Area to hold ALV Event
WA_ALV_EVENT LIKE LINE OF I_ALV_EVENT, "EC NEEDED
* Work Area to hold Layout of ALV Report
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
* Work Area to hold Cross-Reference data of Vendor
WA_ZMVXREF TYPE T_ZMVXREF,
* Work Area to hold Vendor Numbers from Master table
WA_LFA1 TYPE T_LFA1, "EC NEEDED
* Work Area to hold Purchase Org and Company Codes
WA_T024E TYPE T_T024E,
* Work Area to hold Company Codes
WA_T001 TYPE T_T001,
* Work Area to hold Plants
WA_T001W TYPE T_T001W,
* Work Area to hold Sort Info for ALV Report
WA_SORT TYPE SLIS_SORTINFO_ALV,
* Work Area to hold BDC Data
WA_BDCDATA TYPE T_BDCDATA,
* Work Area for String line
WA_STR1 TYPE T_STR1.
* Variables Declaration *
DATA: V_ERRMSG(500), "To temporarily store the error message
V_CONV_DATE(10) TYPE C, "To capture the converted date format
V_DATE LIKE SY-DATUM,
V_REPID LIKE SY-REPID, "holds report id
V_CROSS_REFERENCE_ERROR TYPE I, " cross-reference error
V_INPUTERROR_FLAG VALUE '', " input error status
V_FILENAME TYPE STRING, " File Name
VEN_FLAG(1), " at new status
MAT_FLAG(1), " at new status
V_IND(2) TYPE N, " index of table control
V_IND2(2) TYPE N, " index of table control
V_IND3(2) TYPE N, " index of table control
V_EVRTP1(20),
V_EPSTP1(20),
V_EMATN1(20),
V_KTMNG1(20),
V_NETPR1(20),
V_PEINH1(20),
V_BPRME1(20),
V_TCSELFLAG1(20),
V_KSCHL2(20),
V_KBETR2(20),
V_KONWA2(20),
V_KPEIN2(20),
V_KMEIN2(20),
V_SELKZ2(20),
V_KBETR3(20),
V_KSTBM3(20),
V_LINE TYPE I,
V_STR TYPE X VALUE '09',
V_EXIST TYPE C,
V_EXIST1 TYPE C,
V_ISDIR TYPE C,
V_ISDIR1 TYPE C.
* Constants Declaration *
CONSTANTS: C_TCODE(5) VALUE 'ME31K', "Trx code - Open Contract Creation
C_TRUE VALUE 'X', " Del_Flag indicator
C_LOEKZ_MARKED VALUE 'X', "Deletion indicator for material
C_INPUTERROR_FLAG_YES VALUE 'X', "Input File Indicator
C_VEN_ERR1 VALUE 1, "Error Indicator
C_16(2) VALUE '16',
C_VEN_ERR2 VALUE 2, "Error Indicator
C_VEN_ERR3 VALUE 3, "Error Indicator
C_VEN_SUCS VALUE 0, "Success Indicator
C_SUCCESS LIKE SY-SUBRC VALUE '0',
C_STRUE VALUE 'S', "Del_flag for SAP Errors
C_YTRUE VALUE 'Y', "Del_flag for Success Records
C_MSGTYP_E VALUE 'E', "holds error message type
C_MSGTYP_S VALUE 'S', "holds success message type
C_BSTYP VALUE 'K', "Purchasing Document type is Contract
C_BACKGROUND VALUE 'N', "Background mode
C_FOREGROUND VALUE 'A', "All Screen mode
C_ERRORS VALUE 'E', "Error screen mode
C_WK(2) VALUE 'WK'. "Value Contract
* Selection Screen *
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-033.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS:
* Plant
S_WERKS FOR T001W-WERKS OBLIGATORY,
* Purchase Organization
S_EKORG FOR T024E-EKORG OBLIGATORY.
* Company Code
PARAMETER P_BUKRS LIKE T001-BUKRS OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 3.
PARAMETER RB_SERVE RADIOBUTTON GROUP RBX DEFAULT 'X' USER-COMMAND U1.
SELECTION-SCREEN COMMENT 6(19) TEXT-036.
SELECTION-SCREEN POSITION 37.
PARAMETER RB_LOCAL RADIOBUTTON GROUP RBX.
SELECTION-SCREEN COMMENT 40(13) TEXT-035.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
PARAMETERS:
* Parameter holding Input File name
P_FILE LIKE RLGRAP-FILENAME
OBLIGATORY
LOWER CASE
DEFAULT 'C:\'
MODIF ID G1,
P_FILE1 LIKE RLGRAP-FILENAME
OBLIGATORY
LOWER CASE
DEFAULT '/celestica/interface/corp/in/work/'
MODIF ID G2,
* Parameter specifying Mode of calling the Transaction.
P_MODE DEFAULT 'N' OBLIGATORY,
* Check box used to test the input file.
P_TEST AS CHECKBOX DEFAULT 'X',
* Parameter holding Filename for holding Input File Errors
P_IPERR LIKE RLGRAP-FILENAME
OBLIGATORY
LOWER CASE
DEFAULT 'C:\'
MODIF ID G1,
P_IPERR1 LIKE RLGRAP-FILENAME
OBLIGATORY
LOWER CASE
DEFAULT '/celestica/interface/corp/in/work/047_Err.txt'
MODIF ID G2.
SELECTION-SCREEN END OF BLOCK B2.
* AT Selection Screen Events *
* Loop the screen to activate relative paths
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF RB_SERVE = C_TRUE AND SCREEN-GROUP1 = 'G1'.
SCREEN-OUTPUT = 0.
SCREEN-ACTIVE = 0.
SCREEN-INPUT = 0.
ELSEIF RB_LOCAL = C_TRUE AND SCREEN-GROUP1 = 'G2'.
SCREEN-OUTPUT = 0.
SCREEN-ACTIVE = 0.
SCREEN-INPUT = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN ON BLOCK B2.
* Checking Access Authorization for the user
CALL FUNCTION 'ZU_DATA_ACCESS_AUTH_CHECK'
EXPORTING
ACTVT = C_16
P_BUKRS = P_BUKRS
TABLES
S_WERKS = S_WERKS
S_EKORG = S_EKORG
EXCEPTIONS
BUKRS_FAILED = 1
VKORG_FAILED = 2
VTWEG_FAILED = 3
EKORG_FAILED = 4
WERKS_FAILED = 5
LGNUM_FAILED = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
AT SELECTION-SCREEN ON P_BUKRS.
IF NOT P_BUKRS IS INITIAL.
SELECT SINGLE BUKRS INTO T001
FROM T001
WHERE BUKRS EQ P_BUKRS.
IF SY-SUBRC NE 0.
MESSAGE I000 WITH TEXT-089.
STOP.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
* Search Help to select Input File path.
PERFORM GET_FILE_NAME USING P_FILE.
* Check for the existence of the file.
IF RB_LOCAL EQ C_TRUE.
CALL FUNCTION 'TMP_GUI_GET_FILE_EXIST'
EXPORTING
FNAME = P_FILE
IMPORTING
EXIST = V_EXIST
ISDIR = V_ISDIR
EXCEPTIONS
FILEINFO_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF V_ISDIR IS INITIAL.
IF V_EXIST IS INITIAL.
MESSAGE I000 WITH TEXT-018.
STOP.
ENDIF.
ELSEIF V_ISDIR EQ C_TRUE.
MESSAGE I000 WITH TEXT-068.
STOP.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IPERR.
* Search Help to select Input Error File path.
PERFORM GET_FILE_NAME USING P_IPERR.
AT SELECTION-SCREEN.
* Validate Transaction Mode
IF P_MODE <> C_BACKGROUND AND
P_MODE <> C_FOREGROUND AND
P_MODE <> C_ERRORS.
MESSAGE I000 WITH TEXT-034.
STOP.
ENDIF.
START-OF-SELECTION.
* Get the Input File Data
V_FILENAME = P_FILE.
PERFORM UPLOAD_FLATFILE_DATA TABLES I_RECORD
USING V_FILENAME.
* Sorting the data by all fields
SORT I_RECORD.
* Ensuring the padding of the empty spaces before the vendor No
CLEAR WA_RECORD.
LOOP AT I_RECORD INTO WA_RECORD.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_RECORD-LIFNR
IMPORTING
OUTPUT = WA_RECORD-LIFNR.
MODIFY I_RECORD FROM WA_RECORD
INDEX SY-TABIX
TRANSPORTING LIFNR.
CLEAR WA_RECORD.
ENDLOOP.
* Input file validation
PERFORM VALIDATE_FLATFILE_DATA.
IF P_TEST = C_TRUE.
IF I_ERR_REC[] IS INITIAL.
MESSAGE I000 WITH TEXT-032.
STOP.
ELSE.
* Display all the error records at the input level.
PERFORM DISPLAY_INPERR_RECORDS.
* Download Error File
PERFORM DOWNLOAD_ERROR_FILE.
ENDIF.
ELSE.
* Build BDC Data
PERFORM BUILD_BDC_DATA.
* Download Error File
PERFORM DOWNLOAD_ERROR_FILE.
* Display the status report.
PERFORM DISPLAY_PROCESSED_RECORDS.
ENDIF.
END-OF-SELECTION.
REFRESH: I_RECORD,
I_ERR_REC,
I_LOEKZ,
I_MATNR,
I_ZMVXREF,
I_LFA1,
I_T024E,
I_FIELDCAT,
I_LISTHEADER,
I_ALV_EVENT,
I_SORT,
I_BDCDATA,
I_MESSTAB,
I_STR1.
FREE: I_RECORD,
I_ERR_REC,
I_LOEKZ,
I_MATNR,
I_ZMVXREF,
I_LFA1,
I_T024E,
I_FIELDCAT,
I_LISTHEADER,
I_ALV_EVENT,
I_SORT,
I_BDCDATA,
I_MESSTAB,
I_STR1.
*& Form GET_file_name
* Fetches the file and path from the presentation system
* --> p1 Path along with the file name
FORM GET_FILE_NAME USING L_FILE LIKE RLGRAP-FILENAME.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',*.TXT,*.txt.'
MODE = 'O'
TITLE = TEXT-011
IMPORTING
FILENAME = L_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
CASE SY-SUBRC.
WHEN 1.
MESSAGE I000 WITH TEXT-084.
STOP.
WHEN 2.
MESSAGE I000 WITH TEXT-085.
STOP.
WHEN 3.
MESSAGE I000 WITH TEXT-086.
STOP.
WHEN 4.
MESSAGE I000 WITH TEXT-087.
STOP.
ENDCASE.
ENDFORM. " GET_file_name
*& Form upload_flatfile_data
* Uploading data from Flat File
FORM UPLOAD_FLATFILE_DATA
TABLES I_L_RECORD STRUCTURE WA_RECORD
USING L_FILENAME TYPE STRING.
DATA WA_L_RECORD TYPE T_RECORD.
* Upload the Flat file data
IF RB_LOCAL EQ C_TRUE. "File is on the Local System
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_FILENAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = I_L_RECORD
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.
CASE SY-SUBRC.
WHEN 0.
DESCRIBE TABLE I_L_RECORD LINES V_LINE.
IF V_LINE EQ 0.
MESSAGE I000 WITH TEXT-065.
STOP.
ENDIF.
WHEN 1.
MESSAGE I000 WITH TEXT-068.
STOP.
WHEN 2.
MESSAGE I000 WITH TEXT-069.
STOP.
WHEN 3.
MESSAGE I000 WITH TEXT-070.
STOP.
WHEN 4.
MESSAGE I000 WITH TEXT-071.
STOP.
WHEN 5.
MESSAGE I000 WITH TEXT-072.
STOP.
WHEN 6.
MESSAGE I000 WITH TEXT-073.
STOP.
WHEN 7.
MESSAGE I000 WITH TEXT-074.
STOP.
WHEN 8.
MESSAGE I000 WITH TEXT-075.
STOP.
WHEN 9.
MESSAGE I000 WITH TEXT-076.
STOP.
WHEN 10.
MESSAGE I000 WITH TEXT-077.
STOP.
WHEN 11.
MESSAGE I000 WITH TEXT-078.
STOP.
WHEN 12.
MESSAGE I000 WITH TEXT-079.
STOP.
WHEN 13.
MESSAGE I000 WITH TEXT-080.
STOP.
WHEN 14.
MESSAGE I000 WITH TEXT-081.
STOP.
WHEN 15.
MESSAGE I000 WITH TEXT-082.
STOP.
WHEN 16.
MESSAGE I000 WITH TEXT-083.
STOP.
ENDCASE.
CLEAR V_LINE.
ELSEIF RB_SERVE EQ C_TRUE. "File is on the Application Server
P_MODE = C_BACKGROUND.
OPEN DATASET P_FILE1 FOR INPUT IN TEXT MODE.
CHECK SY-SUBRC EQ C_SUCCESS.
CLEAR WA_STR1.
DO.
READ DATASET P_FILE1 INTO WA_STR1.
IF SY-SUBRC <> 0. " NE SUCCESS.
EXIT.
ELSEIF SY-SUBRC EQ C_SUCCESS.
APPEND WA_STR1 TO I_STR1.
CLEAR WA_STR1.
ENDIF. " ENDIF on SY-SUBRC 0 Check.
ENDDO. " ENDDO
DELETE I_STR1 WHERE SLINE EQ ' '.
DESCRIBE TABLE I_STR1 LINES V_LINE.
IF V_LINE EQ 0.
MESSAGE S000 WITH TEXT-065.
STOP.
ENDIF.
LOOP AT I_STR1 INTO WA_STR1.
CLEAR: WA_L_RECORD.
SPLIT WA_STR1-SLINE AT V_STR
INTO WA_L_RECORD-LIFNR
WA_L_RECORD-EVART
WA_L_RECORD-EKORG
WA_L_RECORD-EKGRP
WA_L_RECORD-WERKS
WA_L_RECORD-LGORT
WA_L_RECORD-KDATB
WA_L_RECORD-KDATE
WA_L_RECORD-ZTERM
WA_L_RECORD-KTWRT
WA_L_RECORD-EPSTP
WA_L_RECORD-EMATN
WA_L_RECORD-KTMNG
WA_L_RECORD-NETPR
WA_L_RECORD-PEINH
WA_L_RECORD-BPRME
WA_L_RECORD-IDNLF
WA_L_RECORD-WEBRE
WA_L_RECORD-MEPRF
WA_L_RECORD-LTEX1
WA_L_RECORD-DATAB
WA_L_RECORD-DATBI
WA_L_RECORD-KSCHL
WA_L_RECORD-KBETR
WA_L_RECORD-KONWA
WA_L_RECORD-KPEIN
WA_L_RECORD-KMEIN
WA_L_RECORD-KSTBM
WA_L_RECORD-KBETR_01
WA_L_RECORD-DEL_FLAG
WA_L_RECORD-ERR_MSG.
APPEND WA_L_RECORD TO I_L_RECORD.
CLEAR: WA_L_RECORD,
WA_STR1.
ENDLOOP.
REFRESH I_STR1.
CLOSE DATASET P_FILE1.
ENDIF.
ENDFORM.
*& Form BDC_DYNPRO
* Data populated into i_bdcdata table for program
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = C_TRUE.
APPEND WA_BDCDATA TO I_BDCDATA.
ENDFORM.
*& Form BDC_FIELD
* Data populated into i_bdcdata table for fields
FORM BDC_FIELD USING FNAM FVAL.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO I_BDCDATA.
ENDFORM.
*& Form convert_date
* Converting the data from the file format to mm/dd/yyyy format
* <--P_wa_record_kdatb Source Date
* <--p_l_conv_date Target Date
FORM CONVERT_DATE USING L_DATE
L_TAR_DATE.
CONCATENATE L_DATE+0(2)
L_DATE+3(2)
L_DATE+6(4)
INTO L_TAR_DATE.
ENDFORM. " convert_date
*& Form validate_flatfile_data
* Validating the input file
FORM VALIDATE_FLATFILE_DATA.
DATA: L_TODAY LIKE SY-DATUM,
L_STARTDATE_C LIKE SY-DATUM,
L_ENDDATE_C LIKE SY-DATUM,
L_ENDDATE_C1 LIKE SY-DATUM,
L_STARTDATE_C1 LIKE SY-DATUM,
L_STARTDATE(8),
L_ENDDATE(8).
* Fetch indicator for all records on the material, plant & storage
* location combination.
IF NOT I_RECORD[] IS INITIAL.
REFRESH I_LOEKZ.
SELECT EMATN " Material Number
WERKS " Plant
LGORT " Storage Location
BSTYP " Purchasing Document Category
LOEKZ " Deletion indicator
INTO TABLE I_LOEKZ
FROM EKPO
FOR ALL ENTRIES IN I_RECORD
WHERE EMATN = I_RECORD-EMATN
AND WERKS = I_RECORD-WERKS
AND LGORT = I_RECORD-LGORT
AND BSTYP = C_BSTYP
AND LOEKZ = C_LOEKZ_MARKED.
IF SY-SUBRC EQ 0.
SORT I_LOEKZ BY EMATN WERKS LGORT BSTYP LOEKZ.
ENDIF.
* Fetching Plants for all entries in the selection screen
REFRESH I_T001W.
SELECT WERKS "Plant
INTO TABLE I_T001W
FROM T001W
WHERE WERKS IN S_WERKS.
IF SY-SUBRC EQ 0.
SORT I_T001W BY WERKS.
ENDIF.
* Fetching materials for the plants listed in flat file
REFRESH I_MATNR.
SELECT MATNR " Material Number
INTO TABLE I_MATNR
FROM MARC
FOR ALL ENTRIES IN I_RECORD
WHERE WERKS = I_RECORD-WERKS.
IF SY-SUBRC EQ 0.
SORT I_MATNR BY MATNR.
ENDIF.
* Fetching Company Codes for repective Purchase Organizations
REFRESH I_T024E.
SELECT EKORG " Purchase Organization
BUKRS " Company Code
INTO TABLE I_T024E
FROM T024E
WHERE EKORG IN S_EKORG.
IF SY-SUBRC EQ 0.
SORT I_T024E BY EKORG.
ENDIF.
* Fetching SAP Data using Legacy Data.
REFRESH I_ZMVXREF.
SELECT D_ALTKN
D_BUKRS
M_ALTKN
INTO TABLE I_ZMVXREF
FROM ZMVXREF
FOR ALL ENTRIES IN I_RECORD
WHERE D_ALTKN = I_RECORD-LIFNR.
IF SY-SUBRC EQ 0.
SORT I_ZMVXREF BY D_ALTKN D_BUKRS.
ENDIF.
* Fetching Vendors from LFA1
IF NOT I_ZMVXREF[] IS INITIAL.
REFRESH I_LFA1.
SELECT LIFNR
INTO TABLE I_LFA1
FROM LFA1
FOR ALL ENTRIES IN I_ZMVXREF
WHERE LIFNR = I_ZMVXREF-M_ALTKN.
IF SY-SUBRC EQ 0.
SORT I_LFA1 BY LIFNR.
ENDIF.
ENDIF.
* Start Validating the flat file
CLEAR: WA_RECORD,
WA_T024E,
WA_ZMVXREF,
WA_LFA1,
WA_LOEKZ,
WA_MATNR.
LOOP AT I_RECORD INTO WA_RECORD.
L_TODAY = SY-DATUM.
L_STARTDATE = WA_RECORD-KDATB.
L_ENDDATE = WA_RECORD-KDATE.
IF WA_RECORD-DEL_FLAG IS INITIAL.
READ TABLE I_T001W INTO WA_T001W
WITH KEY WERKS = WA_RECORD-WERKS
BINARY SEARCH.
IF SY-SUBRC EQ 0.
* Cross-Reference check performed for the given Vendors
READ TABLE I_T024E INTO WA_T024E
WITH KEY EKORG = WA_RECORD-EKORG
BINARY SEARCH.
IF SY-SUBRC NE 0.
V_CROSS_REFERENCE_ERROR = C_VEN_ERR3.
ELSE.
READ TABLE I_ZMVXREF INTO WA_ZMVXREF
WITH KEY D_ALTKN = WA_RECORD-LIFNR
D_BUKRS = P_BUKRS
BINARY SEARCH.
IF SY-SUBRC EQ 0.
READ TABLE I_LFA1 INTO WA_LFA1
WITH KEY LIFNR = WA_ZMVXREF-M_ALTKN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
V_CROSS_REFERENCE_ERROR = C_VEN_SUCS.
ELSE.
V_CROSS_REFERENCE_ERROR = C_VEN_ERR2.
ENDIF.
ELSE.
V_CROSS_REFERENCE_ERROR = C_VEN_ERR1.
ENDIF.
ENDIF.
* Legacy Vendor could not be mapped
IF V_CROSS_REFERENCE_ERROR EQ C_VEN_ERR1.
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES. "Inp.file err. occurd
WA_RECORD-DEL_FLAG = C_TRUE.
WA_RECORD-ERR_MSG = TEXT-007.
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR.
* Legacy Vendor is mapped but the obtained SAP vendor doesn't exist.
ELSEIF V_CROSS_REFERENCE_ERROR EQ C_VEN_ERR2.
* Inp.file err. occurd
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-DEL_FLAG = C_TRUE.
WA_RECORD-ERR_MSG = TEXT-008.
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR.
* Purchase Organization doesn't exist in T024E.
ELSEIF V_CROSS_REFERENCE_ERROR EQ C_VEN_ERR3.
* Inp.file err. occurd
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-DEL_FLAG = C_TRUE.
WA_RECORD-ERR_MSG = TEXT-014.
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE EKORG = WA_RECORD-EKORG.
* Vendor is mapped and validated successfully
ELSEIF V_CROSS_REFERENCE_ERROR EQ C_VEN_SUCS.
* Checking for the deletion indicator for that record
CONCATENATE WA_RECORD-KDATB+6(4)
WA_RECORD-KDATB+3(2)
WA_RECORD-KDATB+0(2)
INTO
L_STARTDATE.
MOVE L_STARTDATE TO L_STARTDATE_C.
CONCATENATE WA_RECORD-KDATB+6(4)
WA_RECORD-KDATB+0(2)
WA_RECORD-KDATB+3(2)
INTO
L_STARTDATE_C1.
CONCATENATE WA_RECORD-KDATE+6(4)
WA_RECORD-KDATE+3(2)
WA_RECORD-KDATE+0(2)
INTO
L_ENDDATE.
MOVE L_ENDDATE TO L_ENDDATE_C.
CONCATENATE WA_RECORD-KDATE+6(4)
WA_RECORD-KDATE+0(2)
WA_RECORD-KDATE+3(2)
INTO
L_ENDDATE_C1.
READ TABLE I_LOEKZ INTO WA_LOEKZ WITH KEY
EMATN = WA_RECORD-EMATN
WERKS = WA_RECORD-WERKS
LGORT = WA_RECORD-LGORT
BINARY SEARCH.
IF SY-SUBRC EQ 0.
* Inpfle err.occured
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-ERR_MSG = TEXT-003.
WA_RECORD-DEL_FLAG = C_TRUE. "marking the record
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR
AND EVART = WA_RECORD-EVART
AND EKORG = WA_RECORD-EKORG
AND EKGRP = WA_RECORD-EKGRP
AND WERKS = WA_RECORD-WERKS
AND LGORT = WA_RECORD-LGORT
AND KDATB = WA_RECORD-KDATB
AND KDATE = WA_RECORD-KDATE
AND ZTERM = WA_RECORD-ZTERM
AND KTWRT = WA_RECORD-KTWRT
AND EPSTP = WA_RECORD-EPSTP
AND EMATN = WA_RECORD-EMATN.
* Validating the Purchasing Organization for Blank/Null
ELSEIF WA_RECORD-EKORG IS INITIAL.
* Inpfle err.occured
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-ERR_MSG = TEXT-010.
WA_RECORD-DEL_FLAG = C_TRUE.
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR
AND EVART = WA_RECORD-EVART
AND EKORG = WA_RECORD-EKORG
AND EKGRP = WA_RECORD-EKGRP
AND WERKS = WA_RECORD-WERKS
AND LGORT = WA_RECORD-LGORT
AND KDATB = WA_RECORD-KDATB
AND KDATE = WA_RECORD-KDATE
AND ZTERM = WA_RECORD-ZTERM
AND KTWRT = WA_RECORD-KTWRT
AND EPSTP = WA_RECORD-EPSTP
AND EMATN = WA_RECORD-EMATN.
* Validating the Plant for Blank/Null
ELSEIF WA_RECORD-WERKS IS INITIAL.
* Inpfle err.occured
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-ERR_MSG = TEXT-039.
WA_RECORD-DEL_FLAG = C_TRUE.
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR
AND EVART = WA_RECORD-EVART
AND EKORG = WA_RECORD-EKORG
AND EKGRP = WA_RECORD-EKGRP
AND WERKS = WA_RECORD-WERKS
AND LGORT = WA_RECORD-LGORT
AND KDATB = WA_RECORD-KDATB
AND KDATE = WA_RECORD-KDATE
AND ZTERM = WA_RECORD-ZTERM
AND KTWRT = WA_RECORD-KTWRT
AND EPSTP = WA_RECORD-EPSTP
AND EMATN = WA_RECORD-EMATN.
* Validating the Contract Validity Start Date
ELSEIF L_STARTDATE_C1 GT L_TODAY. "#EC PORTABLE
* Inpfle err.occured
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-ERR_MSG = TEXT-004.
WA_RECORD-DEL_FLAG = C_TRUE. "marking the record
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR
AND EVART = WA_RECORD-EVART
AND EKORG = WA_RECORD-EKORG
AND EKGRP = WA_RECORD-EKGRP
AND WERKS = WA_RECORD-WERKS
AND LGORT = WA_RECORD-LGORT
AND KDATB = WA_RECORD-KDATB.
* Validating the Contract Validity End Date
ELSEIF L_ENDDATE_C1 LE L_TODAY. "#EC PORTABLE
* Inpfle err.ocrd
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
WA_RECORD-ERR_MSG = TEXT-005.
WA_RECORD-DEL_FLAG = C_TRUE. "marking the record
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR
AND EVART = WA_RECORD-EVART
AND EKORG = WA_RECORD-EKORG
AND EKGRP = WA_RECORD-EKGRP
AND WERKS = WA_RECORD-WERKS
AND LGORT = WA_RECORD-LGORT
AND KDATB = WA_RECORD-KDATB
AND KDATE = WA_RECORD-KDATE.
* Checking for Material under the Plant for Agreement Type 'WK'
ELSEIF WA_RECORD-EVART = C_WK.
READ TABLE I_MATNR INTO WA_MATNR
WITH KEY MATNR = WA_RECORD-EMATN
BINARY SEARCH.
IF SY-SUBRC NE 0.
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES. "Inpfle err.ocrd
WA_RECORD-ERR_MSG = TEXT-006.
WA_RECORD-DEL_FLAG = C_TRUE. "marking the record
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE LIFNR = WA_RECORD-LIFNR
AND EVART = WA_RECORD-EVART
AND EKORG = WA_RECORD-EKORG
AND EKGRP = WA_RECORD-EKGRP
AND WERKS = WA_RECORD-WERKS
AND LGORT = WA_RECORD-LGORT
AND KDATB = WA_RECORD-KDATB
AND KDATE = WA_RECORD-KDATE
AND ZTERM = WA_RECORD-ZTERM
AND KTWRT = WA_RECORD-KTWRT
AND EPSTP = WA_RECORD-EPSTP
AND EMATN = WA_RECORD-EMATN.
ENDIF.
ENDIF. " checking of deletion indicator
ENDIF. " checking for success of vendor cross reference
ELSE.
V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES. "Inpfle err.ocrd
WA_RECORD-ERR_MSG = TEXT-041.
WA_RECORD-DEL_FLAG = C_TRUE. "marking the record
MODIFY I_RECORD FROM WA_RECORD
TRANSPORTING DEL_FLAG
ERR_MSG
WHERE WERKS = WA_RECORD-WERKS.
ENDIF. " Plant checked to selection screen
ENDIF. " the records for which del_flag is initial
CLEAR: WA_RECORD,
WA_T024E,
WA_ZMVXREF,
WA_LFA1,
WA_LOEKZ,
WA_MATNR,
L_TODAY,
L_STARTDATE_C,
L_ENDDATE_C,
L_STARTDATE,
L_ENDDATE.
ENDLOOP.
LOOP AT I_RECORD INTO WA_RECORD.
IF WA_RECORD-DEL_FLAG = C_TRUE.
APPEND WA_RECORD TO I_ERR_REC.
CLEAR WA_RECORD.
ENDIF.
ENDLOOP.
ELSE.
MESSAGE E000 WITH TEXT-013. " no records in the flat file
STOP.
ENDIF.
ENDFORM. " validate_flatfile_data
*& Form DOWNLOAD_ERROR_FILE
* Downloads all records along with the records encountering the
* input file validation error
FORM DOWNLOAD_ERROR_FILE.
DATA L_ISDIR TYPE C.
IF V_INPUTERROR_FLAG = C_INPUTERROR_FLAG_YES.
V_FILENAME = P_IPERR.
* Check for the existence of the file.
IF RB_LOCAL EQ C_TRUE.
CALL FUNCTION 'TMP_GUI_GET_FILE_EXIST'
EXPORTING
FNAME = P_IPERR
IMPORTING
ISDIR = L_ISDIR
EXCEPTIONS
FILEINFO_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF L_ISDIR EQ C_TRUE.
MESSAGE I000 WITH TEXT-088.
STOP.
ENDIF.
ENDIF.
IF RB_LOCAL EQ C_TRUE.
* Download the Input Error File.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_FILENAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = '#'
TABLES
DATA_TAB = I_ERR_REC
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSEIF RB_SERVE EQ C_TRUE.
OPEN DATASET P_IPERR1 FOR OUTPUT IN TEXT MODE.
CHECK SY-SUBRC EQ 0.
CLEAR WA_ERR_REC.
LOOP AT I_ERR_REC INTO WA_ERR_REC.
IF WA_ERR_REC-DEL_FLAG = C_TRUE.
TRANSFER WA_ERR_REC TO P_IPERR1.
ENDIF.
CLEAR WA_ERR_REC.
ENDLOOP.
CLOSE DATASET P_IPERR1.
ENDIF.
ENDIF.
ENDFORM. " DOWNLOAD_ERROR_FILE
*& Form BUILD_BDC_DATA
* Populates BDC for all the fields neccessary for Open Contract Creation
FORM BUILD_BDC_DATA.
DATA: L_MAT_INDEX TYPE I,
L_CON_INDEX TYPE I,
L_SCA_INDEX TYPE I.
CLEAR WA_BDCDATA.
REFRESH: I_BDCDATA,
I_MESSTAB.
* Processing the bdc
CLEAR: WA_RECORD,
WA_RECORDPREV,
VEN_FLAG,
MAT_FLAG.
LOOP AT I_RECORD INTO WA_RECORD.
* Checks for the del_flag of the record.
IF WA_RECORD-DEL_FLAG EQ C_TRUE
OR WA_RECORD-DEL_FLAG EQ C_STRUE.
CLEAR WA_RECORD.
CONTINUE.
ELSE.
IF WA_RECORDPREV-LIFNR NE WA_RECORD-LIFNR
OR WA_RECORDPREV-EVART NE WA_RECORD-EVART
OR WA_RECORDPREV-EKORG NE WA_RECORD-EKORG
OR WA_RECORDPREV-EKGRP NE WA_RECORD-EKGRP
OR WA_RECORDPREV-WERKS NE WA_RECORD-WERKS
OR WA_RECORDPREV-LGORT NE WA_RECORD-LGORT
OR WA_RECORDPREV-KDATB NE WA_RECORD-KDATB
OR WA_RECORDPREV-KDATE NE WA_RECORD-KDATE
OR WA_RECORDPREV-ZTERM NE WA_RECORD-ZTERM
OR WA_RECORDPREV-KTWRT NE WA_RECORD-KTWRT.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RM06E-LGORT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
* Cross-Reference check performed for the given Vendors
CLEAR WA_T024E.
READ TABLE I_T024E INTO WA_T024E
WITH KEY EKORG = WA_RECORD-EKORG
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CLEAR WA_ZMVXREF.
READ TABLE I_ZMVXREF INTO WA_ZMVXREF
WITH KEY D_ALTKN = WA_RECORD-LIFNR
D_BUKRS = P_BUKRS
BINARY SEARCH.
IF SY-SUBRC EQ 0.
PERFORM BDC_FIELD USING 'EKKO-LIFNR'
WA_ZMVXREF-M_ALTKN.
ENDIF.
CLEAR WA_ZMVXREF.
ENDIF.
CLEAR WA_T024E.
PERFORM BDC_FIELD USING 'RM06E-EVART'
WA_RECORD-EVART.
PERFORM BDC_FIELD USING 'EKKO-EKORG'
WA_RECORD-EKORG.
PERFORM BDC_FIELD USING 'EKKO-EKGRP'
WA_RECORD-EKGRP.
PERFORM BDC_FIELD USING 'RM06E-WERKS'
WA_RECORD-WERKS.
PERFORM BDC_FIELD USING 'RM06E-LGORT'
WA_RECORD-LGORT.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0201'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EKKO-KTWRT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=AB'.
PERFORM CONVERT_DATE USING WA_RECORD-KDATB V_CONV_DATE.
PERFORM BDC_FIELD USING 'EKKO-KDATB'
V_CONV_DATE.
PERFORM CONVERT_DATE USING WA_RECORD-KDATE V_CONV_DATE.
PERFORM BDC_FIELD USING 'EKKO-KDATE'
V_CONV_DATE.
PERFORM BDC_FIELD USING 'EKKO-ZTERM'
WA_RECORD-ZTERM.
PERFORM BDC_FIELD USING 'EKKO-KTWRT'
WA_RECORD-KTWRT.
VEN_FLAG = 1.
L_MAT_INDEX = 1. "index for table-control of material
ENDIF.
* "first check for itemline
IF WA_RECORDPREV-EPSTP NE WA_RECORD-EPSTP
OR WA_RECORDPREV-EMATN NE WA_RECORD-EMATN
OR WA_RECORDPREV-KTMNG NE WA_RECORD-KTMNG
OR WA_RECORDPREV-NETPR NE WA_RECORD-NETPR
OR WA_RECORDPREV-PEINH NE WA_RECORD-PEINH
OR WA_RECORDPREV-BPRME NE WA_RECORD-BPRME
OR WA_RECORDPREV-IDNLF NE WA_RECORD-IDNLF
OR WA_RECORDPREV-WEBRE NE WA_RECORD-WEBRE
OR WA_RECORDPREV-MEPRF NE WA_RECORD-MEPRF
OR WA_RECORDPREV-LTEX1 NE WA_RECORD-LTEX1
OR VEN_FLAG EQ 1.
V_IND = L_MAT_INDEX.
IF V_IND GT 1.
V_IND = 2.
ENDIF.
CONCATENATE 'RM06E-EVRTP(' V_IND ')' INTO V_EVRTP1.
CONCATENATE 'RM06E-EPSTP(' V_IND ')' INTO V_EPSTP1.
CONCATENATE 'EKPO-EMATN(' V_IND ')' INTO V_EMATN1.
CONCATENATE 'EKPO-KTMNG(' V_IND ')' INTO V_KTMNG1.
CONCATENATE 'EKPO-NETPR(' V_IND ')' INTO V_NETPR1.
CONCATENATE 'EKPO-PEINH(' V_IND ')' INTO V_PEINH1.
CONCATENATE 'EKPO-BPRME(' V_IND ')' INTO V_BPRME1.
CONCATENATE 'RM06E-TCSELFLAG(' V_IND ')' INTO V_TCSELFLAG1.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0220'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NP'.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0220'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
V_EVRTP1.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DETA'.
PERFORM BDC_FIELD USING V_EPSTP1
WA_RECORD-EPSTP.
PERFORM BDC_FIELD USING V_EMATN1
WA_RECORD-EMATN.
PERFORM BDC_FIELD USING V_KTMNG1
WA_RECORD-KTMNG.
PERFORM BDC_FIELD USING V_NETPR1
WA_RECORD-NETPR.
PERFORM BDC_FIELD USING V_PEINH1
WA_RECORD-PEINH.
PERFORM BDC_FIELD USING V_BPRME1
WA_RECORD-BPRME.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0211'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EKPO-WEBRE'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DETZ'.
PERFORM BDC_FIELD USING 'EKPO-IDNLF'
WA_RECORD-IDNLF.
TRANSLATE WA_RECORD-EVART TO UPPER CASE.
IF WA_RECORD-EVART EQ C_WK.
PERFORM BDC_FIELD USING 'EKPO-WEBRE' 'X'.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0212'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EKPO-MEPRF'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TXP'.
PERFORM BDC_FIELD USING 'EKPO-MEPRF'
WA_RECORD-MEPRF.
IF NOT WA_RECORD-LTEX1 IS INITIAL. "NE space.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0106'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RM06E-SELKZ(02)'.
PERFORM BDC_FIELD -
How to download data displayed in a BSP page into Excel sheet
Hi,
I'm displaying an internal table data into tableview of a BSP page. I want to provide a feature to download the tableview contents to Excel sheet from Internet Explorer. How do I do it? Can someone guide me.
Kedhar.Hi Kedhar,
welcome to SDN. You should try to use the Search functionality here. Then you will find this Weblog:
<a href="/people/thomas.jung3/blog/2004/09/02/creating-a-bsp-extension-for-downloading-a-table">Creating a BSP Extension for Downloading a Table</a>.
You can award points if this answer was helpfull.
Regards
Gregor
Maybe you are looking for
-
Creative MediaSource Is Playing With My H
I installed Creative MediaSource on my new computer and transferred my music to the Library. In the last couple of days things are just plain spooky. I have downloaded cuts from MSN Music, and normally the last cuts added to the library have always a
-
After Effects CC crashes PC (BSOD) using Gradient Ramp effect
I've done it three times now to make sure, but whenever I make a solid layer and add the gradient ramp effect, and then change the color, it gives me a BSOD. I've had some BSOD issues while using AE for various reasons, and I've gone through solution
-
my 10 year old daughter locked my ipad with a passcde
-
QP: Bulk Import of Price List
Hi All, I encouter this error when i run this CP. Program Name : 'QP: Bulk Import of Price List' Erroring with the following error : QP_INTERFACE_LIST_HEADERS/SAMPLE_HEADER Invalid Date. Output : ------Processing Price List Entity-------- -----------
-
I have a iPhone (new model) and just downloaded the latest 2.2.1 update. This morning my contacts (all of them) just disappeared! Then after turning the device on and off I saw an "emergency number" message that went no place. Turned off and on the d