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;
|
}
|
}
|