
第一种办法:对表中某
字段的引用,设置ref_table、ref_field,将自动触发该字段所带的搜索帮助。\x0d\x0a第二种办法:就是利用自定义
代码来实现ALV的搜索帮助,显然它的功能更强大、更灵活。针对在OO ALV中实现搜索帮助,\x0d\x0a其主要步骤有:\x0d\x0a1、在ALV的事件处理类中添加个Method,其DEFINITION如下:\x0d\x0ahandle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid\x0d\x0a IMPORTING e_fieldname es_row_no er_event_data.\x0d\x0a其IMPLEMENTATION中就是我们希望执行的代码,用来d出可选择对话框。e_fieldname代表用户点击了ALV的哪个字段来触发搜索帮助,es_row_no代表了当前行信息,\x0d\x0aes_row_no-row_id就是ALV中内表记录的INDEX。er_event_data代表了当前用户对ALV进行了哪些编辑的信息。在Method的最后,记得加上\x0d\x0aer_event_data->m_event_handled = 'X'.\x0d\x0a通知系统搜索事件处理完毕,这样就不会调用系统标准的Search Help。\x0d\x0a2、那就是对需要自定义搜索帮助的字段,设置其field catalog时:\x0d\x0als_fieldcat-f4availabl = 'X'.\x0d\x0a3、在创建ALV对象之后,要对需要自定义搜索帮助的字段进行注册。\x0d\x0aDATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.\x0d\x0aCLEAR lt_f4.\x0d\x0alt_f4-fieldname = 'FIELD_NAME'.\x0d\x0alt_f4-register = 'X'.\x0d\x0alt_f4-chngeafter = 'X'.\x0d\x0aAPPEND lt_f4.\x0d\x0aCALL METHOD mygrid->register_f4_for_fields\x0d\x0a EXPORTING\x0d\x0ait_f4 = lt_f4[].\x0d\x0alvc_s_f4中的字段getbefore和changeafter应该代表是否触发data_changed事件。\x0d\x0a4、然后我们为其指定事件处理类(假设go_evt_receiver是自定义事件处理类的一个对象):\x0d\x0aCREATE OBJECT go_evt_receiver.\x0d\x0aSET HANDLER go_evt_receiver->handle_onf4 FOR go_alv_grid.
输入程序SAPLAIST以及屏幕号1140,输入相应的accesskey,进入后选择layout,双击layout的字段后会出现屏幕语言栏,增加字段组。找到系统界面所在的屏幕编号,点击系统,查看界面所在的屏幕位置,在函数组中进行修改,点击1140,出现layout,双击并输入字段。
spa分配循环定义一些时间方面的buffer,比如生产前、生产后、计划订单转生产订单的间隔等,定义的级别不同,应用的范围就不同。在排产时可用到。
这里我想问一下,你所说的界面是SAP标准的,还是在标准屏幕上用子屏幕增强的,再或者是完全自开发的屏幕
如果是SAP标准的话,一般情况下是没有权限修改的(一般的开发人员是绝对没权限的)
如果是通过增强子屏幕或者自开发的屏幕,那实现起来其实很简单,这里说一下原理(以你本人有权限修改代码为前提):
让一个按钮不起作用,最简单的方法就是点击屏幕的Layout,在屏幕编辑界面中把你想让它失效的按钮的FctCode中的功能码删掉(然后激活即可),这样点击该按钮时,就不会触发PAI事件,它的功能就不起作用了
如果你非要将这个按钮变成灰色,会麻烦一点,首先,打开该按钮的属性(Attribute),在Groups后的第一个输入框中输入GR1,然后激活,退出屏幕编辑,去修改代码,双击该屏幕号,点开FlowLogic(逻辑流),看PROCESSBEFOREOUTPUT.下是否有Mole,如果有的话,在该Mole的代码中添加如下代码并激活程序
LOOPATSCREEN.
IFscreen-group1='GR1'.
screen-input='0'.
MODIFYSCREEN.
ENDIF.
ENDLOOP.
如果没有Mole,就新建一个,然后在Mole中添加上面的代码,激活程序
希望对你有用
评论列表(0条)