元字段

元字段

元字段用于采购的 Enjoy 事务来描述业务内容并从具体数据持有中分离。使用系统中的元字段,因此可以在统一的基础上参考业务变量。

  • 范例
    通过技术字段MEPO1211-MEINS中用户接口和字段EKPO-MEINS中数据持有表示业务变量'采购订单单位'。

从技术上说,元字段是整型常数,可以在类型组MMMFD中找到这些元字段的定义。

  • 注释
    从90000000开始的命名范围可用于客户应用程序(mmmfd_cust_01)。

元字段和字段选择

根据元字段确定字段选择。因此,客户自己的子屏幕必须知道表示字段的清单和到元字段的分配。

在 BAdI ME_GUI_PO_CUST 中创建关系。

一方面,在方法 SUBSCRIBE 中存在指定的 DDIC 结构,从创建字段目录的组件中。另外,在每一情况下在方法 MAP_DYNPRO_FIELDS 中建立对相关元字段的链接。

在 BAdI ME_PROCESS_PO_CUST 的方法 FIELDSELECTION_ITEM 中,该方法是BAdI ME_GUI_PO_CUST 的前提,然后这些元字段用于影响客户自己字段的选择。

元字段和错误处理

元字段在错误处理中也有重要的功能。这些元字段在消息和业务内容中建立连接。

  • 范例
    可以在处理消息时控制光标的定位。

执行自己的检查时如果需要进行此操作,那么使用下列宏:

  • mmpur_metafield
    该宏将元字段与使用后续宏 mmpur_message_forced 的生成消息链接(参看下方)。可以在类型组 MMMFD 中找到已知元字段的清单。这也包含客户客户增强功能的一些定义(MMMFD_CUST_01 到 MMMFD_CUST_10)。
  • mmpur_message_forced
    可以使用该宏来生成实际的消息。该消息与已知的业务对象链接(例如,凭证抬头,凭证项目)并且与以前指定的元字段链接。该宏仅需要7个参数:消息类别(I,W,E),消息类,消息编号和四个消息参数。(另请参看 ABAP 消息语句)。

其他注释

  • 上述宏定义在程序 MM_MESSAGES_MAC 中。请将该程序包括在您自己的应用程序中!
  • 决不发布 BAdI ME_GUI_PO_CUST 中的消息。这是业务逻辑的任务并且因此必须通过 BAdIME_PROCESS_PO_CUST 进行该操作。决不使用 BAdI ME_PROCESS_PO_CUST 中的 ABAP 语句 MESSAGE。请仅使用宏 mmpur_message_forced。该宏仅在消息收集器中写消息。
    如果需要将业务对象标记为无效的以便防止过帐,那么另外必须使用相关接口的INVALIDATE ( ) 方法。在该连接中,另请参看 BAdI ME_PROCESS_PO_CUST 的PROCESS_ITEM 方法中的代码示例。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果我们需要对一个对象列表中的某个字段进行求和,并且需要在最后加上一个单位元素,可以使用reduce方法来实现,示例如下: 假设我们有一个包含多个订单的列表,每个订单都有一个金额字段amount,我们需要根据amount字段求和,并在最后加上一个单位元“元”。 ```java List<Order> orders = new ArrayList<>(); orders.add(new Order("order001", 100)); orders.add(new Order("order002", 200)); orders.add(new Order("order003", 300)); BigDecimal totalAmount = orders.stream() .map(Order::getAmount) .reduce(BigDecimal.ZERO, BigDecimal::add) .add(BigDecimal.ONE); System.out.println("Total amount: " + totalAmount + "元"); ``` 上面的代码中,我们使用reduce方法将所有订单的金额求和,并在最后加上一个单位元素。reduce方法的第一个参数表示初始值,这里我们传入了BigDecimal.ZERO作为初始值;第二个参数表示如何将两个元素合并,这里我们使用了BigDecimal的add方法;最终使用add方法将总金额加上一个元素,得到最终的结果。 其中,Order类的定义如下: ```java class Order { private String orderId; private BigDecimal amount; public Order(String orderId, double amount) { this.orderId = orderId; this.amount = BigDecimal.valueOf(amount); } public BigDecimal getAmount() { return amount; } } ``` 需要注意的是,由于金额字段是一个大数值类型,因此我们使用了BigDecimal类来进行精确计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值