Writing a java program to access SAP tables using SAP JCO
Hi all,
I have a requirement where I need to access the VBAK table and get some values out of it based on a query on some of it fields. I would like to know how this can be done via a Java program by utilising the SAP JCo library. Has anyone done this before? A sample program would be very helpful.
Thanks in advance!
Hi SAM,
Welcome to SDN!!!!!!
Chk this help doc.
http://help.sap.com/saphelp_nw04/helpdata/en/35/42e13d82fcfb34e10000000a114084/frameset.htm
Also chk these thread.
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/8798be90-0201-0010-d093-85f728778d37
Re: How to access SAP database tables with Java (Jco)
Regards.
Maha
Similar Messages
-
Give Java Program Execute Access Only
Hi,
Is there a way, on windows XP, to give a java program execute access only for a certain user. This would prevent the user from reading the program, being able to copy the program, or change the program.
Thanks for any info,
JohnThere is no way of giving "execute-only" access to a file in Windows. There is no "--x--x--x" access like Unix.
If you can execute a file, you must be able to read it, because Windows relies strongly in "resources" (like the version resource or the icon resources) that are present in the executable file and must be read by the program.
I believe that even in Unix you can't give "--x--x--x" access to a JAR file because it must be read by the "java" executable, instead of being directly loaded by the operating system. -
How can we report on R/3 tables using SAP BO
How can we report on R/3 tables using SAP BO.
ThanksHi
you can use the CR Designer and build CR reports that access your R/3 system. Another option is to use the R/3 connector for the Data Federator which is available in the Innovation Center. Still this connector is not a product rather can be used on your own risk.
Regards,
Stratos
PS: Accessing directly the tables of the underlying database(e.g oracle) using universes and Web Intelligence is not recommended. You will not be able to decode all contents of the database tables you are accessing since in some cases R/3 encodes the data before storing them in the actual database tables. -
Problem in accessing mseg table using MSEG~M Index.
Hi Experts,
I am facing problem in accessing mseg table using MSEG~M Index. I used same sequence of fields and i tried with mandt field also. but it is not taking the Index and it is going for TImeout ABAP dump.
This are my codes used in different ways
1. SELECT mjahr
bwart
matnr
lifnr
dmbtr
kostl
aufnr
bukrs
FROM mseg CLIENT SPECIFIED INTO TABLE t_mseg2
WHERE mandt EQ sy-mandt AND
matnr NE SPACE AND
werks EQ p_werks AND
lgort NE '0000' AND
bwart IN (122,201,262) AND
sobkz NE '0'
%_HINTS ORACLE 'INDEX("MSEG" "MSEG~M")'.
2. SELECT mjahr
bwart
matnr
lifnr
dmbtr
kostl
aufnr
bukrs
FROM mseg INTO TABLE t_mseg2
WHERE matnr NE SPACE AND
werks EQ p_werks AND
lgort NE '0000' AND
bwart IN (122,201,262) AND
sobkz NE '0'
%_HINTS ORACLE 'INDEX("MSEG" "MSEG~M")'.
3. SELECT mjahr
bwart
matnr
lifnr
dmbtr
kostl
aufnr
bukrs
FROM mseg INTO TABLE t_mseg2
WHERE matnr NE SPACE AND
werks EQ p_werks AND
lgort NE '0000' AND
bwart IN (122,201,262) AND
sobkz NE '0'.
The above all code is not at all taking the index in Quality server .but in Development it is taking .In Quality server it is reading all datas without using the index and going Timeout ABAP dmup
Please, Suggest me some solutions.
Thanks in Advance.
Regards,
NandhaHi,
Without NE also not working out. i am facing same problem still.
SELECT bwart
matnr
lifnr
dmbtr
kostl
aufnr
FROM mseg CLIENT SPECIFIED INTO TABLE t_mseg
WHERE mandt EQ sy-mandt AND
werks EQ p_werks AND
bwart IN (122,201,262) AND
mjahr EQ p_year AND
bukrs EQ p_cc
%_HINTS ORACLE 'INDEX("MSEG" "MSEG~M")'.
Please,check and help me out from this issue.
Regards,
Nandha -
Updating A z table using sap xi
Hi,
I am new sap XI would like to update a z table using
sap xi.The dataset is a flat file as test exercise.Can
anyone tell me how to go about it .Hi Deepak,
You can also go for abap proxies (server)
http://help.sap.com/saphelp_nw04/helpdata/en/86/58cd3b11571962e10000000a11402f/frameset.htm
Hope it will be helpful.
Regards
Suraj -
How to implement SSO to non-SAP systems using SAP logon ticket?
Hello,
We would like to implement Single Sign On between our SAP Netweaver system and a Siebel which is a non-SAP system using SAP logon tickets.
Can anyone please give me some leads on this, in particular:
1. Is there a JAVA API or an SAP plug-in that can be implemented on the Siebel machine to extract the SAP logon ticket?
2. As the other machine might seat on a complete different domain, is it possible to implement SAP logon ticket without using cookies (perhaps through the HTTP header?
3. In case you think using SAP logon tickets is not the best solution here I would be happy to hear any other suggestions you might have.
RoyHi,
I'm currently using SAML as well. Unfortunately the SAP J2EE cannot work as authority (identity provider) but what you can do is using an open implementation of SAML such as opensso which is an open version of SUNs Java System access manager.
There are a couple of other projects such as opensaml, apache's wss4j or shibboleth that might be interesting in this context.
I just installed opensso and got it working with SAP J2EE 7.0 using SAPs JAAS SAMLLoginModule to authenticate users within SAP J2EE.
In this scenario opensso serves as identity provider just as you need! There are a couple of Policy agents available on SUNs Download site you can use with Apache, Tomcat, JBOSS, WebSphere, Bea Web Logic etc. in order to authenticate! Otherwise you just directly authenticate against opensso. When installing opensso you can configure the type of user store you want to use! By default it uses LDAP but you can also use different types of user store using JDBC or other mechanisms. Since you have a Directory Service you could easily connect it to your existing directory.
There is also a way to map user ids directly in opensso by adding a uid mapping class. I created some documentation with lots of screenshots about using opensso with SAP J2EE. You can easily use opensso with any other system that supports SAML. In the case of SAP the usage is currently limited to SAML versions 1.0 and 1.1. Version 2.0 is not yet supported but should be in one of the following versions.
Here are some links you might want to check:
OpenSAML: https://spaces.internet2.edu/display/OpenSAML/Home
wss4j: http://ws.apache.org/wss4j/
shibboleth: http://shibboleth.internet2.edu/
opensso: https://opensso.dev.java.net/
On SDN you will find a documentation on how to connect SUN Java System Access Manager to SAP J2EE (see https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/906d9fc6-31b9-2910-1385-90edad7d7570). As I said opensso is based on the SUN Access Manager code and looks quite the same. So you can adapt this documentation in order to configure opensso or you can just ask me for the documentation.
Hope this is helpful...
Let me know if you need further assistance on this topic
Cheers -
Hello,
has anyone experience with the Integration of a 3rd Party System with SAP C4C using SAP Netweaver Process Integration?
Is this a process of days, weeks or months?
Any documentation on this?
I am thankful for every Input!
BR, RomanRoman,
Please read through the integration guides available on the SAP service marketplace as they address this specific topic in great detail.
http://service.sap.com/cloud4customer
The time duration of the project depends on the business process complexity being resolved and the level of integration desired between the different enterprise solutions in the landscape.
Thank you. -
Hi
Would please somebody give me a link on how to educate myself on SAP BPC using SAP Netweaver
Thank you very much in advance
ZubzeroHi,
You are right. The link is like MS platform only. This is because there are not much differences between the 2 platforms. Few of the differences would be
1. BPC NW is integrated with NW BI
2. BPF is not available in BPC NW 7.0. However, it is back in 7.5
3. Increased dimensionality
3. Integration with BI accelerators
4. Improved dynamic templates
5. Books are not available
6. Transports are available.
There is a book BPC 330, which will give you a better understanding of BPC NW. This book is only available on classroom trainings.
Hope this helps. -
How to access a table of SAP standard SAP method from external program
Hi Friends,
I have to access a table and modified it defined in a standard SAP method (PROCESS_INPUT_FILTER) of class (CL_HANDLE_MM).
As we normaly do it in case of Standard program
for example: ('(SAPLMEPO)ett[]') here we are accessing internal table ett defined in SAPLMEPO.
so how we can do the same thing if some thing defined in standard SAP method.
Pl. help.Thanks for the info guys, it will come in handy.
I need to validate that a number is entered with zero or one decimal place, then make sure it is evenly
divisible by .5 in order to test for whole or half numbers only. If not, I use an alert to
display a message when the user leaves the field.
If there is a better way to achieve this, I am all ears!
Thank you for your time,
Gary -
Access ABAP Table using Java (NWDS/JCO)
All,
I am trying to setup a jco connection from java program through NWDS to ECC abap table.
However I am getting the following error in NWDS:
Exception in thread "main" java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [C:\Program Files\Java\jdk1.6.0_45\bin\sapjcorfc.dll: Access is denied]. java.library.path [C:\Program Files\Java\jdk1.6.0_45\bin;.]
and a parity error on my system:
"Parity blocked an attempt by javaw.exe to run sapjcorfc.dll because the file is not approved. If you require access to this file, please contact your system administrator. Scroll down for diagnostic data."
Here is the Java code...per the SAP website:
package com.sap.pi.updateAbapSxmbAdminParams;
import com.sap.mw.jco.*;
public class ReadPiAbapTables {
private static JCO.Client theConnection;
private static IRepository theRepository;
public static void main(String[] args) {
createConnection();
retrieveRepository();
try {
JCO.Function function = getFunction("RFC_READ_TABLE");
JCO.ParameterList listParams = function.getImportParameterList();
listParams.setValue("BSAUTHORS", "QUERY_TABLE");
theConnection.execute(function);
JCO.Table tableList = function.getTableParameterList().getTable("SXMSCONFVLV");
if (tableList.getNumRows() > 0) {
do {
for (JCO.FieldIterator fI = tableList.fields();
fI.hasMoreElements();)
JCO.Field tabField = fI.nextField();
System.out.println(tabField.getName()
+ ":t" +
tabField.getString());
System.out.println("n");
while (tableList.nextRow() == true);
catch (Exception ex) {
ex.printStackTrace();
private static void createConnection() {
try {
theConnection = JCO.createClient("aaa", "aaa", "aaa", "aa", "aa", "aa");
theConnection.connect();
catch (Exception ex) {
System.out.println("Failed to connect to SAP system");
private static void retrieveRepository() {
try {
theRepository = new JCO.Repository("saprep", theConnection);
catch (Exception ex)
System.out.println("failed to retrieve repository");
public static JCO.Function getFunction(String name) {
try {
return theRepository.getFunctionTemplate(name.toUpperCase()).getFunction();
catch (Exception ex) {
ex.printStackTrace();
return null;Hi Vicky,
You need authorization to the S_TABU_DIS object, talk with the ABAP basis team about this to find the more restrictive role.
It's not a good idea to use the RFC_READ_TABLE, for the wide permissions needed. You could think to develop a Z RFC for this. You can check pros/cons in this document: http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a83ec690-0201-0010-14ac-bd1d75e24a7d?overridelayout=t…
Regards. -
Access ABAP tables using NWDS Java Code
All,
I am planning to write a program to autmatically update is_url entries in sxmb_admin using a Java program.
Is there a way we can access the ABAP tables using standalone Java Code? would it something like dblookup that we use in the mappings?
Your Thoughts....
Thanks.Hi Vicky - Interesting..Seems like you are trying to automate every single thing
However you can make use of Jco to connect to ABAP tables..
Check the below thread..
Help on accessing tables of SAP from the Java Application
I assume the table name is "SXMSCONFVLV" which you might have to update but not sure.. -
Standalone Program for Accessing MDM Table
Hi,
I am trying access to MDM table using standalone java program but it is giving error. Is it possible?
If it is possible means tell me the steps or post sample codes.
Thanks in advance
Regards
SureshHello:
I have a piece of code here, even tough I believe it would be easier if you could explain a little more about your problem.
First I create properties for connection. I'm using strings however this can be done also setting properties directly:
String server = "MDMServer";
int port = 2005;
String user = "admin";
String password = "thePassword";
String language = "Spanish [MX]"; // languaje and local you want to use
// THen you choose the region and attempt to login. Please note that even tough I choose region US, I log as a MX user, as provided by the language property
CatalogData mdmBridge = new CatalogData();
mdmBridge.SetCodeRegion("English [US]"); mdmBridge.Login(server,port,user,password,language);
// also note that the catalogData object is the main entrance, now create an array for MDMTables:
CMTableInfoArray tables = null;
// and attempt to get them:
AttributeInfoArray fields = mdmBridge.GetLinkedAttributesForTaxonomy("Categories",6,false);
System.out.println("Counts: " + fields.GetCount());
// Traverse:
for (int i = 0; i < fields.GetCount(); i++)
AttributeInfo att = fields.GetAttributeInfoAt(i);
System.out.println("NAME: " + att.GetName());
// In this case I'm getting a taxonomy table, such as "Categories". However you could use any other type of tables. Finally I get the contents of this table:
// Attempt to get the categories A2iStringArray array = new A2iStringArray();
array.Add("Filter");
ResultSetDefinition rsd = new ResultSetDefinition("Categories");
rsd.AddField("Id");
A2iResultSet rs = mdmBridge.GetRecordsByValue(array,rsd,"Id");
for(int i = 0; i < rs.GetRecordCount(); i++) {
Value v = rs.GetValueAt(i,0);
System.out.println(v.GetStringValue());
Please review the MDM API for java for further info.
I hope that helps
Alejandro -
Writing a java program for generating .pdf file with the data of MS-Excel .
Hi all,
My object is write a java program so tht...it'll generate the .pdf file after retriving the data from MS-Excel file.
I used POI HSSF to read the data from MS-Excel and used iText to generate .pdf file:
My Program is:
* Created on Apr 13, 2005
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
package forums;
import java.io.*;
import java.awt.Color;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import com.lowagie.text.Font.*;
import com.lowagie.text.pdf.MultiColumnText;
import com.lowagie.text.Phrase.*;
import net.sf.hibernate.mapping.Array;
import org.apache.poi.hssf.*;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.hssf.usermodel.*;
import com.lowagie.text.Phrase.*;
import java.util.Iterator;
* Generates a simple 'Hello World' PDF file.
* @author blowagie
public class pdfgenerator {
* Generates a PDF file with the text 'Hello World'
* @param args no arguments needed here
public static void main(String[] args) {
System.out.println("Hello World");
Rectangle pageSize = new Rectangle(916, 1592);
pageSize.setBackgroundColor(new java.awt.Color(0xFF, 0xFF, 0xDE));
// step 1: creation of a document-object
//Document document = new Document(pageSize);
Document document = new Document(pageSize, 132, 164, 108, 108);
try {
// step 2:
// we create a writer that listens to the document
// and directs a PDF-stream to a file
PdfWriter writer =PdfWriter.getInstance(document,new FileOutputStream("c:\\weeklystatus.pdf"));
writer.setEncryption(PdfWriter.STRENGTH128BITS, "Hello", "World", PdfWriter.AllowCopy | PdfWriter.AllowPrinting);
// step 3: we open the document
document.open();
Paragraph paragraph = new Paragraph("",new Font(Font.TIMES_ROMAN, 13, Font.BOLDITALIC, new Color(0, 0, 255)));
POIFSFileSystem pofilesystem=new POIFSFileSystem(new FileInputStream("D:\\ESM\\plans\\weekly report(31-01..04-02).xls"));
HSSFWorkbook hbook=new HSSFWorkbook(pofilesystem);
HSSFSheet hsheet=hbook.getSheetAt(0);//.createSheet();
Iterator rows = hsheet.rowIterator();
while( rows.hasNext() ) {
Phrase phrase=new Phrase();
HSSFRow row = (HSSFRow) rows.next();
//System.out.println( "Row #" + row.getRowNum());
// Iterate over each cell in the row and print out the cell's content
Iterator cells = row.cellIterator();
while( cells.hasNext() ) {
HSSFCell cell = (HSSFCell) cells.next();
//System.out.println( "Cell #" + cell.getCellNum() );
switch ( cell.getCellType() ) {
case HSSFCell.CELL_TYPE_STRING:
String stringcell=cell.getStringCellValue ()+" ";
writer.setSpaceCharRatio(PdfWriter.NO_SPACE_CHAR_RATIO);
phrase.add(stringcell);
// document.add(new Phrase(string));
System.out.print( cell.getStringCellValue () );
break;
case HSSFCell.CELL_TYPE_FORMULA:
String stringdate=cell.getCellFormula()+" ";
writer.setSpaceCharRatio(PdfWriter.NO_SPACE_CHAR_RATIO);
phrase.add(stringdate);
System.out.print( cell.getCellFormula() );
break;
case HSSFCell.CELL_TYPE_NUMERIC:
String string=String.valueOf(cell.getNumericCellValue())+" ";
writer.setSpaceCharRatio(PdfWriter.NO_SPACE_CHAR_RATIO);
phrase.add(string);
System.out.print( cell.getNumericCellValue() );
break;
default:
//System.out.println( "unsuported sell type" );
break;
document.add(new Paragraph(phrase));
document.add(new Paragraph("\n \n \n"));
// step 4: we add a paragraph to the document
} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
// step 5: we close the document
document.close();
My Input from MS-Excel file is:
Planning and Tracking Template for Interns
Name of the Intern N.Kesavulu Reddy
Project Name Enterprise Sales and Marketing
Description Estimated Effort in Hrs Planned/Replanned Actual Actual Effort in Hrs Complexity Priority LOC written new & modified % work completion Status Rework Remarks
S.No Start Date End Date Start Date End Date
1 setup the configuration 31/01/2005 1/2/2005 31/01/2005 1/2/2005
2 Deploying an application through Tapestry, Spring, Hibernate 2/2/2005 2/2/2005 2/2/2005 2/2/2005
3 Gone through Componentization and Cxprice application 3/2/2005 3/2/2005 3/2/2005 3/2/2005
4 Attend the sessions(tapestry,spring, hibernate), QBA 4/2/2005 4/2/2005 4/2/2005 4/2/2005
The o/p I'm gettint in .pdf file is:
Planning and Tracking Template for Interns
N.Kesavulu Reddy Name of the Intern
Enterprise Sales and Marketing Project Name
Remarks Rework Status % work completion LOC written new & modified Priority
Complexity Actual Effort in Hrs Actual Planned/Replanned Estimated Effort in Hrs Description
End Date Start Date End Date Start Date S.No
38354.0 31/01/2005 38354.0 31/01/2005 setup the configuration 1.0
38385.0 38385.0 38385.0 38385.0 Deploying an application through Tapestry, Spring, Hibernate
2.0
38413.0 38413.0 38413.0 38413.0 Gone through Componentization and Cxprice application
3.0
38444.0 38444.0 38444.0 38444.0 Attend the sessions(tapestry,spring, hibernate), QBA 4.0
The issues i'm facing are:
When it is reading a row from MS-Excel it is writing to the .pdf file from last cell to first cell.( 2 cell in 1 place, 1 cell in 2 place like if the row has two cells with data as : Name of the Intern: Kesavulu Reddy then it is writing to the .pdf file as Kesavulu Reddy Name of Intern)
and the second issue is:
It is not recognizing the date format..it is recognizing the date in first row only......
Plz Tell me wht is the solution for this...
Regards
[email protected]Don't double post your question:
http://forum.java.sun.com/thread.jspa?threadID=617605&messageID=3450899#3450899
/Kaj -
TIME_OUT when accessing Oracle table from SAP using native SQL
Hi,
I have a problem in one of my native SQL statement. It takes a long time accessing the table considering that the number of records to be retrieved is only small.
Something happened on the Oracle system. But, stilll to be confirmed. Looking further at the issue, it seems that when the value in the where clause equated is a literal (meaning the value is not declared in DATA or CONSTANTS in the ABAP Program)
Example
1.
EXEC.
WHERE FIELD = '1'
ENDEXEC.
instead of
2.
CONSTANTS: c_1 value '1'.
EXEC.
WHERE FIELD = c_1
ENDEXEC.
i found that when the way of coding is same as Example 1, a time-out error occurs. But when in Example 2, no issue.
Can someone explain this?
Thanks!Repetitively asking the same question again and again is against the forum rules.
Please post an explain of the SQL statement on the remote machine.
Markus -
Loading records from .csv file to SAP table via SAP Program
Hi,
I have a .csv file with 132,869 records and I am trying to load it to an SAP table with a customized SAP program.
After executing the program, only 99,999 records are being loaded into the table.
Is there some setting to define how many records can be loaded into a table? Or what else could be the problem?
Pls advice.
Thanks!!!hi Arun ,
A datasource need a extract structure to fetch data .It is nothing but a temp table to hold data.
First you need to create atable in SE11 with fields coming from CSV file.
Then you need to write a report program to read you CSV file and populate your table in BW .
Then you can create a datasource on top of this table .
After that replicate and load data at PSA and use to upper flow.
Regards,
Jaya Tiwari
Maybe you are looking for
-
Delete from iTunes but not on iPhone
It is my understanding that if you delete a voice memo from iTunes, it is also deleted from the iPhone. Can you avoid this? I would like some things only on my iPhone. Thanks!
-
Hi, I have a crossword puzzle that doesn't seem to work when uploaded on a server. It works locally and has worked on other servers. What could be causing this not to work?
-
Search for Blank or find metadata that is empty
Hello super-intellegent people, How do I search for all assets that have no keywords? Thanks, Jacob
-
Exporting Final Cut Pro movie onto CD for use on PC
I am having trouble exporting my edits onto CD so I can then take it off the CD and use it on my PC in a Powerpoint presentation. I have tried using Quicktime, Sorenson 3 and AVI. I then open the disc on my PC and it's all in separate files. I would
-
Compat-oracle-rhel4-1.0-3 : oracle 9i on RHAS v.4
I am a developer and I am installing 9.2.0.4 on RHAS v.4 I was reading about a library I needed call compat-oracle-rhel4-1.0-3. Do I need this and where do I get it ?