PARAMETERS: p_werks LIKE t001l-werks ,
            p_lgort LIKE t001l-lgort .
SELECTION-SCREEN SKIP.
PARAMETERS: p_kunnr LIKE kna1-kunnr  .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_lgort.
  PERFORM get_lgort CHANGING p_lgort.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_kunnr.
  PERFORM kunnr_f4help CHANGING p_kunnr.
*&---------------------------------------------------------------------*
*&      Form  get_event_for_user
*&---------------------------------------------------------------------*
FORM get_lgort  CHANGING l_lgort LIKE p_lgort.
  DATA: wa_shlp TYPE shlp_descr,
        wa_selopt TYPE ddshselopt,
        it_return_values TYPE STANDARD TABLE OF ddshretval,
        wa_return_values TYPE ddshretval,
        it_dynpfields TYPE STANDARD TABLE OF dynpread,
        wa_dynpfields TYPE dynpread.

wa_dynpfields-fieldname = 'P_WERKS'.
  APPEND wa_dynpfields TO it_dynpfields.

**取屏幕字段的已有值
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname     = sy-repid
      dynumb     = sy-dynnr
    TABLES
      dynpfields = it_dynpfields.

**根据表名和字段名确定使用哪个搜索帮助
  CALL FUNCTION 'F4IF_DETERMINE_SEARCHHELP'
    EXPORTING
      tabname   = 'T001L'
      fieldname = 'LGORT'
    IMPORTING
      shlp      = wa_shlp.

READ TABLE it_dynpfields WITH KEY fieldname = 'P_WERKS' INTO wa_dynpfields.
  IF NOT wa_dynpfields-fieldvalue IS INITIAL.
    wa_selopt-sign      = 'I'.
    wa_selopt-option    = 'CP'.
    wa_selopt-low       = wa_dynpfields-fieldvalue.
    wa_selopt-shlpfield = 'WERKS'.
    wa_selopt-shlpname  = wa_shlp-shlpname.
    APPEND wa_selopt TO wa_shlp-selopt.
  ENDIF.

**根据条件打开指定的搜索帮助
  CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
    EXPORTING
      shlp          = wa_shlp
    TABLES
      return_values = it_return_values.

READ TABLE it_return_values WITH KEY fieldname = 'LGORT' INTO wa_return_values.
  IF sy-subrc IS INITIAL.
    l_lgort = wa_return_values-fieldval.
    READ TABLE it_return_values WITH KEY fieldname = 'WERKS' INTO wa_return_values.
    IF sy-subrc IS INITIAL AND wa_return_values-fieldval NE wa_dynpfields-fieldvalue.
      REFRESH it_dynpfields.
      wa_dynpfields-fieldvalue = wa_return_values-fieldval.
      APPEND wa_dynpfields TO it_dynpfields.
**更新屏幕字段
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          dyname     = sy-repid
          dynumb     = sy-dynnr
        TABLES
          dynpfields = it_dynpfields.
    ENDIF.
  ENDIF.
ENDFORM.                    " get_event_for_user

*&---------------------------------------------------------------------*
*&      Form  kunnr_f4help
*&---------------------------------------------------------------------*
FORM kunnr_f4help CHANGING l_kunnr .
  DATA: wa_shlp         TYPE shlp_descr,
        wa_shlp_desct   TYPE shlp_desct ,
        fcode           LIKE sy-ucomm ,
        wa_interface    LIKE LINE OF wa_shlp-interface,
        wa_fielddescr   LIKE LINE OF wa_shlp-fielddescr,
        wa_fieldprop    LIKE LINE OF wa_shlp-fieldprop,
        wa_selopt       LIKE LINE OF wa_shlp-selopt,
        wa_retval       TYPE ddshretval,
        it_retval       TYPE STANDARD TABLE OF ddshretval.
  DATA: subrc LIKE sy-subrc .

**根据搜索帮助取得wa_shlp
  CALL FUNCTION 'F4IF_GET_SHLP_DESCR' EXPORTING
      shlpname = 'VMVAA'  "search help VMVAA
      shlptype = 'SH'
    IMPORTING
      shlp     = wa_shlp.

*定义 VKORG 为只读字段
  LOOP AT wa_shlp-interface INTO wa_interface WHERE shlpfield = 'VKORG'.
    wa_interface-value = '3020'.
    wa_interface-dispfield = 'X'.
    MODIFY wa_shlp-interface FROM wa_interface INDEX syst-tabix.
  ENDLOOP.
  LOOP AT wa_shlp-fieldprop INTO wa_fieldprop WHERE fieldname = 'VKORG'.
    wa_fieldprop-shlpinput = 'X'.
    wa_fieldprop-shlpseldis = 'X'.
    MODIFY wa_shlp-fieldprop FROM wa_fieldprop INDEX syst-tabix.
  ENDLOOP.
*定义输出字段
  READ TABLE wa_shlp-interface INTO wa_interface WITH KEY shlpfield = 'VBELN'.
  IF sy-subrc = 0.
    wa_interface-valfield = 'X'.
*    l_shlp_interface-value = tree_id.
    MODIFY wa_shlp-interface FROM wa_interface INDEX sy-tabix.
  ELSE.
    MESSAGE e017(bmen) RAISING internal_error.
  ENDIF.
* 选择界面初始值
  wa_selopt-shlpname  = wa_shlp-shlpname.
  wa_selopt-shlpfield = 'KUNNR'.
  wa_selopt-sign      = 'I'.
  wa_selopt-option    = 'EQ'.
  wa_selopt-low       = '4000'.
  APPEND wa_selopt TO wa_shlp-selopt.

APPEND wa_shlp TO wa_shlp_desct.
  APPEND wa_shlp TO wa_shlp_desct.
  CLEAR wa_shlp.

CALL FUNCTION 'F4IF_CHOOSE_SEARCHHELP'
    EXPORTING
      shlp_tab = wa_shlp_desct
    IMPORTING
      shlp     = wa_shlp
      fcode    = fcode.
  CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
    EXPORTING
      shlp          = wa_shlp
    IMPORTING
      rc            = subrc
    TABLES
      return_values = it_retval.
  LOOP AT it_retval INTO wa_retval.
    p_kunnr = wa_retval-fieldval.
  ENDLOOP.
ENDFORM.                    " CALL_F4HELP

ABAP F4使用总结!!的更多相关文章

  1. ABAP f4帮助输入多个值

    *---------------------------------------------------------------------- * INITIALIZATION *---------- ...

  2. 【ABAP系列】SAP ABAP ALV里日期类型的F4帮助

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP ALV里日期类 ...

  3. 【ABAP系列】SAP F4搜索帮助的高级版

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP F4搜索帮助的高级版   ...

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

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

  5. ABAP ALV F4帮助

    ALV F4帮助, 选值保存到ALV. TYPE-POOLS:slis. CLASS lcl_event_receiver DEFINITION DEFERRED. DATA: gt_fcat TYP ...

  6. ABAP 实现内表自定义的F4功能

    “实现多列内容的F4功能 REPORT Z_TAB_TEST.   TYPES: shlp_descr TYPE shlp_descr .   DATA: BEGIN OF itab OCCURS 0 ...

  7. ABAP开发顾问必备:SAP ABAP开发技术总结

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

  8. ABAP常用函数集锦

    函数名 描述 SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VI ...

  9. [SAP ABAP开发技术总结]消息处理Messages

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

随机推荐

  1. Mybatis Laz-Load功能实现代码赏析(原创)

    对于Mybatis 拥有的Lazy Load(有中文翻译成延迟加载)功能,应该很同学都有听说过,今天主要与大家一起来解读一下Mybatis在Lazy Load功能的实现的代码.Lazy Load实现的 ...

  2. SPRING中的线程池ThreadPoolTaskExecutor

    一.初始化 1,直接调用 ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); //线程池所使用的缓冲队列 p ...

  3. java中的死锁现象

    死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. java 死锁产生的四个必要条件: 1.互斥使用,即当资源被一个线 ...

  4. SpringBoot外部配置

    Spring Boot的配置文件 Spring Boot使用一个全局的配置文件application.properties或者application.yml(yaml语言的配置文件),放置在src/m ...

  5. python读取配置文件 ConfigParser

    Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件. 配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 opt ...

  6. bytes,packet区别 字节数据包

    “包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”.字节(Byte): 字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 字节是计算机信息技术用于计量存储容量和 ...

  7. Dataguard ORA-19909 ORA-01110

    在创建ORACLE 10G Dataguard时,报错: Datafile 1 (ckpscn 24967685451) is orphaned on incarnation#=6 MRP0: Bac ...

  8. scrapy(1)安装

    用的是python3.6 pip install -i https://pypi.douban.com/simple/ scrapy scrapy startproject Article scrap ...

  9. tomcat跑多个项目和不同端口访问项目

    最近笔者在工作中需要同时运行多个项目,且有时需要不同端口访问项目:在此过程中,笔者觉得有必要将注意事项记录一下,以备后边查阅或广大读者借鉴. 工作环境是win7,64位,IDE为eclipse,浏览器 ...

  10. DAY2-python数据类型、字符编码、文件处理

    阅读目录 一.引子 二.数字 三.字符串 四.列表 五.元祖 六.字典 七.集合 八.数据类型总结 九.运算符 十.字符编码 十一.文件处理 一.引子 1 什么是数据? x=10,10是我们要存储的数 ...