双击ALV以显示详细信息屏幕

2020-09-24 21:01发布

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

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


大家好,

使用SE16时,只需双击ALV的其中一行即可显示详细信息屏幕。 同样,当显示自己的ALV时,可以通过单击相应的图标或按CTRL + SHIFT + F3来显示详细信息屏幕。

我想知道的是如何通过双击特定行来在我的(Z)程序中显示详细信息屏幕。

预先感谢

路易斯

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

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


大家好,

使用SE16时,只需双击ALV的其中一行即可显示详细信息屏幕。 同样,当显示自己的ALV时,可以通过单击相应的图标或按CTRL + SHIFT + F3来显示详细信息屏幕。

我想知道的是如何通过双击特定行来在我的(Z)程序中显示详细信息屏幕。

预先感谢

路易斯

付费偷看设置
发送
4条回答
蓋茨
1楼 · 2020-09-24 21:36.采纳回答

对于您的需求,将详细信息屏幕的功能代码传递给alv中的布局属性。

有关信息,请参见下面的简单代码。

报告ZDEMO2。

类型库:SLIS。

类型:TY_FINAL的开始,
VBELN类型VBAK-VBELN,
KUNNR类型VBAK-KUNNR,
TY_FINAL的结尾,
TY_FINAL的TT_FINAL类型标准表。


DATA:GT_FINAL TYPE TT_FINAL,
GS_FINAL TYPE TY_FINAL。



DATA:GS_LAYOUT TYPE SLIS_LAYOUT_ALV。

DATA:GT_FIELDCAT类型SLIS_T_FIELDCAT_ALV,
GS_FIELDCAT类型SLIS_FIELDCAT_ALV。









开始选择 。

从VBAK中选择VBELN KUNNR到表GT_FINAL中,直到700行。






结束选择。



清除GS_FIELDCAT。
GS_FIELDCAT-FIELDNAME ='VBELN'。
GS_FIELDCAT-SELTEXT_L ='SO编号'。
将GS_FIELDCAT附加到GT_FIELDCAT。

清除GS_FIELDCAT。 br> GS_FIELDCAT-FIELDNAME ='KUNNR'。
GS_FIELDCAT-SELTEXT_L ='客户代码'。
将GS_FIELDCAT附加到GT_FIELDCAT。


清除GS_LAYOUT。
GS_LAYOUT-F2CODE ='&ETA'。 "注意,此处将详细信息的功能代码传递给布局属性。




调用功能'REUSE_ALV_GRID_DISPLAY'
导出
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
表格
T_OUTTAB = GT_FINAL
例外
程序错误= 1
其他= 2.

IF 1 = 4.

ENDIF。

Violet凡
2楼-- · 2020-09-24 21:26

有关FM REUSE_ALV_GRID_DISPLAY_LVC,请参见下面的示例报告。

报告ZDEMO2。



类型库:SLIS。

类型:TY_FINAL的开始,
VBELN类型VBAK-VBELN,
KUNNR类型 VBAK-KUNNR,
TY_FINAL的结尾,
TY_FINAL的TT_FINAL类型标准表。


DATA:GT_FINAL TYPE TT_FINAL,
GS_FINAL类型TY_FINAL。


< br> DATA:GS_LAYOUT类型LVC_S_LAYO。

DATA:GT_FIELDCAT类型LVC_T_FCAT,
GS_FIELDCAT类型LVC_S_FCAT。










>
选择开始。

从VBAK中选择VBELN KUNNR到表GT_FINAL中,最多10个行。






END-OF -SELECTION。




清除GS_FIELDCAT。
GS_FIELDCAT-FIELDNAME ='VBELN'。
GS_FIELDCAT-SCRTEXT_L ='SO NUMBER'。
将GS_FIELDCAT附加到GT_FIELDCAT。 br>
清除GS_FIELDCAT。
GS_FIELDCAT-FIELDNAME ='KUNNR'。
GS_FIELDCAT-SCRTEXT_L ='客户代码'。
将GS_FIELDCAT附加到GT_FIELDCAT。



>

通话功能'REUSE_ALV_GRID_DISPLAY_LVC'
导出
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_USER_COMMAND ='USER_COMMAND'
IS_LAYOUT_LVC = GS_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT
表格
T_OUTTAB = GT_FINAL
例外情况 = 2 =程序错误



IF 1 =4。

ENDIF。



************* ***********



使用类似于SY-UCOMM的R_UCOMM形式USER_COMMAND
RS_SELFIELD类型SLIS_SELFIELD。

如果R_UCOMM ='&IC1'。
R_UCOMM ='&ETA'。
ENDIF。


ENDFORM。

在这里您必须使用user_command退出表单。

一只江湖小虾
3楼-- · 2020-09-24 21:39

嗨路易斯,

如果在自定义程序中使用CL_GUI_ALV_GRID,请执行以下步骤:

1。 注册事件处理程序方法以进行双击,然后在特定行
2上每次双击都会调用此方法。 在事件处理程序方法中,使用行ID/索引读取行,并准备要显示的详细信息
3。 最后,致电LVC_ITEM_DETAIL(FM)以显示详细信息

=

问候,
巴拉吉

hongfeng1314
4楼-- · 2020-09-24 21:47

巴拉吉,

感谢您的回答。

我知道两者都处理双击事件和LVC_ITEM_DETAIL FM。 但是,我认为*也许* ABAP中有一种更简单或更直接的方法。 毕竟,ALV可以以某种方式在后台进行操作,我希望有一种方法可以"拦截"或直接调用此方法,而无需识别和隔离记录,将其复制到另一个itab等。

再次感谢

路易斯

一周热门 更多>