.NET版:
View Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using SAPFunctionsOCX;
using FA.Sap_Work;
using SAPTableFactoryCtrl;
using SAP.Middleware.Connector;
namespace SAP_WORK
{
public class Sap_rfc
{
RfcDestination prd = null;
IRfcFunction ifunc = null;
public Sap_rfc(String rfcName)
{
IDestinationConfiguration id = new Sap_Logon();
RfcDestinationManager.RegisterDestinationConfiguration(id);
prd = RfcDestinationManager.GetDestination("PRD_000");
RfcDestinationManager.UnregisterDestinationConfiguration(id);
RfcRepository rpstry = prd.Repository;
if (rpstry != null)
{
RfcFunctionMetadata rfmd = rpstry.GetFunctionMetadata(rfcName);
ifunc = rfmd.CreateFunction();
}
}
public void setStructure(String struct_name, Dictionary<String, Object> dic)
{
if (ifunc == null) return;
Dictionary<String, Object>.KeyCollection kc = dic.Keys;
IRfcStructure structs = ifunc.GetStructure(struct_name);
foreach (object key in kc)
{
structs.SetValue(key.ToString(), dic[key.ToString()]);
}
}
public void setParam(String paramName, Object value)
{
if (ifunc == null) return;
ifunc.SetValue(paramName, value);
}
public void setTable(String tableName, DataTable dataTable)
{
if (ifunc == null) return;
IRfcTable rfcTable = ifunc.GetTable(tableName);
DataColumnCollection dcc = dataTable.Columns;
foreach (DataRow dr in dataTable.Rows)
{
rfcTable.Insert();
foreach (String dcn in dcc)
{
rfcTable.CurrentRow.SetValue(dcn, dr[dcn]);
}
}
}
public void clearTable(String tablename)
{
if (ifunc == null) return;
IRfcTable rfcTable = ifunc.GetTable(tablename);
rfcTable.Delete();
}
public void execute()
{
if (ifunc != null)
{
ifunc.Invoke(prd);
}
}
public Object getResult(String paramName)
{
Object result = null;
if(ifunc!=null)
result = ifunc.GetString(paramName);
return result;
}
public DataTable getReturnTable(String tablename)
{
DataTable dt = null;
if (ifunc != null)
{
IRfcTable rt = ifunc.GetTable((String)tablename);
dt = new DataTable();
for (int i = 0; i < rt.ElementCount; i++)
{
DataColumn dc = new DataColumn(rt.GetElementMetadata(i).Name);
dt.Columns.Add(dc);
}
for (int i = 0; i < rt.RowCount; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = rt[i][j].GetValue();
}
dt.Rows.Add(dr);
}
}
return dt;
}
public DataTable getInnerTable(String tablename)
{
DataTable dt = null;
IRfcTable rt = ifunc.GetTable(tablename);
if (rt != null)
{
dt = new DataTable();
for (int i = 0; i < rt.ElementCount; i++)
{
DataColumn dc = new DataColumn(rt.GetElementMetadata(i).Name);
dt.Columns.Add(dc);
}
for (int i = 0; i < rt.RowCount; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = rt[i][j].GetValue();
}
dt.Rows.Add(dr);
}
}
return dt;
}
public void close()
{
if (prd != null) prd = null;
if (ifunc != null) ifunc = null;
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Data;
using SAPFunctionsOCX;
using FA.Sap_Work;
using SAPTableFactoryCtrl;
using SAP.Middleware.Connector;
namespace SAP_WORK
{
public class Sap_rfc
{
RfcDestination prd = null;
IRfcFunction ifunc = null;
public Sap_rfc(String rfcName)
{
IDestinationConfiguration id = new Sap_Logon();
RfcDestinationManager.RegisterDestinationConfiguration(id);
prd = RfcDestinationManager.GetDestination("PRD_000");
RfcDestinationManager.UnregisterDestinationConfiguration(id);
RfcRepository rpstry = prd.Repository;
if (rpstry != null)
{
RfcFunctionMetadata rfmd = rpstry.GetFunctionMetadata(rfcName);
ifunc = rfmd.CreateFunction();
}
}
public void setStructure(String struct_name, Dictionary<String, Object> dic)
{
if (ifunc == null) return;
Dictionary<String, Object>.KeyCollection kc = dic.Keys;
IRfcStructure structs = ifunc.GetStructure(struct_name);
foreach (object key in kc)
{
structs.SetValue(key.ToString(), dic[key.ToString()]);
}
}
public void setParam(String paramName, Object value)
{
if (ifunc == null) return;
ifunc.SetValue(paramName, value);
}
public void setTable(String tableName, DataTable dataTable)
{
if (ifunc == null) return;
IRfcTable rfcTable = ifunc.GetTable(tableName);
DataColumnCollection dcc = dataTable.Columns;
foreach (DataRow dr in dataTable.Rows)
{
rfcTable.Insert();
foreach (String dcn in dcc)
{
rfcTable.CurrentRow.SetValue(dcn, dr[dcn]);
}
}
}
public void clearTable(String tablename)
{
if (ifunc == null) return;
IRfcTable rfcTable = ifunc.GetTable(tablename);
rfcTable.Delete();
}
public void execute()
{
if (ifunc != null)
{
ifunc.Invoke(prd);
}
}
public Object getResult(String paramName)
{
Object result = null;
if(ifunc!=null)
result = ifunc.GetString(paramName);
return result;
}
public DataTable getReturnTable(String tablename)
{
DataTable dt = null;
if (ifunc != null)
{
IRfcTable rt = ifunc.GetTable((String)tablename);
dt = new DataTable();
for (int i = 0; i < rt.ElementCount; i++)
{
DataColumn dc = new DataColumn(rt.GetElementMetadata(i).Name);
dt.Columns.Add(dc);
}
for (int i = 0; i < rt.RowCount; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = rt[i][j].GetValue();
}
dt.Rows.Add(dr);
}
}
return dt;
}
public DataTable getInnerTable(String tablename)
{
DataTable dt = null;
IRfcTable rt = ifunc.GetTable(tablename);
if (rt != null)
{
dt = new DataTable();
for (int i = 0; i < rt.ElementCount; i++)
{
DataColumn dc = new DataColumn(rt.GetElementMetadata(i).Name);
dt.Columns.Add(dc);
}
for (int i = 0; i < rt.RowCount; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
dr[j] = rt[i][j].GetValue();
}
dt.Rows.Add(dr);
}
}
return dt;
}
public void close()
{
if (prd != null) prd = null;
if (ifunc != null) ifunc = null;
}
}
}
JAVA版:
View Code
import java.math.BigDecimal;
import java.util.List;
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.ParameterList;
import com.tools.zhengyu.datatype.DataColumn;
import com.tools.zhengyu.datatype.DataColumnCollect;
import com.tools.zhengyu.datatype.DataRow;
import com.tools.zhengyu.datatype.DataTable;
public class Sap_rfc {
private Sap_pool pool = null;
private JCO.Structure mStructure = null;
private JCO.Function mFunc = null;
private JCO.Table mTable = null;
public Sap_rfc(String rfcName) {
// TODO Auto-generated constructor stub
if (pool == null) {
pool = Sap_pool.getSapPool();
}
if (pool != null) {
if (pool.getMRepository() != null) {
IFunctionTemplate ift = pool.getMRepository()
.getFunctionTemplate(rfcName);
mFunc = ift.getFunction();
}
}
}
public void setStructure(String struct_name, List<String> fieldnames,
List<Object> fieldValues) {
if (mFunc != null) {
mStructure = mFunc.getImportParameterList().getStructure(
struct_name);
for (int i = 0; i < fieldnames.size(); i++) {
mStructure.setValue(fieldValues.get(i), fieldnames.get(i));
}
}
}
public void setParam(String paramName, Object value) {
if (mFunc != null) {
mFunc.getImportParameterList().setValue(value, paramName);
}
}
public void setTable(String tablename, DataTable dataTable) {
if (mFunc != null) {
mTable = mFunc.getTableParameterList().getTable(tablename);
DataColumnCollect dcc = dataTable.getDataColumnCollect();
for (DataRow dr : dataTable.getDataRowCollect()) {
mTable.appendRow();
for (DataColumn dc : dcc) {
Object value = dr.getValue(dc.getColname());
if (value != null) {
Class tc = value.getClass();
if (tc.getName().equals("java.math.BigDecimal")) {
BigDecimal bd = (BigDecimal) value;
mTable.setValue(bd.toString(), dc
.getColname());
} else
mTable.setValue(dr.getValue(dc.getColname()), dc
.getColname());
}else {
mTable.setValue("", dc
.getColname());
}
}
}
}
}
public void clearTable(String tablename){
if(mFunc != null){
mTable = mFunc.getTableParameterList().getTable(tablename);
mTable.clear();
}
}
public void execute() {
if (pool.getMConnection() != null) {
if (mFunc != null) {
pool.getMConnection().execute(mFunc);
}
}
}
public Object getResult(String paramName) {
Object value = null;
try {
ParameterList ple = mFunc.getExportParameterList();
value = ple.getValue(paramName);
} catch (Exception ex) {
}
return value;
}
public DataTable getReturnTable(String tablename) {
DataTable dt = null;
try {
JCO.Table tbl = mFunc.getExportParameterList().getTable(tablename);
dt = new DataTable();
int colcnt = 0;
if (tbl.getNumColumns() > 0) {
colcnt = tbl.getNumColumns();
for (int i = 0; i < tbl.getNumColumns(); i++) {
DataColumn dc = new DataColumn(tbl.getName(i));
dt.getDataColumnCollect().addColumn(dc);
}
}
if (tbl.getNumRows() > 0) {
for (int i = 0; i < tbl.getNumRows(); i++) {
DataRow dr = dt.newRow();
tbl.setRow(i);
for (int j = 0; j < colcnt; j++) {
dr.setValue(j, tbl.getValue(j));
}
dt.getDataRowCollect().add(dr);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return dt;
}
public DataTable getInnerTable(String tablename){
DataTable dt = null;
try {
JCO.Table tbl = mFunc.getTableParameterList().getTable(tablename);
dt = new DataTable();
int colcnt = 0;
if (tbl.getNumColumns() > 0) {
colcnt = tbl.getNumColumns();
for (int i = 0; i < tbl.getNumColumns(); i++) {
DataColumn dc = new DataColumn(tbl.getName(i));
dt.getDataColumnCollect().addColumn(dc);
}
}
if (tbl.getNumRows() > 0) {
for (int i = 0; i < tbl.getNumRows(); i++) {
DataRow dr = dt.newRow();
tbl.setRow(i);
for (int j = 0; j < colcnt; j++) {
dr.setValue(j, tbl.getValue(j));
}
dt.getDataRowCollect().add(dr);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return dt;
}
public void writeHtml(String msgTblName, String htmlPath) {
try {
JCO.Table tbl = mFunc.getTableParameterList().getTable(msgTblName);
tbl.writeHTML(htmlPath);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void close() {
this.pool.close();
}
}
import java.util.List;
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.ParameterList;
import com.tools.zhengyu.datatype.DataColumn;
import com.tools.zhengyu.datatype.DataColumnCollect;
import com.tools.zhengyu.datatype.DataRow;
import com.tools.zhengyu.datatype.DataTable;
public class Sap_rfc {
private Sap_pool pool = null;
private JCO.Structure mStructure = null;
private JCO.Function mFunc = null;
private JCO.Table mTable = null;
public Sap_rfc(String rfcName) {
// TODO Auto-generated constructor stub
if (pool == null) {
pool = Sap_pool.getSapPool();
}
if (pool != null) {
if (pool.getMRepository() != null) {
IFunctionTemplate ift = pool.getMRepository()
.getFunctionTemplate(rfcName);
mFunc = ift.getFunction();
}
}
}
public void setStructure(String struct_name, List<String> fieldnames,
List<Object> fieldValues) {
if (mFunc != null) {
mStructure = mFunc.getImportParameterList().getStructure(
struct_name);
for (int i = 0; i < fieldnames.size(); i++) {
mStructure.setValue(fieldValues.get(i), fieldnames.get(i));
}
}
}
public void setParam(String paramName, Object value) {
if (mFunc != null) {
mFunc.getImportParameterList().setValue(value, paramName);
}
}
public void setTable(String tablename, DataTable dataTable) {
if (mFunc != null) {
mTable = mFunc.getTableParameterList().getTable(tablename);
DataColumnCollect dcc = dataTable.getDataColumnCollect();
for (DataRow dr : dataTable.getDataRowCollect()) {
mTable.appendRow();
for (DataColumn dc : dcc) {
Object value = dr.getValue(dc.getColname());
if (value != null) {
Class tc = value.getClass();
if (tc.getName().equals("java.math.BigDecimal")) {
BigDecimal bd = (BigDecimal) value;
mTable.setValue(bd.toString(), dc
.getColname());
} else
mTable.setValue(dr.getValue(dc.getColname()), dc
.getColname());
}else {
mTable.setValue("", dc
.getColname());
}
}
}
}
}
public void clearTable(String tablename){
if(mFunc != null){
mTable = mFunc.getTableParameterList().getTable(tablename);
mTable.clear();
}
}
public void execute() {
if (pool.getMConnection() != null) {
if (mFunc != null) {
pool.getMConnection().execute(mFunc);
}
}
}
public Object getResult(String paramName) {
Object value = null;
try {
ParameterList ple = mFunc.getExportParameterList();
value = ple.getValue(paramName);
} catch (Exception ex) {
}
return value;
}
public DataTable getReturnTable(String tablename) {
DataTable dt = null;
try {
JCO.Table tbl = mFunc.getExportParameterList().getTable(tablename);
dt = new DataTable();
int colcnt = 0;
if (tbl.getNumColumns() > 0) {
colcnt = tbl.getNumColumns();
for (int i = 0; i < tbl.getNumColumns(); i++) {
DataColumn dc = new DataColumn(tbl.getName(i));
dt.getDataColumnCollect().addColumn(dc);
}
}
if (tbl.getNumRows() > 0) {
for (int i = 0; i < tbl.getNumRows(); i++) {
DataRow dr = dt.newRow();
tbl.setRow(i);
for (int j = 0; j < colcnt; j++) {
dr.setValue(j, tbl.getValue(j));
}
dt.getDataRowCollect().add(dr);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return dt;
}
public DataTable getInnerTable(String tablename){
DataTable dt = null;
try {
JCO.Table tbl = mFunc.getTableParameterList().getTable(tablename);
dt = new DataTable();
int colcnt = 0;
if (tbl.getNumColumns() > 0) {
colcnt = tbl.getNumColumns();
for (int i = 0; i < tbl.getNumColumns(); i++) {
DataColumn dc = new DataColumn(tbl.getName(i));
dt.getDataColumnCollect().addColumn(dc);
}
}
if (tbl.getNumRows() > 0) {
for (int i = 0; i < tbl.getNumRows(); i++) {
DataRow dr = dt.newRow();
tbl.setRow(i);
for (int j = 0; j < colcnt; j++) {
dr.setValue(j, tbl.getValue(j));
}
dt.getDataRowCollect().add(dr);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return dt;
}
public void writeHtml(String msgTblName, String htmlPath) {
try {
JCO.Table tbl = mFunc.getTableParameterList().getTable(msgTblName);
tbl.writeHTML(htmlPath);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void close() {
this.pool.close();
}
}