SAP Fiori我的收件箱-收件箱/发件箱拆分问题

2020-08-14 21:28发布

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

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


专家们,

我部署了我的收件箱,并且在大多数情况下都可以正常工作,除了一个问题。

我想将"收件箱"磁贴分割为4。

1。个人收件箱(需要我批准)

2。个人发件箱(由我创建)

3。部门收件箱(我的团队需要批准)

4。部门发件箱(由我的团队创建)

我为测试的.Individual收件箱和.Individual发件箱创建了图块。

动态图块可以正常工作。

收件箱:27,发件箱:20

为实现这一点,我意识到仅凭状态无法区分数据。 所以我添加了几个过滤器。

下面的屏幕是"收件箱"磁贴配置。

收件箱的收件箱服务URL:

/sap/opu/odata/IWPGW/TASKPROCESSING; mo; v = 2/TaskCollection/$ count/?$ filter = TaskDefinitionID eq'RFA'和Processor eq'INDIVIDUAL'和ProcessorName eq'INBOX'和 (状态为" READY"或状态为" IN_PROGRESS"或状态为" FOR_RESUBMISSION")

计数的发件箱服务URL:

/sap/opu/odata/IWPGW/TASKPROCESSING; mo; v = 2/TaskCollection/$ count/?$ filter = TaskDefinitionID eq'RFA'和Processor eq'INDIVIDUAL'和ProcessorName eq'OUTBOX'



我在类和方法中添加了自己的编码。

类名:ZCL_TGW_TASK_FACADE_ABS

方法:QUERY_TASKS

LOOP AT mt_filter_select_options INTO ls_filter_select_option。
IF ls_filter_select_option-property ='Status'。
LOOP AT ls_filter_select_option-select_options INTO ls_select_option。
INSERT ls_select_option INTO TABLE。 br> ELSEIF ls_filter_select_option-property ='TaskDefinitionID'。
遍历AT ls_filter_select_option-select_options INTO ls_select_option。
插入ls_select_option INTO TABLE lt_select_options_task。
ENDLOOP。
ELSEIF ls_filter。 > LOOP AT ls_filter_select_option-select_options INTO ls_select_option。
INSERT ls_select_option INTO TABLE lt_select_options_proc。
ENDLOOP。
ELSEIF ls_filter_select_option-property ='ProcessorName'。 ls_select_option INTO表lt_select_options_proc_name。
ENDLOOP。 ct_options
AND task_def_id IN lt_select_options_proc
AND处理器IN lt_select_options_proc
AND Processor_name IN lt_select_options_proc_name。
插入ls_task INTO TABLE et_tasks。
ENDLOOP。


依靠瓷砖可以正常工作。


----------------------------------------

问题来了!

但是,当我单击图块时,ABAP方法不会添加过滤器,而是仅显示每个参数(收件箱或发件箱)过滤器的状态。 当我单击平铺按钮并确认Fiori收件箱屏幕仅发送状态时,我抓住了oData。

这就是明细数据具有不同编号的原因。

收件箱中的收件箱计数:27->使用状态和拥有者(" RFA"," INDIVIDUAL"," INBOX")过滤器计算的系统

收件箱中的详细信息:36->仅根据状态计算的系统

获取收件箱oData:

GET TaskCollection?sap-client = 100&$ skip = 0&$ top = 110&$ orderby = CreatedOn%20desc&$ filter =(( Status%20eq%20%27READY%27%20or%20Status%20eq%20 %27RESERVED%27%20or%20Status%20eq%20%27IN_PROGRESS%27%20or%20Status%20eq%20%27EXECUTED%27 )))&$ select = SAP__Origin%2cInstanceID%2cTaskDefinitionID%2cTaskDefinitionName%2cTaskTitle%2cCreatedByName% 2cCreatedBy%2cCompletionDeadLine%2cSubstitutedUserName%2cStatus%2cPriority%2cPriorityNumber%2cHasComments%2cHasAttachments%2cHasPotentialOwners%2cCreatedOn%2cTaskSupports%2cSupportsClaim%2cSupportsFlease2%

花费了数次后,我知道用于切片计数的Service URL过滤器和用于详细数据的过滤器完全不同。 Fiori我的"收件箱"屏幕使用磁贴参数确定状态,并将其发送到SAP(方法)。

下面是每个图块参数设置。

收件箱参数:allItems = true

发件箱参数: allItems = true&outbox = true

我尝试添加一些参数,包括字段名称,但被SAP流程忽略。

SAP仅发送两种状态列表(收件箱:4状态,发件箱:2状态)。


为了您的理解,我尝试添加尽可能多的屏幕。

我的底线是这个。

当我单击每个图块时,我希望从Fiori我的收件箱中获取除状态以外的更多参数或过滤器,以便我可以在方法中添加ABAP编码以拆分相应的数据。

如果可以这样做,我可以拆分用户收件箱,用户发件箱,部门收件箱和部门发件箱。

为解决这个问题,我尝试了几件事。

1。在方法SET_QUERY_STRING_OPTION中添加了自己的过滤器。

it_filter_select_options []不可编辑,因此在mt_filter_select_options []中添加了几个过滤器选项。 ->看起来还可以,但是系统在oData的某处使用了原始过滤器。

2。尝试在单击图块时在SAPUI5一​​侧修改oData。 ->很难。

请让我知道如何实现这一目标。

非常感谢您。

维克多

(8.8 kB)

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

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


专家们,

我部署了我的收件箱,并且在大多数情况下都可以正常工作,除了一个问题。

我想将"收件箱"磁贴分割为4。

1。个人收件箱(需要我批准)

2。个人发件箱(由我创建)

3。部门收件箱(我的团队需要批准)

4。部门发件箱(由我的团队创建)

我为测试的.Individual收件箱和.Individual发件箱创建了图块。

动态图块可以正常工作。

收件箱:27,发件箱:20

为实现这一点,我意识到仅凭状态无法区分数据。 所以我添加了几个过滤器。

下面的屏幕是"收件箱"磁贴配置。

收件箱的收件箱服务URL:

/sap/opu/odata/IWPGW/TASKPROCESSING; mo; v = 2/TaskCollection/$ count/?$ filter = TaskDefinitionID eq'RFA'和Processor eq'INDIVIDUAL'和ProcessorName eq'INBOX'和 (状态为" READY"或状态为" IN_PROGRESS"或状态为" FOR_RESUBMISSION")

计数的发件箱服务URL:

/sap/opu/odata/IWPGW/TASKPROCESSING; mo; v = 2/TaskCollection/$ count/?$ filter = TaskDefinitionID eq'RFA'和Processor eq'INDIVIDUAL'和ProcessorName eq'OUTBOX'



我在类和方法中添加了自己的编码。

类名:ZCL_TGW_TASK_FACADE_ABS

方法:QUERY_TASKS

LOOP AT mt_filter_select_options INTO ls_filter_select_option。
IF ls_filter_select_option-property ='Status'。
LOOP AT ls_filter_select_option-select_options INTO ls_select_option。
INSERT ls_select_option INTO TABLE。 br> ELSEIF ls_filter_select_option-property ='TaskDefinitionID'。
遍历AT ls_filter_select_option-select_options INTO ls_select_option。
插入ls_select_option INTO TABLE lt_select_options_task。
ENDLOOP。
ELSEIF ls_filter。 > LOOP AT ls_filter_select_option-select_options INTO ls_select_option。
INSERT ls_select_option INTO TABLE lt_select_options_proc。
ENDLOOP。
ELSEIF ls_filter_select_option-property ='ProcessorName'。 ls_select_option INTO表lt_select_options_proc_name。
ENDLOOP。 ct_options
AND task_def_id IN lt_select_options_proc
AND处理器IN lt_select_options_proc
AND Processor_name IN lt_select_options_proc_name。
插入ls_task INTO TABLE et_tasks。
ENDLOOP。


依靠瓷砖可以正常工作。


----------------------------------------

问题来了!

但是,当我单击图块时,ABAP方法不会添加过滤器,而是仅显示每个参数(收件箱或发件箱)过滤器的状态。 当我单击平铺按钮并确认Fiori收件箱屏幕仅发送状态时,我抓住了oData。

这就是明细数据具有不同编号的原因。

收件箱中的收件箱计数:27->使用状态和拥有者(" RFA"," INDIVIDUAL"," INBOX")过滤器计算的系统

收件箱中的详细信息:36->仅根据状态计算的系统

获取收件箱oData:

GET TaskCollection?sap-client = 100&$ skip = 0&$ top = 110&$ orderby = CreatedOn%20desc&$ filter =(( Status%20eq%20%27READY%27%20or%20Status%20eq%20 %27RESERVED%27%20or%20Status%20eq%20%27IN_PROGRESS%27%20or%20Status%20eq%20%27EXECUTED%27 )))&$ select = SAP__Origin%2cInstanceID%2cTaskDefinitionID%2cTaskDefinitionName%2cTaskTitle%2cCreatedByName% 2cCreatedBy%2cCompletionDeadLine%2cSubstitutedUserName%2cStatus%2cPriority%2cPriorityNumber%2cHasComments%2cHasAttachments%2cHasPotentialOwners%2cCreatedOn%2cTaskSupports%2cSupportsClaim%2cSupportsFlease2%

花费了数次后,我知道用于切片计数的Service URL过滤器和用于详细数据的过滤器完全不同。 Fiori我的"收件箱"屏幕使用磁贴参数确定状态,并将其发送到SAP(方法)。

下面是每个图块参数设置。

收件箱参数:allItems = true

发件箱参数: allItems = true&outbox = true

我尝试添加一些参数,包括字段名称,但被SAP流程忽略。

SAP仅发送两种状态列表(收件箱:4状态,发件箱:2状态)。


为了您的理解,我尝试添加尽可能多的屏幕。

我的底线是这个。

当我单击每个图块时,我希望从Fiori我的收件箱中获取除状态以外的更多参数或过滤器,以便我可以在方法中添加ABAP编码以拆分相应的数据。

如果可以这样做,我可以拆分用户收件箱,用户发件箱,部门收件箱和部门发件箱。

为解决这个问题,我尝试了几件事。

1。在方法SET_QUERY_STRING_OPTION中添加了自己的过滤器。

it_filter_select_options []不可编辑,因此在mt_filter_select_options []中添加了几个过滤器选项。 ->看起来还可以,但是系统在oData的某处使用了原始过滤器。

2。尝试在单击图块时在SAPUI5一​​侧修改oData。 ->很难。

请让我知道如何实现这一目标。

非常感谢您。

维克多

(8.8 kB)
付费偷看设置
发送
3条回答
三十六小时_GS
1楼-- · 2020-08-14 21:50

你好,维克多

非常感谢您的详尽解释。

正如您所说,是的,服务URL字段中定义的URL仅用于计数。 由于这是一个odata请求,因此您可以在其中设置每个所需的过滤器。

您知道存在"方案定义"的可能性,但这只会针对任务定义ID进行过滤。

按照标准,应用程序会按状态进行过滤以获取任务列表,并且此任务已在应用程序中进行了硬编码,因此当前不支持您所请求的内容。

谢谢

亲切的问候,

布鲁诺

Haoba3210
2楼-- · 2020-08-14 21:40

嗨,布鲁诺,

我尝试在SAP Java Enterprise Portal 7.5 SP17的FLP上实现发件箱图块

,但是在iview应用程序参数中设置时,它不喜欢&outbox = true参数。

它接受其他参数,例如expertMode = true&allItems = true

我遇到错误

{"错误":{"代码":空,"消息":{" lang":" en","值":"发生错误。500内部服务器错误。日志ID:C0000A6F5E0F1B2100000002000055C2"}}}

[EXCEPTION]
org.apache.olingo.odata2.api.exception.ODataApplicationException:javax.ejb.EJBTransactionRolledbackException:事务以错误结束,原因: 嵌套的异常是:javax.ejb.EJBException:ASJ.ejb.005043(组件失败: sap.com/tc~bpem~tm~ear ,BC-BMT-BPM-DSK)公共java.util.List com.sap.bpem.tm.query.QueryManagerBean.queryOwnTasks的调用引发异常 (com.sap.security.api.IUser,java.util.Locale,java.util.TimeZone,com.sap.bpem.tm.task.LifeCycle [],com.sap.bpem.tm.task.Category [] ,com.sap.bpem.tm.task.PrincipalAssignmentStatus [],com.sap.bpem.tm.task.Priority [],java.sql.Timestamp,java.sql.Timestamp,java.util.Set,java.sql .Timestamp,java.sql.Timestamp,java.sql.Timestamp,java.sql.Timestamp,java.util.Set,com.sap.glx.util.id.UID,com.sap.bpem.tm.query.QuerySortCriteria Bean实例com.sap.bpem.tm.query.QueryManagerBean@62d86d8f上的[],com.sap.bpem.tm.query.QueryResultParameters,com.sap.bpem.tm.query.QueryContentCriteria,java.util.Set)方法 对于豆 sap.com/tc~bpem~tm~ear*annotation|sap.com~tc~bpem~tm~ejb.jar*annotation|QueryManagerBean 在应用程序 sap.com/tc~bpem~tm~ear 。 嵌套的异常是:java.lang.NullPointerException:尝试在以下位置调用从com.sap.bpem.index.object.IObjectIndex.getEndTime()
返回的空对象的方法java.sql.Date.getTime()时 com.sap.bpm.odata.logging.BPMODataErrorCallback.getExceptionForTracing(BPMODataErrorCallback.java:129)

有什么想法吗?

致谢

奥托(Otto)

落灬小鱼
3楼-- · 2020-08-14 21:34

感谢您提供信息。

一周热门 更多>