public void getData()

in code/src/main/java/DataProviderST03.java [39:148]


    public void getData() throws JCoException
    {
        //IMPORT
        final java.util.Date date = config.system_date;
        final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        String end_time = sdf.format(cal.getTime());
        cal.add(Calendar.MINUTE, -frequency); //Run only every 5th minute => Time Offset 5 min
        String start_time = sdf.format(cal.getTime());

        //MAKE SURE START TIME < END TIME
        if (Utils.startAfterEndTime(start_time,end_time)) {
            start_time = "00:00:01";
            System.out.println("Time adjusted!");
        }

        HashMap<String, Object> importParameters = new HashMap<String, Object>();
        importParameters.put("READ_START_DATE", date);
        importParameters.put("READ_END_DATE", date);
        importParameters.put("READ_START_TIME", start_time);
        importParameters.put("READ_END_TIME", end_time);

        //EXECUTE
        JCoParameterList exportParameters = utils.execute("PARAMS", importParameters, rfc, prefix, frequency);
          
        //EXPORT
        if(exportParameters != null)
        {
            final JCoTable result = exportParameters.getTable("TASKTIMES");
            for (int i = 0; i < result.getNumRows(); i++) {
                result.setRow(i);

                String TASKTYPE = result.getString("TASKTYPE");
                String TASKTYPE_LABEL = "";

                //RFC => FE & DIA => 01
                if (TASKTYPE.equals("FE") || TASKTYPE.equals("01")) {

                    if(TASKTYPE.equals("FE"))
                    TASKTYPE_LABEL = "RFC";
                    if(TASKTYPE.equals("01"))
                    TASKTYPE_LABEL = "DIA";

                    Double STEPS = Double.parseDouble(result.getString("COUNT"));
                    Double TOTAL_RESPONSE_TIME = Double.parseDouble(result.getString("RESPTI"));
                    Double TOTAL_CPU_TIME = Double.parseDouble(result.getString("CPUTI"));
                    Double TOTAL_DB_TIME_READ_SEQ = Double.parseDouble(result.getString("READSEQTI")); //TOTAL TIME SEQUENTIAL READS
                    Double TOTAL_DB_TIME_READ_CHG = Double.parseDouble(result.getString("CHNGTI")); //TOTAL TIME CHANGES
                    Double TOTAL_DB_TIME_READ_DIR = Double.parseDouble(result.getString("READDIRTI")); //TOTAL TIME DIRECT READS

                    Double NUMBER_DB_TIME_READ_SEQ = Double.parseDouble(result.getString("READSEQCNT")); //COUNT SEQUENTIAL READS
                    Double NUMBER_DB_TIME_READ_CHG = Double.parseDouble(result.getString("CHNGCNT")); //COUNT TIME CHANGES
                    Double NUMBER_DB_TIME_READ_DIR = Double.parseDouble(result.getString("READDIRCNT")); //COUNT TIME DIRECT READS

                    long TOTAL_DB_TIME = Math.round(TOTAL_DB_TIME_READ_SEQ +  TOTAL_DB_TIME_READ_CHG + TOTAL_DB_TIME_READ_DIR);

                    //As per
                    //SAP recommendation
                    //https://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=471174735

                    //Average response time per STEP - approx. 1 second (dialog), <1 second (update)
                    long AVG_RESPONSE_TIME = Math.round(TOTAL_RESPONSE_TIME / STEPS);

                    //Average db time per STEP
                    //long AVG_DB_TIME = Math.round(TOTAL_DB_TIME/ STEPS);

                    //CPU TIME % - ideally 40%
                    long TOTAL_CPU_TIME_PC = Math.round(100 * TOTAL_CPU_TIME / TOTAL_RESPONSE_TIME);

                    //DB TIME % - ideally 40%
                    long TOTAL_DB_TIME_PC = Math.round(100 * TOTAL_DB_TIME / TOTAL_RESPONSE_TIME);

                    //REST (Wait, load, ...) 20%
                    //long TOTAL_REST_PC = 100 - TOTAL_DB_TIME_PC - TOTAL_CPU_TIME_PC;

                    //DB Time per Direct Read <10ms
                    double AVG_DB_TIME_DIR = 0.0;
                    if (NUMBER_DB_TIME_READ_DIR != 0) {
                        AVG_DB_TIME_DIR = Double.parseDouble(df.format(TOTAL_DB_TIME_READ_DIR / NUMBER_DB_TIME_READ_DIR));
                    }

                    //DB Time per Seq Read <40ms
                    double AVG_DB_TIME_SEQ = 0.0;
                    if (NUMBER_DB_TIME_READ_SEQ != 0) {
                        AVG_DB_TIME_SEQ = Double.parseDouble(df.format(TOTAL_DB_TIME_READ_SEQ / NUMBER_DB_TIME_READ_SEQ));
                    }

                    //DB Time per Changes <25ms
                    double AVG_DB_TIME_CHG = 0.0;
                    if( NUMBER_DB_TIME_READ_CHG != 0) {
                        AVG_DB_TIME_CHG = Double.parseDouble(df.format(TOTAL_DB_TIME_READ_CHG / NUMBER_DB_TIME_READ_CHG));
                    }

                    utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_AVG_SNAP",(double) AVG_RESPONSE_TIME);
                    utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_CPU_TIME_PERC_SNAP",(double) TOTAL_CPU_TIME_PC);
                    utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_DB_TIME_PERC_SNAP",(double) TOTAL_DB_TIME_PC);
                    //utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_R_TIME_PERC_SNAP",(double) TOTAL_REST_PC);
                    utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_AVG_DB_DIR_SNAP",(double) AVG_DB_TIME_DIR);
                    utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_AVG_DB_SEQ_AVG_SNAP",(double) AVG_DB_TIME_SEQ);
                    utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_AVG_DB_CHG_AVG_SNAP",(double) AVG_DB_TIME_CHG);
                    //utils.collectResultEmbedded(config.destination_name, "ST03_" + TASKTYPE_LABEL + "_AVGDB_SNAP", (double) AVG_DB_TIME);
                }
            }
            
            //SUBMIT
            if(result.getNumRows() > 0)
            utils.submitResultsEmbedded(prefix);
        }
    }