CheckSnFromSAP.java 3.68 KB
package com.huaheng.common.sapJco;

import com.huaheng.pc.monitor.apilog.domain.ApiLog;
import com.huaheng.pc.monitor.apilog.service.IApiLogService;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoTable;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;

@Component
public class CheckSnFromSAP {
    @Resource
    private IApiLogService apiLogService;

    public SAPEntity sendToSap(String task_No, BigDecimal qty) {
        JCoFunction function = null;
        JCoDestination destination = SAPConn.connect();
        String result = "";//调用接口返回状态
        String message = "";//调用接口返回信息
        SAPEntity sapEntity = new SAPEntity();
        try {
            //调用ZWMSHH_MACHINE_GR函数
            function = destination.getRepository().getFunction("ZWMSHH_MACHINE_GR");
            //获取传入表参数SN_ITEM
            JCoTable SN_ITEM = function.getTableParameterList().getTable("CT_RECEIPT");
            SN_ITEM.appendRow();//增加一行
            //给表参数中的字段赋值,此处测试,就随便传两个值进去
            SN_ITEM.setValue("TASK_NO", task_No);
            SN_ITEM.setValue("QTY", Integer.valueOf(qty.toString()));
            function.execute(destination);

            JCoTable ct_receipt = function.getTableParameterList().getTable("CT_RECEIPT");

            Integer QTY = ct_receipt.getInt("QTY");
            String TYPE = ct_receipt.getString("TYPE");
            Integer ORDERS = ct_receipt.getInt("ORDERS");
            String TASK_NO = ct_receipt.getString("TASK_NO");
            String MESSAGE = ct_receipt.getString("MESSAGE");
            String BILL_NO = ct_receipt.getString("BILL_NO");
            String ITEM_CODE = ct_receipt.getString("ITEM_CODE");
            Integer OPERATION_TYPE = ct_receipt.getInt("OPERATION_TYPE");

            ApiLog apiLog = new ApiLog();
            apiLog.setApiName("出库单回传");
            apiLog.setApiMethod("RFC");
            apiLog.setRequestFrom("WMS");
            apiLog.setResponseBy("ASP");
            apiLog.setUrl("CT_RECEIPT");
            apiLog.setRequestTime(new Date());
            apiLog.setResponseTime(new Date());
            apiLog.setRequestBody("{" + "TASK_NO:" + task_No + ",QTY:" + qty + "}");
            result = "{TASK_NO:" + TASK_NO + ",TYPE:" + TYPE + ",MESSAGE:" + MESSAGE + ",BILL_NO:" + BILL_NO + ",ORDERS:" + ORDERS + ",OPERATION_TYPE:" + OPERATION_TYPE + ",QTY:" + QTY + ",ITEM_CODE:" + ITEM_CODE + "}";
            apiLog.setResponseBody(result);
            apiLogService.save(apiLog);


            sapEntity.setBILL_NO(BILL_NO);
            sapEntity.setTASK_NO(TASK_NO);
            sapEntity.setITEM_CODE(ITEM_CODE);
            sapEntity.setMESSAGE(MESSAGE);
            sapEntity.setOPERATION_TYPE(OPERATION_TYPE);
            sapEntity.setTYPE(TYPE);
            sapEntity.setQTY(QTY);
            sapEntity.setORDERS(ORDERS);
            /*result= function.getExportParameterList().getString("RESULT");//调用接口返回状态
            message= function.getExportParameterList().getString("MESSAGE");//调用接口返回信息
            result="{TASK_NO:"+TASK_NO+",TYPE:"+TYPE+",MESSAGE:"+MESSAGE+",BILL_NO:"+BILL_NO+",ORDERS:"+ORDERS+",OPERATION_TYPE:"+OPERATION_TYPE+",QTY:"+QTY+",ITEM_CODE:"+ITEM_CODE+"}";
            System.out.println("调用返回信息--->"+result);
            清空本次条件,如果要继续传入值去或者还要循环,那得将之前的条件清空*/
            SN_ITEM.clear();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sapEntity;
    }
}