【转载】怎样让SAP的货币、数字数据类型保留4位小数或者自定义位数小数

本文介绍了一种在SAP系统中使货币数据类型保留4位小数的解决方案。通过自定义域和数据元素的方式,既满足了业务需求,又保持了与标准货币类型CURR的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎样让SAP的货币数据类型保留4位小数 
 
SAP数据字典中的货币类据类型为CURR,只保留2位小数,而我们在实际开发时,却经常需要保留4小数。若仅仅是显示报表倒问题不大,内表中可以使用P类型,随便自己定义多少位小数点。但笔者的报表需要保存至数据表中,数据表的数据类型不能使用P类型,这如何处理呢? 
 经过笔者深入的研究发现,咱们自定义一个域,域的类型仍旧设定为CURR,并在这里指定小数位数,比如我创建了如下图所示的ZWERT4的域。 
 
然后再建立数据元素,该数据元素的域指向刚才创建的自定义域(如下图)。 
 
    到此为止,一切准备工作就完成了。当我们创建数据表时,字段类型直接指向该数据元素即可实现保留4位小数的需求。并且该字段与货币类型CURR的功能兼容,同样可以关联币种等信息。
### 使用Verilog实现四位数字密码锁 #### 功能描述 四位数字密码锁的主要功能包括设置和保存四位密码、开锁逻辑以及错误处理机制。通过硬件描述语言(HDL),特别是Verilog,能够有效地实现这些复杂的控制逻辑[^1]。 #### 系统模块划分 为了更好地理解和构建此项目,可将其分为几个主要组件: - **键盘扫描模块**:负责读取用户的按键输入。 - **状态机控制器**:管理整个系统的运行流程,如等待输入、比较密码等不同阶段之间的转换。 - **密码存储与比较单元**:用于储存设定好的密码,并在每次尝试开锁时对比当前输入序列。 - **反馈提示装置**:提供视觉或听觉信号给用户指示操作成功与否。 #### Verilog代码实例 以下是基于上述原理的一个简化版四位数字密码锁的Verilog实现方式: ```verilog module password_lock( input wire clk, rst_n, input wire [3:0] key_in,// 键盘输入接口 output reg pass_fail = 0// 输出结果标志 ); parameter IDLE=2'b00,CHECKING=2'b01,PASS=2'b10,FAIL=2'b11; reg [1:0] state,next_state; wire [15:0] passwd; // 预存密码 reg [15:0] curr_input;// 当前输入缓冲区 integer i; always @(posedge clk or negedge rst_n) begin if(!rst_n) state<=IDLE; else state<=next_state; end assign passwd = 16'd7890 ;// 此处应替换为实际要保护的数据 always @(*) case(state) IDLE: if(key_in!=4'hF)// 如果有有效按键按下则进入CHECKING态 next_state=CHECKING; else next_state=IDLE; CHECKING:// 收集完整的四个字符作为待测字符串并与passwd做异或运算求得差异度 for(i=0;i<4;i=i+1) curr_input[i*4+:4]=key_in; if(curr_input==passwd) next_state=PASS; else begin pass_fail=~pass_fail; next_state=FAIL; end PASS:next_state=IDLE; FAIL:next_state=(pass_fail)?FAIL:IDLE; default : next_state=IDLE; endcase endmodule ``` 这段程序定义了一个简单的有限状态机(FSM)[^3],它可以根据不同的条件改变自身的内部状态从而完成特定的任务,在这里就是用来判断是否允许访问受控资源的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值