我有一个带有选择屏幕的程序,该程序会生成alv网格。 ALV网格具有一个热点,可将用户发送到新屏幕,该屏幕允许用户根据自己在alv网格中的选择来编辑数据。
此程序具有报告类型屏幕(选择屏幕)和对话框屏幕(第三个屏幕),我应该创建哪种交易类型(报告或对话框)。由于我的开始屏幕是默认选择屏幕,因此它应该是报表事务吗?还是我应该创建一个屏幕并将选择屏幕设置为子屏幕(如果可以,请建议我如何执行此操作并以此创建一个alv网格)。
答案 0 :(得分:1)
该程序“具有报告类型”,您的意思是它是“可执行程序”,又名“报告”,因此使用“报告”事务,那么您可能会尝试怎么办?
只有第一个屏幕才可以选择交易类型。
如果是选择屏幕,请使用“报告”交易。
如果是常规屏幕,请使用“对话”交易。
答案 1 :(得分:0)
为简单起见:
如果程序逻辑中的第一行代码以“ REPORT”开头,则进行“报告”事务;如果没有,请选择对话事务类型。
在这种情况下,只要交易的屏幕号指向选择屏幕(默认为'1000'),您创建的交易类型就没有关系。
就程序类型(模块池/对话框或报告)而言,这两种都是您需要的可能选项。
我建议您使用对话程序(如果尚未使用的话),因为它们可以提供更大的灵活性,通常最佳实践和简便是坚持使用这些程序以使其更复杂具有多个屏幕的程序。
报告与模块池/对话框程序
报表通常用于显示/分析数据库中的数据,而对话框程序用于必须更新数据时。 另一个区别是报表可以直接运行,而对话程序只能通过事务代码执行。
答案 2 :(得分:0)
第一个计划报告类型 应该是报告交易。您还可以创建对话框事务。 如果您为第一个ABAP程序编写对话事务,则可以将选择屏幕声明为子屏幕。
以下是选择屏幕作为子屏幕的示例。
SELECTION-SCREEN : BEGIN OF SCREEN 1010 AS SUBSCREEN.
SELECTION-SCREEN : BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETERS: rdb1 RADIOBUTTON GROUP rad1 DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: rdb2 RADIOBUTTON GROUP rad1,
p_data TYPE c LENGTH 35 DEFAULT 'Reporting / Maintenance Data'.
SELECTION-SCREEN END OF LINE.
PARAMETERS rdb3 RADIOBUTTON GROUP rad1.
PARAMETERS rdb4 RADIOBUTTON GROUP rad1. " Membership Expiry Report
SELECTION-SCREEN :END OF BLOCK a.
SELECTION-SCREEN: END OF SCREEN 1010.
第二个ABAP程序对话框/报告
第二个ABAP程序可以是可编辑ALV的对话程序或报告程序。如果创建对话程序,则必须创建事务。可以直接调用报告ABAP程序。
致谢
乌马尔·阿卜杜拉