搜索帮助Record_Tab启用多项选择CV04N

2020-09-22 07:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


交易代码:CV04N

转到"对象链接"标签>供应商>按F4

它将显示搜索帮助KRED_C(然后显示KRED_T)。 基本搜索帮助KREDI(按国家(地区)/公司代码分类的供应商)仅允许一个选择。 我的要求是启用多个选择。

我所做的事情被复制到ZKREDI中,并在搜索帮助出口中启用了多项选择功能(callcontrol-multisel ='X')。 现在出现复选框以选择多个值。 现在,RECORD_TAB将显示选中的记录,具体取决于选中了多少框。 但是,仅显示最后一条记录。


在屏幕截图中,我选择了5条记录。 但是,只有最后一条记录将显示在左侧表格控件"供应商"中

搜索帮助退出伪代码

检查系统代码EQ'CV04N'。

*如果您不想执行此步骤,请立即退出

IF callcontrol-step <>'SELONE'AND

callcontrol-step <>"选择"并

callcontrol-step <>'RETURN'AND

callcontrol-step <>'DISP'。

退出。

ENDIF。


"启用多项选择

callcontrol-multisel ='X'。


IF callcontrol-step ='RETURN'。

ENDIF。



问题:

如何在屏幕上返回多个选择的值?

cvo4n-zkredi.jpg (107.1 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


交易代码:CV04N

转到"对象链接"标签>供应商>按F4

它将显示搜索帮助KRED_C(然后显示KRED_T)。 基本搜索帮助KREDI(按国家(地区)/公司代码分类的供应商)仅允许一个选择。 我的要求是启用多个选择。

我所做的事情被复制到ZKREDI中,并在搜索帮助出口中启用了多项选择功能(callcontrol-multisel ='X')。 现在出现复选框以选择多个值。 现在,RECORD_TAB将显示选中的记录,具体取决于选中了多少框。 但是,仅显示最后一条记录。


在屏幕截图中,我选择了5条记录。 但是,只有最后一条记录将显示在左侧表格控件"供应商"中

搜索帮助退出伪代码

检查系统代码EQ'CV04N'。

*如果您不想执行此步骤,请立即退出

IF callcontrol-step <>'SELONE'AND

callcontrol-step <>"选择"并

callcontrol-step <>'RETURN'AND

callcontrol-step <>'DISP'。

退出。

ENDIF。


"启用多项选择

callcontrol-multisel ='X'。


IF callcontrol-step ='RETURN'。

ENDIF。



问题:

如何在屏幕上返回多个选择的值?

cvo4n-zkredi.jpg (107.1 kB)
付费偷看设置
发送
3条回答
吹牛啤
1楼 · 2020-09-22 08:13.采纳回答

callcontrol-multisel的值由搜索帮助的调用者提供,而不是由搜索帮助提供。 现在,准备一份小报告,进行价值一千字的测试

表:lfa1。
 参数pa_lifnr类型lfa1-lifnr匹配代码对象kredi。
 SELECT-OPTIONS so_lifnr用于lfa1-lifnr匹配代码对象kredi。
 

您应该能够将SAP交付的KREDI用于select-options,并使用多选,但不能用于参数。 你能得出什么结论?

...

在您的情况下,搜索帮助将无法填充其他字段,因此您必须在PROCESS ON VALUE REQUEST块中进行显式处理。 使用FM F4_FIELD_ON_VALUE_REQUEST通过参数SEARCHHELP和MULTIPLE_CHOICE调用搜索帮助,使用返回的RETURN_TAB记录更新dynpro字段。

NB:别忘了处理DYPN_GET_STEPL返回的值来处理STEPL字段以填充表控件。

Cikesha
2楼-- · 2020-09-22 08:00

请参见下面的示例代码

DDSHRETVAL的DATA:LT_DDSHRETVAL类型标准表,
LVSH_IN TYPE I的LS_DDSHRETVAL类型DDSHRETVAL,

DATA_LTNPDYDYREAD类型的标准表DYNPREAD,
LS_DYNPREAD类型的标准表。 >
字段符号:类型DYNPREAD。





呼叫功能'F4IF_FIELD_VALUE_REQUEST'
导出
TABNAME ='MAKT'
FIELDNAME ='MAKTX'
SEARCHHELP ='ZDEMO_MSH'

RETURN_TAB = LT_DDSHRETVAL
例外情况
FIELD_NOT_FOUND = 1
NO_HELP_FOR_FIELD = 2
INCONSISTENT_HELP = 3
其他=5。





将LT_DDSHRETVAL循环到LS_DDSHRETVAL。

清除GS_MAKT。
GS_MAKT-MAKTX = LS_DDSHRETVAL-FIELDVAL。
>追加GS_MAKT到GT_MAKT。

ENDLOOP。


做20次。

清除LS_DYNPREAD。
LS_DYNPREAD-FIELDNAME ='GS_MAKT-MAKTX'。< br> LS_DYNPREAD-STEPL = SY-INDEX。
将LS_DYNPREAD附加到LT_DYNPREAD。


ENDDO。


调用函数'DYNP_VALUES_READ '
导出
DYNAME ='ZDEMO2'
DYNUMB ='0100'
* DETERMINE_LOOP_INDEX ='X'
桌子
DYNPFIELDS = LT_DYNPREAD
例外情况
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
INVALID_PARAMETER = 7
UNDEFIND_ERROR = 8 双 > STEPL_NOT_FOUND = 10
其他=11。



清除LV_IN。

LT_DYNPREAD分配时循环

检查 -FIELDVALUE是INITIAL。

LV_IN = LV_IN +1。

清除LS_DDSHRETVAL。


将LT_DDSHRETVAL表读入LS_DDSHRETVAL索引LV_IN。

- FIELDVALUE = LS_DDSHRETVAL-FIELDVAL。

ENDLOOP。



通话功能'DYNP_VALUES_UPDATE'
导出
DYNAME ='ZDEMO2'
DYNUMB ='0100 '
表格
DYNPFIELDS = LT_DYNPREAD
例外情况
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
无效 D_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
UNDEFIND_ERROR = 7
其他= 8。

Doze时光
3楼-- · 2020-09-22 08:08

hi,

要在表控件中填充搜索帮助的选定数据,应编写代码。

使用fm调用搜索帮助

F4IF_FIELD_VALUE_REQUEST

一周热门 更多>