SAP cross distribution chain status在Fiori应用中的draft handling
The explanation why draft handling is necessary in Fiori application could be found from Fiori Design Guideline.
In this blog, I will use the update of field “cross distribution chain status” in S4 Product master Fiori application as example. This field could be found from Fiori UI:
There is corresponding field in old SAPGUI transaction MM03:
The value is stored in table MARA, field MSTAE. The available list of status value could be maintained in this customizing:
When end user clicks edit button and chooses a given value from dialog and press enter key:
The draft instance of this product will automatically be persisted in the backend.
At this time ( product is still in edit mode ), we can find out the lock is still acquired via tcode SM12. Also the draft uuid would be found:
How to find the database table which stores the draft data of Cross distribution chain status? In tcode BOBX, open BO I_PRODUCTWD and double click node I_PRODUCTSALESWD, you can find out table name PROD_SALES.
Query this table with the draft uuid found from SM12 against field PARENTDRAFTUUID, and you can find one corresponding entry for draft instance in Fiori UI.
The parent entry could be found in PROD_ROOT:
When user clicks save button in Fiori UI, an HTTP post will be sent to backend:
The method COPY_DRAFT_TO_ACTIVE_DOCUMENT of class configured in BOBX is called, to merge the data in draft table to MARA, this is called activation.
The persistence to MARA is done by function module MATERIAL_MAINTAIN_DARK:
The value to be persisted is maintained in table parameter amara_ueb:
Meanwhile once activation is done successfully, the draft entry will be removed automatically. In summary, the draft handling process could be described in the following graphs:
Figure1: user input is stored in draft table PROD_SALES
Figure2: user clicks save button
- 给人挖矿还不自知 电脑已变黑客肉鸡
- 反序列化漏洞屡被黑客利用,危害巨大,代码怎样写才安全?
- Mifa 主题微信编辑器
- Mifa GitHub Pages 主题
- Mifa Design:一个服务于 Markdown 的设计体系
- 未来机器人大脑将获取互联网知识自我学习
- 【架构拾集】: Android 移动应用架构设计
- Dore 混合应用框架 —— 基于 React Native 的混合应用迁移方案
- Android6.0源码分析之View(二)--measure Android6.0源码分析之View(一)
- 程序员,2017年你的技能树上增加了哪些新技能?
- Android6.0源码分析之View(一)
- 2017 年,我挖的那些开源软件坑
- Android6.0蓝牙开发中获取附近低功耗蓝牙设备结果权限问题分析
- 我的技术投资策略:如何决定学习哪一个新技术的?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解Linux如何生成随机数字和字符串
- linux(ubuntu)用户连续N次输入错误密码进行登陆时自动锁定X分钟
- linux下安装golang的方法
- Linux系统的文件传输方法
- CentOS 6.8 NFS 文件共享设置的方法
- linux如何mount挂载磁盘并设置开机自动mount的实现
- 浅谈Linux的编码及编码转换方法
- 在 Linux 上用 DNS 实现简单的负载均衡的方法
- centos7.2.1511安装jdk1.8.0_151及mysql5.6.38的方法
- Linux CentOS使用crontab设置定时重启的方法
- centos安装php5、卸载php、安装php7的教程
- centos7中crontab定时计划任务5分钟一次命令写法
- Ubuntu16.04 安装Teamviewer的教程详解
- 01 . OpenResty简介部署,优缺点,压测,适用场景及用Lua实现服务灰度发布
- 详解Linux iptables 命令