一、首先弄清楚什么是串查程序
如图示:即在栏位的前面有个button,
二、串查程序实现原理 (ERP版本:GP 5.25)
1、在画面元件设置作业(p_per)作业中设置[串查程序]gav32栏位,串查的程序作业编号
小技巧:p_per资料是由r.gf x c 指令预览程序4fd档时自动新增的资料,默认是不会有任何串查程序的资料的
因此,如果将标准程序改为客制时想保留原标准程序p_per的串查程序资料时:
A:先通过p_per查询出标准程序的p_per资料,然后c:复制
B:再利用r.gf指令预览程序的4fd档,这样就保存了原标准程序的串查程序栏位的资料了
2、在程序的4gl里面的_menu()函数或者_bp()函数的ACTION列表最后添加语句 &include “qry_string.4gl”
&include “qry_string.4gl” 语句原理
① &include 或 #include 即为”包含”应用,将后面的文件内容包含进来,再编译
② &include 或 #include 如何搜索被包含的文件
A:首先在当前4gl文件目录下搜索被include包含的文件
B:然后在编译时通过编译参数”-I” 指定路径搜索
③ TIPTOP如何实现&include编译搜索的
A:编译4gl程序的Shell,即r.c2里面指定编译参数”-I”
- #No:FUN-770104 by saki include檔案路徑
- if [ “${m1}” = c ]; then
- fglcomp ${RDD} –timestamp -M -I $TOP/config/include -I $CUST/config/include ../42m/${mod}_${1}.4gl #FUN-B40095 Add ${RDD}
- else
- fglcomp ${RDD} –timestamp -M -I $TOP/config/include ../42m/${mod}_${1}.4gl #FUN-B40095 Add ${RDD}
- fi
- if [ $? -ne 0 ] ; then
- # fglcomp –timestamp ../42m/${mod}_${1}.4gl #No:FUN-770104 mark
- #No:FUN-770104 by saki include檔案路徑
- if [ “${m1}” = c ]; then
- fglcomp ${RDD} –timestamp -I $TOP/config/include -I $CUST/config/include ../42m/${mod}_${1}.4gl #FUN-B40095 Add ${RDD}
- else
- fglcomp ${RDD} –timestamp -I $TOP/config/include ../42m/${mod}_${1}.4gl #FUN-B40095 Add ${RDD}
- fi
- fi
B:可以看到TIPTOP GP指定的是$TOP/config/include该目录
我们进入此目录,就可以找到qry_string.4gl这个4gl文件
3、在qry_string.4gl程序的4gl源文件里面,我们可以看到其实就是20个button的ACTION列表
然后通过cl_qry_string()函数执行串查
那我们并没有看到button的ACTION在4fd里面加入,TIPTOP的画面档上出现button这又是怎么实现的呢?
4、在每一个程序第一次OPEN WINDOW后都会调用一个函数CALL cl_ui_locale(“4fd档”)
此函数里面的cl_setButton()函数通过查询此4fd的p_per资料的gav32串查栏位资料,自动在此栏位前面生成一个button
且此button的ACTION属性CALL lnode_button.setAttribute(“comment”,lc_gaz03 CLIPPED||”[“||pc_btn CLIPPED||”]”)保留了gav32栏位值
后续cl_qry_string()函数通过读取此属性值,调用此标记的串查程序开启串查
转载请注明:赫非域 » TIPTOP GP 串查程序实现原理