关于F4搜索帮助返回多列值的实现方法

*&---------------------------------------------------------------------*
*& Report  ZTEST_F4
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_F4.

TYPE-POOLS:SHLP.

SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
  PARAMETERS:L_MATNR TYPE CHAR18,
             L_SPRAS LIKE MAKT-SPRAS,
             L_MAKTX LIKE MAKT-MAKTX.
SELECTION-SCREEN END OF BLOCK BL1.

                 AT SELECTION-SCREEN OUTPUT .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR L_MATNR."给分公司添加search help
  DATA:BEGIN OF TAB_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,
SPRAS LIKE MAKT-SPRAS,
MAKTX LIKE MAKT-MAKTX,
END OF TAB_MAKT.
SELECT * FROM MAKT INTO CORRESPONDING FIELDS OF TABLE TAB_MAKT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' "调用函数
EXPORTING
RETFIELD = 'MATNR' "搜索帮助内表要输出的的帮助字段名,注:要大写
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'L_MATNR'
VALUE_ORG = 'S'
CALLBACK_PROGRAM = SY-REPID
CALLBACK_FORM = 'BO_CALLBACK_FORM'
TABLES
VALUE_TAB = TAB_MAKT. "存储搜索帮助内容的内表


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.
CLEAR INTERFACE.
CLEAR FP.

 FP-SHLPOUTPUT = 'X'.
 MODIFY SHLP-FIELDPROP FROM FP TRANSPORTING SHLPOUTPUT
 WHERE SHLPOUTPUT = SPACE.
READ TABLE SHLP-INTERFACE INTO INTERFACE INDEX 1.
INTERFACE-SHLPFIELD+4(1) = '1'. "第一个位置。调用F4函数本身就已经有内容,所以会造成选择后面的语言或者是物料描述的时候,物料代码无法更改,所以此处用MODIFY 就可以解决这个问题
INTERFACE-VALFIELD = 'L_MATNR'.
MODIFY SHLP-INTERFACE FROM INTERFACE INDEX 1.
INTERFACE-SHLPFIELD+4(1) = '2'. "这里的数字 代表F4搜索帮助弹出的ALV对话框,字段的位置,比如此行是显示F4弹出的alv第二列的内容
INTERFACE-VALFIELD = 'L_SPRAS'.
APPEND INTERFACE TO SHLP-INTERFACE.
INTERFACE-SHLPFIELD+4(1) = '3'. "SHLP-INTERFACE的SHLPFIELD的值是F0003,所以这里加个4(1) 读到列的位置为3 此处注意。不要CLEAR INTERFACE。。。会导致缺少数据
INTERFACE-VALFIELD = 'L_MAKTX'.
APPEND INTERFACE TO SHLP-INTERFACE.

ENDFORM. "bo_callback_form
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值