泛微OA 将流程的明细表数据传给SAP
在泛微二开中,经常会遇到的问题就有涉及到多个系统数据传输的问题,今天记录的就是泛微OA与SAP系统的数据传输,希望对你有用
传递参数给SAP
一般在与SAP系统传输数据的时候,需要明确SAP接收的数据是传入参数还是传入表
如果是传入参数的话,一般是通过map来实现参数的传递的,在map中指定对应的key以及value
String functionName = "MM_CHANGE_OA";//这个是SAP的方法名称
SAPConnectR connect = new SAPConnectR();
Map map = new HashMap();
map.put("INPUT", "U");//传递的参数key以及value
//model是将数据传给SAP之后接收的SAP返回值
SAPModel model = SAPConnect.OperSAP(map, null, null, functionName);
JCO.ParameterList outtab = model.getOuttab();//通过outtab可以获取SAP返回的表格参数数据
JCO.Table table = outtab.getTable("ITEM");//SAP方法对应的表格ITEM
//for循环遍历SAP的返回值
for (int i = 0; i < table.getNumRows(); i++) {
table.setRow(i);
String value1 = table.getString("value1");//根据SAP表里面的参数名获取参数
}
传递明细表数据给SAP
String functionName = "MM_CHANGE_OA";//SAP方法名称
SAPConnectR connect = new SAPConnectR();
List<TableModel> list = new ArrayList<TableModel>();
TableModel model2 = new TableModel();
Map map = new HashMap();
map.put("INPUT", "U");
List list1 = new ArrayList();
DetailTableInfo detail = requestInfo.getDetailTableInfo();//获取明细表的数据
if (detail != null && detail.getDetailTableCount() > 0) {
DetailTable d_table = detail.getDetailTable(0);// 第一个明细表
Row[] rows = d_table.getRow();
Map<String, String> cellMap = null;
Cell[] cells = null;
for (Row row : rows) {
Map map1 = new HashMap();
cells = row.getCell();
cellMap = this.getCellMap(cells);// 明细每一列的值
String VBELN = cellMap.get("ID");//ID值
String POSNR = cellMap.get("INFO");//详细信息
map1.put("ID", ID);
map1.put("INFO", INFO);
list1.add(map1);
}
model2.setData("IT_TABLE");//指定传送的数据表格名称
model2.setList(list1);
list.add(model2);
SAPModel model = connect.OperSAP(map, list, null, functionName);
}
map-------传的是方法参数
list---------传的是表格数据
重点:一定要注意的是需要指定传输的数据是传给SAP方法中的哪个表,这个表名必须明确!!!