欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

SAP屏幕增强自定义界面字段使用自定义搜索帮助方法/获取其他屏幕字段的值

背景:在比如采购订单、销售订单屏幕界面,做了自定义字段,里面要选择一些底表的数据显示。

1、直接使用系统标准的搜索帮助。

假设我们已经有底表数据ZTCMS002,SE11建立搜索帮助.

image

 

image

 进到屏幕界面,点击布局

image

 双击字段,填入上面建立的搜索帮助

image

 这种适用于数据能分开的底表里,这样做比较方便。

2、几个字段共用一个数据表的情况下,每个字段根据条件搜索相关的内容。

此时可以使用函数“F4IF_INT_TABLE_VALUE_REQUEST”。

按以下步骤进行处理

1.找到对应的增强屏幕编号,双击,以采购订单抬头屏幕增强为例;

cmod进去

image

 

image

 

2.在该屏幕的逻辑流中POV内容;

image

 field后面的是屏幕上的字段名

image

 

3.写完上面的内容,双击定义的MODULE名创建MODULE,这三个放在一个include里.

MODULE GET_HELP_ERNAM INPUT.
  SELECT * FROM ZTCMS002 INTO TABLE @DATA(LT_NDHT) WHERE ZTYPE = 'NDHT'. 
*  IF SCREEN-NAME = 'CI_EKKO-ZNDHT' .

    " 调用函数
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        RETFIELD    = 'ZHTNO'   "这里是需要输出值
        DYNPPROG    = SY-REPID
        DYNPNR      = SY-DYNNR
        DYNPROFIELD = 'CI_EKKO-ZNDHT'   "这里填屏幕字段值
        VALUE_ORG   = 'S'
      TABLES
        VALUE_TAB   = LT_NDHT. "这里是需要查的表

    CLEAR:LT_NDHT[].
*  ENDIF.
ENDMODULE.

效果展示

image

 扩展:这里也可以根据屏幕字段去过滤这个表,但是要求用户先填了值再去选值才行。

可以使用如下方法获取该值ASSIGN ('(PROGRAM_NAME)FIELD_NAME') TO <fs_field>.

PROGRAM_NAME程序名

FIELD_NAME屏幕字段名

DATA:LV_EKORG TYPE EKORG.
FIELD-SYMBOLS: <EKORG>  TYPE EKKO-EKORG.
  ASSIGN ('(SAPLMEGUI)MEPO1222-EKORG') TO <EKORG>.
  SELECT * FROM ZTCMS005 INTO TABLE @DATA(LT_ZWLXFL) WHERE EKORG = @<EKORG>.
  " 调用函数
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD    = 'ZWLXFL'
      DYNPPROG    = SY-REPID
      DYNPNR      = SY-DYNNR
      DYNPROFIELD = 'EKPO_CI-ZWLXFL'
      VALUE_ORG   = 'S'
    TABLES
      VALUE_TAB   = LT_ZWLXFL.

  CLEAR:LT_ZWLXFL[].

image

 

posted @ 2025-11-12 17:11  萧静默  阅读(33)  评论(0)    收藏  举报