ABAP 省市县级联搜索帮助
在展示ABAP代码之前,先建立自建表ZCHENH006,表中包含两个关键字段 BELNR(地区编码),SDESC(地区描述)。
编码规则参考:身份证前六位地区编码规则,可参考我另外一篇Blog导入系统:ABAP自动生成身份证及校验。

在导入配置之后,可以参考以下ABAP代码。
*&---------------------------------------------------------------------*
*& REPORT ZCHENH014
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------* REPORT zchenh014.
TABLES:zchenh006.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_sdesc TYPE zchenh006-sdesc DEFAULT '请选择省份信息'.
PARAMETERS:p_belnr TYPE zchenh006-belnr. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_sdesc1 TYPE zchenh006-sdesc DEFAULT '请选择市信息'.
PARAMETERS:p_belnr1 TYPE zchenh006-belnr. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_sdesc2 TYPE zchenh006-sdesc DEFAULT '请选择县/区信息'.
PARAMETERS:p_belnr2 TYPE zchenh006-belnr.
SELECTION-SCREEN END OF LINE. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr.
PERFORM frm_f4_get_belnr USING '省' CHANGING p_belnr p_sdesc. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr1.
PERFORM frm_f4_get_belnr USING '市' CHANGING p_belnr1 p_sdesc1. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr2.
PERFORM frm_f4_get_belnr USING '县' CHANGING p_belnr2 p_sdesc2. AT SELECTION-SCREEN OUTPUT.
PERFORM frm_modify_screen. INITIALIZATION.
*&---------------------------------------------------------------------*
*& Form frm_f4_get_belnr
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_f4_get_belnr USING p_in CHANGING p_out1 p_out2.
DATA:lt_field TYPE dfies OCCURS WITH HEADER LINE,
lt_ret TYPE ddshretval OCCURS WITH HEADER LINE,
lt_dyn TYPE dselc OCCURS WITH HEADER LINE.
DATA:BEGIN OF lt_zchenh006 OCCURS ,
sdesc TYPE zchenh006-sdesc, " 省市县代码
belnr TYPE zchenh006-belnr, " 省市县描述
END OF lt_zchenh006.
DATA:lv_belnr().
IF p_in = '省'.
SELECT sdesc belnr
INTO TABLE lt_zchenh006
FROM zchenh006
WHERE belnr LIKE '%0000'.
ENDIF. IF p_in = '市'.
lv_belnr = p_belnr+() && '%'.
SELECT sdesc belnr
INTO TABLE lt_zchenh006
FROM zchenh006
WHERE belnr LIKE lv_belnr
AND belnr LIKE '%00'
AND belnr NE p_in
AND sdesc NE '县'.
ENDIF. IF p_in = '县'.
lv_belnr = p_belnr1+() && '%'.
SELECT sdesc belnr
INTO TABLE lt_zchenh006
FROM zchenh006
WHERE belnr NOT LIKE '%00'
* AND belnr NOT LIKE '%01'
AND belnr LIKE lv_belnr
AND belnr NE p_belnr1.
ENDIF. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ZCHENH006-BELNR'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_BELNR'
window_title = '自定义搜索帮助'
value_org = 'S'
callback_program = sy-repid
TABLES
value_tab = lt_zchenh006
field_tab = lt_field
return_tab = lt_ret
dynpfld_mapping = lt_dyn
EXCEPTIONS
parameter_error =
no_values_found =
OTHERS = .
LOOP AT lt_ret.
p_out1 = lt_ret-fieldval.
SELECT SINGLE sdesc INTO p_out2 FROM zchenh006 WHERE belnr = p_out1.
IF sy-subrc NE .
p_out2 = '无效编号'.
ENDIF.
ENDLOOP.
ENDFORM. " frm_f4_get_belnr
*&---------------------------------------------------------------------*
*& Form FRM_MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_modify_screen .
LOOP AT SCREEN.
CASE screen-name.
WHEN 'P_SDESC'.
screen-input = .
IF p_sdesc IS INITIAL.
screen-active = .
ENDIF.
WHEN 'P_SDESC1'.
screen-input = .
IF p_sdesc1 IS INITIAL.
screen-active = .
ENDIF.
WHEN 'P_SDESC2'.
screen-input = .
IF p_sdesc2 IS INITIAL.
screen-active = .
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP. ENDFORM. " FRM_MODIFY_SCREEN
但是该代码有个瑕疵,每次选择完毕后,需要按下"回车",才能显示完整的地区描述信息。
ABAP 省市县级联搜索帮助的更多相关文章
- distpicker 省市县级联
一.前言:想着每次写项目都要遇到省市县级联,就想找一个比较简单好用的插件来...感觉挺不错~~~ 二.例子: html : 效果: 还有很多种用法,我这里只放一种,插件文件里index.html有介绍 ...
- [SAP ABAP开发技术总结]搜索帮助Search Help (F4)
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP DEMO 年月的搜索帮助
效果图: *&---------------------------------------------------------------------* *& Report YCX_ ...
- extjs 省市县级联
Ext.define('State', { extend: 'Ext.data.Model', fields: [ {type: 'string', name: 'nevalue'}, {type: ...
- 【前端】Element-UI 省市县级联选择器 JSON数据
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/element_cascader.html 不想自己处理的就直接下载吧 http://shamoyuu.bj.bce ...
- postgresql 10 ltree 使用说明
官方文档 https://www.postgresql.org/docs/10/static/ltree.html ltree是俄罗斯Teodor Sigaev和Oleg Bartunov共同开发的P ...
- 基于MVC设计模式的两种软件架构简介
第一种模式,可处理组合命令,具有撤销(Undo)和重做(Redo)功能,支持多种数据库类型 1.Action采用组合模式,既可以代表一个简单的动作,也可以代表一组动作组合.List<Ac ...
- mobile plugin
http://fronteed.com/iCheck/ http://spritely.net/documentation/ http://www.mobilexweb.com/blog/mobile ...
- Select2使用方法汇总
引用: <script src="~/Content/plugins/select2/select2.min.js"></script> 1.简单使用 $. ...
随机推荐
- 位运算 - a^b
求 a 的 b 次方对 p 取模的值. 输入格式 三个整数 a,b,p ,在同一行用空格隔开. 输出格式 输出一个整数,表示a^b mod p的值. 数据范围 1≤a,b,p≤109 输入样例: 3 ...
- (28)django的中间件(自定义中间件和防范跨站请求伪造攻击)-重要的概念
Django中间件和中间件不是同一种东西 什么是中间件:中间件是一个很大的概念,只要程序和程序之间还有一层程序,用来处理两个程序的整个交互过程的请求.数据等等就叫中间件 Django中间件:是介于re ...
- rviz初接触
- github二次认证接收短信的问题
这两天登陆github都被提示说我账号的密码已经被归类,提醒我修改密码. 改密码的时候发现GitHub有个二次认证的功能,分别是app和sms短信认证.app这里就不讲了,我们讲一下github的短信 ...
- windows server 2008 R2之tomcat开机自启
方法一: 写一个批处理文件autostartup.bat用来启动tomcat,内容如下.复制时不要把复制内容也复制进去 set CATALINA_HOME=C:\apache-tomcat-8.5.3 ...
- Go语言开发Windows应用
Go语言开发Windows应用 当第一次看到Go程序在windows平台生成可执行的exe文件,就宣告了windows应用也一定是Go语言的战场.Go不是脚本语言,但却有着脚本语言的轻便简单的特性.相 ...
- find查找文件的时间问题
很多细节方面的东西没有到真正用的时候,是觉察不出来的,因为这个时间的问题出了问题,现在好好理一下,这个find的时间很容易就搞混了,一段时间不用,也忘了,也反映出来了自己的基础知识不是很牢固啊 f ...
- 单源最短路径Dijkstra算法,多源最短路径Floyd算法
1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...
- 【Python】hasattr() getattr() setattr() 使用方法详解
本文转自 https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回B ...
- 学习vue容易忽视的细节
1.对于自定义标签名(组件名称),Vue.js 不强制要求遵循 W3C 规则 (小写,并且包含一个短杠),尽管遵循这个规则比较好.HTML 特性是不区分大小写的.所以,当使用的不是字符串模板,came ...