TIPTOP GP5.30&EasyFlow GP详解

前言:

大家好,我是TT-风。

  最近在研究java前端的东西,然后呢繁琐的事情太多,咳咳,进度可观的微弱....,最近突发奇想想把手头的一些比较重要的数据更新流程化,且将逻辑写在OA回传上边,因为之前没有做过类似的东西,开始也是一头雾水的那种。然后就各种百度资料,效果寥寥无几。网上的一些资料要么就是不全面。要么就是各种版本不符。因此也激起了我的欲望,迫使我搞定它,干就完了。

  经过一个礼拜的奋战,终于是搞定了这个东西,想着目前网络上也没有很明确的资料就自己写一个吧,把自己的经验和汗水留下来。让后续也有同样需求的人少走一点弯路。接下来进入正轨***

 #########################我是分隔符############################

一、首先进入例常的建表环节:

tc_xmi_file—这是单头表

/*

================================================================================

檔案代號:tc_xmi_file

檔案名稱:暂估单价更新维护作业单头

檔案目的:暂估单价更新作业单头资料

上游檔案:

下游檔案:

檔案類型:B

多語系檔案:N

============.========================.==========================================

*/

create table tc_xmi_file

(

tc_xmi01    varchar2(20),            /*暂估更新单号                           */

tc_xmimksg  varchar2(1),             /*签核否                                 */

tc_xmi02    date,                    /*申请日期                               */

tc_xmi03    varchar2(10),            /*申请人员                               */

tc_xmi04    varchar2(10),            /*部门编号                               */

tc_xmi05    varchar2(1),             /*状态码                                 */

                                     /*0:  开立                               */

                                     /*1:  已核准                             */

                                     /*9:  作废                               */

                                     /*S:  送签中                             */

                                     /*R:  送签退回                           */

                                     /*W: 抽单                               */

tc_xmi06    varchar2(10),            /*审核人员                               */

tc_xmi07    date,                    /*审核日期                               */

tc_xmi08    varchar2(255),           /*备注                                   */

tc_xmiplant varchar2(10),            /*营运中心                               */

tc_xmiconf  varchar2(1),             /*审核否                                 */

tc_xmiuser  varchar2(10),            /*资料所有者                             */

tc_xmigrup  varchar2(10),            /*资料所有者部门                         */

tc_xmioriu  varchar2(10),            /*资料建立者                             */

tc_xmiorig  varchar2(10),            /*资料建立者部门                         */

tc_xmimodu  varchar2(10),            /*资料更改者                             */

tc_xmidate  date                     /*最近修改日                             */

);

alter table tc_xmi_file add  constraint tpc_xmi_pk primary key  (tc_xmi01) disable novalidate;

grant select on tc_xmi_file to tiptopgp;

grant update on tc_xmi_file to tiptopgp;

grant delete on tc_xmi_file to tiptopgp;

grant insert on tc_xmi_file to tiptopgp;

grant index on tc_xmi_file to public;

grant select on tc_xmi_file to ods;

tc_xmj_file—这是单身表

跟单头表类似的创建方法

(注:各公司情况不一,表格自己创建,就是一般的单头表和单身表。表格字段仅提供参考!!)

运行p_zta程序建立单头单身表,或复制黏贴内容在plsql中建立表格

二、写4gl程序:

  核心代码:

     _menu()中加:

     WHEN "easyflow_approval"   #送签流程

            IF cl_chk_act_auth() THEN

               CALL cpmt500_ef()

            END IF

送签函数:

#送签

FUNCTION cpmt500_ef()

DEFINE l_i   LIKE type_file.num5

  LET g_success = 'Y'

  IF s_shut(0) THEN

     LET g_success = 'N'

     RETURN

  END IF

  IF g_tc_xmi.tc_xmiconf MATCHES '[Y]' THEN

      CALL cl_err('','9023',0)

      LET g_success = 'N'

      RETURN

  END IF

  IF g_tc_xmi.tc_xmi05 MATCHES '[1S]' THEN

      CALL cl_err('','mfg3557',0)

      LET g_success = 'N'

      RETURN

  END IF

  LET g_tc_xmi_t.* = g_tc_xmi.*

  CALL aws_condition()   #判断送签资料

  IF g_success = 'N' THEN

     RETURN

  END IF

   IF aws_efcli2(base.TypeInfo.create(g_tc_xmi),'','','','','')

   THEN

       LET g_success='Y'

         LET g_tc_xmi.tc_xmi05='S'

         DISPLAY BY NAME g_tc_xmi.tc_xmi05

   ELSE

       LET g_success='N'

   END IF

END FUNCTION

代码都是固定的写法,参考标准程序即可。我这边只传了单头资料,原因呢后续我会讲到,咱们继续...

三、写组XML的代码:

DATABASE ds

GLOBALS "../4gl/awsef.4gl"

GLOBALS "../../config/top.global"

  FUNCTION aws_efcli2_cf()

    DEFINE sr    RECORD

              tc_xmi01      LIKE  tc_xmi_file.tc_xmi01,

              tc_xmi02      LIKE  tc_xmi_file.tc_xmi02,

              tc_xmi03      LIKE  tc_xmi_file.tc_xmi03,

              gen02         LIKE  gen_file.gen02,

              tc_xmi04      LIKE  tc_xmi_file.tc_xmi04,

              gem02         LIKE  gem_file.gem02,

              tc_xmiplant   LIKE  tc_xmi_file.tc_xmiplant,

              tc_xmi08      LIKE  tc_xmi_file.tc_xmi08

             END RECORD,

           l_i             LIKE type_file.num5,      

           l_sql  LIKE type_file.chr1000

    WHENEVER ERROR CALL cl_err_msg_log

    CALL aws_efcli2_XMLHeader()

   LET  l_sql=" SELECT tc_xmi01,tc_xmi02,tc_xmi03,gen02, “,

“       tc_xmi04,gem02,tc_xmiplant,tc_xmi08 ",

             "  FROM tc_xmi_file ",

             " LEFT JOIN gen_file ON tc_xmi03 = gen01 ",

             " LEFT JOIN gem_file ON tc_xmi04 = gem01 ",

             " WHERE tc_xmi01 = '", g_formNum CLIPPED, "'"

    PREPARE ef_pre FROM l_sql

    IF STATUS THEN

       CALL cl_err('prepare: ', STATUS, 0)

       LET g_strXMLInput = ''

       RETURN

    END IF

    DECLARE ef_cur CURSOR FOR ef_pre

    LET l_i = 1

    FOREACH ef_cur INTO sr.*

   

           LET g_strXMLInput = g_strXMLInput CLIPPED,

               "   <tc_xmi01 type=\"0\">",sr.tc_xmi01 CLIPPED   ,"</tc_xmi01>",  ASCII 10,

               "     <tc_xmi02 type=\"0\">",sr.tc_xmi02 CLIPPED   ,"</tc_xmi02>",  ASCII 10,

               "     <tc_xmi03 type=\"0\">",sr.tc_xmi03 CLIPPED   ,"</tc_xmi03>",  ASCII 10,

               "     <gen02 type=\"0\">",sr.gen02 CLIPPED   ,"</gen02>",  ASCII 10,

               "     <tc_xmi04 type=\"0\">",sr.tc_xmi04 CLIPPED   ,"</tc_xmi04>",  ASCII 10,

               "     <gem02 type=\"0\">",sr.gem02 CLIPPED   ,"</gem02>",  ASCII 10,

               "     <tc_xmiplant type=\"0\">",sr.tc_xmiplant CLIPPED   ,"</tc_xmiplant>",  ASCII 10,

               "     <tc_xmi08 type=\"0\">",sr.tc_xmi08 CLIPPED   ,"</tc_xmi08>",  ASCII 10,

               "    </head>", ASCII 10,

               "    <body>", ASCII 10,

               "     <record>", ASCII 10,

               "     </record>", ASCII 10

        LET l_i = l_i + 1

    END FOREACH

    LET g_strXMLInput = g_strXMLInput CLIPPED,

                        "    </body>", ASCII 10

    CALL aws_efcli2_XMLTrailer()

END FUNCTION

我自己取名:aws2_cpmt500放在/u1/topprod/tiptop/aws/4gl下

四、连接程序:

打开p_zz,点击链接程序:

链接完成以后打开程序aws_efcfg2做集成设置:

1.打开程序

2.点击录入

输入我们的程序,这边我就不一一演示了。直接上我已经做好的图片,你们跟着我做的那些照搬就行

 

这两个我没填,是空着的 所以就没上图,如果有需求就正常填

点击 维护一下需要传入表单的字段

最后点击。到这一步基本上ERP这边就已经完成了。

接下来是easyflow:

  • 用管理员账号登录OA系统、选择系统设计工具,先做表单

点击表单设计师:

新建一张空白表单

输入表单代号,我这边是取的跟ERP程序一样的名字cpmt500你们自定。。

建完表单是这样子的。接下来就给大家讲解一下表单各个栏位是什么意思:

首先这个是关联数据库

这个对应传进来的tc_xmi02字段

这个对应传进来的tc_xmi01字段

1对应传进来的tc_xmiplant字段,2和3为记录的审核人员工号及名字。在JavaScript中实现。

对应 tc_xmi03和gen02字段

对应 tc_xmi04和gem02字段

对应 tc_xmi08字段

这个是一个查询的按钮,点击完以后会跳出ERP系统的资料。(JavaScript代码实现),讲到这里我就要解释一下为什么只传单头的资料了。因为我个人觉得如果单身数据太多了,在这边显示会很麻烦,打开表单也会很卡(获取资料嘛),我这边只传个单头资料进来,肯定是只有一笔的,所以很快,然后如果需要看单身资料的话就点击按钮就会跳出单身资料来了。

好了,到目前为止咱们的表单已经是解决了。现在我们来实现表单上的功能。我这边就直接上js代码了,代码简陋还请不要在意那些细节

/*

*暂估单价更新

*Add By HYP 200831

*

*/

document.write('<script type="text/javascript" src="../../CustomJsLib/EFGPShareMethod.js"></script>');//for 开窗

var tDataSource_ERP = "nd";

//var tDataSource_ERP = new DataSource("tc_xmj_file","SQLERP");

//var tDataSource_EFGP = new DataSource("cpmt500","SQLEFGP");

function formCreate(){

return true;

}

function formOpen(){

return true;

}

function formSave(){

       if(activityId=="ACT3"){

       document.getElementById("HtxtId").value = userId;

       document.getElementById("HtxtDat").value=sytemDateTime.substring(2,10);

              }

return true;

}

function formClose(){

return true;

}

function btncsjg_onclick(){

       var Plant = document.getElementById("tc_xmiplant").value;

       var Arg1 = document.getElementById("tc_xmi01").value;

  var FileName = "SingleOpenWin";            

       var sql = "SELECT tc_xmj01,tc_xmj02,tc_xmj03,tc_xmj04, “ +

“rvv31,ima02,ima021, tc_xmj05,tc_xmj06,tc_xmj07,tc_xmj08 "+

               "  FROM " + Plant +".tc_xmj_file" +

               "  LEFT JOIN " + Plant + ".rvv_file ON rvv01 = tc_xmj03 AND rvv02 = tc_xmj04 " +

                 "  LEFT JOIN " + Plant + ".ima_file  ON ima01 = rvv31 " +

                 " WHERE tc_xmj01 = '" + Arg1 + "'";

       var SQLClaused = new Array(sql);

       var SQLLabel = new Array("暂估更新单号","项次","入库/退货单号","入库/退货项次","料件编号","品名","规格","未税单价","含税单价","税种","税率");//开窗后清单列表

       var QBEField = new Array("tc_xmj03","tc_xmj04","rvv31","ima02","ima021");//模糊查询的字段条件

       var QBELabel = new Array("入库/退货单号","入库/退货项次","料件编号","品名","规格");//查询条件对应的label

     //   var ReturnId = new Array("tc_xmj01","tc_xmi01");//返回信息 参数1:'SQL字段' 参数2:'画面栏位'

       singleOpenWin(FileName, tDataSource_ERP, SQLClaused, SQLLabel, QBEField, QBELabel,720, 430);

    

}

  • 打开流程设计师:

点击新增流程模型,

放到哪里

这个是我的流程图,大家自定参考咯。

然后就写完回传的session bean就OK了。

  • 更新关联(必须要操作,不然ERP响应不到OA流程了。)

1.

2.

3.

4.

5.

6.点击

7.

好了,到这里整个过程就完成了。有问题联系我,我是TT-风......

感谢阅读- . -

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值