Ecology 9二次开发 java调用SAP 发布的webservice 与OA前端交互

一、接口信息
接口描述 SAP客户-产品组-销售员关系查询接口
接口功能 通过客户、销售组织、分销渠道在SAP查询到该客户对应的产品组、销售员、最终客户。
接口方向 OA--SAP
接口程序 接口名称
url http://SAP域名:8000/sap/bc/srt/wsdl/flv_10002P111AD1/sdef_url/接口名称?sap-client=600
类型 描述 接口字段 字段名 是否必填 是否接口字段 字段类型 字段长度 小数位 备注
输入参数 客户编号 I_KUNNR KUNNR 必填 CHAR 10    
销售组 I_VKORG VKORG 必填 CHAR 4    
分销渠道 I_VTWEG VTWEG 必填 CHAR 2    
输出参数 消息类型 E_CODE     CHAR 1    S 成功,E 错误,W 警告,I 信息,A 中断
处理消息 E_MSG     CHAR 220   消息文本
输出表  IT_DATA
表名ZOAGETSDTKNVP
集团 MANDT       CLNT 3    
客户编号 KUNNR       CHAR 10    
销售组织 VKORG       CHAR 4    
分销渠道 VTWEG       CHAR 2    
终端客户 KUNN1       CHAR 10    
销售员 KUNN2       CHAR 10    
产品组 SPART       CHAR

2

   

SAP接口操作

se37命令可查看接口信息

1.实体类ZOAGETSDTKNVP、TABLE_OF_ZOAGETSDTKNVPHolder用于对接数据

package functions.rfc.sap.document.sap_com;/*** @Author: weifengyang* @Date: 2022/2/18 10:17*/
public class ZOAGETSDTKNVP implements java.io.Serializable {private String MANDT;private String KUNNR;private String VKORG;private String VTWEG;private String KUNN1;private String KUNN2;private String SPART;public ZOAGETSDTKNVP() {}public ZOAGETSDTKNVP(String MANDT, String KUNNR, String VKORG, String VTWEG, String KUNN1, String KUNN2, String SPART) {this.MANDT = MANDT;this.KUNNR = KUNNR;this.VKORG = VKORG;this.VTWEG = VTWEG;this.KUNN1 = KUNN1;this.KUNN2 = KUNN2;this.SPART = SPART;}public String getMANDT() {return MANDT;}public void setMANDT(String MANDT) {this.MANDT = MANDT;}public String getKUNNR() {return KUNNR;}public void setKUNNR(String KUNNR) {this.KUNNR = KUNNR;}public String getVKORG() {return VKORG;}public void setVKORG(String VKORG) {this.VKORG = VKORG;}public String getVTWEG() {return VTWEG;}public void setVTWEG(String VTWEG) {this.VTWEG = VTWEG;}public String getKUNN1() {return KUNN1;}public void setKUNN1(String KUNN1) {this.KUNN1 = KUNN1;}public String getKUNN2() {return KUNN2;}public void setKUNN2(String KUNN2) {this.KUNN2 = KUNN2;}public String getSPART() {return SPART;}public void setSPART(String SPART) {this.SPART = SPART;}private java.lang.Object __equalsCalc = null;public synchronized boolean equals(java.lang.Object obj) {if (!(obj instanceof ZOAGETSDTKNVP)) return false;ZOAGETSDTKNVP other = (ZOAGETSDTKNVP) obj;if (obj == null) return false;if (this == obj) return true;if (__equalsCalc != null) {return (__equalsCalc == obj);}__equalsCalc = obj;boolean _equals;_equals = true &&((this.MANDT ==null && other.getMANDT()==null) ||(this.MANDT!=null &&this.MANDT.equals(other.getMANDT()))) &&((this.KUNNR==null && other.getKUNNR()==null) ||(this.KUNNR!=null &&this.KUNNR.equals(other.getKUNNR())))&&((this.VKORG==null && other.getVKORG()==null) ||(this.VKORG!=null &&this.VKORG.equals(other.getVKORG())))&&((this.VTWEG==null && other.getVTWEG()==null) ||(this.VTWEG!=null &&this.VTWEG.equals(other.getVTWEG())))&&((this.KUNN1==null && other.getKUNN1()==null) ||(this.KUNN1!=null &&this.KUNN1.equals(other.getKUNN1())))&&((this.KUNN2==null && other.getKUNN2()==null) ||(this.KUNN2!=null &&this.KUNN2.equals(other.getKUNN2())))&&((this.SPART==null && other.getSPART()==null) ||(this.SPART!=null &&this.SPART.equals(other.getSPART())));__equalsCalc = null;return _equals;}private boolean __hashCodeCalc = false;public synchronized int hashCode() {if (__hashCodeCalc) {return 0;}__hashCodeCalc = true;int _hashCode = 1;if (getMANDT() != null) {_hashCode += getMANDT().hashCode();}if (getKUNNR() != null) {_hashCode += getKUNNR().hashCode();}if (getVKORG() != null) {_hashCode += getVKORG().hashCode();}if (getVTWEG() != null) {_hashCode += getVTWEG().hashCode();}if (getKUNN1() != null) {_hashCode += getKUNN1().hashCode();}if (getKUNN2() != null) {_hashCode += getKUNN2().hashCode();}if (getSPART() != null) {_hashCode += getSPART().hashCode();}__hashCodeCalc = false;return _hashCode;}// Type metadataprivate static org.apache.axis.description.TypeDesc typeDesc =new org.apache.axis.description.TypeDesc(ZOAGETSDTKNVP.class, true);static {typeDesc.setXmlType(new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "ZOAGETSDTKNVP"));org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("MANDT");elemField.setXmlName(new javax.xml.namespace.QName("", "MANDT"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("KUNNR");elemField.setXmlName(new javax.xml.namespace.QName("", "KUNNR"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("VKORG");elemField.setXmlName(new javax.xml.namespace.QName("", "VKORG"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("VTWEG");elemField.setXmlName(new javax.xml.namespace.QName("", "VTWEG"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("KUNN1");elemField.setXmlName(new javax.xml.namespace.QName("", "KUNN1"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("KUNN2");elemField.setXmlName(new javax.xml.namespace.QName("", "KUNN2"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);elemField = new org.apache.axis.description.ElementDesc();elemField.setFieldName("SPART");elemField.setXmlName(new javax.xml.namespace.QName("", "SPART"));elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));elemField.setNillable(false);typeDesc.addFieldDesc(elemField);}/*** Return type metadata object*/public static org.apache.axis.description.TypeDesc getTypeDesc() {return typeDesc;}/*** Get Custom Serializer*/public static org.apache.axis.encoding.Serializer getSerializer(java.lang.String mechType,java.lang.Class _javaType,javax.xml.namespace.QName _xmlType) {returnnew  org.apache.axis.encoding.ser.BeanSerializer(_javaType, _xmlType, typeDesc);}/*** Get Custom Deserializer*/public static org.apache.axis.encoding.Deserializer getDeserializer(java.lang.String mechType,java.lang.Class _javaType,javax.xml.namespace.QName _xmlType) {returnnew  org.apache.axis.encoding.ser.BeanDeserializer(_javaType, _xmlType, typeDesc);}
}
/*** @Author: weifengyang* @Date: 2022/2/18 10:41*/
public class TABLE_OF_ZOAGETSDTKNVPHolder implements javax.xml.rpc.holders.Holder {public functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[] value;public TABLE_OF_ZOAGETSDTKNVPHolder() {}public TABLE_OF_ZOAGETSDTKNVPHolder(functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[] value) {this.value = value;}}

2.新建TABLE_OF_ZOAGETSDTKNVP_ProType

/*** @Author: weifengyang* @Date: 2022/2/18 10:44*/
public interface TABLE_OF_ZOAGETSDTKNVP_ProType extends java.rmi.Remote {public void TABLE_OF_ZOAGETSDTKNVP(functions.rfc.sap.document.sap_com.holders.TABLE_OF_ZOAGETSDTKNVPHolder zoagetsdtknvpHolder,java.lang.String I_KUNNR,java.lang.String I_VKORG,java.lang.String I_VTWEG, javax.xml.rpc.holders.StringHolder e_CODE, javax.xml.rpc.holders.StringHolder e_MSG) throws java.rmi.RemoteException;
}

3.实现TABLE_OF_ZOAGETSDTKNVP_ProType

package functions.rfc.sap.document.sap_com;/*** @Author: weifengyang* @Date: 2022/2/18 10:43*/
public class TABLE_OF_ZOAGETSDTKNVP_BindingStub extends org.apache.axis.client.Stub implements functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_ProType {private java.util.Vector cachedSerClasses = new java.util.Vector();private java.util.Vector cachedSerQNames = new java.util.Vector();private java.util.Vector cachedSerFactories = new java.util.Vector();private java.util.Vector cachedDeserFactories = new java.util.Vector();static org.apache.axis.description.OperationDesc [] _operations;static {_operations = new org.apache.axis.description.OperationDesc[1];_initOperationDesc1();}private static void _initOperationDesc1(){org.apache.axis.description.OperationDesc oper;org.apache.axis.description.ParameterDesc param;oper = new org.apache.axis.description.OperationDesc();oper.setName("ZOA_ZSDTKNVP_DISPLAY");param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "IT_DATA"), org.apache.axis.description.ParameterDesc.INOUT, new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "TABLE_OF_ZOAGETSDTKNVP"), functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[].class, false, false);param.setItemQName(new javax.xml.namespace.QName("", "item"));oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "I_KUNNR"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char10"), java.lang.String.class, false, false);oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "I_VKORG"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char4"), java.lang.String.class, false, false);oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "I_VTWEG"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char2"), java.lang.String.class, false, false);oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "E_CODE"), org.apache.axis.description.ParameterDesc.OUT, new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char1"), java.lang.String.class, false, false);oper.addParameter(param);param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "E_MSG"), org.apache.axis.description.ParameterDesc.OUT, new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char100"), java.lang.String.class, false, false);oper.addParameter(param);oper.setReturnType(org.apache.axis.encoding.XMLType.AXIS_VOID);oper.setStyle(org.apache.axis.constants.Style.WRAPPED);oper.setUse(org.apache.axis.constants.Use.LITERAL);_operations[0] = oper;}public TABLE_OF_ZOAGETSDTKNVP_BindingStub() throws org.apache.axis.AxisFault {this(null);}public TABLE_OF_ZOAGETSDTKNVP_BindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {this(service);super.cachedEndpoint = endpointURL;}public TABLE_OF_ZOAGETSDTKNVP_BindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {if (service == null) {super.service = new org.apache.axis.client.Service();} else {super.service = service;}((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");java.lang.Class cls;javax.xml.namespace.QName qName;javax.xml.namespace.QName qName2;java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char1");cachedSerQNames.add(qName);cls = java.lang.String.class;cachedSerClasses.add(cls);cachedSerFactories.add(org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleSerializerFactory.class, cls, qName));cachedDeserFactories.add(org.apache.axis.encoding.ser.BaseDeserializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleDeserializerFactory.class, cls, qName));qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char100");cachedSerQNames.add(qName);cls = java.lang.String.class;cachedSerClasses.add(cls);cachedSerFactories.add(org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleSerializerFactory.class, cls, qName));cachedDeserFactories.add(org.apache.axis.encoding.ser.BaseDeserializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleDeserializerFactory.class, cls, qName));qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char10");cachedSerQNames.add(qName);cls = java.lang.String.class;cachedSerClasses.add(cls);cachedSerFactories.add(org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleSerializerFactory.class, cls, qName));cachedDeserFactories.add(org.apache.axis.encoding.ser.BaseDeserializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleDeserializerFactory.class, cls, qName));qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char4");cachedSerQNames.add(qName);cls = java.lang.String.class;cachedSerClasses.add(cls);cachedSerFactories.add(org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleSerializerFactory.class, cls, qName));cachedDeserFactories.add(org.apache.axis.encoding.ser.BaseDeserializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleDeserializerFactory.class, cls, qName));qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "char2");cachedSerQNames.add(qName);cls = java.lang.String.class;cachedSerClasses.add(cls);cachedSerFactories.add(org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleSerializerFactory.class, cls, qName));cachedDeserFactories.add(org.apache.axis.encoding.ser.BaseDeserializerFactory.createFactory(org.apache.axis.encoding.ser.SimpleDeserializerFactory.class, cls, qName));qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "TABLE_OF_ZOAGETSDTKNVP");cachedSerQNames.add(qName);cls = functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[].class;cachedSerClasses.add(cls);qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "ZOAGETSDTKNVP");qName2 = new javax.xml.namespace.QName("", "item");cachedSerFactories.add(new org.apache.axis.encoding.ser.ArraySerializerFactory(qName, qName2));cachedDeserFactories.add(new org.apache.axis.encoding.ser.ArrayDeserializerFactory());qName = new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "ZOAGETSDTKNVP");cachedSerQNames.add(qName);cls = functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP.class;cachedSerClasses.add(cls);cachedSerFactories.add(beansf);cachedDeserFactories.add(beandf);}protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {try {org.apache.axis.client.Call _call = super._createCall();if (super.maintainSessionSet) {_call.setMaintainSession(super.maintainSession);}if (super.cachedUsername != null) {_call.setUsername(super.cachedUsername);}if (super.cachedPassword != null) {_call.setPassword(super.cachedPassword);}if (super.cachedEndpoint != null) {_call.setTargetEndpointAddress(super.cachedEndpoint);}if (super.cachedTimeout != null) {_call.setTimeout(super.cachedTimeout);}if (super.cachedPortName != null) {_call.setPortName(super.cachedPortName);}java.util.Enumeration keys = super.cachedProperties.keys();while (keys.hasMoreElements()) {java.lang.String key = (java.lang.String) keys.nextElement();_call.setProperty(key, super.cachedProperties.get(key));}synchronized (this) {if (firstCall()) {// must set encoding style before registering serializers_call.setEncodingStyle(null);for (int i = 0; i < cachedSerFactories.size(); ++i) {java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);javax.xml.namespace.QName qName =(javax.xml.namespace.QName) cachedSerQNames.get(i);java.lang.Object x = cachedSerFactories.get(i);if (x instanceof Class) {java.lang.Class sf = (java.lang.Class)cachedSerFactories.get(i);java.lang.Class df = (java.lang.Class)cachedDeserFactories.get(i);_call.registerTypeMapping(cls, qName, sf, df, false);}else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory)cachedSerFactories.get(i);org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory)cachedDeserFactories.get(i);_call.registerTypeMapping(cls, qName, sf, df, false);}}}}return _call;}catch (java.lang.Throwable _t) {throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);}}public void TABLE_OF_ZOAGETSDTKNVP(functions.rfc.sap.document.sap_com.holders.TABLE_OF_ZOAGETSDTKNVPHolder OUTDATA, java.lang.String KUNNR,java.lang.String VKORG,java.lang.String VTWEG,javax.xml.rpc.holders.StringHolder e_CODE, javax.xml.rpc.holders.StringHolder e_MSG) throws java.rmi.RemoteException {if (super.cachedEndpoint == null) {throw new org.apache.axis.NoEndPointException();}org.apache.axis.client.Call _call = createCall();_call.setOperation(_operations[0]);_call.setUseSOAPAction(true);_call.setSOAPActionURI("urn:sap-com:document:sap:rfc:functions:ZOA_ZSDTKNVP_DISPLAY:ZOA_ZSDTKNVP_DISPLAYRequest");_call.setEncodingStyle(null);_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);_call.setOperationName(new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "ZOA_ZSDTKNVP_DISPLAY"));setRequestHeaders(_call);setAttachments(_call);try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {OUTDATA.value,KUNNR,VKORG,VTWEG});if (_resp instanceof java.rmi.RemoteException) {throw (java.rmi.RemoteException)_resp;}else {extractAttachments(_call);java.util.Map _output;_output = _call.getOutputParams();try {OUTDATA.value = (functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[]) _output.get(new javax.xml.namespace.QName("", "IT_DATA"));} catch (java.lang.Exception _exception) {OUTDATA.value = (functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[]) org.apache.axis.utils.JavaUtils.convert(_output.get(new javax.xml.namespace.QName("", "IT_DATA")), functions.rfc.sap.document.sap_com.ZOAGETSDTKNVP[].class);}try {e_CODE.value = (java.lang.String) _output.get(new javax.xml.namespace.QName("", "E_CODE"));} catch (java.lang.Exception _exception) {e_CODE.value = (java.lang.String) org.apache.axis.utils.JavaUtils.convert(_output.get(new javax.xml.namespace.QName("", "E_CODE")), java.lang.String.class);}try {e_MSG.value = (java.lang.String) _output.get(new javax.xml.namespace.QName("", "E_MSG"));} catch (java.lang.Exception _exception) {e_MSG.value = (java.lang.String) org.apache.axis.utils.JavaUtils.convert(_output.get(new javax.xml.namespace.QName("", "E_MSG")), java.lang.String.class);}}} catch (org.apache.axis.AxisFault axisFaultException) {throw axisFaultException;}}
}

4.新建TABLE_OF_ZOAGETSDTKNVP_Service

/*** @Author: weifengyang* @Date: 2022/2/18 11:22*/
public interface TABLE_OF_ZOAGETSDTKNVP_Service  extends javax.xml.rpc.Service {public java.lang.String getTABLE_OF_ZOAGETSDTKNVPAddress();public functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_ProType getTABLE_OF_ZOAGETSDTKNVP() throws javax.xml.rpc.ServiceException;public functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_ProType getTABLE_OF_ZOAGETSDTKNVP(java.net.URL portAddress) throws javax.xml.rpc.ServiceException;
}

5.新建TABLE_OF_ZOAGETSDTKNVP_ServiceLocator

/*** @Author: weifengyang* @Date: 2022/2/18 11:21*/
public class TABLE_OF_ZOAGETSDTKNVP_ServiceLocator extends org.apache.axis.client.Service implements functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_Service {public TABLE_OF_ZOAGETSDTKNVP_ServiceLocator() {}public TABLE_OF_ZOAGETSDTKNVP_ServiceLocator(org.apache.axis.EngineConfiguration config) {super(config);}public TABLE_OF_ZOAGETSDTKNVP_ServiceLocator(java.lang.String wsdlLoc, javax.xml.namespace.QName sName) throws javax.xml.rpc.ServiceException {super(wsdlLoc, sName);}// Use to get a proxy class for TABLE_OF_ZOAGETSDTKNVPprivate java.lang.String TABLE_OF_ZOAGETSDTKNVP_address = "http://sapdevapp.ectsz.com:8000/sap/bc/srt/rfc/sap/ZOA_ZSDTKNVP_DISPLAY/600/ZOA_ZSDTKNVP_DISPLAY/ZOA_ZSDTKNVP_DISPLAY";public java.lang.String getTABLE_OF_ZOAGETSDTKNVPAddress() {return TABLE_OF_ZOAGETSDTKNVP_address;}// The WSDD service name defaults to the port name.private java.lang.String TABLE_OF_ZOAGETSDTKNVPWSDDServiceName = "TABLE_OF_ZOAGETSDTKNVP";public java.lang.String getTABLE_OF_ZOAGETSDTKNVPWSDDServiceName() {return TABLE_OF_ZOAGETSDTKNVPWSDDServiceName;}public void setTABLE_OF_ZOAGETSDTKNVPWSDDServiceName(java.lang.String name) {TABLE_OF_ZOAGETSDTKNVPWSDDServiceName = name;}public functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_ProType getTABLE_OF_ZOAGETSDTKNVP() throws javax.xml.rpc.ServiceException {java.net.URL endpoint;try {endpoint = new java.net.URL(TABLE_OF_ZOAGETSDTKNVP_address);}catch (java.net.MalformedURLException e) {throw new javax.xml.rpc.ServiceException(e);}return getTABLE_OF_ZOAGETSDTKNVP(endpoint);}public functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_ProType getTABLE_OF_ZOAGETSDTKNVP(java.net.URL portAddress) throws javax.xml.rpc.ServiceException {try {functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_BindingStub _stub = new functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_BindingStub(portAddress, this);_stub.setPortName(getTABLE_OF_ZOAGETSDTKNVPWSDDServiceName());return _stub;}catch (org.apache.axis.AxisFault e) {return null;}}public void setTABLE_OF_ZOAGETSDTKNVPEndpointAddress(java.lang.String address) {TABLE_OF_ZOAGETSDTKNVP_address = address;}/*** For the given interface, get the stub implementation.* If this service has no port for the given interface,* then ServiceException is thrown.*/public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {try {if (functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_ProType.class.isAssignableFrom(serviceEndpointInterface)) {functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_BindingStub _stub = new functions.rfc.sap.document.sap_com.TABLE_OF_ZOAGETSDTKNVP_BindingStub(new java.net.URL(TABLE_OF_ZOAGETSDTKNVP_address), this);_stub.setPortName(getTABLE_OF_ZOAGETSDTKNVPWSDDServiceName());return _stub;}}catch (java.lang.Throwable t) {throw new javax.xml.rpc.ServiceException(t);}throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface:  " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));}/*** For the given interface, get the stub implementation.* If this service has no port for the given interface,* then ServiceException is thrown.*/public java.rmi.Remote getPort(javax.xml.namespace.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {if (portName == null) {return getPort(serviceEndpointInterface);}java.lang.String inputPortName = portName.getLocalPart();if ("TABLE_OF_ZOAGETSDTKNVP".equals(inputPortName)) {return getTABLE_OF_ZOAGETSDTKNVP();}else  {java.rmi.Remote _stub = getPort(serviceEndpointInterface);((org.apache.axis.client.Stub) _stub).setPortName(portName);return _stub;}}public javax.xml.namespace.QName getServiceName() {return new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "TABLE_OF_ZOAGETSDTKNVP");}private java.util.HashSet ports = null;public java.util.Iterator getPorts() {if (ports == null) {ports = new java.util.HashSet();ports.add(new javax.xml.namespace.QName("urn:sap-com:document:sap:rfc:functions", "TABLE_OF_ZOAGETSDTKNVP"));}return ports.iterator();}/*** Set the endpoint address for the specified port name.*/public void setEndpointAddress(java.lang.String portName, java.lang.String address) throws javax.xml.rpc.ServiceException {if ("TABLE_OF_ZOAGETSDTKNVP".equals(portName)) {setTABLE_OF_ZOAGETSDTKNVPEndpointAddress(address);}else{ // Unknown Port Namethrow new javax.xml.rpc.ServiceException(" Cannot set Endpoint Address for Unknown Port" + portName);}}/*** Set the endpoint address for the specified port name.*/public void setEndpointAddress(javax.xml.namespace.QName portName, java.lang.String address) throws javax.xml.rpc.ServiceException {setEndpointAddress(portName.getLocalPart(), address);}}

6.调用接口service类ZOA_ZSDTKNVP_MODIFYQueryService

package ectsz.sd;import functions.rfc.sap.document.sap_com.*;
import functions.rfc.sap.document.sap_com.holders.TABLE_OF_ZOAGETSDTKNVPHolder;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.log4j.Logger;
import weaver.general.BaseBean;
import ws.log.LoggerUtil;import javax.xml.rpc.holders.StringHolder;
import java.net.URL;/*** @Author: weifengyang* @Date: 2022/2/18 11:11*/
public class TABLE_OF_ZOAGETSDTKNVPQueryService {private Logger logger = null;public TABLE_OF_ZOAGETSDTKNVPQueryService() {this(false);}public TABLE_OF_ZOAGETSDTKNVPQueryService(Boolean isUnitTest) {logger = LoggerUtil.getLogger(1, "客户-销售员-产品组关联关系查询", isUnitTest);
//        logger.info("class: " + TABLE_OF_ZOAGETSDTKNVPQueryService.class.getName());}public JSONObject callSAP(String KUNNR, String VKORG, String VTWEG) {JSONObject sapResult = new JSONObject();try {// 获取sap ws相关信息String sapUsername = new BaseBean().getPropValue("ect", "sapws.username");String sapPassword = new BaseBean().getPropValue("ect", "sapws.password");String sapServer = new BaseBean().getPropValue("ect", "sapws.server");String sapUrl = sapServer + new BaseBean().getPropValue("ect", "sapws.url.ZOA_ZSDTKNVP_DISPLAY");logger.info("sap接口地址:" + sapUrl);URL url = new URL(sapUrl);TABLE_OF_ZOAGETSDTKNVP_ServiceLocator locator = new TABLE_OF_ZOAGETSDTKNVP_ServiceLocator();TABLE_OF_ZOAGETSDTKNVP_BindingStub stub = new TABLE_OF_ZOAGETSDTKNVP_BindingStub(url, locator);stub.setUsername(sapUsername);stub.setPassword(sapPassword);String I_KUNNR = KUNNR;String I_VKORG = VKORG;String I_VTWEG = VTWEG;//            logger.info("===SAP输入参数===");
//            logger.info("I_KUNNR:" + I_KUNNR);
//            logger.info("I_VKORG:" + I_VKORG);
//            logger.info("I_VTWEG:" + I_VTWEG);// 输出参数初始化StringHolder e_CODE = new StringHolder(), e_MSG = new StringHolder();e_CODE.value = "";e_MSG.value = "";TABLE_OF_ZOAGETSDTKNVPHolder IT_DATA = new TABLE_OF_ZOAGETSDTKNVPHolder();// 调用sap接口stub.TABLE_OF_ZOAGETSDTKNVP(IT_DATA, I_KUNNR, I_VKORG, I_VTWEG, e_CODE, e_MSG);String code = e_CODE.value;String msg = e_MSG.value;// 打印输出SAP返回结果sapResult.put("CODE", code);sapResult.put("MSG", msg);ZOAGETSDTKNVP[] etData = IT_DATA.value;JSONArray sapResultData = JSONArray.fromObject(etData);sapResult.put("DATA", sapResultData);
//            logger.info("===SAP返回结果===");
//            logger.info(sapResult.toString());if ("E".equals(code)) {LoggerUtil.endFailure();} else if ("S".equals(e_CODE.value)) {LoggerUtil.endSuccess();}} catch (Exception e) {LoggerUtil.endFailure(e);}return sapResult;}
}

7.接口调用TABLE_OF_ZOAGETSDTKNVPAction

package com.api.ect.sd;import ectsz.sd.SellingDailyReportService;
import ectsz.sd.TABLE_OF_ZOAGETSDTKNVPQueryService;
import net.sf.json.JSONObject;
import weaver.general.Util;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;/*** @Author: weifengyang* @Date: 2022/2/18 11:05*/
@Path("/ectsz/customer")
public class TABLE_OF_ZOAGETSDTKNVPAction {@GET@Path("/get_customer_xsy_cpz_info")@Produces(MediaType.TEXT_PLAIN)public String dailySearch(@Context HttpServletRequest request, @Context HttpServletResponse response) {String KUNNR = Util.null2String(request.getParameter("I_KUNNR"));String VKORG = Util.null2String(request.getParameter("I_VKORG"));String VTWEG = Util.null2String(request.getParameter("I_VTWEG"));TABLE_OF_ZOAGETSDTKNVPQueryService service = new TABLE_OF_ZOAGETSDTKNVPQueryService(false);JSONObject jsonObject = service.callSAP(KUNNR, VKORG, VTWEG);return jsonObject.toString();}
}后台代码编写完成,接着回到前端调用......

测试调用结果

OA前端写JS调用

<script type = "text/javascript" src = "/ect/wf/ws.formex.js"></script> 
<script>
$(function(){
//分销渠道值改变触发事件
WfForm.bindFieldChangeEvent("field19525", function(obj,id,value){
  var field = value ;
  if(field != ""){
  callsap(field);
  }else{
    alert("无数据。。");
    WfForm.delDetailRow("detail_1", "all");
  }
});
    
//调用接口将客户、销售组织、分销渠道的值传给SAP
function callsap(field){ 
  //获取客户,销售组织的值
  var value1 = WfForm.getFieldValue("field19523");
  var value2 = WfForm.getBrowserShowName("field19529");
  console.log("value1-",value1);
  console.log("value2-",value2);
  window.ecCom.WeaTools.callApi('/api/ectsz/customer/get_customer_xsy_cpz_info','GET',{
    I_VTWEG:field,
    I_KUNNR:value1,
    I_VKORG:value2
  }, 'json', false, false).then(function(result){
    var  obj = result.DATA;
    //调用接口成功,SAP返回销售员,终端客户,产品组的值。
    if(result.CODE == 'S'){
      for(var i=0;i<result.DATA.length;i++){
        WfForm.addDetailRow("detail_1",{field19526:{value:""}});
          //销售员
                WfForm.changeFieldValue("field19526" + '_' + i, {
                    value: result.DATA[i].KUNN2,
                    specialobj: [{
                        id: result.DATA[i].KUNN2,
                        name: result.DATA[i].KUNN2
                    }]
                });
              //产品组
              WfForm.changeFieldValue("field19527" + '_' + i, {
                value: result.DATA[i].SPART,
                specialobj: [{
                    id: result.DATA[i].SPART,
                    name: result.DATA[i].SPART
                  }]
              });
              //终端客户
              WfForm.changeFieldValue("field19528"+ '_' + i, {
                value: result.DATA[i].KUNN1,
                specialobj: [{
                    id: result.DATA[i].KUNN1,
                    name: result.DATA[i].KUNN1
                  }]
              });
    }
      
    }else if(result.CODE == 'E'){
      if(field != ""){
         alert("该客户未在SAP维护信息");
         WfForm.delDetailRow("detail_1", "all");
      }
     
    }
    
  });
}
//提交时做校验
jQuery(document).ready(function(){
  checkCustomize = function(){
    var i=0;
    var rows = WfForm.getDetailRowCount("detail_1");
    for(; i<rows; i++){
      var a = i-1;
      //产品组 
      var field1 = jQuery("#field19527_"+ i).val();
      if( rows> 1 && field1 == 00){
        alert("明细产品组存在多行00,请修改!");
        return false;
      }
    }
    if(!check_detail1()){
      return false;
    }
    return true;
  }
});
//产品组为*号时转换为00
jQuery(document).ready(function(){     
  WfForm.bindDetailFieldChangeEvent("field19527",function(id,rowIndex,value){
    console.log("rowIndex",rowIndex);
    if(value == "*"){
      WfForm.changeFieldValue("field19527_"+ rowIndex, {     
        value: "",     
        specialobj:[{
        id:"1",name:"00"}] 
      });
    }
  }); 
  
});

//此方法用于判断明细表中产品组+终端客户是否唯一
function check_detail1(){
  var total_rows = WfForm.getDetailRowCount("detail_1");
    //var str = [];
    var str2 = [];
    for(var i=0; i<total_rows;i++){
      var description = "";//用于拼接字符串
      //获取产品组、终端客户、销售员信息
      var xsy = WfForm.getBrowserShowName("field19526"+ '_' + i);//销售员
      var cpz = WfForm.getBrowserShowName("field19527"+ '_' + i);//产品组
      var zdkh = WfForm.getBrowserShowName("field19528"+ '_' + i);//终端客户
      str2[i] = cpz.concat(zdkh);
      //str[i] = xsy.concat(cpz,zdkh);
    }
    debugger;
    var arrset = new Set(str2);
    console.log(arrset);
    //判断明细表中产品组+终端客户是否唯一
    if(str2.length > 1){
      if(arrset.size != str2.length){
        alert("明细行中不允许存在相同的产品组+终端客户行数据,请检查后重新提交!")
        return false;
      }
      return true;
    }
}

});
</script>

至此整个调用过程结束,希望能帮到您,不足之处欢迎大家指出,共同提升,谢谢!

泛微OA与SAP通过webservice方式对接数据完整操作相关推荐

  1. 【泛微OA】常用配置文件修改方式

    一.修改意见默认字体 sysadmin账号登录,在浏览器调用接口的方式修改配置 /api/workflow/index/updateWfConfig?name=signinput_default_fo ...

  2. 泛微OA调用SAP接口

    1.创建一个存储wsdl文件的文件夹,将SAP的wsdl文件存储到文件夹中 2.选中需要调用的wsdl文件,鼠标右键New-Other-Web Service Client 生成接口文件 3.点击ne ...

  3. SAP ABAP 我的文章合集:SAP ERP 与泛微 OA 的系统集成

    SAP ABAP 我的文章合集:SAP ERP 与泛微 OA 的系统集成 简介: 本文章合集收录了我关于 SAP ERP 与泛微 OA 的系统集成相关文章,新的文章会被及时更新到本合集中.SAP ER ...

  4. 泛微 消息服务器,第三方系统向泛微OA系统推送消息

    向泛微OA系统推送消息 以下操作案例中关于第三方系统向泛微OA系统的移动端和电脑端版本推送消息说明: •  移动端使用的是泛微系统登录账号(工号)来最终实现消息的推送 •  电脑端使用的是泛微系统用户 ...

  5. webservice python开发接口_基于Python的Webservice开发(四)-泛微OA的SOAP接口

    一.功能需求 泛微e-cology可以在流程中调用Webservice接口实现与其他系统的联动等复杂功能.但是目前泛微文档中仅提供了调用的方法,但是没有关于接口的相关开发信息. 本次案例是用Pytho ...

  6. SAP ERP 与泛微 OA 系统集成的最佳实践指南

    SAP ERP 与泛微 OA 系统集成的最佳实践 简介: <SAP ERP 与泛微 OA 的系统集成>系列文章.SAP ERP 是优秀的企业核心管理系统,泛微 OA 是优秀的企业核心协同系 ...

  7. 泛微软件服务器是多少,泛微oa云服务器要求

    泛微oa云服务器要求 内容精选 换一换 简要介绍Rsyslog是一个集中日志管理工具,基于流行的服务端/客户端模式,通过TCP或者UDP传输协议来发送日志信息,或者从网络设备.服务器.路由器.交换机. ...

  8. 【利用WebServices实现泛微OA周期待办任务提醒】

    利用WebServices实现泛微OA周期待办任务提醒 项目背景 实现思路 1.创建自动生成流程的WebServices 2.创建一个周期待办提醒列表 3.创建操作系统的定时任务 4.存储过程实现时间 ...

  9. 泛微OA发送内部邮件教程【E9版本】

    泛微OA发送内部邮件教程 1.发布泛微邮件的WebService接口 2.使用eclipse根据wsdl生成客户端 3.接口重写问题 4.使用kettle定时发送内部邮件 1.发布泛微邮件的WebSe ...

  10. 泛微OA在公立三甲医院:推动建立完善财务预算数字化管理体系

    苏州大学附属第二医院始建于1988年,又名核工业总医院.中法友好医院,是一所集医疗.教学.科研.预防.核应急等为一体的三级甲等医院,也是苏州大学医学部第二临床医学院. 医院十分重视数字化建设,2016 ...

最新文章

  1. 【OpenCV 4开发详解】直方图操作
  2. 改变自己,YT,吵架,和好,感冒,烦,新的项目,旧的垃圾,呵呵呵。。
  3. 开发日记-20190330
  4. 洛谷3317 SDOI2014重建(高斯消元+期望)
  5. L3-2 至多删三个字符
  6. python建立FTP服务器
  7. java重新开始循环_java for循环只进行第一次循环
  8. linux文件系统命令
  9. Unix操作系统基础:Unix文件系统之文件权限
  10. python生成word目录_Python word_cloud导出字体路径后找不到字体路径
  11. 跟华为云一起,做未来城市的解谜人
  12. 404错误是什么意思?为什么是404?
  13. DDR3基本概念1 - 存储单元结构和原理
  14. iOS 之归档解档(nskeyarchieve)
  15. GD32450i-EVAL学习笔记 12 - EXMCNandFlash
  16. 河南计算机与科学研究生招生,2021年河南理工大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  17. 如何用viso画波浪线、以及带箭头的波浪线。
  18. jquerymobile创建9宫格事例
  19. 自动化运维-Ansible(redhat 8)
  20. Java multiplechoice,雅思听力八大题型之Multiple Choice题型篇

热门文章

  1. 卡尔曼滤波(Kalman Filtering)——(7)扩展卡尔曼滤波(EKF)一阶滤波
  2. 支付宝小程序使用阿里图标
  3. OpenCV C++双目三维重建:双目摄像头实现双目测距
  4. 37个 safari 快捷键,让Mac网页浏览更方便
  5. 一个问题讨论:为什么有些境外和港澳台地区的手机APP打不开
  6. 北大开源ECCV2018深度去雨算法:RESCAN
  7. python脚本编程基础读后感_Python入门经典的读后感10篇
  8. 怎么压缩图片的大小?收好这几个压缩方法
  9. python英文词频统计软件_英语词频统计软件功能介绍
  10. 程序员必备的25个好网站汇总