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 metadata private 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) { return new 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) { return new 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_ZOAGETSDTKNVP private 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 Name throw 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>
至此整个调用过程结束,希望能帮到您,不足之处欢迎大家指出,共同提升,谢谢!