package org.jeecg.modules.sap.service.impl; import com.sap.conn.jco.*; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.jeecg.config.sap.SapRfcConnectionManager; import org.jeecg.modules.sap.service.SAPService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.Collections; @Service @Slf4j public class SAPServiceImpl implements SAPService { @Autowired private SapRfcConnectionManager connectionManager; @Override public String test() { JCoDestination destination = connectionManager.getDestination(); try { JCoRepository repository = destination.getRepository(); JCoFunction function = repository.getFunction("ZPPF_022"); if (function == null) { throw new RuntimeException("RFC 函数模块 ZPPF_022 未找到!"); } // 设置输入参数 JCoTable inputTable = function.getTableParameterList().getTable("ZTAB_WERKS"); inputTable.appendRow(); inputTable.setValue("WERKS", "2301"); //参数名需与 SAP 函数定义一致 // 执行调用 function.execute(destination); // 获取输出参数 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")); } return String.valueOf(numRows); } catch (JCoException e) { log.error(e.getMessage(), e); } return null; } }