准备数据

SAP Web Dynpro 一般都是采用调用 ERP 接口方式获取业务数据,因此输入,输出参数等结构都需要和 ERP 系统中接口的内容保持一致。在 ERP 系统中找到 Report 对应的程序,在 Web Dynpro 系统中创建对应的结构,分别对应选择屏幕和对应的 ALV 报表。

SE80 创建 WDA

输入 WDA 的 Name 和 View Name,创建 Web Dynpro 并激活。

Web Dynpro Create

Web Dynpro Create

双击对象名 ZPR_ZPEFF,然后添加 Component Use:

Web Dynpro Add Component Use

然后双击 COMPONENTCONTROLLER 在 Properties 中创建 Components:

Add Components

切换页签到 Context (还是COMPONENTCONTROLLER),创建Nodes

  • Context 节点。视图使用的表,结构,全部放在这里。一般 0-1、1-1、0-n三种。
    • 0-1、1-1:相当于工作区,结构,1-1 时需要勾选 Initialization Lead Selection
    • 0-n:表示为内表类型

进到创建 Nodes 的界面,输入Node Name,Dictionary structure 然后 Cardinality 改成 0..n,然后点击 Add attribute from structure 来选择需要的字段

Create node

Add Attribute from Structure

Result

再建一个 Node (ZOPTION) 用来放复选框

Create Check box node

在 ZOPTION 下创建二个属性,对应 P_TOTAL 和 P_DETAIL

Add attribute

切换到页签 Attribute,然后维护以下三个属性

Add attribute

在页签Methods我们用到2个方法,(具体代码后面会给):

  • DATA_LOAD是手动添加的方法
  • WDDOINIT是系统自动添加的方法

Add METHODS

View的处理

每个视图都有一个控制器负责根据用户的交互来执执行作。

INPUT_VIEW处理

首先进到 INPUT_VIEW 中的 Context 页签中,然后将右边的 Node 拖到左边,如下图:

Input View Context

然后 Inbound Plugs 和 Outbound Plugs 分别维护

  • 在 Inbound Plugs 维护 Plug Name:FROM_ALV_VIEW
  • 在 Outbound Plugs 维护 Plug Name:TO_ALV_VIEW

接下来我们在 Layout 设置选择界面的信息。

首先设置一个执行按钮,右键 ROOTUIELEMENTCONTAINER,选择 Insert Element,然后输入 ID 为 TOOLBAR1,Type为 TOOLBAR 点击确定。

Input View Layout

右键 TOOLBAR1,选择 Insert Toolbar Element,输入 ID 为 EXCUTE,Type为 TOOLBAR_BUTTON。

Input View Layout

Input View Layout Ele

然后设置 EXCUTE 的属性,输入图标名称,创建一个 Event,如下图所示

Input View Layout Button

然后双击 EXCUTE 写入逻辑。当点击按钮时,跳入到 ALV_VIEW 视图:fire_'Outbound Plugs name'_plg( )

DATA lo_componentcontroller TYPE REF TO ig_componentcontroller .
    lo_componentcontroller =   wd_this->get_componentcontroller_ctr( ).
    """"来源ComponentController中method
    lo_componentcontroller->data_load(
    ).
    wd_this->fire_to_alv_view_plg(
    ).

Input View Event

然后我们继续回到 Layout,接下来创建 Group,右键 ROOTUIELEMENTCONTAINER 然后输入 ID 为 SELECTIONS1,选择 Type 为 GROUP,如下图:

Input View Layout Group

然后修改 Group 属性,Layout 选择 MatrixLayout 然后 width 维护 100%

Input View Layout property

右键 SELECTIONS1 选择 Insert Element 输入 ID 和 Type

Input View Layout selection

接下来我们以同样的方式创建 GROUP,名称为 SELECTIONS2;右键 SELECTIONS2,然后选择 Create Container Form,选择字段,确定。

Input View Layout

这里我们回到 COMPONENTCONTROLLER 的 Methods,将用到的2个方法写入逻辑。

ALV_VIEW处理

将两个 ALV 报表要显示的结果的结构添加到 Component Controller 中的上下文中;

右键 Views 然后创建新的 View 用来展示 ALV 报表:ALV_VIEW,添加 Context 和 Properties/Component Use

ALV View Context

ALV View Properties

然后 Inbound Plugs 和 Outbound Plugs 分别维护

  • 在 Inbound Plugs 维护 Plug Name : FROM_INPUT_VIEW
  • 在 Outbound Plugs 维护 Plug Name : TO_INPUT_VIEW

然后切换到页签 Layout,新建一个返回按钮 BACK,然后双击 BACK 写入返回逻辑。

ALV View Layout back

ALV View Layout back

我们再回到 Layout 创建一个 HORIZONTAL_GUTTER 类型是 HORIZONTAL GUTTER 将按钮和 ALV 输出数据隔开。

View Layout

然后创建一个 DISPLAY_DATA 类型是ViewContainerUIElement

View Layout

再切换到 Methods 中,在 WDDOINIT 中写实现 ALV 逻辑。如果在 ALV View 界面需要进行功能处理,则创建对应的 Method 并写入功能代码。

Windows 处理

windows 只是一种容器,在一个 component 内一个 window 可以包含任意多个 view。

打开 Windows 并双击视图,然后将 ALV_VIEW 拖到 ZWDA_DEMO 下面,如图:

Windows Add

右键 INPUT_VIW 中的 SELECT_OPTIONS,将 select_options 绑定:

Windows Input View Select Options

Windows Input View Select Options Embed

然后右键 INPUT_VIEW 下的 TO_ALV_VIEW,选择 Create Navigation Link:

Windows Input View OUT

Windows Input View OUT

再右键 ALV_VIEW 下的 DISPLAY_DATA,进行绑定:

Windows Input View OUT

然后右键 ALV_VIEW 中的 TO_INPUT_VIEW,Create Navigation Link:

Windows Input View OUT

最后效果如下图所示:

Windows Result

创建Web Dynpro Component(Interface)

右键 Object Name -> Create -> Web Dynpro Application

Windows Result

可以在浏览器通过产生的 URL 进行测试

Windows Result