关于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

你可能感兴趣的:(搜索帮助)