美文网首页
搜索帮助

搜索帮助

作者: abapCiCi | 来源:发表于2020-06-16 21:58 被阅读0次
    1. 自建搜索帮助
    SELECT  *
      INTO CORRESPONDING FIELDS OF TABLE gt_ZDWSCUS
      FROM ZDWSCUS_14062.
    
    call function 'F4IF_INT_TABLE_VALUE_REQUEST'
      exporting
         retfield        = 'ZNAME1'   "表格要显示的字段
         dynpprog        = sy-repid        "返回的程序
         dynpnr          = sy-dynnr        "屏幕
         dynprofield     = 'ZNAME1'       "往页面回填值的地方
         value_org       = 'S'             "显示类型
       tables
         value_tab       = GT_ZDWSCUS    "传进去的表格 帮助的内表
      EXCEPTIONS
          parameter_error        = 1
          no_values_found        = 2
          OTHERS                 = 3.          .
    

    根据不同的要求,可以定义GT_ZDWSCUS里值(可查询可传值)
    给屏幕建立搜索帮助
    以下代码在选择屏幕的逻辑流里面写
    FIELD zname1 MODULE ztable_user_zname1 ON REQUEST.
    "触发事件SEARCH HELP
    MODULE user_command_9000."系统自定义的触发事件
    PROCESS ON VALUE-REQUEST.
    FIELD zname1 MODULE user_command_zname1."双击生成主函数写搜索帮助的程序
    优点:操作性较强,处理方便
    缺点:应用范围小

    1. SE11建立搜索帮助


      image.png
      image.png
      image.png

    带过滤的搜索帮助
    Tcode:se11创建视图


    image.png
    image.png

    此处的选择条件相当于select后面的where条件,这个视图中的数据都是满足条件的视图。
    Tcode:se11创建搜索帮助


    image.png
    出口增强搜索帮助
    有时根据业务要求取不同表里的不同数据,但从se11筛选是做不到的,就要写出口增强。
    首先写一个函数组,定义一个函数模块,如下:
    image.png
    image.png

    定义个内表,对内表的数据进行处理(也就是说你要的数据存放在内表中)
    然后调函数 'F4UT_RESULTS_MAP'
    " 该函数的作用是将内表 lt_tab 中的数据转换成 record_tab ,即将某内表中的数据显示在命中清单中
    " 结果展示
    CALL FUNCTION 'F4UT_RESULTS_MAP'
    TABLES
    SHLP_TAB = SHLP_TAB
    RECORD_TAB = RECORD_TAB
    SOURCE_TAB = GT_TAB "自定义内表
    CHANGING
    SHLP = SHLP
    CALLCONTROL = CALLCONTROL
    EXCEPTIONS
    ILLEGAL_STRUCTURE = 1
    OTHERS = 2.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    RETURN.
    ELSE.
    CALLCONTROL-STEP = 'DISP'.
    ENDIF.
    Tcode:se11


    image.png
    1. 搜索帮助联动
      一般做搜索帮助我们需要回车才能带出和搜索帮助相关的值,例:
      点击物料的搜索帮助回车带出物料描述,现在帮你省掉敲回车的动作,物料和描述同步粗来啦!
      首先在PAI里写:
    PROCESS ON VALUE-REQUEST.
       FIELD ZPRPEOPL MODULE USER_NAME_F4-1."问题提出人
    
    MODULE USER_NAME_F4-1 INPUT.
    
    DATA: RETURN_TAB LIKE DDSHRETVAL OCCURS 1 WITH HEADER LINE,
          FIELD_TAB LIKE DFIES OCCURS 1 WITH HEADER LINE,
          DYNPFIELDS LIKE DYNPREAD OCCURS 3 WITH HEADER LINE.
    *取开发人员(名字)
    
      SELECT
          USERID       "用户名字ID
          USERNAME     "用户名ID描述(名字)
        INTO CORRESPONDING FIELDS OF TABLE GT_UNAME
        FROM ZVXXDEV_UNAME
        .
      SORT GT_UNAME BY USERID USERNAME.
      DELETE ADJACENT DUPLICATES FROM  GT_UNAME.
    
    *&----调用展示函数
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *     DDIC_STRUCTURE         = ' '
          RETFIELD    = 'USERID'    "表格要显示的字段
    *     PVALKEY     = ' '
          DYNPPROG    = SY-REPID        "返回才程序
          DYNPNR      = SY-DYNNR        "屏幕
          DYNPROFIELD = 'ZPRPEOPL'       "往页面回填值的地方
    *     STEPL       = 0
    *     WINDOW_TITLE           =
    *     VALUE       = ' '
          VALUE_ORG    = 'S'
    *     MULTIPLE_CHOICE        = ' '
    *     DISPLAY     = ' '
         CALLBACK_PROGRAM       = SY-REPID "当前程序
        CALLBACK_FORM          = 'BO_CALLBACK_FORM' "回调函数
    *     CALLBACK_METHOD        =
    *     MARK_TAB    =
    * IMPORTING
    *     USER_RESET  =
        TABLES
          VALUE_TAB   = GT_UNAME
         FIELD_TAB   = FIELD_TAB
         RETURN_TAB  = RETURN_TAB
    **     DYNPFLD_MAPPING        =
     EXCEPTIONS
         PARAMETER_ERROR        = 1
         NO_VALUES_FOUND        = 2
         OTHERS      = 3
        .
      IF SY-SUBRC <> 0.
    * Implement suitable error handling here
      ENDIF.
    
    
    ENDMODULE.
    
    
    
    
    
    FORM BO_CALLBACK_FORM  TABLES   RECORD_TAB STRUCTURE SEAHLPRES
                                     CHANGING SHLP TYPE SHLP_DESCR_T
                                     CALLCONTROL LIKE DDSHF4CTRL.
                    
    DATA: INTERFACE LIKE LINE OF SHLP-INTERFACE,
      FP LIKE LINE OF SHLP-FIELDPROP.
    READ TABLE SHLP-INTERFACE INTO INTERFACE INDEX 1.
     INTERFACE-SHLPFIELD+4(1) = '2'.
    INTERFACE-VALFIELD = 'ZPRPEOPL2'.
    APPEND INTERFACE TO SHLP-INTERFACE.
    
    ENDFORM.
    
    

    相关文章

      网友评论

          本文标题:搜索帮助

          本文链接:https://www.haomeiwen.com/subject/awhksqtx.html