起因
同事找我,说MRKO的显示界面里,只能看到物料号,看不到物料描述,只能看到供应商号,看不到供应商名称。问我能不能给处理一下。于是我学习了操作增强。
经过
先看找到MRKO对应的程序RMVKON00,我猜测一定是在这里做增强了。
读了一下代码,发现了一个叫alv_list的方法,是负责生成ALV的。它有一个参数叫t_alv_list,它是负责存ALV里的内容的。
没走通的想法:第一想法是搞它。在alv_list里,根据物料号取物料描述、根据供应商号了供应商名称。但由于它的类型是mrm_tab_con_alv,这个类型是在MRM类型组里定义的,这里虽然有增强点,但本人才疏学浅不会在这种位置写增强,外加群里大顾说不建议在类型组里做增强,于是果断放弃这个办法。
|
TYPES: BEGIN OF mrm_con_alv. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(52) Typ MRM_CON_ALV, End |
经大顾们的指点。最终是去透明表里做的手脚 。激活系统提供的这个CI_RKWA结构,并加入以下两个字段。

到这儿呢,就可以回到alv_list方法去创建增强写取数逻辑了。再到field_catalog_build方法里创建增强写物料描述和供应商名称对应的列名称了。
做完以上这一切,执行程序后发现,并没有显示我想要的物料描述和供应商名称这两列。于是两条腿走路,一面看代码,一面问大顾。
找到了方法field_catalog_build方法里,这里有一个叫,REUSE_ALV_FIELDCATALOG_MERGE的方法,根据参数里的内表或者结构,传回来其所有的字段用的。值得注意的,在这程序里,它即传了透明表,又传了一个叫CONALV的结构。
| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = c_repid i_internal_tabname = 'RKWA' i_structure_name = 'CONALV' CHANGING ct_fieldcat = t_fieldcat[]. |
所以,这里还涉及到了修改CONALV的结构。改成这样式儿的就可以了。

以上就是关于表和结构的修改,至于增强部份就更简单了。


结果
到这里呢,我的开发就满足了需求,体量不大,但是也让没写过这种增强的我足足研究了好几天。于是我决定把这个过程记录下来,给自己留 着备查,更希望能帮助到遇到同样需求的小伙伴。
好了,今天分享的内容就到这里了。用那句老掉牙的话收个尾吧,希望这篇文章对已经看到这儿的小伙伴们有帮助。还是那句话,喜欢的小伙伴们请关注、点赞、评论。大家的鼓励是我持续创作的动力。感谢!



2859

被折叠的 条评论
为什么被折叠?



