2020-09-24 21:01发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
使用SE16时,只需双击ALV的其中一行即可显示详细信息屏幕。 同样,当显示自己的ALV时,可以通过单击相应的图标或按CTRL + SHIFT + F3来显示详细信息屏幕。
我想知道的是如何通过双击特定行来在我的(Z)程序中显示详细信息屏幕。
预先感谢
路易斯
嗨
对于您的需求,将详细信息屏幕的功能代码传递给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。
有关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退出表单。
嗨路易斯,
如果在自定义程序中使用CL_GUI_ALV_GRID,请执行以下步骤:
1。 注册事件处理程序方法以进行双击,然后在特定行 2上每次双击都会调用此方法。 在事件处理程序方法中,使用行ID/索引读取行,并准备要显示的详细信息 3。 最后,致电LVC_ITEM_DETAIL(FM)以显示详细信息
=
问候,巴拉吉
巴拉吉,
感谢您的回答。
我知道两者都处理双击事件和LVC_ITEM_DETAIL FM。 但是,我认为*也许* ABAP中有一种更简单或更直接的方法。 毕竟,ALV可以以某种方式在后台进行操作,我希望有一种方法可以"拦截"或直接调用此方法,而无需识别和隔离记录,将其复制到另一个itab等。
再次感谢
最多设置5个标签!
嗨
对于您的需求,将详细信息屏幕的功能代码传递给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。
嗨
有关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退出表单。
嗨路易斯,
如果在自定义程序中使用CL_GUI_ALV_GRID,请执行以下步骤:
1。 注册事件处理程序方法以进行双击,然后在特定行
2上每次双击都会调用此方法。 在事件处理程序方法中,使用行ID/索引读取行,并准备要显示的详细信息
3。 最后,致电LVC_ITEM_DETAIL(FM)以显示详细信息
=
问候,
巴拉吉
巴拉吉,
感谢您的回答。
我知道两者都处理双击事件和LVC_ITEM_DETAIL FM。 但是,我认为*也许* ABAP中有一种更简单或更直接的方法。 毕竟,ALV可以以某种方式在后台进行操作,我希望有一种方法可以"拦截"或直接调用此方法,而无需识别和隔离记录,将其复制到另一个itab等。
再次感谢
路易斯
一周热门 更多>