Abap 自定义F4的新记录
我创建了一个搜索帮助,它有两个字段:Abap 自定义F4的新记录,abap,sap-crm,Abap,Sap Crm,我创建了一个搜索帮助,它有两个字段:id和description 我想在结果中添加新行,这些结果不是来自源表。我听说我们可以通过搜索帮助出口来完成,但我不知道怎么做 我要添加此行: ID Description 00004 "For all users" 上下文:我的搜索帮助是在后端创建的,我将其附加到CRM WEBUI组件的分配块中,效果良好。但是,现在我需要在F4中添加新值,只需添加一个新行。默认情况下,搜索帮助显示数据库表或视图(“选择方法”)的内容、所有列或搜索帮助中
id
和description
我想在结果中添加新行,这些结果不是来自源表。我听说我们可以通过搜索帮助出口来完成,但我不知道怎么做
我要添加此行:
ID Description
00004 "For all users"
上下文:我的搜索帮助是在后端创建的,我将其附加到CRM WEBUI组件的分配块中,效果良好。但是,现在我需要在F4中添加新值,只需添加一个新行。默认情况下,搜索帮助显示数据库表或视图(“选择方法”)的内容、所有列或搜索帮助中定义的特定列 如果您希望通过从头构建(空的“选择方法”)或调整从该“选择方法”读取的数据来显示不同的数据,则需要使用 搜索帮助出口是分配给搜索帮助的功能模块,在搜索帮助执行期间的不同时刻(称为“步骤”)调用,可以修改搜索帮助的行为和内容。最重要的步骤是:
- “选择”:在SAP从数据库提取数据(如果有)之前,在最终显示选择对话框以输入值以过滤数据之后,调用该选项。如果“选择方法”为空,此时您可以自己初始化数据
- “DISP”:在SAP从数据库中提取数据(如果有“选择方法”)之后,在显示之前调用它。此时,您可以更改数据
F4IF\u SHLP\u EXIT\u示例
):
- 步骤名称是参数
callcontrol step
- 记录在参数
;要更改它们,请使用手动键入的intermeidate内部表来匹配为搜索帮助中的“命中列表输出”选择的列(列的顺序并不重要,因为记录选项卡中
功能模块的逻辑基于列名)。要将“记录”选项卡转移到内部表格,请调用函数模块F4UT.*
(一次一列,多次调用多列),要将内部表格转移到“记录”选项卡,请调用函数模块F4UT\u参数\u值\u GET
F4UT\u结果\u MAP
- 如果需要,最终的数据选择在参数
中SHLP-SELOPT
F4UT.*
功能模块在您的系统中随附了一些文档,并且在您的系统中有类似搜索帮助指示灯的演示
在您非常具体的情况下,我建议您不要定义“选择方法”,而是使用搜索帮助退出,并使用以下代码:
DATA source_tab TYPE TABLE OF zyourtable.
IF callcontrol-step = 'SELECT'.
SELECT * FROM zyourtable INTO TABLE source_tab.
APPEND value ty_source( ID = '00004' Description = 'For all users' ) TO source_tab.
CALL FUNCTION 'F4UT_RESULTS_MAP' " transfer of source_tab to record_tab
TABLES
SHLP_TAB = shlp_tab
RECORD_TAB = record_tab
SOURCE_TAB = source_tab
CHANGING
SHLP = shlp
CALLCONTROL = callcontrol.
ENDIF.
以下是我基于Sandra答案的最终解决方案:
IF callcontrol-step = 'SELECT'.
DATA: BEGIN OF ls_res_tab,
id TYPE zdt_favorite_retail_store,
description TYPE zdt_favorite_retail_store_decr,
END OF ls_res_tab.
DATA: res_tab LIKE TABLE OF ls_res_tab.
SELECT id description FROM ztx_fav_store INTO TABLE res_tab.
ls_res_tab-id = '00004'.
ls_res_tab-description = 'For all users'.
APPEND ls_res_tab TO res_tab.
"* Prepare for output
CALL FUNCTION 'F4UT_RESULTS_MAP'
TABLES
shlp_tab = shlp_tab
record_tab = record_tab
source_tab = res_tab
CHANGING
shlp = shlp
callcontrol = callcontrol
EXCEPTIONS
illegal_structure = 1
OTHERS = 2.
EXIT. "Don't process STEP DISP additionally in this call.
ENDIF.
您的问题与CRM WebUI的关系如何?搜索帮助用于SAP GUI for Windows(或Java或Web版本),而不是CRM WebUI。在这里,你的问题似乎只与搜索有关。是的,你是对的。这是我的错误。非常感谢你的评论。我的F4是在后端创建的,我将它附加到我的WEBUI上的分配块中,效果很好。但是,现在我需要在我的F4中添加新的值,只有一行。非常感谢,桑德拉。你的建议对我很有帮助。我解决了我的问题。行
退出。“不要处理DISP…
不是特定于问题的,因为您只需要为“选择”
步骤定义ABAP代码,所以要继续回答问题,下一行应该是ENDFORTION
,无需使用EXIT
(在其他情况下,如果您仍然需要退出,请选择RETURN
以提供更清晰的含义,因为退出在其他情况下可能具有不同的含义;条件切换CASE callcontrol step
也是一个很好的解决方案)。很好。我明白了。谢谢。
IF callcontrol-step = 'SELECT'.
DATA: BEGIN OF ls_res_tab,
id TYPE zdt_favorite_retail_store,
description TYPE zdt_favorite_retail_store_decr,
END OF ls_res_tab.
DATA: res_tab LIKE TABLE OF ls_res_tab.
SELECT id description FROM ztx_fav_store INTO TABLE res_tab.
ls_res_tab-id = '00004'.
ls_res_tab-description = 'For all users'.
APPEND ls_res_tab TO res_tab.
"* Prepare for output
CALL FUNCTION 'F4UT_RESULTS_MAP'
TABLES
shlp_tab = shlp_tab
record_tab = record_tab
source_tab = res_tab
CHANGING
shlp = shlp
callcontrol = callcontrol
EXCEPTIONS
illegal_structure = 1
OTHERS = 2.
EXIT. "Don't process STEP DISP additionally in this call.
ENDIF.