爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Ian在北京做的CFCA的Java代码

      首页 知识中心 软件开发 文章详情页

      Ian在北京做的CFCA的Java代码

      2024-08-01 09:05:04 阅读次数:40

      java,编程开发

      
      import java.io.BufferedWriter;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.OutputStreamWriter;
      import java.math.BigDecimal;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.ResultSetMetaData;
      import java.sql.SQLException;
      import java.sql.Statement;
      import java.text.SimpleDateFormat;
      import java.util.ArrayList;
      
      import com.sap.conn.jco.JCoFunction;
      import com.sap.conn.jco.JCoTable;
      
      class CFCAFunctionHandler 
      {
      	
      	private JCoFunction jFunction = null;
      	//private final String remote_prefix = "sr1.";
      	//private final String local_prefix = "sr2.";
      	private final String remote_prefix = "";
      	private final String local_prefix = "";
      	//AND ( HEADER.CREATED_BY = 'PURCHMANAGER' OR HEADER.CREATED_BY = 'KAPOORK' )
      	//AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      	
      	private String user1 = "PURCHASER_US";
      	private String user2 = "KAPOORK";
      	public CFCAFunctionHandler(JCoFunction function)
      	{
      		try 
      		{          
      			jFunction = function;
      			System.out.println("CFCAFunctionHandler");
              } 
      		catch (Exception ex) 
              {
                  System.out.println("Initialized Error!");
                  System.exit(-1);
              }
      	}
      	
      	public void Dowork()
      	{
               if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_RFX_DETAIL))
              	 RetrieveRFxDetailInformation();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_UPDATE_QUTO_PRICE))
              	 UpdateQuotationPrice();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_RFX_LIST))
              	 RetrieveRFxListInfo();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_QUOT_LIST))
              	 RetrieveQuotListInfo();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_QUOT_ITEM_LIST))
              	 RetrieveQuotItemListInfo();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_QUOT_ITEM_DETAIL))
              	 RetrieveQuotItemDetailInfo();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_SYNC_FROM_REMOTE))
              	 TableSyncRead();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_SYNC_TO_REMOTE))
              	 TableSyncWrite();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_CLEAR_LOCAL_DATA))
              	 ClearLocalData();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_SYNC_RFX))
              	 RFxSyncRead();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_WRITE_RFX))
              	 RFxSyncWrite();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_RESPONSE_WRITE))
              	 rfxResponseWrite();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_PUBLISH))
              	 rfxPublish();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_BRIEF_READ))
              	 rfxBriefRead();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_BRIEF_WRITE))
              	 rfxBriefWrite();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_ITEM_READ))
                   rfxItemRead();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_BRIEF_ID_READ))
                   rfxBriefIDRead();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_SUCCEED_READ))
              	 rfxSucceedRead();
               else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_SUCCEED_DETAIL))
              	 rfxSucceedDetail();
      	}
      	
      	public void RetrieveRFxListInfo()
      	{
      		try {
      			//Get input Parameter
      			
      			JCoTable cg_table = jFunction.getChangingParameterList().getTable("OUT_RFX_LIST");
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			PreparedStatement ps = null;
      			ps = con.prepareStatement("select GUID, OBJECT_ID, DESCRIPTION from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_TYPE = ?");
      			ps.setString(1, "800");
      			ps.setString(2, "BUS2200");
      			
      			ResultSet queryResult = ps.executeQuery();
      			String lv_guid = "";
      			String lv_description = "";
      			String lv_object_id = "";
      			int count = 0;
      			
      			while (queryResult.next()) {
      				
      				count++;
      				lv_guid = queryResult.getString(1);
      				lv_object_id = queryResult.getString(2);
      				lv_description = queryResult.getString(3);
      				
      				
      				System.out.println("GUID:" + lv_guid);
      				System.out.println("Description:" + lv_description);
      				System.out.println("Object_ID:" + lv_object_id);
      				
      				cg_table.appendRow();
      				cg_table.setValue("OBJECT_ID", lv_object_id);
      				cg_table.setValue("GUID", lv_guid);
      				cg_table.setValue("DESCRIPTION", lv_description);
      				
      			}
      			jFunction.getExportParameterList().setValue("OUT_RFX_COUNT", count);
      			jFunction.getChangingParameterList().setValue("OUT_RFX_LIST",cg_table);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      	public void RetrieveQuotListInfo()
      	{
      		try {			//Get input Parameter
      			
      			//JCoTable cg_table = jFunction.getChangingParameterList().getTable("OUT_RFX_LIST");
      			JCoTable cg_table = jFunction.getExportParameterList().getTable("OUT_QUOT_LIST");
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			PreparedStatement ps = null;
      			ps = con.prepareStatement("select GUID, OBJECT_ID, DESCRIPTION from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_TYPE = ?");
      			ps.setString(1, "800");
      			ps.setString(2, "BUS2202");
      			
      			ResultSet queryResult = ps.executeQuery();
      			String lv_guid = "";
      			String lv_description = "";
      			String lv_object_id = "";
      			int count = 0;
      			
      			while (queryResult.next()) {
      				
      				count++;
      				lv_guid = queryResult.getString(1);
      				lv_object_id = queryResult.getString(2);
      				lv_description = queryResult.getString(3);
      				
      				
      				System.out.println("GUID:" + lv_guid);
      				System.out.println("Description:" + lv_description);
      				System.out.println("Object_ID:" + lv_object_id);
      				
      				cg_table.appendRow();
      				cg_table.setValue("OBJECT_ID", lv_object_id);
      				cg_table.setValue("GUID", lv_guid);
      				cg_table.setValue("DESCRIPTION", lv_description);
      				
      			}
      			jFunction.getExportParameterList().setValue("OUT_QUOT_COUNT", count);
      			jFunction.getExportParameterList().setValue("OUT_QUOT_LIST",cg_table);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      	public void RetrieveQuotItemListInfo()
      	{
      		try {
      			//Get input Parameter
      			String lv_quot_id = jFunction.getImportParameterList().getString("IN_QUOT_ID");
      			JCoTable cg_table = jFunction.getExportParameterList().getTable("OUT_QUOT_ITEM_LIST");
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			PreparedStatement ps = null;
      			
      			//Retrieve GUID for Quotation Header
      			ps = con.prepareStatement("select GUID from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_ID = ?");
      			ps.setString(1, "800");
      			ps.setString(2, lv_quot_id);
      			ResultSet queryResult = ps.executeQuery();
      			byte[] lv_guid = new byte[0];
      			
      			if (queryResult.next()) {
      				lv_guid = queryResult.getBytes(1);
      			}
      			
      			queryResult.close();
      			
      			ps = con.prepareStatement("select GUID, DESCRIPTION from sr1.CRMD_ORDERADM_I where CLIENT = ? and HEADER = ?");
      			ps.setString(1, "800");
      			//InputStream lv_bytes_guid = new ByteArrayInputStream(lv_guid);
      			//ps.setBinaryStream(2, lv_bytes_guid, 16);
      			ps.setBytes(2, lv_guid);
      
      			
      			
      			queryResult = ps.executeQuery();
      			String lv_item_guid = "";
      			String lv_product_id = "";
      			int count = 0;
      			
      			while (queryResult.next()) {
      				
      				count++;
      				lv_item_guid = queryResult.getString(1);
      				lv_product_id = queryResult.getString(2);
      				
      				System.out.println("GUID:" + lv_item_guid);
      				System.out.println("Description:" + lv_product_id);
      				
      				cg_table.appendRow();
      				cg_table.setValue("DESCRIPTION", lv_product_id);
      				cg_table.setValue("GUID", lv_item_guid);
      				
      			}
      			jFunction.getExportParameterList().setValue("OUT_QUOT_ITEM_COUNT", count);
      			jFunction.getExportParameterList().setValue("OUT_QUOT_ITEM_LIST",cg_table);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      	
      	public void UpdateQuotationPrice()
      	{
      		try {
      			//Get input Parameter
      			//String lv_item_guid = jFunction.getImportParameterList().getString("IN_RFX_ITEM_GUID");
      			byte[] lv_item_guid = jFunction.getImportParameterList().getByteArray("IN_RFX_ITEM_GUID");
      			double lv_price = jFunction.getImportParameterList().getDouble("IN_NET_PRICE");
      			System.out.println("Price:" + lv_price);
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			PreparedStatement ps = null;
      			
      			//Retrieve quantity from table BBP_PDIGP
      			ps = con.prepareStatement("select QUANTITY from sr1.BBP_PDIGP where CLIENT = ? and GUID = ?");
      			ps.setString(1, "800");
      			//InputStream lv_bytes_guid = new ByteArrayInputStream(lv_item_guid);
      			//ps.setBinaryStream(2, lv_bytes_guid, 16);
      			ps.setBytes(2, lv_item_guid);
      			ResultSet queryResult = ps.executeQuery();
      			double lv_quantity = 0;
      			
      			if (queryResult.next()) {
      				lv_quantity = queryResult.getDouble(1);
      				System.out.println("Quantity:" + lv_quantity);
      			}
      			
      			queryResult.close();
      			ps.close();
      			
      			ps = con.prepareStatement("update sr1.BBP_PDIGP set PRICE = ? , VALUE = ? where GUID = ? and CLIENT = ?");
      			
      			ps.setDouble(1, lv_price);
      			ps.setDouble(2, lv_price*lv_quantity);
      			//InputStream lv_bytes_guid1 = new ByteArrayInputStream(lv_item_guid);
      			//ps.setBinaryStream(3, lv_bytes_guid1, 16);
      			ps.setBytes(3, lv_item_guid);
      			ps.setString(4, "800");
      			
      			System.out.println("before:");
      			//ps.executeUpdate();
      			int result1 = ps.executeUpdate();
      			System.out.println("test result:" + result1);
      			
      			ps = con.prepareStatement("update sr1.BBP_PDISS set PS_VALUE_RU = ? where GUID = ? and CLIENT = ?");
      			
      			ps.setDouble(1, lv_price*lv_quantity);
      			//InputStream lv_bytes_guid2 = new ByteArrayInputStream(lv_item_guid);
      			//ps.setBinaryStream(2, lv_bytes_guid2, 16);
      			ps.setBytes(2, lv_item_guid);
      			ps.setString(3, "800");
      			
      			int result2 = ps.executeUpdate();
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",result1+result2);
      			//jFunction.getExportParameterList().setValue("OUT_RC",result2);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      	public void TableSyncWrite()
      	{
      		String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      		JCoTable lt_keys = jFunction.getImportParameterList().getTable("IN_TABLE_KEYS");
      		if(lv_table_name.equals("CFX_FOL")){
      			Sync_CFX_FOL();
      			return;
      		}
      		try {
      			//Get input Parameter
      			
      			
      			
      			//Retrieve keys from input parameters
      			String[] str_keys = new String[lt_keys.getNumRows()];
      			String str_condition = " where ";
      			System.out.print("Key for table:");
      			for (int i = 0; i < lt_keys.getNumRows();i++)
      		    {
      				lt_keys.setRow(i);
      				str_keys[i] = lt_keys.getString(0);
      				System.out.print(str_keys[i]+" ");
      				str_condition = str_condition + ((i==0)?"":" and ") + str_keys[i] + " = ? ";
      		    }
      			System.out.println();
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			Connection local_conn = factory.getLocalConnection();
      			
      			PreparedStatement ps_insert = null;
      			PreparedStatement ps_update = null;
      			PreparedStatement local_ps = null;
      			
      			//Retrieve data from Local DB
      			local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name);
      			
      			ResultSet queryResult = local_ps.executeQuery();
      			int count = 0;
      			
      			//Retrieve Meta Data
      			ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      			int i_columns = oMetaData.getColumnCount();
      			System.out.println("The number of columns for table " + lv_table_name + " is " + i_columns);
      			String[] str_columns = new String[i_columns];
      			String field_list = "";
      			String value_list = "";			
      			String update_list = "";
      			
      			System.out.print("Fields List:");
      			
      			for(int i=0; i< i_columns; i++){
      				str_columns[i] = oMetaData.getColumnName(i+1);
      				System.out.print(str_columns[i]);
      				field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
      				value_list = value_list +  ((i==0)?"?":",?");
      			}
      			System.out.println();
      			for(int i=0; i< i_columns; i++){
      				update_list = update_list + ((i==0)?"":", ") + str_columns[i] + " = ? ";
      			}
      			
      			//Prepare insert statement
      			String sql = "insert into "+ remote_prefix +lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      			System.out.println(sql);
      			ps_insert = con.prepareStatement(sql);
      			
      			//Prepare update statement
      			sql = "update "+ remote_prefix +lv_table_name + " set " + update_list + str_condition;
      			System.out.println(sql);
      			ps_update = con.prepareStatement(sql);
      			
      			int b_insert = 0;
      			int b_update = 0;
      			
      			while (queryResult.next()) {
      				
      				count++;
      				//Check whether the data record exists
      				PreparedStatement ps = null;
      				sql= "select count(*) from "+ remote_prefix + lv_table_name + str_condition;
      				ps = con.prepareStatement(sql);
      				Object[] obj_keys_value = new Object[str_keys.length];
      				for(int i=0;i< str_keys.length;i++){
      					obj_keys_value[i] = queryResult.getObject(str_keys[i]);
      					ps.setObject(i+1, obj_keys_value[i]);
      				}
      				ResultSet queryResult1 = ps.executeQuery();
      				int flag = 0;
      				if(queryResult1.next()){
      					flag = queryResult1.getInt(1);
      				}
      				ps.close();
      				
      				if(flag==0){
      					//Insert new record
      					for(int j=0;j<str_columns.length; j++){
      						ps_insert.setObject(j+1, queryResult.getObject(str_columns[j]));
      					}
      					ps_insert.addBatch();
      					b_insert++;
      				}else{
      					//Update existing record
      					for(int j=0;j<str_columns.length; j++){
      						ps_update.setObject(j+1, queryResult.getObject(str_columns[j]));
      					}
      					for(int j=0; j<str_keys.length; j++){
      						ps_update.setObject(j+1+ str_columns.length, obj_keys_value[j]);
      					}
      					ps_update.addBatch();
      					b_update++;
      					
      				}
      			}
      			//with batch
      			if(b_insert>0){
      				ps_insert.executeBatch();
      				System.out.println("insert"+b_insert);
      			}
      			ps_insert.close();
      			
      			if(b_update>0){
      				ps_update.executeBatch();
      				System.out.println("update"+b_update);
      			}
      			
      			ps_update.close();
      			
      			queryResult.close();
      			local_ps.close();
      			
      			con.close();
      			local_conn.close();
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",count);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		}
      	}
      	
      	private void Sync_CFX_FOL()
      	{
      		try {
      			//Get input Parameter
      			//String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      			String lv_client_name = "CLIENT";
      			//String[] table_list = {"CFX_OBJ_DESCR","CFX_AREA_VISITOR","CFX_HIERARCHY","CFX_FOL","CFX_AREA"};
      			String[] table_list = {"CFX_AREA_VISITOR","CFX_HIERARCHY","CFX_FOL","CFX_AREA"};
      			int count = 0;
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getLocalConnection();
      			Connection local_conn = factory.getConnection();
      			PreparedStatement ps = null;
      			PreparedStatement local_ps = null;
      			
      			for (int k = 0; k < table_list.length;k++)
      		    {
      				
      				String lv_table_name = table_list[k];
      				WriteLog("Table:" + lv_table_name + "\n");
      				//Retrieve data from Inner DB
      				ps = con.prepareStatement("select * from "+ remote_prefix + lv_table_name +" where " + lv_client_name + " = ?");
      				ps.setString(1, "800");
      				
      				ResultSet queryResult = ps.executeQuery();
      				
      				ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      				int i_columns = oMetaData.getColumnCount();
      				WriteLog("The number of columns for table " + lv_table_name + " is " + i_columns + "\n");
      				String[] str_columns = new String[i_columns];
      				String field_list = "";
      				String value_list = "";
      				WriteLog("Fields List:");
      				for(int i=0; i< i_columns; i++){
      					
      					str_columns[i] = oMetaData.getColumnName(i+1);
      					WriteLog(str_columns[i]+" ");
      					field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
      					value_list = value_list +  ((i==0)?"?":",?");
      				}
      				WriteLog("\n");
      				//Clear local table first
      				local_ps = local_conn.prepareStatement("delete from " +  local_prefix + lv_table_name);
      				local_ps.executeUpdate();
      				local_ps.close();
      				//Prepare statement for local insert
      				String sql = "insert into " + local_prefix + lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      				WriteLog(sql+ "\n");
      				local_ps = local_conn.prepareStatement(sql);
      				count =0;
      				while (queryResult.next()) {
      					count++;
      					for(int j=0;j<str_columns.length; j++){
      						local_ps.setObject(j+1, queryResult.getObject(str_columns[j]));
      					}
      					//add to batch
      					local_ps.addBatch();
      				}
      				//execute the batch
      				local_ps.executeBatch();
      				local_ps.close();
      				
      				queryResult.close();
      				ps.close();
      				WriteLog("Count:" + count + "\n");
      		    }
      			con.close();
      			local_conn.close();
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",count);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			WriteLog(e.getMessage());
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		}
      	}
      	
      	public void ClearLocalData()
      	{
      		try {
      			//Get input Parameter
      			String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      			//JCoTable lt_table = jFunction.getExportParameterList().getTable("OUT_DATA_TABLE");
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection local_conn = factory.getLocalConnection();
      			
      			PreparedStatement local_ps = null;
      			//Clear local table first
      			local_ps = local_conn.prepareStatement("delete from "+ local_prefix + lv_table_name);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",0);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		}
      	}
      	
      	public void TableSyncRead()
      	{
      		try {
      			//Get input Parameter
      			//String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      			String lv_client_name = jFunction.getImportParameterList().getString("IN_CLIENT_NAME");
      			JCoTable lt_table_name = jFunction.getImportParameterList().getTable("IN_TABLE_LIST");
      			int count = 0;
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			Connection local_conn = factory.getLocalConnection();
      			PreparedStatement ps = null;
      			PreparedStatement local_ps = null;
      			
      			for (int k = 0; k < lt_table_name.getNumRows();k++)
      		    {
      				lt_table_name.setRow(k);
      				String lv_table_name = lt_table_name.getString(0);
      				WriteLog("Table:" + lv_table_name + "\n");
      				//Retrieve data from Inner DB
      				ps = con.prepareStatement("select * from "+ remote_prefix + lv_table_name +" where " + lv_client_name + " = ?");
      				ps.setString(1, "800");
      				
      				ResultSet queryResult = ps.executeQuery();
      				
      				ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      				int i_columns = oMetaData.getColumnCount();
      				WriteLog("The number of columns for table " + lv_table_name + " is " + i_columns + "\n");
      				String[] str_columns = new String[i_columns];
      				String field_list = "";
      				String value_list = "";
      				WriteLog("Fields List:");
      				for(int i=0; i< i_columns; i++){
      					
      					str_columns[i] = oMetaData.getColumnName(i+1);
      					WriteLog(str_columns[i]+" ");
      					field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
      					value_list = value_list +  ((i==0)?"?":",?");
      				}
      				WriteLog("\n");
      				//Clear local table first
      				local_ps = local_conn.prepareStatement("delete from " +  local_prefix + lv_table_name);
      				local_ps.executeUpdate();
      				local_ps.close();
      				//Prepare statement for local insert
      				String sql = "insert into " + local_prefix + lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      				WriteLog(sql+ "\n");
      				local_ps = local_conn.prepareStatement(sql);
      				count =0;
      				while (queryResult.next()) {
      					count++;
      					for(int j=0;j<str_columns.length; j++){
      						local_ps.setObject(j+1, queryResult.getObject(str_columns[j]));
      					}
      					//add to batch
      					local_ps.addBatch();
      				}
      				//execute the batch
      				local_ps.executeBatch();
      				local_ps.close();
      				
      				queryResult.close();
      				ps.close();
      				WriteLog("Count:" + count + "\n");
      		    }
      			con.close();
      			local_conn.close();
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",count);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			WriteLog(e.getMessage());
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		}
      	}
      	
      	public void RetrieveQuotItemDetailInfo()
      	{
      		DBFactory factory = null;
      		Connection con = null;
      		try {
      			//Get input Parameter
      			//String lv_item_guid = jFunction.getImportParameterList().getString("IN_RFX_ITEM_GUID");
      			byte[] lv_item_guid = jFunction.getImportParameterList().getByteArray("IN_QUOT_ITEM_GUID");
      			
      			//Connect to DB
      			factory = new DBFactory();
      			con = factory.getConnection();
      			PreparedStatement ps = null;
      			
      			//Retrieve quantity from table BBP_PDIGP
      			ps = con.prepareStatement("select QUANTITY, PRICE, VALUE from sr1.BBP_PDIGP where CLIENT = ? and GUID = ?");
      			ps.setString(1, "800");
      			//InputStream lv_bytes_guid = new ByteArrayInputStream(lv_item_guid);
      			//ps.setBinaryStream(2, lv_bytes_guid, 16);
      			ps.setBytes(2, lv_item_guid);
      			ResultSet queryResult = ps.executeQuery();
      			double lv_quantity = 0;
      			double lv_price = 0;
      			double lv_value = 0;
      			
      			if (queryResult.next()) {
      				lv_quantity = queryResult.getDouble(1);
      				lv_price = queryResult.getDouble(2);
      				lv_value = queryResult.getDouble(3);
      				System.out.println("Quantity:" + lv_quantity);
      				System.out.println("Price:" + lv_price);
      				System.out.println("Value:" + lv_value);
      			}
      			
      			jFunction.getExportParameterList().setValue("OUT_PRICE", lv_price);
      			jFunction.getExportParameterList().setValue("OUT_QTY", lv_quantity);
      			jFunction.getExportParameterList().setValue("OUT_VALUE", lv_value);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		} finally{
      			con = null;
      		}
      	}
      	
      	public void RetrieveRFxDetailInformation()
      	{
      		try {
      			//Get input Parameter
      			String lv_rfx_id = jFunction.getImportParameterList().getString("IN_RFX_ID");
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			PreparedStatement ps = null;
      			ps = con.prepareStatement("select GUID, DESCRIPTION from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_ID = ?");
      			ps.setString(1, "800");
      			ps.setString(2, lv_rfx_id);
      			ResultSet queryResult = ps.executeQuery();
      			String lv_guid = "";
      			String lv_description = "";
      			
      			//JCoTable table = new JCoTable();
      			
      			if (queryResult.next()) {
      				
      				lv_guid = queryResult.getString(1);
      				lv_description = queryResult.getString(2);
      				
      				System.out.println("GUID:" + lv_guid);
      				System.out.println("Description:" + lv_description);
      				
      				jFunction.getExportParameterList().setValue("OUT_RFX_DESCRIPTION",lv_description);
      			}
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      	public void WriteLog(String conent) {   
              BufferedWriter out = null;
              String file = "c:/SGCC_LOG.txt";
              try {   
                  out = new BufferedWriter(new OutputStreamWriter(   
                          new FileOutputStream(file, true)));   
                  out.write(conent);
              } catch (Exception e) {   
                  e.printStackTrace();   
              } finally {   
                  try {   
                      out.close();   
                  } catch (IOException e) {   
                      e.printStackTrace();   
                  }   
              }   
          }
      	
      	public void WriteLogln(String conent) {   
              BufferedWriter out = null;
              String file = "c:/SGCC_LOG.txt";
              try {   
                  out = new BufferedWriter(new OutputStreamWriter(   
                          new FileOutputStream(file, true)));   
                  out.write(conent+"\r\n");
              } catch (Exception e) {   
                  e.printStackTrace();   
              } finally {   
                  try {   
                      out.close();   
                  } catch (IOException e) {   
                      e.printStackTrace();   
                  }   
              }   
          }
      	
      	private BigDecimal getSyncDate(){
      		//
      		BigDecimal result = new BigDecimal(20100330000000.0);
      		return result;
      	}
      	
      	private String getDeleteSql(String sql, String table_name, String key){
      		//delete <table_name> where exists ( select 1 from () ttt where ttt.GUID = <table_name>.GUID )
      		String result = "delete ";
      		result += table_name;
      		result += " where exists ( select 1 from (";
      		result += sql;
      		result += ") ttt where ttt.";
      		result += key;
      		result += " = ";
      		result += table_name;
      		result += ".";
      		result += key;
      		result += " )";
      		WriteLogln(result);
      		return result;
      	}
      	
      	public void RFxSyncRead()
      	{
      		Connection con = null;
      		Connection local_conn = null;
      		user1 = jFunction.getImportParameterList().getString("IN_PUR_USER");
      		user2 = jFunction.getImportParameterList().getString("IN_CURR_USER");
      		BigDecimal dtEnd = getSyncDate();
      		String sql_se = "";
      		String sql_de = "";
      		try {
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			con = factory.getConnection();
      			local_conn = factory.getLocalConnection();
      			PreparedStatement ps = null;
      			PreparedStatement local_ps = null;
      			ResultSet queryResult;
      			
      			
      			
      			/*
      			 * BBP_PDBGP
                   * select * from sr1.BBP_PDBGP where CLIENT = '800'
      			 * delete from sr2.BBP_PDBGP where CLIENT = '800'
      			 */
      			
      			//Clear local table first
      			local_ps = local_conn.prepareStatement("delete from BBP_PDBGP where CLIENT = ?");
      			local_ps.setString(1, "800");
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement("select * from BBP_PDBGP where CLIENT = ?");
      			ps.setString(1, "800");
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDBGP", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			
      			
      			/*
      			 * BBP_PDIGP
                   * select ITEM.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.BBP_PDIGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = ITEM.GUID
      			 * delete ITEM from sr2.CRMD_ORDERADM_I as HEADER, sr2.BBP_PDIGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = ITEM.GUID
      			 */
      			
      			//Clear local table first
      			sql_se = "select ITEM.* from CRMD_ORDERADM_I HEADER, BBP_PDIGP ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDIGP", "GUID");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200001");
      			local_ps.setString(2, "BUS2202001");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			//local_ps.setObject(5, dtEnd);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200001");
      			ps.setString(2, "BUS2202001");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			//ps.setObject(5, dtEnd);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDIGP", local_conn);
      			
      			System.out.println("--------Done");
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDDYN_FIX for item
      			 * fix answer for item
      			 * --select FIX.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 * --delete FIX from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 */
      			
      			//Clear local table first
      			sql_se = "select FIX.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK, BBP_PDDYN PART, BBP_PDDYN_FIX FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDDYN_FIX", "SET_LINE_GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200001");
      			local_ps.setString(2, "BUS2202001");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200001");
      			ps.setString(2, "BUS2202001");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDDYN_FIX", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDDYN for item
      			 * questions for item
      			 * --select PART.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 * --select PART.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID
      			 *
      			 */
      			
      			//Clear local table first
      			sql_se = "select PART.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK, BBP_PDDYN PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDDYN", "SET_GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200001");
      			local_ps.setString(2, "BUS2202001");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200001");
      			ps.setString(2, "BUS2202001");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDDYN", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDWGT for item
      			 * the weight of questions for item
      			 * --select PART.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDWGT as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 *
      			 */
      			
      			//Clear local table first
      			sql_se = "select PART.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK, BBP_PDWGT PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDWGT", "SET_GUID");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200001");
      			local_ps.setString(2, "BUS2202001");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200001");
      			ps.setString(2, "BUS2202001");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDWGT", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * CRMD_LINK for items
                   * select LINK.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
      			 * delete LINK from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
      			*/
      			
      			sql_se="select LINK.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = LINK.GUID_HI AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "CRMD_LINK", "GUID_HI");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200001");
      			local_ps.setString(2, "BUS2202001");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200001");
      			ps.setString(2, "BUS2202001");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRMD_LINK", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * CRMD_ORDERADM_I
      			 * select * from sr1.CRMD_ORDERADM_I where OBJECT_TYPE = 'BUS2200001' OR OBJECT_TYPE = 'BUS2202001'
      			 * delete from sr2.CRMD_ORDERADM_I where OBJECT_TYPE = 'BUS2200001' OR OBJECT_TYPE = 'BUS2202001'
      			 */
      			
      			//Clear local table first
      			sql_se = "select * from CRMD_ORDERADM_I where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?";
      			//not necessary to process delete
      			local_ps = local_conn.prepareStatement("delete from CRMD_ORDERADM_I where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?");
      			local_ps.setString(1, "BUS2200001");
      			local_ps.setString(2, "BUS2202001");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200001");
      			ps.setString(2, "BUS2202001");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRMD_ORDERADM_I", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * --BBP_PDHGP
      			 * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
      			 * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
      			 */
      			
      			//Clear local table first
      			sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, BBP_PDHGP ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDHGP", "GUID");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDHGP", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*	
      			 * --BBP_PDHSB
      			 * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSB as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
      			 * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSB as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
      			 */
      			
      			//Clear local table first
      			sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, BBP_PDHSB ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDHSB", "GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDHSB", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*	
      			 * --BBP_PDHSS
      			 * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSS as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
      			 * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSS as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
      			 */
      			
      			//Clear local table first
      			sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, BBP_PDHSS ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDHSS", "GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDHSS", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			
      			/*
      			 * CRMD_PARTNER
      			 * select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
      			 * delete PART from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
      			 */
      			
      			//Clear local table first
      			sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, CRMD_PARTNER PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = ? AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "CRMD_PARTNER", "GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, "07");
      			local_ps.setString(4, user1);
      			local_ps.setString(5, user2);
      			local_ps.setBigDecimal(6, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, "07");
      			ps.setString(4, user1);
      			ps.setString(5, user2);
      			ps.setBigDecimal(6, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRMD_PARTNER", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDDYN_FIX for header
      			 * fix answer for header
      			 * --select FIX.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 * --delete FIX from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 */
      			
      			//Clear local table first
      			sql_se = "select FIX.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDDYN PART, BBP_PDDYN_FIX FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDDYN_FIX", "SET_LINE_GUID");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDDYN_FIX", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDDYN for header
      			 * questions for header
      			 * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID
      			 *
      			 */
      			
      			//Clear local table first
      			sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDDYN PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDDYN", "SET_GUID");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDDYN", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDWGT for header
      			 * the weight of questions for header
      			 * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDWGT as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 *
      			 */
      			
      			//Clear local table first
      			sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDWGT PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDWGT", "SET_GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDWGT", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * BBP_PDATT for header
      			 * attachment or c-folder
      			 * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDWGT as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
      			 *
      			 */
      			
      			//Clear local table first
      			sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDATT PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "BBP_PDATT", "SET_GUID");
      			
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "BBP_PDATT", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			
      			/*
      			 * CRMD_LINK
                   * select LINK.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
      			 * delete LINK from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
      			*/
      			
      			sql_se = "select LINK.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = LINK.GUID_HI AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "CRMD_LINK", "GUID_HI");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRMD_LINK", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * --CRM_JSTO
      			 * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JSTO as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
      			 * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JSTO as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
      			 */
      			
      			//Clear local table first
      			sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, CRM_JSTO ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = ITEM.OBJNR AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "CRM_JSTO", "OBJNR");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			//local_ps = local_conn.prepareStatement("delete from sr2.CRM_JSTO");
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRM_JSTO", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * --CRM_JEST
      			 * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JEST as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
      			 * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JEST as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
      			 */
      			
      			//Clear local table first
      			sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, CRM_JEST ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = ITEM.OBJNR AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      			sql_de = getDeleteSql(sql_se, "CRM_JEST", "OBJNR");
      			local_ps = local_conn.prepareStatement(sql_de);
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			//local_ps = local_conn.prepareStatement("delete from sr2.CRM_JEST");
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement(sql_se);
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRM_JEST", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			/*
      			 * Process table CRMD_ORDERADM_H start 
      			 * select * from sr1.CRMD_ORDERADM_H where OBJECT_TYPE = 'BUS2200' OR OBJECT_TYPE = 'BUS2202' 
      			 * delete from sr2.CRMD_ORDERADM_H where OBJECT_TYPE = 'BUS2200' OR OBJECT_TYPE = 'BUS2202'
      			 */
      			
      			//Clear local table first
      			local_ps = local_conn.prepareStatement("delete from CRMD_ORDERADM_H where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?");
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, user1);
      			local_ps.setString(4, user2);
      			local_ps.setBigDecimal(5, dtEnd);
      			local_ps.executeUpdate();
      			local_ps.close();
      			
      			//Retrieve data from Inner DB
      			ps = con.prepareStatement("select * from CRMD_ORDERADM_H where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?");
      			ps.setString(1, "BUS2200");
      			ps.setString(2, "BUS2202");
      			ps.setString(3, user1);
      			ps.setString(4, user2);
      			ps.setBigDecimal(5, dtEnd);
      			
      			queryResult = ps.executeQuery();
      			
      			ProcessTableInsert(queryResult, "CRMD_ORDERADM_H", local_conn);
      			
      			queryResult.close();
      			ps.close();
      			
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",0);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			WriteLogln(e.getMessage());
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		} finally{
      			
      			try {
      				con.close();
      				local_conn.close();
      			} catch (SQLException e) {
      				// TODO Auto-generated catch block
      				e.printStackTrace();
      			}
      			
      		}
      	}
      	
      	public void RFxSyncWrite()
      	{
      		try {
      			String lv_table_name = "";
      			String[] str_keys;
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			Connection local_conn = factory.getLocalConnection();
      			PreparedStatement local_ps = null;
      			ResultSet queryResult;
      			
      			//Process Table BBP_PDBGP
      			lv_table_name = "BBP_PDBGP";
      			str_keys = new String[2];
      			str_keys[0] = "CLIENT";
      			str_keys[1] = "PARTNER_GUID";
      			
      			//Retrieve data from Local DB
      			local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name +" where CLIENT = ?");
      			local_ps.setString(1, "800");
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, str_keys, con);
      			
      			queryResult.close();
      			local_ps.close();
      			
      			
      			//Process Table CRMD_PARTNER
      			/*
      			 * CRMD_PARTNER
      			 * select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
      			 * delete PART from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
      			 */
      			
      			lv_table_name = "CRMD_PARTNER";
      			str_keys = new String[2];
      			str_keys[0] = "CLIENT";
      			str_keys[1] = "PARTNER_GUID";
      			
      			//Retrieve data from Local DB
      			local_ps = local_conn.prepareStatement("select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, CRMD_PARTNER PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = ? AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )");
      			local_ps.setString(1, "BUS2200");
      			local_ps.setString(2, "BUS2202");
      			local_ps.setString(3, "07");
      			local_ps.setString(4, user1);
      			local_ps.setString(5, user2);
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, str_keys, con);
      			
      			queryResult.close();
      			local_ps.close();
      			
      			jFunction.getExportParameterList().setValue("OUT_RC",0);
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		}
      	}
      	
      	
      	public void rfxResponseWrite()
      	{
      		try {
      		//Connect to DB
      		DBFactory factory = new DBFactory();
      		Connection con = factory.getConnection();
      		Connection local_conn = factory.getLocalConnection();
      		PreparedStatement local_ps = null;
      		ResultSet queryResult;
      		
      		String lv_table_name = "";
      		String tbl_keys[];
      		
      		// Update CRMD_ORDERADM_H
      		lv_table_name = "CRMD_ORDERADM_H";
      		String lv_tbl_version = "BBP_PDHGP";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		// Get Object ID (Response ID)
      		String objectID = String.valueOf(jFunction.getImportParameterList().getValue("IN_OBJECT_ID"));
      		
      		// Get Header Info. of Response Document from local DB
      		local_ps = local_conn.prepareStatement("select HEADER.GUID from "+ local_prefix + lv_table_name + " HEADER, "+local_prefix+lv_tbl_version+" VERSION where HEADER.OBJECT_TYPE = ? AND HEADER.OBJECT_ID = ? AND VERSION.GUID = HEADER.GUID AND VERSION.VERSION_TYPE = ' '");
      	    local_ps.setString(1, "BUS2202");
      	    local_ps.setString(2, objectID);
      	    
      	    queryResult = local_ps.executeQuery();
      	    
      	    // Get Response GUID
      	    queryResult.next();
      	    byte[] responseGuid = queryResult.getBytes("GUID");
      	    
      	    queryResult.close();
      		local_ps.close();
      	    
      	    local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " where OBJECT_TYPE = ? AND GUID = ?");
      	    local_ps.setString(1, "BUS2202");
      	    local_ps.setBytes(2, responseGuid);
      	    
      	    queryResult = local_ps.executeQuery();
      	    
      	    ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      	    
      	    queryResult.close();
      		local_ps.close();
      		
      		//Update BBP_PDHGP
      		lv_table_name = "BBP_PDHGP";
      		tbl_keys =  new String [2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name +" HEADER where HEADER.GUID = ?");
      		local_ps.setBytes(1, responseGuid);
      		
      		queryResult = local_ps.executeQuery();
      		
      		ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      		queryResult.close();
      		local_ps.close();
      		
      		// Update item
      		lv_table_name = "CRMD_ORDERADM_I";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.HEADER = ?");
      		local_ps.setBytes(1, responseGuid);
      		
      		queryResult = local_ps.executeQuery();
      		
      		// Get Item GUID List
      		ArrayList<byte[]> itemList = new ArrayList<byte[]>();
      		while (queryResult.next())
      		{
      		   byte[] itemGuid = queryResult.getBytes("GUID");
      		   itemList.add(itemGuid);
      		}
      		
      		queryResult.close();
      		local_ps.close();
      		
      		local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.HEADER = ?");
      		local_ps.setBytes(1, responseGuid);
      		
      		queryResult = local_ps.executeQuery();
      		
              ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      		queryResult.close();
      		local_ps.close();
      		
      		// Update Item table BBP_PDIGP
      		lv_table_name = "BBP_PDIGP";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		for(int i=0;i<itemList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.GUID = ?");
      			local_ps.setBytes(1, itemList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      		    queryResult.close();
      			local_ps.close();
      		}
      		
      		// Update Item table BBP_PDIGP
      		lv_table_name = "BBP_PDISS";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		for(int i=0;i<itemList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.GUID = ?");
      			local_ps.setBytes(1, itemList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      		    queryResult.close();
      			local_ps.close();
      		}
      		
      		// Update Response Status table CRM_JEST
      		lv_table_name = "CRM_JEST";
      		tbl_keys = new String[3];
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "OBJNR";
      		tbl_keys[2] = "STAT";
      		
      		local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJNR = ?");
      		local_ps.setBytes(1, responseGuid);
      		
      		queryResult = local_ps.executeQuery();
      		
      		ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      	    queryResult.close();
      		local_ps.close();
      		
      		// Update status table CRM_JSTO
      		lv_table_name = "CRM_JSTO";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "OBJNR";
      		
      		local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJNR = ?");
      		local_ps.setBytes(1, responseGuid);
      		
      		queryResult = local_ps.executeQuery();
      		
              ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      	    queryResult.close();
      		local_ps.close();
      		
      		// Update link
      		lv_table_name = "CRMD_LINK";
      		tbl_keys = new String[3];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID_HI";
      		tbl_keys[2] = "GUID_SET";
      		
      	    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where GUID_HI = ?");
      	    local_ps.setBytes(1, responseGuid);
      	    
      	    queryResult = local_ps.executeQuery();
      	    
              ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      	    queryResult.close();
      		local_ps.close();
      		
      		// Update Partner table CRMD_PARTNER
      		lv_table_name = "CRMD_PARTNER";
      	//	String lv_header_tbl = "CRMD_ORDERADM_H";
      		String lv_link_tbl   = "CRMD_LINK";
      		tbl_keys    = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "PARTNER_GUID";
      		
      		local_ps = local_conn.prepareStatement("select PART.* from "+local_prefix+lv_table_name+" PART, "+local_prefix+lv_link_tbl+" LINK where LINK.GUID_HI = ? AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = ?");
      		local_ps.setBytes(1, responseGuid);
      		local_ps.setString(2, "07");
      		
      		queryResult = local_ps.executeQuery();
      		
              ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      	    queryResult.close();
      		local_ps.close();
      		
      		// Update Attachments
      		lv_table_name = "BBP_PDATT";
      		lv_link_tbl   = "CRMD_LINK";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		local_ps =  local_conn.prepareStatement("select ATT.* from "+local_prefix+lv_link_tbl+" LINK, "+local_prefix+lv_table_name+" ATT where LINK.GUID_HI = ? AND LINK.GUID_SET = ATT.SET_GUID AND LINK.OBJTYPE_SET = ?");
      		local_ps.setBytes(1, responseGuid);
      		local_ps.setString(2, "33");
      		
      	    queryResult = local_ps.executeQuery();
      	    
      	    // Get logical object ID == attachment ID == physical object ID
      	    ArrayList<String> attList = new ArrayList<String>();
      	    
      	    while(queryResult.next())
      	    {
      	    	attList.add(queryResult.getString("LOIO_OBJID"));
      	    }
      	    
      	    System.out.println("SIZE:  "+ attList.size());
      	    System.out.println();
      	    
      	    queryResult.close();
      		local_ps.close();
      	    
      	    local_ps =  local_conn.prepareStatement("select ATT.* from "+local_prefix+lv_link_tbl+" LINK, "+local_prefix+lv_table_name+" ATT where LINK.GUID_HI = ? AND ATT.SET_GUID = LINK.GUID_SET AND LINK.OBJTYPE_SET = ?");
      		local_ps.setBytes(1, responseGuid);
      	    local_ps.setString(2, "33");
      		
      	    queryResult = local_ps.executeQuery();
      	    
      	    ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      	    queryResult.close();
      		local_ps.close();
      	    
      		// Update BBP_LOIO
      		lv_table_name = "BBP_LOIO";
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "LOIO_ID";
      		
      		for (int i=0;i<attList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where LOIO_ID = ?");
      			local_ps.setString(1, attList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		// Update BBP_LOIOT
      		lv_table_name = "BBP_LOIOT";
      		tbl_keys = new String[3];
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "LANGU";
      		tbl_keys[2] = "LOIO_ID";
      		
      		for (int i=0;i<attList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where LOIO_ID = ?");
      			local_ps.setString(1, attList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		// Update BBP_PHIO
      		lv_table_name = "BBP_PHIO";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "PHIO_ID";
      		
      		for (int i=0;i<attList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where PHIO_ID = ?");
      			local_ps.setString(1, attList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		// Update BBPCONT
      		lv_table_name = "BBPCONT";
      		tbl_keys = new String[4];
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "RELID";
      		tbl_keys[2] = "PHIO_ID";
      		tbl_keys[3] = "SRTF2";
      		
      		for (int i=0;i<attList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where PHIO_ID = ?");
      			local_ps.setString(1, attList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		// Update BBP_PHF
      		lv_table_name = "BBP_PHF";
      		tbl_keys = new String[3];
      		tbl_keys[0] = "MANDT";
      		tbl_keys[1] = "PHIO_ID";
      		tbl_keys[2] = "FILE_NUM";
      			
      		for (int i=0;i<attList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where PHIO_ID = ?");
      			local_ps.setString(1, attList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      				
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		// Update Question
      		lv_table_name = "BBP_PDDYN";
      		tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		local_ps = local_conn.prepareStatement("select DA.* from "+local_prefix+lv_table_name+" DA, "+local_prefix+lv_link_tbl+" LINK where LINK.GUID_HI = ? AND LINK.GUID_SET = DA.SET_GUID AND LINK.OBJTYPE_SET = ?");
      		local_ps.setBytes(1, responseGuid);
      		local_ps.setString(2, "61");
      		
      		queryResult = local_ps.executeQuery();
      		
      		ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      		queryResult.close();
      	    local_ps.close();
      	    
      	    // Update Question on Item level
      	    for (int i=0;i<itemList.size();i++)
      	    {
      	    	local_ps = local_conn.prepareStatement("select DA.* from "+local_prefix+lv_table_name+" DA, "+local_prefix+lv_link_tbl+" LINK where LINK.GUID_HI = ? AND LINK.GUID_SET = DA.SET_GUID AND LINK.OBJTYPE_SET = ?");
      	    	local_ps.setBytes(1, itemList.get(i));
      	    	local_ps.setString(2, "61");
      	    	
      	    	queryResult = local_ps.executeQuery();
      	    	
      	    	ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      	    	
      	    	queryResult.close();
      	    	local_ps.close();
      	    }
      	    
      	    // Update item CRMD_Link
      	    lv_table_name = "CRMD_LINK";
      	    tbl_keys = new String[3];
      	    tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID_HI";
      		tbl_keys[2] = "GUID_SET";
      	    
      	    for (int i=0;i<itemList.size();i++)
      	    {
      	    	local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where GUID_HI = ?");
      	    	local_ps.setBytes(1, itemList.get(i));
      	    	
      	    	queryResult = local_ps.executeQuery();
      	    	
                  ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      	    	
      	    	queryResult.close();
      	    	local_ps.close();
      	    }
      		
      	    // Update reference to Rfx HEADER
      	    lv_table_name = "BBP_PDHGP";
      	    tbl_keys = new String[2];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "GUID";
      		
      		local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where GUID = ?");
      		local_ps.setBytes(1, responseGuid);
      		
      		queryResult = local_ps.executeQuery();
      		
      		queryResult.next();
      		byte[] srcGuid = queryResult.getBytes("SRC_GUID");
      		
      		queryResult.close();
      	    local_ps.close();
      	    
      	    lv_table_name = "SRRELROLES";
      	    tbl_keys = new String[5];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "OBJKEY";
      		tbl_keys[2] = "OBJTYPE";
      		tbl_keys[3] = "LOGSYS";
      		tbl_keys[4] = "ROLETYPE";
      		
      		// Convert byte[] to hex string
      	    String srcKey = byte2HexStr(srcGuid);
      	    String responseKey = byte2HexStr(responseGuid);
      	    
      		local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ? ");
      	    local_ps.setString(1, srcKey);
      	    
              queryResult = local_ps.executeQuery();
              
              // Find Source Role ID
              queryResult.next();
              String srcRoleID = queryResult.getString("ROLEID");
              
              queryResult.close();
      	    local_ps.close();
      	    
      	    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ? OR OBJKEY = ?");
      	    local_ps.setString(1, srcKey);
      	    local_ps.setString(2, responseKey);
      	    
      	    queryResult = local_ps.executeQuery();
      		
              ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		
      		queryResult.close();
      	    local_ps.close();
      	    
      	    lv_table_name = "BBP_PDBINREL";
      	    tbl_keys = new String[3];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "ROLE_A";
      		tbl_keys[2] = "ROLE_B";
      		
      		local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where ROLE_A = ?");
      		local_ps.setString(1, srcRoleID);
      		
      		queryResult = local_ps.executeQuery();
      		
      		ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      	    
      		queryResult.close();
      	    local_ps.close();
      	    
      	    // Update Reference to Rfx item
      	    lv_table_name = "CRMD_ORDERADM_I";
      	    local_ps = local_conn.prepareStatement("select GUID from "+local_prefix+lv_table_name+" where HEADER = ?");
      	    local_ps.setBytes(1, srcGuid);
      	    
      	    queryResult = local_ps.executeQuery();
      	    
      	    ArrayList<String> srcItemList = new ArrayList<String>();
      	    ArrayList<String> srcRoleList = new ArrayList<String>();
      	    ArrayList<String> itemStrList = new ArrayList<String>();
      	    
      	    for (int i=0;i<itemList.size();i++)
      	    {
      	    	itemStrList.add(byte2HexStr(itemList.get(i)));
      	    }
      	    
      	    // Get source item guid(in Hex String) list
      	    while (queryResult.next())
      	    {
      	    	srcItemList.add(byte2HexStr(queryResult.getBytes("GUID")));
      	    }
      	    
      	    queryResult.close();
      	    local_ps.close();
      	    
      	    lv_table_name = "SRRELROLES";
      	    tbl_keys = new String[5];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "OBJKEY";
      		tbl_keys[2] = "OBJTYPE";
      		tbl_keys[3] = "LOGSYS";
      		tbl_keys[4] = "ROLETYPE";
      		
      		for (int i=0;i<srcItemList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select ROLEID from "+local_prefix+lv_table_name+" where OBJKEY = ? ");
      			local_ps.setString(1, srcItemList.get(i));
      			queryResult = local_ps.executeQuery();
      			
      			// Find Source Role ID
      			queryResult.next();
      			srcRoleList.add(queryResult.getString("ROLEID"));
      			
      			queryResult.close();
      		    local_ps.close();
      		}	    
      	    
      		for (int i=0;i<srcItemList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ?");
      			local_ps.setString(1, srcItemList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      			
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		for (int i=0;i<itemStrList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ?");
      			local_ps.setString(1, itemStrList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
                  ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      			
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		lv_table_name = "BBP_PDBINREL";
      	    tbl_keys = new String[3];
      		tbl_keys[0] = "CLIENT";
      		tbl_keys[1] = "ROLE_A";
      		tbl_keys[2] = "ROLE_B";
      		
      		for (int i=0;i<srcRoleList.size();i++)
      		{
      			local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where ROLE_A = ?");
      			local_ps.setString(1, srcRoleList.get(i));
      			
      			queryResult = local_ps.executeQuery();
      			
      			ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      		    
      			queryResult.close();
      		    local_ps.close();
      		}
      		
      		jFunction.getExportParameterList().setValue("OUT_RC",0);
      	    
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			jFunction.getExportParameterList().setValue("OUT_RC",-1);
      		}
      	}
      	
      	
      	public void rfxPublish()
      	{
      		//Need read table: CRMD_ORDERADM_H; BBP_PDHSB; CRM_JEST; CRM_JSTO
      		try {
      			//Get input Parameter
      			JCoTable cg_table = jFunction.getChangingParameterList().getTable("CT_RFX_LIST");
      			
      			//Connect to DB
      			DBFactory factory = new DBFactory();
      			Connection con = factory.getConnection();
      			PreparedStatement ps = null;
      			
      			String lv_hdr_tbl     = "CRMD_ORDERADM_H";
      			String lv_qt_dead_tbl = "BBP_PDHSB";
      //			String lv_stat_tbl    = "CRM_JEST";
      			String lv_zstat_tbl   = "ZSTATUS"; // USE Z table to retrieve status
      			
      //			ps = con.prepareStatement("select HEADER.GUID, HEADER.OBJECT_ID, HEADER.CREATED_AT, HEADER.DESCRIPTION, DEAD.QUOT_DEAD, DEAD.QUOT_DEAD_TIME from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_qt_dead_tbl+" DEAD, "+remote_prefix+lv_stat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.GUID = DEAD.GUID AND HEADER.GUID = STAT.OBJNR AND STAT.STAT = ? order by HEADER.CREATED_AT DESC");
      //			ps.setString(1, "800");
      //			ps.setString(2, "BUS2200");
      //			ps.setString(3, "I1011");
      			
      			ps = con.prepareStatement("select HEADER.GUID, HEADER.OBJECT_ID, HEADER.CREATED_AT, HEADER.DESCRIPTION, DEAD.QUOT_DEAD, DEAD.QUOT_DEAD_TIME from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_qt_dead_tbl+" DEAD, "+remote_prefix+lv_zstat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.GUID = DEAD.GUID AND HEADER.OBJECT_ID = substr(STAT.RFX, 1, 10) AND substr(STAT.RFX, 11, 14) = '0001' AND STAT.STATUS = ? order by HEADER.CREATED_AT DESC");
      			ps.setString(1, "800");
      			ps.setString(2, "BUS2200");
      			ps.setString(3, "A");
      			
      			ResultSet queryResult = ps.executeQuery();
      			byte[] rfxGuid = null;
      			String objID = "";
      			double createAt =  new Double(0);
      			String description = "";
      			String qtDead = "";
      			String qtTime = "";
      			
      			while (queryResult.next()) {
      				
      				rfxGuid = queryResult.getBytes(1);
      				objID = queryResult.getString(2);
      				createAt =  queryResult.getDouble(3);
      				description = queryResult.getString(4);
      				qtDead = queryResult.getString(5);
      			    qtTime = queryResult.getString(6);
      				
      				//System.out.println("RFX ID:" + objID);
      				
      				cg_table.appendRow();
      				cg_table.setValue("RFX_GUID", rfxGuid);
      				cg_table.setValue("RFX_ID", objID);
      				cg_table.setValue("CREATED_AT", createAt);
      				cg_table.setValue("DESCRIPTION", description);
      				cg_table.setValue("QUOT_DEAD_DT", qtDead);
      				cg_table.setValue("QUOT_DEAD_TIME", qtTime);
      				cg_table.setValue("STAT", "I1011");
      			}
      			jFunction.getChangingParameterList().setValue("CT_RFX_LIST",cg_table);
      			
      			queryResult.close();
      			ps.close();
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      //	public void rfxSucceed()
      //	{
      //		JCoTable cg_table = jFunction.getExportParameterList().getTable("ET_RFX_SUCCEED");
      //		
      //		DBFactory factory = new DBFactory();
      //		Connection con = factory.getConnection();
      //		PreparedStatement ps = null;
      //	}
      	
      	
          public void rfxBriefIDRead() 
          {
          	try{
          		JCoTable etRfxID = jFunction.getExportParameterList().getTable("ET_RFX_ID");
          		DBFactory factory = new DBFactory();
          		Connection con = factory.getConnection();
          		PreparedStatement ps = null;
          		String lv_brief_tbl = "ZBID_BRIEF";
          		
          		ps = con.prepareStatement("select distinct RFX_ID, RFX_DESC from "+remote_prefix+lv_brief_tbl+" where PUB_FLAG = ?");
          		ps.setString(1, "1");
          		ResultSet queryResult = ps.executeQuery();
          		
          		while(queryResult.next())
          		{
          			etRfxID.appendRow();
          			etRfxID.setValue("RFX_ID", queryResult.getString("RFX_ID"));
          			etRfxID.setValue("RFX_DESCRIPTION", queryResult.getString("RFX_DESC"));
          		}
          		
          		queryResult.close();
          		ps.close();
          		jFunction.getExportParameterList().setValue("ET_RFX_ID", etRfxID);
          		
          	}catch (SQLException e) {
          		// TODO Auto-generated catch block
          		e.printStackTrace();}
          }
         
      	public void rfxBriefRead()
      	{
      		try {
      			
      		JCoTable cg_table = jFunction.getExportParameterList().getTable("ET_RFX_BRIEF");
      		char publish = jFunction.getImportParameterList().getChar("PUBLISH");
      		String rfxID = jFunction.getImportParameterList().getString("RFX_ID");
      		String requester = jFunction.getImportParameterList().getString("REQUESTER");
      		
      		DBFactory factory = new DBFactory();
      		Connection con = factory.getConnection();
      		PreparedStatement ps = null;
      		String lv_brief_tbl = "ZBID_BRIEF";
      		
      		if (publish == '1')  // used in publish of bidding clarification(澄清公告), pub_flag = 1
      		{
      			ps = con.prepareStatement("select * from "+remote_prefix+lv_brief_tbl+" where MANDT = ? AND PUB_FLAG = 1 AND RFX_ID = ?");
      			ps.setString(1, "800");
      			ps.setString(2, rfxID);
      			
      			ResultSet queryResult = ps.executeQuery();
      			
                  while (queryResult.next()) {
                  	cg_table.appendRow();
                  	cg_table.setValue("MANDT", queryResult.getString("MANDT"));
                  	cg_table.setValue("RFX_ID", queryResult.getString("RFX_ID"));
                  	cg_table.setValue("ITEM_ID", queryResult.getString("ITEM_ID"));
                  	cg_table.setValue("QUS_ID", queryResult.getBytes("QUS_ID"));
                  	cg_table.setValue("RFX_DESC", queryResult.getString("RFX_DESC"));
                  	cg_table.setValue("ITEM_DESC",queryResult.getString("ITEM_DESC"));
                  	cg_table.setValue("QUESTION", queryResult.getString("QUESTION"));
                  	cg_table.setValue("REPLY", queryResult.getString("REPLY"));
                  	cg_table.setValue("REQUESTER", queryResult.getString("REQUESTER"));
                  	cg_table.setValue("BIDDER", queryResult.getString("BIDDER"));
                  	cg_table.setValue("BI_COMPANY", queryResult.getString("BI_COMPANY"));
                  	cg_table.setValue("REPLYER", queryResult.getString("REPLYER"));
                  	cg_table.setValue("RE_DESC",queryResult.getString("RE_DESC"));
                  	cg_table.setValue("APPROVER", queryResult.getString("APPROVER"));
                  	cg_table.setValue("AP_DESC", queryResult.getString("AP_DESC"));
                  	cg_table.setValue("STATUS", queryResult.getString("STATUS"));
                  	cg_table.setValue("PUB_FLAG", queryResult.getString("PUB_FLAG"));
                  	cg_table.setValue("REQUEST_DAT", queryResult.getString("REQUEST_DAT"));
                  	cg_table.setValue("REPLY_DAT", queryResult.getString("REPLY_DAT"));
                  	cg_table.setValue("PRD_ID", queryResult.getString("ORDERED_PROD"));
                  	cg_table.setValue("QUS_ID_32", queryResult.getString("QUS_ID_32"));
      			}
      			jFunction.getExportParameterList().setValue("ET_RFX_BRIEF", cg_table);
      			queryResult.close();
      			ps.close();
      		}
      		else // used in clarification webdynpro, pub_flag != 1
      		{
      			ps = con.prepareStatement("select * from "+remote_prefix+lv_brief_tbl+" where MANDT = ? AND RFX_ID = ? AND REQUESTER = ?");
      			ps.setString(1, "800");
      			ps.setString(2, rfxID);
      			ps.setString(3, requester);
      			
      			ResultSet queryResult = ps.executeQuery();
      			
                  while (queryResult.next()) {
                  	cg_table.appendRow();
                  	cg_table.setValue("MANDT", queryResult.getString("MANDT"));
                  	cg_table.setValue("RFX_ID", queryResult.getString("RFX_ID"));
                  	cg_table.setValue("ITEM_ID", queryResult.getString("ITEM_ID"));
                  	cg_table.setValue("QUS_ID", queryResult.getBytes("QUS_ID"));
                  	cg_table.setValue("RFX_DESC", queryResult.getString("RFX_DESC"));
                  	cg_table.setValue("ITEM_DESC",queryResult.getString("ITEM_DESC"));
                  	cg_table.setValue("QUESTION", queryResult.getString("QUESTION"));
                  	cg_table.setValue("REPLY", queryResult.getString("REPLY"));
                  	cg_table.setValue("REQUESTER", queryResult.getString("REQUESTER"));
                  	cg_table.setValue("BIDDER", queryResult.getString("BIDDER"));
                  	cg_table.setValue("BI_COMPANY", queryResult.getString("BI_COMPANY"));
                  	cg_table.setValue("REPLYER", queryResult.getString("REPLYER"));
                  	cg_table.setValue("RE_DESC",queryResult.getString("RE_DESC"));
                  	cg_table.setValue("APPROVER", queryResult.getString("APPROVER"));
                  	cg_table.setValue("AP_DESC", queryResult.getString("AP_DESC"));
                  	cg_table.setValue("STATUS", queryResult.getString("STATUS"));
                  	cg_table.setValue("PUB_FLAG", queryResult.getString("PUB_FLAG"));
                  	cg_table.setValue("REQUEST_DAT", queryResult.getString("REQUEST_DAT"));
                  	cg_table.setValue("REPLY_DAT", queryResult.getString("REPLY_DAT"));
                  	cg_table.setValue("PRD_ID", queryResult.getString("ORDERED_PROD"));
                  	cg_table.setValue("QUS_ID_32", queryResult.getString("QUS_ID_32"));
      			}
      			jFunction.getExportParameterList().setValue("ET_RFX_BRIEF", cg_table);
      			queryResult.close();
      			ps.close();
      		}
      	} catch (SQLException e) {
      		// TODO Auto-generated catch block
      		e.printStackTrace();}}
      
      	
      	public void rfxItemRead()
      	{
      		JCoTable cg_table = jFunction.getExportParameterList().getTable("ET_RFX_ITEM");
      		String rfxID = jFunction.getImportParameterList().getString("RFX_ID");
      		
      		DBFactory factory = new DBFactory();
      		Connection con = factory.getConnection();
      		PreparedStatement ps = null;
      		String lv_rfx_tbl = "CRMD_ORDERADM_H";
      		String lv_item_tbl = "CRMD_ORDERADM_I";
      		String lv_version  = "BBP_PDHGP";
      		
      		try{
      		ps = con.prepareStatement("select HEADER.DESCRIPTION, ITEM.NUMBER_INT, ITEM.DESCRIPTION, ITEM.ORDERED_PROD from "+remote_prefix+lv_rfx_tbl+" HEADER, "+remote_prefix+lv_item_tbl+" ITEM, "+remote_prefix+lv_version+" VERSION where HEADER.OBJECT_ID = ? AND ITEM.HEADER = HEADER.GUID AND HEADER.OBJECT_TYPE = ? AND VERSION.GUID = HEADER.GUID AND VERSION.VERSION_TYPE = ' '");
      		ps.setString(1, rfxID);
      		ps.setString(2, "BUS2200");
      		
      		ResultSet queryResult = ps.executeQuery();
      		
      		while (queryResult.next())
      		{
      			System.out.println("ITEM :"+queryResult.getString(3));
      			cg_table.appendRow();
      			cg_table.setValue("RFX_DESCRIPTION", queryResult.getString(1));
      			cg_table.setValue("ITEM_NUMBER", queryResult.getString(2));
      			cg_table.setValue("ITEM_DESCRIPTION", queryResult.getString(3));
      			cg_table.setValue("PRD_ID", queryResult.getString(4));
      			cg_table.setValue("RFX_ID", rfxID);
      		}
      		jFunction.getExportParameterList().setValue("ET_RFX_ITEM", cg_table);
      		queryResult.close();
      		ps.close();
             } catch (SQLException e) {
      	// TODO Auto-generated catch block
      	e.printStackTrace();}
      	}
      	
      	public void rfxBriefWrite()
      	{
      		JCoTable questionTbl = jFunction.getImportParameterList().getTable("IT_RFX_QUESTIONS");
      		System.out.println("!!!");
      		String[] fieldName = new String[14];
      		Object[] fieldValue = new Object[14];
      		String tblName = "ZBID_BRIEF";
      
      		DBFactory factory = new DBFactory();
      		Connection con = factory.getConnection();
      		PreparedStatement ps = null;
      		PreparedStatement ps_insert = null;
      		PreparedStatement ps_update = null;
      
      		fieldName[0] = "RFX_ID";
      		fieldName[1] = "RFX_DESC";
      		fieldName[2] = "ITEM_ID";
      		fieldName[3] = "ITEM_DESC";
      		fieldName[4] = "ORDERED_PROD";
      		fieldName[5] = "QUS_ID";
      		fieldName[6] = "QUESTION";
      		fieldName[7] = "REQUESTER";
      		fieldName[8] = "BIDDER";
      		fieldName[9] = "BI_COMPANY";
      		fieldName[10] = "REQUEST_DAT";
      		fieldName[11] = "STATUS";
      		fieldName[12] = "MANDT";
      		fieldName[13] = "QUS_ID_32";
      
      		try{
      			
      			int rows = questionTbl.getNumRows();
      			System.out.println("rows = "+ rows);
      			
      			String nameList = "";
      			String valueList = "";
      			
      			for(int i=0;i<14;i++)
      			{
      				nameList  = nameList + ((i==0)?fieldName[i]:(","+fieldName[i]));
      				valueList = valueList + ((i==0)?"?":",?");
      			}
      
      			ps_insert = con.prepareStatement("insert into "+remote_prefix +tblName+" ("+nameList + ") values (" + valueList + ")");
      			ps_update = con.prepareStatement("update "+remote_prefix+tblName+" SET "+fieldName[11]+" = ? where QUS_ID_32 = ? AND MANDT = ? AND RFX_ID = ? AND ITEM_ID = ?");
      			
      			do
      			{	
      				System.out.println(questionTbl.getValue(1));
      				fieldValue[0] = questionTbl.getValue("RFX_ID");
      				fieldValue[1] = questionTbl.getValue("RFX_DESC");
      				fieldValue[2] = questionTbl.getValue("ITEM_ID");
      				fieldValue[3] = questionTbl.getValue("ITEM_DESC");
      				fieldValue[4] = questionTbl.getValue("PRD_ID");
      				fieldValue[5] = questionTbl.getValue("QUS_ID");
      				fieldValue[6] = questionTbl.getValue("QUESTION");
      				fieldValue[7] = questionTbl.getValue("REQUESTER");
      				fieldValue[8] = questionTbl.getValue("BIDDER");
      				fieldValue[9] = questionTbl.getValue("BI_COMPANY");
      				fieldValue[10] = questionTbl.getValue("REQUEST_DAT");
      				fieldValue[11] = questionTbl.getValue("STATUS");
      				fieldValue[12] = "800";
      				fieldValue[13] = questionTbl.getValue("QUS_ID_32");
      				
      				// Check if new record
      				System.out.println("Question GUID in String: "+fieldValue[13]);
      				
      				ps = con.prepareStatement("select count(*) from "+remote_prefix+tblName+" where MANDT = ? AND RFX_ID = ? AND ITEM_ID = ? AND QUS_ID_32 = ?");
      				ps.setObject(1, fieldValue[12]);
      				ps.setObject(2, fieldValue[0]);
      				ps.setObject(3, fieldValue[2]);
      				ps.setObject(4, fieldValue[13]);
      				
      				ResultSet rs = ps.executeQuery();
      				
      				int flag  = 0;
      			    if (rs.next())
      			    {
      			    	flag = rs.getInt(1);
      			    }
      			    
      			    rs.close();
      			    ps.close();
      			    
      			    if (flag == 0) // Insert
      			    {
      					fieldValue[11] = "0"; //New Record, status = 0
      					for(int i=0;i<14;i++)
      					{
      						if (fieldValue[i] == null)
      						{
      							ps_insert.setObject(i+1, " ");
      						}
      						else
      						{
      							if(fieldValue[i].equals(""))
      							{
      								ps_insert.setObject(i+1, " ");
      							}
      							else
      							{
      								if (fieldName[i] == "REQUEST_DAT") // convert java.util.Date into String
      								{
      									SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      									String reqDate = sdf.format(questionTbl.getDate("REQUEST_DAT"));
      								    //Date sd = new Date(questionTbl.getDate("REQUEST_DAT").getTime());
      									ps_insert.setString(i+1, reqDate);
      								}
      								else
      								{
      									ps_insert.setObject(i+1, fieldValue[i]);  
      								}
      							}
      						}				
      					}
      					ps_insert.addBatch();
      			    }
      			    else          // Update - Only Status
      			    {
      			    	ps_update.setObject(1, fieldValue[11]);
      			    	ps_update.setObject(2, fieldValue[13]);
      			    	ps_update.setObject(3, fieldValue[12]);
      			    	ps_update.setObject(4, fieldValue[0]);
      			    	ps_update.setObject(5, fieldValue[2]);
      			    	ps_update.addBatch();
      			    }
      			}
      			while(questionTbl.nextRow());
      			
      		     /**
      		      *  Output result to Function Module
      		      */
      				int [] resultInsert = ps_insert.executeBatch();
      				for (int i=0;i<resultInsert.length;i++)
      				{
      					if (resultInsert[i] >= 0 || resultInsert[i] == Statement.SUCCESS_NO_INFO)
      					{
      						System.out.println("insert sucessfully: "+ resultInsert[i]);
      					}
      					else 
      					{
      						jFunction.getExportParameterList().setValue("OUT_RC", -1);
      					}
      				}
      				if (jFunction.getExportParameterList().getValue("OUT_RC") == null)
      				{
      					jFunction.getExportParameterList().setValue("OUT_RC", 0);
      				}
      				ps_insert.close();
      			
      				int[] resultUpdate = ps_update.executeBatch();
      				for (int i=0;i<resultUpdate.length;i++)
      				{
      					if (resultUpdate[i]>=0 || resultUpdate[i] == Statement.SUCCESS_NO_INFO)
      					{
      						System.out.println("Update successully"+ resultUpdate[i]);
      					}
      					else
      					{
      						jFunction.getExportParameterList().setValue("OUT_RC", -1);
      					}
      				}
      				if (jFunction.getExportParameterList().getValue("OUT_RC") == null)
      				{
      					jFunction.getExportParameterList().setValue("OUT_RC", 0);
      				}
      				ps_update.close();
      				
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();}
      	}
      	
      	/**
      	 *  Read successful RFX ID & Description
      	 */
      	public void rfxSucceedRead()
      	{
      		JCoTable tblRfxSucceed = jFunction.getExportParameterList().getTable("ET_RFX_SUCCEED_READ");
      		
      		DBFactory factory = new DBFactory();
      		Connection con = factory.getConnection();
      		PreparedStatement ps = null;
      		
      		String lv_hdr_tbl     = "CRMD_ORDERADM_H";
      		String lv_stat_tbl    = "ZSTATUS";  // USE Z table to retrieve status
      		
      		try {
      //			ps = con.prepareStatement("select HEADER.OBJECT_ID, HEADER.DESCRIPTION from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_stat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.GUID = STAT.OBJNR AND STAT.STAT = ? order by HEADER.CREATED_AT DESC");
      //			ps.setString(1, "800");
      //			ps.setString(2, "BUS2200");
      //			ps.setString(3, "I1011"); // Adapt to status succceed later
      			
      			ps = con.prepareStatement("select HEADER.OBJECT_ID, HEADER.DESCRIPTION from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_stat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.OBJECT_ID = substr(STAT.RFX, 1, 10) AND substr(STAT.RFX, 11, 14) = '0007' AND STAT.STATUS = ? order by HEADER.CREATED_AT DESC");
      			ps.setString(1, "800");
      			ps.setString(2, "BUS2200");
      			ps.setString(3, "A");
      			
      			ResultSet queryResult = ps.executeQuery();
      			String objID = "";
      			String description = "";
      			
      			while (queryResult.next()) {
      				
      				objID   = queryResult.getString(1);
      				description = queryResult.getString(2);
      				
      				//System.out.println("RFX ID:" + objID);
      				
      				tblRfxSucceed.appendRow();
      				tblRfxSucceed.setValue("RFX_ID", objID);
      				tblRfxSucceed.setValue("DESCRIPTION", description);
      				tblRfxSucceed.setValue("STAT", "I1011");
      			}
      			jFunction.getExportParameterList().setValue("ET_RFX_SUCCEED_READ", tblRfxSucceed);
      			
      			queryResult.close();
      			ps.close();
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	/**
      	 *  Read successful RFX detail
      	 * 
      	 */
      	public void rfxSucceedDetail()
      	{
      		JCoTable tblRfxDetail = jFunction.getExportParameterList().getTable("ET_RFX_SUC_DETAIL");
      		String rfxID = jFunction.getImportParameterList().getString("RFX_ID");
      		
      		DBFactory factory = new DBFactory();
      		Connection con = factory.getConnection();
      		PreparedStatement ps = null;
      		
      		String tblHeader = "CRMD_ORDERADM_H";
      		String tblItem   = "CRMD_ORDERADM_I";
      		String tblVersion = "BBP_PDHGP";
      		String tblRoles  = "SRRELROLES";
      		String tblRoleRel = "BBP_PDBINREL";
      		String tblPDIGP  = "BBP_PDIGP";
      		String tblBut    = "BUT000";
      		String tblPart   = "CRMD_PARTNER";
      		String tblLink   = "CRMD_LINK";
      		
      		ResultSet queryResult = null;
      		
      		try {
      			ps = con.prepareStatement("select ITEM.GUID, ITEM.NUMBER_INT, ITEM.DESCRIPTION_UC, HEADER.DESCRIPTION FROM "+remote_prefix+tblHeader+" HEADER, "+remote_prefix+tblItem+" ITEM, "+remote_prefix+tblVersion+" VERSION where HEADER.OBJECT_ID =? AND HEADER.GUID = ITEM.HEADER AND HEADER.OBJECT_TYPE = ? AND VERSION.GUID = HEADER.GUID AND VERSION.VERSION_TYPE = ' ' AND HEADER.CLIENT = '800' AND ITEM.CLIENT = '800' AND VERSION.CLIENT = '800'");
      			ps.setString(1, rfxID);
      			ps.setString(2, "BUS2200");
      		    queryResult = ps.executeQuery();
      		    
      		    ArrayList<byte[]> rfxItemGuidList = new ArrayList<byte[]>();
      		    ArrayList<String> rfxItemGuidStrList = new ArrayList<String>();
      		    ArrayList<String> rfxBidderNameList = new ArrayList<String>();
      		    
      		    while (queryResult.next())
      		    {
      		    	tblRfxDetail.appendRow();
      		    	tblRfxDetail.setValue("RFX_ID", rfxID);
      		        tblRfxDetail.setValue("ITEM_NUM", queryResult.getString(2));
      		        tblRfxDetail.setValue("ITEM_DESC", queryResult.getString(3));
      		        tblRfxDetail.setValue("HDR_DESC", queryResult.getString(4));
      		        rfxItemGuidList.add(queryResult.getBytes(1));
      		        
      		        String itemStrGuid = byte2HexStr(queryResult.getBytes(1));
      		        rfxItemGuidStrList.add(itemStrGuid);
      		        System.out.println("RFX item GUID: "+itemStrGuid);
      		    }
      		    
      		    queryResult.close();
      		    ps.close();
           		
      		    for(int i=0;i<rfxItemGuidStrList.size();i++)
      		    {
                     ps = con.prepareStatement("select REL.ROLE_B FROM "+remote_prefix+tblRoles+" ROLE, "+remote_prefix+tblRoleRel+" REL WHERE ROLE.OBJKEY = ? AND ROLE.ROLEID = REL.ROLE_A AND ROLE.CLIENT = '800' AND REL.CLIENT = '800'");
                     ps.setString(1, rfxItemGuidStrList.get(i));
                     queryResult = ps.executeQuery();
                     
                     ArrayList<String> roleBList = new ArrayList<String>();
                     
                     while (queryResult.next())
                     {
                  	   roleBList.add(queryResult.getString(1));
                     }
                     
                     queryResult.close();
                     ps.close();
                     
                     String awardedResItemGuidStr = "";
                     
                     for(int j=0;j<roleBList.size();j++)
                     {
                  	   ps = con.prepareStatement("select OBJKEY from "+remote_prefix+tblRoles+" where ROLEID = ? AND CLIENT = '800'");
                  	   ps.setString(1, roleBList.get(j));
                  	   queryResult = ps.executeQuery();
                  	   
                  	   String responseItemStrGuid = "";
                  	   
                  	   if (queryResult.next());
                  	   {
                  		   responseItemStrGuid = queryResult.getString(1);
                  		   System.out.println("Response Item GUID: "+responseItemStrGuid);   
                  	   }
                  	   
                  	   queryResult.close();
                         ps.close();
      
                         if (!responseItemStrGuid.equals(""))
                         {
                      	   ps = con.prepareStatement("select BB.DEDUCT_IND, BB.DEL_IND, BB.ACCEPT_STAT_CODE from "+remote_prefix+tblPDIGP+" BB, "+remote_prefix+tblRoles+" ROLE where BB.GUID = ROLE.OBJKEY AND ROLE.OBJKEY = ? AND BB.CLIENT = '800'");
                      	   ps.setString(1, responseItemStrGuid);
                      	   queryResult = ps.executeQuery();
                             
                      	   String deductInd = "";
                      	   String delInd    = "";
                      	   String acceptStatCode = "";
                      	   
                      	   if (queryResult.next())
                      	   {
                      		   deductInd      = queryResult.getString(1);
                          	   delInd         = queryResult.getString(2);
                          	   acceptStatCode = queryResult.getString(3); 
                          	   System.out.println("!!deductInd:"+ deductInd+";del_IND:"+delInd+";acceptCode:"+ acceptStatCode+"!!");
                      	   }                	   
                      	   
                      	   queryResult.close();
                      	   ps.close();
                      	   
                      	   if (deductInd.equals(" ") && delInd.equals(" ") && !acceptStatCode.equals("R"))
                      	   {
                      		   System.out.println("Awarded item is found: "+responseItemStrGuid);
                      		   awardedResItemGuidStr = responseItemStrGuid;
                      		   break;
                      	   }
                         }
                     }
                     
                     if (awardedResItemGuidStr.equals("") )
                     {
                  	   System.out.println("Awarded vendor is NOT found for Item "+ i);
                  	   rfxBidderNameList.add("Successful bidder is not found for this item");
                  	   continue;
                     }
                     
                     ps = con.prepareStatement("select ITEM.HEADER from "+remote_prefix+tblItem+" ITEM, "+remote_prefix+tblRoles+" ROLE where ITEM.GUID = ROLE.OBJKEY AND ROLE.OBJKEY = ? AND ITEM.CLIENT = '800'");
                     ps.setString(1, awardedResItemGuidStr);
                     queryResult = ps.executeQuery();
                     
                     byte[] resHdrGuid = null;
                     String resHdrGuidStr = "";
                     
                     if (queryResult.next())
                     {
                  	  resHdrGuid = queryResult.getBytes(1); 
                  	  resHdrGuidStr = byte2HexStr(resHdrGuid);
                     }
                     
                     queryResult.close();
                     ps.close();
                     
                     if (!resHdrGuidStr.equals(""))
                     {
                  	   ps = con.prepareStatement("select BU.NAME_ORG1 from "+remote_prefix+tblBut+" BU, "+remote_prefix+tblPart+" PART, "+remote_prefix+tblHeader+" HEADER, "+remote_prefix+tblLink+" LINK, "+remote_prefix+tblRoles+" ROLE where PART.PARTNER_NO = BU.PARTNER_GUID AND HEADER.GUID = LINK.GUID_HI AND PART.GUID = LINK.GUID_SET AND LINK.OBJTYPE_SET = '07' AND PART.PARTNER_FCT = '00000018' AND HEADER.GUID = ROLE.OBJKEY AND ROLE.OBJKEY = ? AND HEADER.CLIENT = '800'");
                         ps.setString(1, resHdrGuidStr);
                         queryResult = ps.executeQuery();
                         
                         if (queryResult.next())
                         {
                      	   String orgName = queryResult.getString(1);
                      	   rfxBidderNameList.add(orgName);
                      	   System.out.println("Awarded bidder found for item "+i+": "+orgName);
                         }
                         queryResult.close();
                         ps.close();
                     }
      		    }
      		    
      		    for(int i=0;i<rfxBidderNameList.size();i++)
      		    {
      		    	tblRfxDetail.setRow(i);
      		    	tblRfxDetail.setValue("BIDDER_NAME", rfxBidderNameList.get(i));
      		    }
      		    
      		    jFunction.getExportParameterList().setValue("ET_RFX_SUC_DETAIL", tblRfxDetail);
      		    
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}	
      	}
      	
      	/**
      	 * Convert byte array to string
      	 * @param byte array
      	 * @return string 
      	 */
      	public static String byte2HexStr(byte[] b) {
              String hs="";
              String stmp="";
              for (int n=0;n<b.length;n++) {
                  stmp=(Integer.toHexString(b[n] & 0XFF));
                  if (stmp.length()==1) hs=hs+"0"+stmp;
                  else hs=hs+stmp;
                  //if (n<b.length-1)  hs=hs+":";
              }
              return hs.toUpperCase();
          }
      	
      	/**
           * Convert hex string to byte[]
           * @param hex String
           * @return byte[]
           */
      	/**
      	 * 
          public static byte[] hexStr2Bytes(String src) {
              int m=0,n=0;
              int l=src.length()/2;
              System.out.println(l);
              byte[] ret = new byte[l];
              for (int i = 0; i < l; i++) {
                  m=i*2+1;
                  n=m+1;
                  ret[i] = uniteBytes(src.substring(i*2, m),src.substring(m,n));
              }
              return ret;
          }
          
          private static byte uniteBytes(String src0, String src1) {
              byte b0 = Byte.decode("0x" + src0).byteValue();
              b0 = (byte) (b0 << 4);
              byte b1 = Byte.decode("0x" + src1).byteValue();
              byte ret = (byte) (b0 | b1);
              return ret;
          }
      	*/
      	
      	private void ProcessTableUpdate(ResultSet queryResult, String lv_table_name, String[] str_keys, Connection con){
      		
      		try {
      			String str_condition = " where ";
      			System.out.print("Key for table:");
      			for (int i = 0; i < str_keys.length;i++)
      			{
      				str_condition = str_condition + ((i==0)?"":" and ") + str_keys[i] + " = ? ";
      			}
      			System.out.println();
      			
      			int count = 0;
      			PreparedStatement ps_insert = null;
      			PreparedStatement ps_update = null;
      			
      			
      			//Retrieve Meta Data
      			ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      			int i_columns = oMetaData.getColumnCount();
      			System.out.println("The number of columns for table " + lv_table_name + " is " + i_columns);
      			String[] str_columns = new String[i_columns];
      			String field_list = "";
      			String value_list = "";			
      			String update_list = "";
      			
      			System.out.print("Fields List:");
      			
      			for(int i=0; i< i_columns; i++){
      				str_columns[i] = oMetaData.getColumnName(i+1);
      				System.out.print(str_columns[i]);
      				field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
      				value_list = value_list +  ((i==0)?"?":",?");
      			}
      			System.out.println();
      			for(int i=0; i< i_columns; i++){
      				update_list = update_list + ((i==0)?"":", ") + str_columns[i] + " = ? ";
      			}
      			
      			//Prepare insert statement
      			String sql = "insert into "+ remote_prefix +lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      			System.out.println(sql);
      			ps_insert = con.prepareStatement(sql);
      			
      			//Prepare update statement
      			sql = "update "+ remote_prefix +lv_table_name + " set " + update_list + str_condition;
      			System.out.println(sql);
      			ps_update = con.prepareStatement(sql);
      			
      			while (queryResult.next()) {
      				
      				count++;
      				//Check whether the data record exists
      				PreparedStatement ps = null;
      				sql= "select count(*) from "+ remote_prefix + lv_table_name + str_condition;
      				ps = con.prepareStatement(sql);
      				Object[] obj_keys_value = new Object[str_keys.length];
      				for(int i=0;i< str_keys.length;i++){
      					obj_keys_value[i] = queryResult.getObject(str_keys[i]);
      					ps.setObject(i+1, obj_keys_value[i]);
      				}
      				ResultSet queryResult1 = ps.executeQuery();
      				int flag = 0;
      				if(queryResult1.next()){
      					flag = queryResult1.getInt(1);
      				}
      				ps.close();
      				
      				if(flag==0){
      					//Insert new record
      					for(int j=0;j<str_columns.length; j++){
      						ps_insert.setObject(j+1, queryResult.getObject(str_columns[j]));
      					}
      					ps_insert.addBatch();
      				}else{
      					//Update existing record
      					for(int j=0;j<str_columns.length; j++){
      						ps_update.setObject(j+1, queryResult.getObject(str_columns[j]));
      					}
      					for(int j=0; j<str_keys.length; j++){
      						ps_update.setObject(j+1+ str_columns.length, obj_keys_value[j]);
      					}
      					ps_update.addBatch();
      				}
      			}
      			//with batch
      			ps_insert.executeBatch();
      			ps_insert.close();
      			ps_update.executeBatch();
      			ps_update.close();
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}
      	
      	private void ProcessTableInsert(ResultSet queryResult, String lv_table_name, Connection local_conn){
      		
      		try {
      			WriteLogln("Processing table " + lv_table_name);
      			ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      			int i_columns = oMetaData.getColumnCount();
      			WriteLogln("The number of columns for table " + lv_table_name + " is " + i_columns);
      			String[] str_columns = new String[i_columns];
      			String field_list = "";
      			String value_list = "";
      			WriteLog("Fields List:");
      			for(int i=0; i< i_columns; i++){
      				
      				str_columns[i] = oMetaData.getColumnName(i+1);
      				WriteLog(str_columns[i]+" ");
      				field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
      				value_list = value_list +  ((i==0)?"?":",?");
      			}
      			WriteLogln("");
      			
      			//Prepare statement for local insert
      			String sql = "insert into " + local_prefix + lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      			WriteLogln(sql);
      			PreparedStatement local_ps = local_conn.prepareStatement(sql);
      			int count = 0;
      			while (queryResult.next()) {
      				count++;
      				for(int j=0;j<str_columns.length; j++){
      					local_ps.setObject(j+1, queryResult.getObject(str_columns[j]));
      				}
      				//add to batch
      				local_ps.addBatch();
      			}
      			WriteLogln("Total records:" + count);
      			//execute the batch
      			local_ps.executeBatch();
      			local_ps.close();
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      			WriteLogln(e.getMessage());
      			WriteLogln(e.getSQLState());
      		}
      	}
      	
      
      }
      
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/jerrywangsap/3098909,作者:JerryWang汪子熙,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:结构数据类型 struce c#

      下一篇:使用ABAP代码创建SAP S/4HANA Sales Order

      相关文章

      2025-05-14 10:02:58

      java休眠到指定时间怎么写

      java休眠到指定时间怎么写

      2025-05-14 10:02:58
      java , sleep , Thread , util , 方法
      2025-05-14 10:02:58

      java项目多端数据同步解决方案

      多端数据同步是指在多个设备(例如桌面应用、移动应用、Web应用)之间保持数据的一致性。

      2025-05-14 10:02:58
      java , Spring , WebSocket , 同步 , 数据 , 版本号
      2025-05-13 09:49:12

      Java学习(动态代理的思想详细分析与案例准备)(1)

      Java学习(动态代理的思想详细分析与案例准备)(1)

      2025-05-13 09:49:12
      java , 代理 , 代码 , 对象 , 接口 , 方法 , 需要
      2025-05-09 08:20:32

      基于IDEA的Maven简单工程创建及结构分析

      通过一个 mvn 命令直接让我们创建一个 Maven 的脚手架。

      2025-05-09 08:20:32
      java , Maven , xml , 创建 , 文件 , 文件夹 , 项目
      2025-05-08 09:03:57

      前K个高频元素java

      给定一个非空的整数数组,返回其中出现频率前 前K个高频元素java 高的元素。

      2025-05-08 09:03:57
      java , 元素 , 样例 , 给定
      2025-05-08 09:03:21

      基于java Swing开发的学生成绩管理系统【项目源码+数据库脚本】

      基于java Swing开发的学生成绩管理系统【项目源码+数据库脚本】

      2025-05-08 09:03:21
      java , Swing , 学生 , 源码
      2025-05-08 09:03:21

      java Swing学生成绩管理系统【项目源码+数据库脚本】

      本项目是一套基于java Swing开发的学生成绩管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。

      2025-05-08 09:03:21
      java , 学生 , 成绩 , 数据库 , 源码
      2025-05-07 09:08:08

      java Swing学生选课管理系统【源码+数据库+报告】

      本项目是一套基于java Swing学生选课管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。

      2025-05-07 09:08:08
      java , 学生 , 截图 , 源码
      2025-05-07 09:08:08

      java swing人机对战五子棋(含背景音乐)

      本项目是一套基于java swing的人机对战五子棋系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。

      2025-05-07 09:08:08
      java , 源码
      2025-04-22 09:40:08

      【ETL工具】kettle 程序报错 Javascript error: TypeError: Cannot call method “trim“ of null

      【ETL工具】kettle 程序报错 Javascript error: TypeError: Cannot call method “trim“ of null

      2025-04-22 09:40:08
      java , javascript , org
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5243483

      查看更多

      最新文章

      java项目多端数据同步解决方案

      2025-05-14 10:02:58

      Java学习(动态代理的思想详细分析与案例准备)(1)

      2025-05-13 09:49:12

      前K个高频元素java

      2025-05-08 09:03:57

      基于java Swing开发的学生成绩管理系统【项目源码+数据库脚本】

      2025-05-08 09:03:21

      java Swing学生成绩管理系统【项目源码+数据库脚本】

      2025-05-08 09:03:21

      java Swing学生选课管理系统【源码+数据库+报告】

      2025-05-07 09:08:08

      查看更多

      热门文章

      JAVA__接口的作用

      2023-04-18 14:14:13

      Java学习之算术运算符两只老虎

      2023-04-19 09:23:13

      排序算法Java版-归并排序算法

      2023-04-24 11:25:19

      JAVA多线程学习笔记

      2023-05-11 06:05:48

      Lambda函数

      2023-02-08 10:33:56

      try...catch...finally java

      2023-03-29 09:40:26

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      C#编程-60:简单的TCP通讯实例

      手写代码:Dijkstra算法。

      【Java】Log4j远程命令执行漏洞修复最新版下载

      JavaWeb之响应

      Python中利用Matplotlib绘制多图并合并展示

      数字三角形的显示 java

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号