ABAP AT SELECTION-SCREEN ON VALUE-REQUEST / PROGRESS ON VALUE-REQUEST

本文介绍ABAP中动态输入处理及屏幕帮助的实现方法,包括多值填入功能、单值填入功能及屏幕搜索帮助的使用。通过具体代码示例展示了如何调用系统函数进行值请求及值读取,并利用屏幕帮助功能增强用户界面的友好性和易用性。

1.)  F4IF_INT_TABLE_VALUE_REQUEST  多值填入

 

 

REPORT Z_BARRY_TEST.
 
TYPES: shlp_descr_t TYPE shlp_descr .
DATA: BEGIN OF itab OCCURS 0 ,
        matnr LIKE mara-matnr ,
        maktx LIKE makt-maktx ,
      END OF itab.
DATA: return_tab TYPE ddshretval OCCURS 0 .
PARAMETERS: p_matnr LIKE itab-matnr ,
            p_maktx LIKE itab-maktx .

INITIALIZATION.
  SELECT matnr maktx INTO TABLE itab FROM makt UP TO 20 ROWS
    WHERE spras = '1'.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr .
  PERFORM f4.
 
*&---------------------------------------------------------------------*
*&      Form  f4
*&---------------------------------------------------------------------*
FORM f4.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield         = 'MATNR'
      dynpprog         = sy-repid
      dynpnr           = sy-dynnr
      dynprofield      = 'P_MATNR'
      value_org        = 'S'
      callback_program = sy-repid
      callback_form    = 'CB_FORM'
    TABLES
      value_tab        = itab
      return_tab       = return_tab
    EXCEPTIONS
      parameter_error  = 1
      no_values_found  = 2
      OTHERS           = 3.
ENDFORM.                    "f4
 
*&---------------------------------------------------------------------*
*&      Form  cb_form
*&---------------------------------------------------------------------*
FORM cb_form TABLES record_tab STRUCTURE seahlpres
              CHANGING shlp TYPE shlp_descr_t
                       callcontrol LIKE ddshf4ctrl.
  DATA: interface LIKE LINE OF shlp-interface.
  READ TABLE shlp-interface INTO interface INDEX 1.
  interface-shlpfield+4(1) = '2'.
  interface-valfield = 'P_MAKTX'.
  APPEND interface TO shlp-interface.
ENDFORM.                    "bo_callback_form

 

 

 

2.)  DYNP_VALUES_READ   单值填入

 

  DATA : lt_dynpread TYPE STANDARD TABLE OF dynpread .
  DATA : lw_dynpread TYPE dynpread .

   lw_dynpread-fieldname = 'SO_CNTR-LOW' .
  APPEND lw_dynpread TO lt_dynpread .

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
       dyname                = sy-repid
       dynumb                = sy-dynnr
    TABLES
       dynpfields            = lt_dynpread
    EXCEPTIONS
       invalid_abapworkarea = 1
       invalid_dynprofield   = 2
       invalid_dynproname    = 3
       invalid_dynpronummer = 4
       invalid_request       = 5
       no_fielddescription   = 6
       invalid_parameter     = 7
       undefind_error        = 8
       double_conversion     = 9
       stepl_not_found       = 10
      OTHERS                 = 11 .
  IF sy-subrc <> 0 .
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF .

  CLEAR lw_dynpread .

  LOOP AT lt_dynpread INTO lw_dynpread .

    IF lw_dynpread-fieldname EQ 'SO_CNTR-LOW' .
      IF lw_dynpread-fieldvalue NE space OR
          lw_dynpread-fieldvalue IS NOT INITIAL .
          so_cntr-low = lw_dynpread-fieldvalue .
          so_cntr-sign = 'I' .
          so_cntr-option = 'EQ' .
        APPEND so_cntr.
      ENDIF .

    ENDIF .

  ENDLOOP .

 

 

3)  Screen Srearch Help

 

 

FORM HELP_CHECK.
*-- Set up fields to retrieve data

  ltab_fields-tabname    = 'ZFI_PMNTADV'.
  ltab_fields-fieldname  = 'CHECT'.
  ltab_fields-selectflag = 'X'.
  APPEND ltab_fields.

  ltab_fields-tabname    = 'ZFI_PMNTADV'.
  ltab_fields-fieldname  = 'PMNT_ADV'.
  ltab_fields-selectflag = 'X'.
  APPEND ltab_fields.

  SORT ltab_fields.
  DELETE ADJACENT DUPLICATES FROM ltab_fields.

*-- Fill values
  SELECT chect
  INTO TABLE ltab_values
         FROM zfi_pmntadv
            WHERE pmnt_adv NE space.
  SORT ltab_values.
  DELETE ADJACENT DUPLICATES FROM ltab_values.

CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'
     EXPORTING
          fieldname                 = 'chect'
          tabname                   = 'zfi_pmntadv'
          title_in_values_list      = 'Select a value'
     IMPORTING
          select_value              = so_chect
     TABLES
          fields                    = ltab_fields
          valuetab                  = ltab_values
     EXCEPTIONS
          field_not_in_ddic         = 01
          more_then_one_selectfield = 02
          no_selectfield            = 03.
 

ENDFORM.                    "fiscal_year

*&---------------------------------------------------------------------* *& Report ZPP1000F0024 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT zpp1000f0024. *--------------------------------------------------------------------*定义 TABLES: zppt004,sscrfields,proj. TYPES:BEGIN OF ts_data, werks TYPE zppt004-werks, "工厂 psphi TYPE zppt004-psphi, "项目号 matnr TYPE zppt004-matnr, "物料编号 rsnum TYPE zppt004-rsnum, "预留/相关需求的编号 rspos TYPE zppt004-rspos, "预留 / 相关需求的项目编号 zclxh TYPE zppt004-zclxh, "处理序号 zcfhh TYPE zppt004-zcfhh, "拆分行号 post1 TYPE proj-post1, "项目描述 astnr TYPE proj-astnr, "事业部代码 astna TYPE proj-astna, "事业部名称 zxqrq TYPE zppt004-zxqrq, "需求日期 wlylje TYPE bwert, "未领预留金额 fpkcje TYPE bwert, "分配库存金额 fpjskcje TYPE bwert, "分配寄售库存金额 fpfjskcje TYPE bwert, "分配寄售库存金额 zzmng TYPE zppt004-zzmng, "待发数量 peris TYPE p DECIMALS 4, "价格 zgysl TYPE zppt004-zgysl, "供应分配数量 zgylx TYPE zppt004-zgylx, "供应类型 zgydh TYPE zppt004-zgydh, "供应单号 pspid TYPE proj-pspid, "项目定义-24 pspel TYPE zppt004-pspel, "wbs box TYPE c, END OF ts_data. DATA:gt_data TYPE STANDARD TABLE OF ts_data. DATA:gt_fcat TYPE lvc_t_fcat. DATA:gs_layo TYPE lvc_s_layo. TYPES:BEGIN OF ts_coll, werks TYPE zppt004-werks, "工厂 * psphi TYPE zppt004-psphi, "项目号 pspid TYPE proj-pspid, "项目定义-24 post1 TYPE proj-post1, "项目描述 astnr TYPE proj-astnr, "事业部代码 astna TYPE proj-astna, "事业部名称 zxqrq TYPE zppt004-zxqrq, "需求日期 wlylje TYPE bwert, "未领预留金额 fpkcje TYPE bwert, "分配库存金额 fpjskcje TYPE bwert, "分配寄售库存金额 fpfjskcje TYPE bwert, "分配非寄售库存金额 END OF ts_coll. DATA:gt_coll TYPE STANDARD TABLE OF ts_coll, gs_coll TYPE ts_coll, gt_coll_01 TYPE STANDARD TABLE OF ts_coll, gs_coll_01 TYPE ts_coll. DATA:lv_line_psphi TYPE sy-tabix VALUE '1'. *--------------------------------------------------------------------*seletion SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: *s_psphi FOR zppt004-psphi,"项目号 s_pspid FOR proj-pspid, "项目号 s_astnr FOR proj-astnr, "事业部代码 s_werks FOR proj-werks OBLIGATORY. "工厂 SELECTION-SCREEN END OF BLOCK b1. *AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_psphi-low. * PERFORM frm_help_psphi USING s_psphi-low. * *AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_psphi-high. * PERFORM frm_help_psphi USING s_psphi-high. START-OF-SELECTION. *--------------------------------------------------------------------*获取数据处理 SELECT a~werks psphi zxqrq zzmng zgysl matnr zgylx pspel rsnum rspos b~post1 astnr astna INTO CORRESPONDING FIELDS OF TABLE gt_data FROM zppt004 AS a INNER JOIN proj AS b ON pspnr = a~psphi WHERE b~pspid IN s_pspid * psphi IN s_psphi AND zgydh = '' AND astnr IN s_astnr AND a~werks IN s_werks AND a~psphi NE '' %_HINTS ORACLE 'INDEX(ZPPT004"Z1")'. IF gt_data[] IS INITIAL. MESSAGE '没有符合条件的数据' TYPE 'S' DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. ENDIF. SORT gt_data BY werks psphi. DATA(gt_data_02) = gt_data. DELETE ADJACENT DUPLICATES FROM gt_data_02 COMPARING psphi. SELECT bwkey AS werks,matnr,vprsv,stprs,verpr,peinh INTO TABLE @DATA(gt_peris) FROM mbew FOR ALL ENTRIES IN @gt_data WHERE bwkey = @gt_data-werks AND matnr = @gt_data-matnr. SORT gt_peris BY werks matnr. *--项目库存价格 SELECT bwkey AS werks,matnr,vprsv,stprs,verpr,peinh,pspnr AS pspel INTO TABLE @DATA(gt_peris_qbew) FROM qbew FOR ALL ENTRIES IN @gt_data WHERE bwkey = @gt_data-werks AND matnr = @gt_data-matnr. * AND pspnr = @gt_data-pspel. SORT gt_peris_qbew BY werks matnr pspel. LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<fs_data>). CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT' EXPORTING input = <fs_data>-psphi IMPORTING output = <fs_data>-pspid " PSELT = . AT END OF psphi. cl_progress_indicator=>progress_indicate( i_text = |正在处理 { lv_line_psphi }/{ lines( gt_data_02 ) }:{ <fs_data>-pspid }| i_output_immediately = abap_true i_processed = lv_line_psphi i_total = lines( gt_data_02 ) ). lv_line_psphi = lv_line_psphi + 1. ENDAT. READ TABLE gt_peris INTO DATA(ls_peris) WITH KEY werks = <fs_data>-werks matnr = <fs_data>-matnr BINARY SEARCH. IF sy-subrc = 0. CASE ls_peris-vprsv. WHEN 'S'. <fs_data>-peris = ls_peris-stprs / ls_peris-peinh. WHEN 'V'. <fs_data>-peris = ls_peris-verpr / ls_peris-peinh. WHEN OTHERS. ENDCASE. ENDIF. "库存价格获取失败,获取项目库存价格 IF <fs_data>-peris IS INITIAL . READ TABLE gt_peris_qbew INTO DATA(ls_peris_qbew) WITH KEY werks = <fs_data>-werks matnr = <fs_data>-matnr pspel = <fs_data>-pspel BINARY SEARCH. IF sy-subrc = 0. CASE ls_peris_qbew-vprsv. WHEN 'S'. <fs_data>-peris = ls_peris_qbew-stprs / ls_peris_qbew-peinh. WHEN 'V'. <fs_data>-peris = ls_peris_qbew-verpr / ls_peris_qbew-peinh. WHEN OTHERS. ENDCASE. * Add by nabap02 Start{ * 如果有Q移动平均价的取Q移动平均价,没有Q移动平均价取物料移动平均价,如果物料移动平均价也没有的去标准价格 * 此处增加,项目库存价格 wbs 为项目首层时按物料取 ELSE. READ TABLE gt_peris_qbew INTO ls_peris_qbew WITH KEY werks = <fs_data>-werks matnr = <fs_data>-matnr. IF sy-subrc = 0. CASE ls_peris_qbew-vprsv. WHEN 'S'. <fs_data>-peris = ls_peris_qbew-stprs / ls_peris_qbew-peinh. WHEN 'V'. <fs_data>-peris = ls_peris_qbew-verpr / ls_peris_qbew-peinh. WHEN OTHERS. ENDCASE. ENDIF. ENDIF. * }end ENDIF. "未领预留金额 * <fs_data>-wlylje = <fs_data>-zzmng * <fs_data>-peris. "分配寄售库存金额 IF <fs_data>-zgylx = '非限制寄售' . <fs_data>-fpjskcje = <fs_data>-zgysl * <fs_data>-peris. ENDIF. * 分配库存金额 <fs_data>-fpkcje = <fs_data>-zgysl * <fs_data>-peris . "分配非寄售库存金额 <fs_data>-fpfjskcje = <fs_data>-fpkcje - <fs_data>-fpjskcje. gs_coll = CORRESPONDING #( <fs_data> ). COLLECT gs_coll INTO gt_coll. ENDLOOP. SORT gt_data BY rsnum rspos . DELETE ADJACENT DUPLICATES FROM gt_data COMPARING rsnum rspos . LOOP AT gt_data INTO DATA(gs_data). gs_coll_01 = CORRESPONDING #( gs_data ). gs_coll_01-wlylje = gs_data-zzmng * gs_data-peris. COLLECT gs_coll_01 INTO gt_coll_01. ENDLOOP. SORT gt_coll_01 BY werks pspid astnr zxqrq. LOOP AT gt_coll ASSIGNING FIELD-SYMBOL(<f_coll>). READ TABLE gt_coll_01 INTO gs_coll_01 WITH KEY werks = <f_coll>-werks pspid = <f_coll>-pspid astnr = <f_coll>-astnr zxqrq = <f_coll>-zxqrq BINARY SEARCH. IF sy-subrc = 0. <f_coll>-wlylje = gs_coll_01-wlylje. ENDIF. ENDLOOP. *--------------------------------------------------------------------*alv "fcat gt_fcat = VALUE #( ( fieldname = 'WERKS' ref_field = '' ref_table = '' coltext = '工厂' ) ( fieldname = 'PSPID' ref_field = '' ref_table = '' coltext = '项目号' ) ( fieldname = 'POST1' ref_field = '' ref_table = '' coltext = '项目描述' ) ( fieldname = 'ASTNR' ref_field = '' ref_table = '' coltext = '事业部代码' ) ( fieldname = 'ASTNA' ref_field = '' ref_table = '' coltext = '事业部名称' ) ( fieldname = 'ZXQRQ' ref_field = '' ref_table = '' coltext = '需求日期' ) ( fieldname = 'WLYLJE' ref_field = '' ref_table = '' coltext = '未领预留金额' ) ( fieldname = 'FPKCJE' ref_field = '' ref_table = '' coltext = '分配库存金额' ) ( fieldname = 'FPJSKCJE' ref_field = '' ref_table = '' coltext = '分配寄售库存金额') ( fieldname = 'FPFJSKCJE' ref_field = '' ref_table = '' coltext = '分配非寄售库存金额') ). "layo gs_layo = VALUE #( zebra = abap_true sel_mode = 'A' cwidth_opt = 'X' ). "alv CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-repid it_fieldcat_lvc = gt_fcat i_default = abap_true is_layout_lvc = gs_layo i_save = 'A' TABLES t_outtab = gt_coll[] EXCEPTIONS program_error = 1 OTHERS = 2. *&---------------------------------------------------------------------* *& Form FRM_HELP_PSPHI *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_help_psphi USING u_psphi . DATA:lit_ddshretval TYPE TABLE OF ddshretval, lwa_ddshretval TYPE ddshretval. DATA:BEGIN OF lit_psphi OCCURS 0, psphi TYPE zppt004-psphi, post1 TYPE proj-post1, END OF lit_psphi. SELECT psphi post1 FROM zppt004 INTO TABLE lit_psphi ORDER BY psphi. DELETE ADJACENT DUPLICATES FROM lit_psphi. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'PSPHI' dynpprog = sy-cprog dynpnr = sy-dynnr dynprofield = 'S_PSPHI' window_title = '项目号' value_org = 'S' TABLES value_tab = lit_psphi return_tab = lit_ddshretval 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. ENDFORM. 帮我详细解读这段代码
最新发布
08-28
<think>我们正在讨论ABAP选择屏幕事件`AT SELECTION-SCREEN ON VALUE-REQUEST FOR`的作用和原因。 根据引用[2]和引用[4]的内容,这个事件主要用于为选择屏幕上的特定字段提供自定义的搜索帮助(F4帮助)。 原因和用途: 1. 标准搜索帮助不足:当标准数据元素(data element)上附带的搜索帮助不能满足需求时,例如需要根据其他字段的值动态过滤搜索帮助,或者需要自定义搜索帮助的数据源。 2. 完全自定义搜索帮助:用户可以通过编程方式弹出自定义的对话框(如使用函数模块`F4IF_INT_TABLE_VALUE_REQUEST`)来提供搜索帮助。 3. 动态调整搜索帮助:在事件中,我们可以读取选择屏幕上其他字段的值,从而动态决定搜索帮助的内容。 使用方式: - 语法:`AT SELECTION-SCREEN ON VALUE-REQUEST FOR <field>` - 其中`<field>`是选择屏幕上定义的参数(PARAMETER)或选择标准(SELECT-OPTION)的字段。 - 在该事件块中,通常调用一个子程序(使用PERFORM)来提供自定义搜索帮助逻辑,并将用户选择的值返回给该字段。 示例(参考引用[2]): ```abap AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bplan-low. PERFORM frm_f4_bplan CHANGING s_bplan-low. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_bplan-high. PERFORM frm_f4_bplan CHANGING s_bplan-high. FORM frm_f4_bplan CHANGING cv_bplan. " 自定义搜索帮助逻辑,例如弹出对话框让用户选择,然后将选择的值赋给cv_bplan ENDFORM. ``` 注意事项: - 对于选择标准(SELECT-OPTION),有高(high)和低(low)两个字段,所以需要为两个字段分别提供事件处理。 - 在自定义搜索帮助中,通常使用函数模块`F4IF_INT_TABLE_VALUE_REQUEST`来显示一个值列表供用户选择,并将选择的值返回。 动态搜索帮助示例(根据其他字段过滤): 假设我们有两个字段:公司代码(p_bukrs)和会计凭证(p_belnr)。我们希望会计凭证的搜索帮助只列出该公司代码下的凭证。 我们可以这样实现: ```abap PARAMETERS: p_bukrs TYPE bukrs, p_belnr TYPE belnr_d. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr. PERFORM f4_for_belnr USING p_bukrs CHANGING p_belnr. FORM f4_for_belnr USING iv_bukrs TYPE bukrs CHANGING cv_belnr TYPE belnr_d. DATA: lt_values TYPE TABLE OF bsis, " 假设从BSIS表中获取 lt_return TYPE TABLE OF ddshretval. IF iv_bukrs IS INITIAL. MESSAGE '请输入公司代码' TYPE 'S' DISPLAY LIKE 'E'. RETURN. ENDIF. SELECT belnr, gjahr, buzei FROM bsis INTO TABLE lt_values WHERE bukrs = iv_bukrs. " 将内表lt_values中的数据显示为搜索帮助 CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'BELNR' " 返回字段 dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'P_BELNR' value_org = 'S' TABLES value_tab = lt_values return_tab = lt_return EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. " 如果用户选择了值,则更新p_belnr READ TABLE lt_return INTO DATA(ls_return) WITH KEY retfield = 'BELNR'. IF sy-subrc = 0. cv_belnr = ls_return-fieldval. ENDIF. ENDFORM. ``` 总结: 使用`AT SELECTION-SCREEN ON VALUE-REQUEST FOR`事件的主要目的是为了给选择屏幕上的字段提供定制的搜索帮助(F4帮助),以满足特定的业务需求。 相关问题: 1. 如何为选择屏幕上的字段添加标准搜索帮助? 2. 在自定义搜索帮助中,如何实现多选值返回? 3. 如何为选择标准(SELECT-OPTION)的字段同时提供低值和高值的搜索帮助? 4. 在自定义搜索帮助中,如何根据其他字段的值动态过滤?</think>### ABAP选择屏幕中使用`AT SELECTION-SCREEN ON VALUE-REQUEST FOR`的原因和用途 在ABAP选择屏幕开发中,`AT SELECTION-SCREEN ON VALUE-REQUEST FOR`是一个关键事件,主要用于为字段提供**自定义搜索帮助(F4帮助)**。以下是其核心作用和必要性: --- #### 1. **提供定制化搜索帮助(F4)** 当标准数据元素自带的搜索帮助无法满足业务需求时,使用此事件可完全自定义F4帮助: ```abap AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr. PERFORM f4_for_matnr USING p_werks. " 根据工厂动态过滤物料 ``` - ✅ **动态过滤**:根据其他字段值(如工厂)过滤物料清单[^2] - ✅ **多表关联**:从多个表中组合数据生成搜索帮助 - ✅ **复杂逻辑**:添加权限检查或业务规则验证 --- #### 2. **解决标准搜索帮助的局限性** 标准搜索帮助的不足场景: | 场景 | 标准F4帮助 | 自定义解决方案 | |------|------------|----------------| | 跨表数据组合 | ❌ 不支持 | ✅ 通过JOIN多表查询 | | 动态值过滤 | ❌ 固定值 | ✅ 根据其他字段实时过滤 | | 权限检查 | ❌ 无控制 | ✅ 添加权限对象检查 | | 特殊界面需求 | ❌ 固定弹窗 | ✅ 自定义ALV/树形展示 | --- #### 3. **选择范围(select-options)的特殊处理** 对于带范围的字段需分别处理高/低值: ```abap AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_date-low. PERFORM f4_date_calendar CHANGING s_date-low. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_date-high. PERFORM f4_date_calendar CHANGING s_date-high. ``` - 必须分别捕获`-low`和`-high`字段的请求[^2] - 可共享同一逻辑子程序 --- #### 4. **实现技术流程** 典型实现步骤: 1. **事件触发**:用户按F4或点击搜索帮助图标 2. **调用函数**:使用`F4IF_INT_TABLE_VALUE_REQUEST`显示值列表 3. **返回值处理**:将用户选择值赋回原字段 ```abap FORM f4_for_matnr USING iv_werks. DATA: lt_values TYPE TABLE OF makt. SELECT matnr, maktx INTO TABLE lt_values FROM makt WHERE werks = iv_werks. " 动态过滤 CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'MATNR' value_org = 'S' TABLES value_tab = lt_values EXCEPTIONS OTHERS = 1. ENDFORM. ``` --- #### 5. **与其他事件的对比** | 事件 | 触发时机 | 主要用途 | |------|----------|----------| | `ON VALUE-REQUEST` | 按F4时 | 自定义搜索帮助 | | `ON p_field` | 字段值变化时 | 字段级校验 | | `ON BLOCK block` | 块内字段变化时 | 块级校验 | | `OUTPUT` | 屏幕渲染前 | 动态修改元素属性 | > ⚠️ 事件触发顺序:先触发字段级事件,再触发块级事件[^1] --- **总结核心价值**: 1. **业务适配性**:突破标准搜索帮助的限制 2. **用户体验**:提供更智能的搜索建议 3. **数据完整性**:确保输入值符合业务规则 4. **开发灵活性**:完全控制搜索逻辑和界面 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值