| | |
| | | package org.jeecg.modules.sap.service.impl; |
| | | |
| | | import com.sap.conn.jco.JCoDestination; |
| | | import com.sap.conn.jco.JCoFunction; |
| | | import com.sap.conn.jco.JCoParameterList; |
| | | import com.sap.conn.jco.JCoRepository; |
| | | import com.sap.conn.jco.*; |
| | | import lombok.SneakyThrows; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jeecg.config.sap.SapRfcConnectionManager; |
| | |
| | | public class SAPServiceImpl implements SAPService { |
| | | @Autowired |
| | | private SapRfcConnectionManager connectionManager; |
| | | @SneakyThrows |
| | | |
| | | @Override |
| | | public String test() { |
| | | public String test() { |
| | | JCoDestination destination = connectionManager.getDestination(); |
| | | JCoRepository repository = destination.getRepository(); |
| | | JCoFunction function = repository.getFunction("ZPPF_022"); |
| | | try { |
| | | JCoRepository repository = destination.getRepository(); |
| | | JCoFunction function = repository.getFunction("ZPPF_022"); |
| | | |
| | | if (function == null) { |
| | | throw new RuntimeException("RFC 函数模块 ZPPF_022 未找到!"); |
| | | } |
| | | if (function == null) { |
| | | throw new RuntimeException("RFC 函数模块 ZPPF_022 未找到!"); |
| | | } |
| | | |
| | | // 设置输入参数 |
| | | JCoParameterList input = function.getImportParameterList(); |
| | | input.setValue("ZTAB_WERKS", Collections.singletonList("2301")); //参数名需与 SAP 函数定义一致 |
| | | // 设置输入参数 |
| | | JCoParameterList input = function.getImportParameterList(); |
| | | JCoTable inputTable = function.getTableParameterList().getTable("ZTAB_WERKS"); |
| | | inputTable.appendRow(); |
| | | inputTable.setValue("ZTAB_WERKS", "2301"); //参数名需与 SAP 函数定义一致 |
| | | |
| | | // 执行调用 |
| | | function.execute(destination); |
| | | // 执行调用 |
| | | function.execute(destination); |
| | | |
| | | // 获取输出参数 |
| | | JCoParameterList output = function.getExportParameterList(); |
| | | // 获取输出参数 |
| | | JCoTable outputTable = function.getTableParameterList().getTable("ZTAB_AUFNR"); |
| | | int numRows = outputTable.getNumRows(); |
| | | for (int i = 0; i < numRows; i++) { |
| | | outputTable.setRow(i); |
| | | log.info("Row {} : {}", i, outputTable.getString("AUFNR")); |
| | | } |
| | | // String materialName = output.getString("MATERIAL_NAME"); // 参数名需与 SAP 函数定义一致 |
| | | |
| | | return ""; |
| | | return String.valueOf(numRows); |
| | | } catch (JCoException e) { |
| | | log.error(e.getMessage(), e); |
| | | } |
| | | return null; |
| | | } |
| | | } |