Period 010/2009 is not open for account type S and G/L 799999

上篇文章中,我维护了会计期间,这次我再用MB1C,movement type为561来增加几个物料的库存数量。

image

输入完这些信息后,按回车。

image

进来了,看样子,会计期间的问题确实是解决了。

image

输入Material和Quantity,按回车。变成这个画面。

image

同时系统提示了错误信息。

image

意思就是说,2009年10月的会计期间没有对account type S和G/L799999打开。噢,光打开会计期间还不行,还得打开对应account type和G/L的会计期间。

在命令行输入OB52,或者在路径中寻找这个Tcode。

image

image

这是OB52的画面。

我们使用的公司是1000,这个公司account对应的会计期间是到2004年,所以我无法过帐。

OB52中第二列account type的说明

image

+号是所有都适用的,即便是为每个account type单独指定了,仍然需要用这个+的

image

我把截止年份都改为2009年了。

点击image 。这回增加库存数量应该没问题了吧。

欲知结果如何,请看下篇博文叙述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很可能是因为`TIMER_PERIOD`的数据类型不匹配而导致设置定时器计数值出错。在S9S12G128芯片中,定时器计数器的计数值是一个16位无符号整数,范围是0x0000~0xFFFF。因此,如果`TIMER_PERIOD`的数据类型不是16位无符号整数,就会导致设置定时器计数值出错。 要解决这个问题,可以将`TIMER_PERIOD`的数据类型改为16位无符号整数,即`unsigned int`或`uint16_t`。同时,为了避免数据类型不匹配的问题,可以将定时器计数值直接赋值给`TC7H`和`TC7L`寄存器,而不是使用`TC7`寄存器。具体代码如下: ``` #define TIMER_PERIOD 8000 // 定时器计数值 void timer_init(void); interrupt VectorNumber_Vtimch7 void timer_isr(void); void main(void) { timer_init(); // 初始化定时器 EnableInterrupts; // 开启全局中断 for(;;) { // 主循环中可以执行其他操作 } } void timer_init(void) { TSCR1 = 0x80; // 启动定时器,使用内部总线时钟 TSCR2 = 0x00; // 设置定时器时钟分频系数为1,不使用输出比较功能 TIOS |= 0x80; // 设置定时器7为输出比较模式 TC7H = TIMER_PERIOD >> 8; // 设置定时器计数值的高8位 TC7L = TIMER_PERIOD & 0xFF; // 设置定时器计数值的低8位 TIE |= 0x80; // 开启定时器7的中断 } interrupt VectorNumber_Vtimch7 void timer_isr(void) { TFLG1 |= 0x80; // 清除定时器7中断标志位 // 在这里执行需要定时执行的操作 } ``` 在上述代码中,首先将`TIMER_PERIOD`的数据类型改为了`unsigned int`,并将其值设为8000,即定时器计数值的1/1000。然后在`timer_init()`函数中,将定时器计数值的高8位和低8位分别赋值给`TC7H`和`TC7L`寄存器。最后开启定时器7的中断。 这样做可以避免数据类型不匹配的问题,同时也可以提高代码的可读性和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值