我正在研究SAP JCo。并在设置DATE '12 .16.2016'
时获得异常例外: com.sap.conn.jco.ConversionException:(122)JCO_ERROR_CONVERSION:无法将字段java.lang.String中的'12 .16.2016'值转换为字段DATE的STRUCTURE。
我的代码是
public static void YP_ECA_VIN(String date, String plant) throws Exception {
try {
JCoDestination destination;
JCoRepository sapRepository;
destination = JCoDestinationManager.getDestination(DST1);
JCoDestinationManager.getDestination(DST1);
JCoContext.begin(destination);
sapRepository = destination.getRepository();
if (sapRepository == null) {
System.out.println("Couldn't get repository!");
JCoContext.end(destination);
System.exit(0);
}
JCoFunctionTemplate template = sapRepository.getFunctionTemplate("YP_ECA_VIN");
if (template == null) {
System.out.println("Couldn't get template for YP_ECA_VIN!");
} else {
JCoFunction function = template.getFunction();
function.getImportParameterList().setValue("DATE", "12.16.2016");
function.getImportParameterList().setValue("PLANT", plant);
function.execute(destination);
int numTRows = 0;
int numTCoulmns = 0;
JCoTable table = function.getExportParameterList().getTable("OUTPUT");
// some code
}
答案 0 :(得分:0)
JCO.Functions 中的所有参数都应为字符串。尝试将日期值设置为字符串。在SAP中,日期字符串的格式为“yyyyMMdd”,如“20161223”。
答案 1 :(得分:0)
名为DATE的RFM导入参数显然不是日期类型,而是结构类型。在这种情况下,您必须在JCo端使用JCoStructure实例而不是String。
但我宁愿假设您在ABAP端定义远程功能模块接口YP_ECA_VIN时犯了一个错误,并且您希望此导入参数DATE实际上是ABAP日期类型。