• ABAP搜索帮助举例


    例1

      REPORT  ZTEST_SAM_SEARCH_HELP.
    data:begin of ithp_pline occurs 0,
                WERKS type lips-WERKS,
                LGORT type lips-LGORT,
                end of ithp_pline.
    parameters: t_WERKS type lips-WERKS,
                t_LGORT type lips-LGORT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR t_LGORT.
      clear ithp_pline.
      select distinct WERKS LGORT
        into corresponding fields of table ithp_pline
         from lips where WERKS = t_WERKS.
        call function 'F4IF_INT_TABLE_VALUE_REQUEST' "调用函数
         exporting
           retfield    = 'LGORT'
           dynpprog    = sy-repid
          dynpnr      = sy-dynnr
           dynprofield = 'T_LGORT'
           value_org   = 'S'
         tables
          value_tab   = ithp_pline.

    例2

      REPORT zgffi_002.
    TABLES: reguh,bsak,ztfi_paymethod.
    "变量定义
    DATA: ld_filename TYPE string,"文件名变量
          ld_path TYPE string,
          ld_fullpath TYPE string,
          ld_result TYPE i,
          gd_file TYPE c.
    DATA:    BEGIN OF tlaufk OCCURS 1."F4帮助变量
            INCLUDE STRUCTURE ilaufk.
    DATA:    END OF tlaufk.
    DATA: gt_ZSREGUH01  TYPE TABLE OF zsreguh01,"主数据内表
          wt_reguh TYPE zsreguh01,
          gt_bsak  TYPE TABLE OF  bsak,"发票数据内表
          wt_bsak TYPE bsak.
    TYPE-POOLS: vrm.
    DATA: it_val1 TYPE vrm_values,"下拉框变量
          w_line LIKE LINE OF it_val1.
    "选择屏幕
    PARAMETERS: p_laufd TYPE reguh-laufd OBLIGATORY,"運行日期
                p_laufi TYPE reguh-laufi OBLIGATORY,"標識
                p_datum TYPE sy-datum OBLIGATORY,"付款日期
                p_fpath TYPE rlgrap-filename OBLIGATORY."文件名
    PARAMETERS: p_bank LIKE ztfi_paymethod-zpaymethod AS LISTBOX VISIBLE LENGTH 8  OBLIGATORY."HSBC/STS
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fpath.
      CALL METHOD cl_gui_frontend_services=>file_save_dialog
        EXPORTING
          default_extension = 'csv'
          default_file_name = 'accountsdata.csv'
          initial_directory = 'c:/temp/'
        CHANGING
          filename          = ld_filename
          path              = ld_path
          fullpath          = ld_fullpath
          user_action       = ld_result.
      p_fpath  = ld_fullpath.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_laufd.
      REFRESH tlaufk.
      tlaufk-laufk = space.
      tlaufk-sign  = 'I'.
      APPEND tlaufk.
      CALL FUNCTION 'F4_ZAHLLAUF'
        EXPORTING
          f1typ = 'D'
          f2nme = 'P_LAUFI'
        IMPORTING
          laufd = p_laufd
          laufi = p_laufi
        TABLES
          laufk = tlaufk.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_laufi.
      REFRESH tlaufk.
      tlaufk-laufk = space.
      tlaufk-sign  = 'I'.
      APPEND tlaufk.
      CALL FUNCTION 'F4_ZAHLLAUF'
        EXPORTING
          f1typ = 'I'
          f2nme = 'P_LAUFD'
        IMPORTING
          laufd = p_laufd
          laufi = p_laufi
        TABLES
          laufk = tlaufk.
    "对选择屏幕的数据进行检查
    AT SELECTION-SCREEN.
      IF p_datum <= sy-datum.
        MESSAGE 'date error' TYPE 'E'.
      ENDIF.
      "初始化程序
    INITIALIZATION.
      CLEAR w_line.
      REFRESH it_val1[].
      w_line-key = 'STS'.
      w_line-text = '渣打银行'.
      APPEND w_line TO it_val1.
      p_bank = w_line-key.
      w_line-key = 'HSBC'.
      w_line-text = '汇丰银行'.
      APPEND w_line TO it_val1.
      CALL FUNCTION 'VRM_SET_VALUES'
        EXPORTING
          id                    = 'p_bank'
          values                = it_val1
    *   EXCEPTIONS
    *     ID_ILLEGAL_NAME       = 1
    *     OTHERS                = 2
                .
      IF sy-subrc <> 0.
    * Implement suitable error handling here
      ENDIF.

    例3

    MODULE search_so INPUT.
    CLEAR ITAB_SO_INFO.
    * DATA: BEGIN OF ITAB_SO_TIT OCCURS 0,
    * PATTERN(10) TYPE C, "花样编号
    * COMB(10) TYPE C, "颜色组合
    * END OF ITAB_SO_TIT.
    * field_value-fieldname = 'Pattern'.
    * APPEND field_value to dynpro_values.
    * field_value-fieldname = 'Comb'.
    * APPEND field_value to dynpro_values.
    SELECT VBELN MATNR MATKL
    FROM VBAP
    INTO TABLE ITAB_SO_INFO .
    IF SY-SUBRC <> 0.
    * Implement suitable error handling here
    ENDIF.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
    "ddic_structure = 'JBIZKARTLIST'
    retfield = 'PATTERN'
    dynprofield = 'MATNR' "字段2
    dynpprog = sy-repid
    dynpnr = sy-dynnr
    value_org = 'S'
    callback_program = sy-repid
    callback_form = 'F_SOINFO_FORM'
    TABLES
    value_tab = ITAB_SO_INFO
    return_tab = return_tab
    "DYNPFLD_MAPPING = dynpro_values
    EXCEPTIONS
    parameter_error = 1
    no_values_found = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    ENDMODULE.
    FORM f_soinfo_form TABLES record_tab STRUCTURE seahlpres
    CHANGING shlp TYPE shlp_descr
    callcontrol LIKE ddshf4ctrl.
    DATA: interface LIKE LINE OF shlp-interface.
    READ TABLE shlp-interface INTO interface INDEX 1.
    interface-shlpfield+4(1) = '2'."字段2 interface-valfield = 'ITAB_HDR-MATNR'.
    APPEND interface TO shlp-interface.
    interface-shlpfield+4(1) = '3'."字段3
    interface-valfield = 'ITAB_HDR-NAME'.
    APPEND interface TO shlp-interface.
    ENDFORM.

    当选择屏幕上的一个字段所参考的数据元素没有建立搜索帮助时,可以手工建立一个:
      1、在se11创建一个搜索帮助ZAUTEST,需要输入:
      (1)描述;
      (2)选择方法:即搜索帮助显示字段所在的透明表;
      (3)搜索帮助参数:即搜索帮助要显示的字段;
      (4)IMP:输入字段,勾上即表示显示该字段;
      (5)EXP:输出字段,勾上即表示该字段是搜索帮助需要的输入字段;
            (6)Lpos:搜索帮助下半部分字段排序;Spos:搜索帮助上半部分字段排序。
      如下图:

    ABAP 搜索帮助 - 花刺 - 我的博客

    在Dialog屏幕中给输入字段建立搜索帮助,有以下三种情况:
    一:直接使用系统已有的搜索帮助,对于系统已存在搜索帮助的输入字段可直接使用:在屏幕格式器里双击输入字段框,在其“属性”栏的“搜索帮助”框内填入该字段的搜索帮助名称。如物料“matnr”的搜索帮助名称为“MAT1”。注意:MAT1一定要大写,对于所有在屏幕输入的字符,不管以任何形式输入都要大写,否则系统是不认识的,就如在代码里引号内的字符串要大写才正确一样。

    二:自建搜索帮助,其过程如下:
    1、在dialog屏幕的逻辑流里在user_command后定义module,如下:
    process before output.
    ...
    process after input.
    module user_command_0100.
    process on value-request. "输入字段的响应
    field t_pline module f4_help_for_pline. "“t_plnnr”是输入字段的“name”,“f4_help_for_pline”是module名,自己随便起吧
    2、双击“f4_help_for_pline”创建该module,这时进入程序代码编辑,module如下:
    module f4_help_for_pline input.
      call function 'F4IF_INT_TABLE_VALUE_REQUEST' "调用函数
        exporting
          retfield    = 'PLINE'  "搜索帮助内表要输出的的帮助字段名,注:要大写
          dynpprog    = sy-repid
          dynpnr      = sy-dynnr
    *      dynprofield = ''
          value_org   = 'S'
        tables
          value_tab   = ithp_pline. "存储搜索帮助内容的内表
    endmodule.                 " f4_help_for_pline  INPUT
    注:“retfield”的内表输出字段的名字要和输入字段保持一致,并最好和透明表的字段名一致,否则弹出的搜索帮助会显示不了字段名。
    3、在屏幕输出前或在上一屏幕进入本屏幕的动作发生后,取得搜索帮助的内容,如下:
        clear ithp_pline[].
        select pline pltxt
         into corresponding fields of table ithp_pline
         from afpo
         where dwerk = t_werks
         and matnr = t_matnr.
    内表ithp_pline有两个字段pline、pltxt即是搜索帮助将显示的两个列,其中ithp_pline是输入字段。

    三:联动搜索帮助的建立:有两个输入字段要建立搜索帮助,并且这两个字段是相互关联的,选择一个字段的输入值同时也选择了另一个字段的值,比如顺序与工序的关系必需是相互的。
    1、定义
    data:field_tab_vgn type dfies occurs 0,
         dynpfld_mapping_vgn type dselc occurs 0,
         wa_map_vgn type dselc,
         field_tab_pln type dfies occurs 0,
         dynpfld_mapping_pln type dselc occurs 0,
         wa_map_pln type dselc.
    2、在dialog屏幕的逻辑流里在user_command后定义module,如下:
    process before output.
    ...
    process after input.
    module user_command_0100.
    process on value-request.
    field:it_bg-plnfl module f4_help_for_vornr, "顺序、工序的联动搜索
          it_bg-vornr module f4_help_for_vornr.
    3、双击“f4_help_for_vornr”创建该module,这时进入程序代码编辑,module如下:
    module f4_help_for_vornr input.
      call function 'F4IF_INT_TABLE_VALUE_REQUEST'
        exporting
          retfield    = 'PLNFL'  "搜索帮助要输出的的帮助字段名
          dynpprog    = sy-repid
          dynpnr      = sy-dynnr
          dynprofield = 'T_PLNFL'   "“T_PLNFL”为输入字段,在此用T_VORNR也可以但上面的retfield名也要改
          value_org   = 'S'
        tables
          field_tab   = field_tab_vgn  "联动关系表
          dynpfld_mapping = dynpfld_mapping_vgn "存储联动内容的内表
          value_tab   = ithp_vgn. "存储搜索帮助的内表
    endmodule.                 " f4_help_for_vornr  INPUT
    4、在屏幕输出前或在上一屏幕进入本屏幕的动作发生后,取得搜索帮助的内容,如下:
       clear ithp_vgn[].
       select plnfl vornr ltxa1
        into corresponding fields of table ithp_vgn
        from afko
        inner join afvc on afvc~aufpl = afko~aufpl
        where afko~aufnr = t_aufnr.
      "调用联动函数
      call function 'ZSET_F4_FIELD_FROM_VALUE_TAB'
        tables
          value_tab = ithp_vgn       "存储搜索帮助的内表
          field_tab = field_tab_vgn. "联动关系表
      clear dynpfld_mapping_vgn[].
      wa_map_vgn-fldname = 'PLNFL'.  "帮助内表字段
      wa_map_vgn-dyfldname = 'T_PLNFL'. "输入字段
      append wa_map_vgn to dynpfld_mapping_vgn.
      wa_map_vgn-fldname = 'VORNR'.
      wa_map_vgn-dyfldname = 'T_VORNR'.
      append wa_map_vgn to dynpfld_mapping_vgn.

                                                                                                                                                             转载请注明来自“共产主义”!

  • 相关阅读:
    创建数据库表
    Pod Preset玩转K8S容器时区自动配置
    CentOS7 CPU 降频问题
    Kafka Offset Monitor页面显示空白
    zabbix监控kafka消费
    istio-禁用/允许sidecar设置
    Istio 1.1部署实践
    etcd磁盘清理步骤
    Kubernetes 集群中使用 Helm 搭建 Spinnaker
    利用Spinnaker创建持续交付流水线
  • 原文地址:https://www.cnblogs.com/communist/p/7124661.html
Copyright © 2020-2023  润新知