0

我有一个从 pfc_w_sheet 继承的窗口,它包含从 u_tv 继承的树视图。下面是窗口打开事件中的脚本。起初,它只有 1 个参数,并且树视图成功填充并显示了项目。但是当 datawindow: d_app_usermenu1 已被修改时,内部连接和检索参数 user_id 已被添加。并且在 windows 打开事件中也添加了 la_arg[2],树视图无法在运行时填充项目。发现tv_main.of_SetDatasource中的返回值为-2,表示DataWindow对象没有分配任何键列,这是根据pfc_u_tv中的说明。我去检查下面返回-2值的脚本行。of_CreateKey 函数基本上,向 datawindow 对象添加一个计算列,该列将包含连接在一起的所有键。这是能够找到唯一行的必要条件,这是根据 pfc_u_tv 中的注释。

// Add a computed column to the DataWindow object that will
// contain all the keys concatenated together.  This is necessary
// to be able to find a unique row.
If of_CreateKey(inv_ds[ai_Level].ds_obj) = -1 Then
    // No key columns were defined
    inv_ds[ai_Level].s_DataWindow = ""
    Destroy inv_ds[ai_Level].ds_obj
    Return -2
End if

关于如何处理这个或一些解决方法的任何想法?目标是检索在特定用户 ID 中分配的项目或菜单,这就是为什么我需要在数据窗口的 SQL 查询中进行内部连接。

//Window's Open Event
Any la_arg[]
tv_main.of_SetDatasource(1, "d_app_usermenu1", SQLCA, "menu_name", "", FALSE, 1, 1)
tv_main.of_SetDatasource(2, "d_app_usermenu2", SQLCA, "menu_name", ":parent.1.parent_name", FALSE, 2, 2)
is_userid = Upper(Trim(gnv_App.of_getUserID( )))
la_arg[1] = '0'
la_arg[2] = is_userid
tv_main.of_InitialRetrieve(la_arg)
4

1 回答 1

0

在 dw Painter 中打开数据窗口。

转到行 > 更新属性并在“唯一键列”列表中选择至少一列。保存并重新测试。

当您添加连接条件时,PB 不再知道哪个表是可更新的,也无法确定哪些列构成了该表的主键。

每当您编辑数据窗口查询时,您会收到消息“PB 已更改更新规范” - 这是您需要检查的第一个地方...

-保罗霍兰-
SAP

于 2015-03-05T19:09:55.883 回答