SAP R/3에 대해 생소한 분들을 위해 SAP R/3에 대해 먼저 간략히 살펴 보도록 하겠습니다.
SAP R/3는 SAP사에서 개발한 현재 전세계적으로 가장 많이 사용되고 있는 ERP(통합업무패키지)시스템 입니다.
ERP시스템이란 재무회계와 생산관리, 판매관리 그리고 재고관리와 인사관리등 전사적인 데이터를 일원화 시켜 관리 할 수 있고, 또한 경영자원을 계획적이고 효율적으로 운용하여 생산성을 극대화 하는 정보 시스템입니다.
SAP JCO가 SAP과 Communication하는 방식은 위 그림1과 같습니다. SAP에서 제공하고자 하는 기능을 RFC Function으로 만들어 놓으면 Java Application은 SAP JCO를 통해서 RFC Function을 호출하게 됩니다.
제가 SAP JCO에서 제공하는 소스를 참조하여 테스트용으로 만든 소스를 살펴보도록 하겠습니다.
import com.sap.mw.jco.*;
import com.sap.mw.jco.JCO.ParameterList;
/**
* 단순조회를 처리하는 소스
*/
public class SAPJCOEx02 extends Object {
JCO.Client mConnection;
JCO.Repository mRepository;
public SAPJCOEx02() {
try {
// Change the logon information to your own system/user
mConnection = JCO.createClient (
"001", // SAP client
"userid", // userid
"1234", // password
"EN", // language
"hostname", // host name
"00"); // system number
mConnection.connect();
mRepository = new JCO.Repository ("ARAsoft", mConnection);
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
}
JCO.Function function = null;
try {
function = this.createFunction("RFC FUNCTION NAME ");
if (function == null) {
System.out.println("FUC not found in SAP.");
System.exit(1);
}
//Funection에 Import값 설정
function.getImportParameterList().setValue("value", "name");
mConnection.execute(function);
//output의 내용을 출력한다.
System.out.println("-----OUTPUT------------------");
JCO.ParameterList output = function.getExportParameterList();
for (int i = 0; i < output.getFieldCount(); i++) {
System.out.println(output.getName(i) + ": " + output.getString(output.getName (i)));
}
//table의 내용을 출력한다.
System.out.println("\n-----TABLE-------------------");
JCO.ParameterList table = function.getTableParameterList();
for (int i = 0; i < table.getFieldCount(); i++) {
System.out.println("Table명: " + table.getName(i));
//column명 출력
JCO.Table codes = table.getTable(table.getName(i));
String[] colName = new String[ codes.getNumColumns()];
for (int j = 0; j < codes.getNumColumns(); j++) {
colName[j] = codes.getName(j);
System.out.print(codes.getName(j) + " ");
}
System.out.println("\n-----------------------------------------------");
//row출력
for (int j = 0; j < codes.getNumRows(); j++) {
codes.setRow(j);
for (int k = 0; k < colName.length; k++) {
System.out.print(codes.getString(colName[k]) + " ");
}
System.out.println("\n");
}
System.out.println("\n");
}
} catch (Exception ex) {
ex.printStackTrace ();
System.exit(1);
}
mConnection.disconnect();
}
public JCO.Function createFunction(String name) throws Exception {
try {
IFunctionTemplate ft = mRepository.getFunctionTemplate(name.toUpperCase());
if (ft == null)
return null;
return ft.getFunction();
} catch (Exception ex) {
throw new Exception("Problem retrieving JCO.Function object.");
}
}
public static void main(String args[]) {
SAPJCOEx02 app = new SAPJCOEx02();
}
}
로 부터 SAP과의 Connection을 생성하고 를 통해 SAP에게 Function의 Interface와 Structure의 Definition 정보를 요청합니다.
Funection은 name, import parameter list, export parameter list, table parameter list로 구성되어 있다. Java Application은 import와 table을 이용하여 값을 SAP으로 넘길 수 있고 SAP는 export와 table을 이용하여 Java Application에게 값을 넘겨 주게 됩니다.
import값을 설정하여 SAP의 Function을 호출하고자 한다면 다음과 같이 하면 됩니다.
function.getImportParameterList().setValue(value, name);
value로는 String, char, int등 다향한 값들이 올 수 있습니다.
를 통해 RFC Function을 호출하게 된다. 위의 과정을 종합해 보면 import부분에 name이라는 Key값에 Value라는 값을 가진 RFC Function을 호출하게 되는 것입니다.
SAP R/3는 SAP사에서 개발한 현재 전세계적으로 가장 많이 사용되고 있는 ERP(통합업무패키지)시스템 입니다.
ERP시스템이란 재무회계와 생산관리, 판매관리 그리고 재고관리와 인사관리등 전사적인 데이터를 일원화 시켜 관리 할 수 있고, 또한 경영자원을 계획적이고 효율적으로 운용하여 생산성을 극대화 하는 정보 시스템입니다.
SAP JCO가 SAP과 Communication하는 방식은 위 그림1과 같습니다. SAP에서 제공하고자 하는 기능을 RFC Function으로 만들어 놓으면 Java Application은 SAP JCO를 통해서 RFC Function을 호출하게 됩니다.
제가 SAP JCO에서 제공하는 소스를 참조하여 테스트용으로 만든 소스를 살펴보도록 하겠습니다.
import com.sap.mw.jco.*;
import com.sap.mw.jco.JCO.ParameterLis
/**
* 단순조회를 처리하는 소스
*/
public class SAPJCOEx02 extends Object {
JCO.Client mConnection;
JCO.Repository mRepository;
public SAPJCOEx02() {
try {
// Change the logon information to your own system/user
mConnection = JCO.createClient (
mConnection.connect();
mRepository = new JCO.Repository ("ARAsoft", mConnection);
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
}
JCO.Function function = null;
try {
function = this.createFunction("RFC FUNCTION NAME ");
if (function == null) {
System.out.println("FUC not found in SAP.");
System.exit(1);
}
//Funection에 Import값 설정
function.getImportParameterList().setValue("value", "name");
mConnection.execute(function);
//output의 내용을 출력한다.
System.out.println("-----OUTPUT-----------------
JCO.ParameterList output = function.getExportParameterList();
for (int i = 0; i < output.getFieldCount(); i++) {
System.out.println(output.getName(i) + ": " + output.getString(output.getName (i)));
}
//table의 내용을 출력한다.
System.out.println("\n-----TABLE----------------
JCO.ParameterList table = function.getTableParameterList();
for (int i = 0; i < table.getFieldCount(); i++) {
System.out.println("Table명: " + table.getName(i));
//column명 출력
JCO.Table codes = table.getTable(table.getName(i));
String[] colName = new String[ codes.getNumColumns()];
for (int j = 0; j < codes.getNumColumns(); j++) {
colName[j] = codes.getName(j);
System.out.print(codes.getName(j) + " ");
}
System.out.println("\n--------------------------
//row출력
for (int j = 0; j < codes.getNumRows(); j++) {
codes.setRow(j);
for (int k = 0; k < colName.length; k++) {
System.out.print(codes.getString(colName[k]) + " ");
}
System.out.println("\n");
}
System.out.println("\n");
}
} catch (Exception ex) {
ex.printStackTrace ();
System.exit(1);
}
mConnection.disconnect();
}
public JCO.Function createFunction(String name) throws Exception {
try {
IFunctionTemplate ft = mRepository.getFunctionTemplate(name.toUpperCase());
if (ft == null)
return null;
return ft.getFunction();
} catch (Exception ex) {
throw new Exception("Problem retrieving JCO.Function object.");
}
}
public static void main(String args[]) {
SAPJCOEx02 app = new SAPJCOEx02();
}
}
로 부터 SAP과의 Connection을 생성하고 를 통해 SAP에게 Function의 Interface와 Structure의 Definition 정보를 요청합니다.
Funection은 name, import parameter list, export parameter list, table parameter list로 구성되어 있다. Java Application은 import와 table을 이용하여 값을 SAP으로 넘길 수 있고 SAP는 export와 table을 이용하여 Java Application에게 값을 넘겨 주게 됩니다.
import값을 설정하여 SAP의 Function을 호출하고자 한다면 다음과 같이 하면 됩니다.
function.getImportParameterList().setValue(value, name);
value로는 String, char, int등 다향한 값들이 올 수 있습니다.
를 통해 RFC Function을 호출하게 된다. 위의 과정을 종합해 보면 import부분에 name이라는 Key값에 Value라는 값을 가진 RFC Function을 호출하게 되는 것입니다.
다음검색