在销售单中,我们可能按大包装进行销售,单有时库存不够,系统出现带小数的确认数量。为了避免这个出现,我们可以使用增强进行避免。
在单元ZXATPU02添加代码如下:
data: w_av_vrkme like atpcc-atpm1,
w_av_vrkme_n like atpcc-atpm1,
w_av_pc like atpcc-atpm1.
* only if more ordered the available
check: T_ATPCSX-bdmng > p_atpcc-atpm1.
* available only partial ? via MOD
w_av_vrkme = p_atpcc-atpm1 mod ( T_ATPCSX-umrez * T_ATPCSX-umren ).
* rounded up in KAR (via DIV)
w_av_vrkme_n = ( p_atpcc-atpm1 div T_ATPCSX-umrez ) * T_ATPCSX-umren.
* rounded up quanitity in PC
w_av_pc = w_av_vrkme_n * T_ATPCSX-umrez / T_ATPCSX-umren.
* only if we have one line otherwise too complex
read table T_MDVEX index 2.
if sy-subrc > 0.
read table T_MDVEX index 1.
if sy-subrc = 0.
if w_av_vrkme <> 0.
if p_atpcc-atpm1 < ( T_ATPCSX-umrez / T_ATPCSX-umren ).
T_MDVEX-mng02 = 0.
else.
T_MDVEX-mng02 = w_av_pc.
endif.
MODIFY t_mdvex index 1.
endif.
endif.
endif.
date命令的功能是显示和设置系统日期和时间。
在linux服务器上可通过 man date上查看 date的用法
date 设置时间格式
命令中各选项的含义分别为:
-d datestr, --date datestr 显示由datestr描述的日期
-s datestr, --set datestr 设置datestr 描述的日期
1、在显示方面
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区 %a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
2、在设定时间方面
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
3、日期的计算
date +%Y%m%d //显示前天年月日
date +%Y%m%d --date="+1 day" //显示前一天的日期
date +%Y%m%d --date="-1 day" //显示后一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期
4、示例:
好几年都没更新博客了,人也变懒了。这里介绍一下个人这几年来使用Linux安装软件的经验,也希望对Linux新手们有所帮助,同时欢迎大家吐槽。
Linux软件安装由于不同的Linux分支,安装方法也互不相同,介绍几种常见的安装方法。
1. 源码安装,对于本身具有开源血统的Linux系统来说,几乎所有的开源软件都支持在Linux平台运行,而这些软件一般都以源码打包形式分发,源码安装适用于所有Linux分支,只需要系统安装了gcc、make、以及automake和autoconf,源码安装的一般方法如下:
cd 源码目录 ./configure [opts] make make install
其中configure后面的选项一般可以通过./configure --help来查询,根据自己的喜好使用一些选项。这里正确的工作流程是先看源码目录下面的Readme,这里一般会有提示安装方法,那么只需要按照描述照办即可,如果Readme没有提示(事实上很少),如果其中提及到官网,可以到官网去查阅相关安装文档,如果没有,可以google搜索软件的安装方法。如果安装过程遇到问题,问题一般在执行configure命令就会出现,看看configure的输出日志,如果嫌日志太多,可以把日志重定向到文件,对文件查找error,根据报告的错误日志,一般有经验的可能立马就发现问题,不太理解的google搜索,一般来说遇到问题的肯定不止你一个人,如果在make阶段遇到错误,一般都是依赖库没有安装,直接google搜索依赖库下载安装即可(或使用后面提到的安装方法);源码安装后的包如果需要卸载可能是最头疼的,不能借助任何工具,往往直接删除可执行文件或库并没有把包卸载彻底,卸载的时候尽量查看官网的文档,看是否有涉及软件安装后的所有位置,比如MYSQL官网就有介绍,然后到每个位置把相关的文件或文件夹删除即可。
2. rpm包安装,RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,几乎在所有的Linux平台上都支持,已经成为行业标准。这里简单介绍一下包管理器,包管理器提供对软件的安装、升级、查询以及卸载等,具体差别可以查阅相关文档。rpm包的安装非常简单,只需要输入rpm -i xxx.rpm 即可完成,卸载只需要rpm -e 包名 即可完成,升级通过rpm -U 包名 命令完成(需要机器联网),rpm -q 提供相关查询,这里不详细说明。如果机器没联网,rpm安装安装过程很有可能出现错误,最常见的就是依赖包缺失,把缺失的依赖包安装即可;如果在机器联网的情况下,rpm会自动在互联网搜索相关依赖包并安装。
3. deb包安装,deb是debian及其衍生版本如Ubuntu的安装包,在这两个系统的桌面环境下,可双击包直接安装,在命令行下可以通过dpkg -i xxx.deb完成,通过dpkg -r 包名 完成。很多的Linux分支都提供了apt-get包管理系统来对deb软件包进行支持,apt-get需要机器联网,通过source.list文件提供的源(下载源)去下载相应软件包,通过输入命令apt-get install 软件包名 直接安装软件,输入 apt-get remove 软件包名 卸载对应软件包,这里不赘述命令,apt-get 包管理器实施对依赖包的管理,所以非常方便。在国内可以找一些速度快的源(更改source.list文件),具体方法可以查阅相关文档。
4. yum安装软件包,Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的软件包管理器,yum也对依赖关系进行管理,必须在联网条件下进行(也可以给yum设置代理),使用yum安装软件也是本人最常用的方法,在shell命令行下输入yum install 软件包名 即可完成安装,如果依赖包没安装,会自动安装,卸载通过yum remove 包名 即可完成,与apt-get 类似。
以上简要介绍了一下本人常用的Linux下几种包安装方法以及涉及到的问题,apt-get 与 yum并不一定能安装最新的软件包,那么需要我们自己去官网下载最新的软件包(源码打包格式或RPM格式),那么可能就要使用到源码安装或rpm安装方式。