在展示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 省市县级联搜索帮助的更多相关文章

  1. distpicker 省市县级联

    一.前言:想着每次写项目都要遇到省市县级联,就想找一个比较简单好用的插件来...感觉挺不错~~~ 二.例子: html : 效果: 还有很多种用法,我这里只放一种,插件文件里index.html有介绍 ...

  2. [SAP ABAP开发技术总结]搜索帮助Search Help (F4)

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. ABAP DEMO 年月的搜索帮助

    效果图: *&---------------------------------------------------------------------* *& Report YCX_ ...

  4. extjs 省市县级联

    Ext.define('State', { extend: 'Ext.data.Model', fields: [ {type: 'string', name: 'nevalue'}, {type: ...

  5. 【前端】Element-UI 省市县级联选择器 JSON数据

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/element_cascader.html 不想自己处理的就直接下载吧 http://shamoyuu.bj.bce ...

  6. postgresql 10 ltree 使用说明

    官方文档 https://www.postgresql.org/docs/10/static/ltree.html ltree是俄罗斯Teodor Sigaev和Oleg Bartunov共同开发的P ...

  7. 基于MVC设计模式的两种软件架构简介

    第一种模式,可处理组合命令,具有撤销(Undo)和重做(Redo)功能,支持多种数据库类型     1.Action采用组合模式,既可以代表一个简单的动作,也可以代表一组动作组合.List<Ac ...

  8. mobile plugin

    http://fronteed.com/iCheck/ http://spritely.net/documentation/ http://www.mobilexweb.com/blog/mobile ...

  9. Select2使用方法汇总

    引用: <script src="~/Content/plugins/select2/select2.min.js"></script> 1.简单使用 $. ...

随机推荐

  1. 小白学习前端---第二天 HTML的基本属性————1

    一.HTML的属性 1.1基本属性 1.1.1三个基本属性 class    定义类规则或者样式规则 id   定义元素的唯一标识 stype 定义元素的样式声明 1.1.2不含三个基本属性的元素 h ...

  2. jquery移除元素时会自动解绑事件

    .html() When .html() is used to set an element's content, any content that was in that element is co ...

  3. 苹果pns推送和唤醒

    使用的是苹果自己的推送服务器 certificatePath 推送证书 VoipcertificatePath 唤醒证书 certificatePassword 证书密码 以上三项都是需要使用上架了A ...

  4. docker下运行labview2010

    前言 本人笔记本用kali,因课程需要,要在Linux下运行Labview,找到了2010的iso,但只支持rehat系列的发行版,用rpm转化deb的方案不可行,尝试了在virtualbox下运行w ...

  5. python 转义字符 html 爬虫

    用python的requests包 抓取某些网页时,返回的html中,一些字段含有一些 转义字符 \\\\\\\ 这些转义字符给我们后期处理带来一些麻烦, 比方说 运行js等 python用print ...

  6. Spring mvc 加载HTML静态页面

    看到网上大部分举例Spring MVC加载静态页面HTML方式都还要通过controller, 根据js和css文件的加载模式,html也同样可以直接加载 在spring的配置文件中例如 *-serv ...

  7. C# 利用反射完成计算器可扩展功能

    一个主要的窗体程序,两个输入框,一个label using System; using System.Collections.Generic; using System.ComponentModel; ...

  8. awk命令过滤tomcat的访日日志中IP地址

    1. 命令如下 批量过滤日志文件,grep -v是要排除10网段开头的IP地址 sort会自动按ip排序 uniq -c去重并计数 sort -n 按数值从小到大排序 [root@linux-node ...

  9. 论文阅读笔记:【MDNet】

    [MDNET]: H Nam, B Han. Learning multi-domain convolutional neural networks for visual tracking[C]. / ...

  10. Delphi 7升级到XE2的字符串问题

    原来的Delphi中有两种字符串:AnsiString和WideString.默认的string即AnsiString.而在Delphi 2009中,新增加了一种UnicodeString.为什么不沿 ...