思路:SMARTFORMS里输出的只能是变量或常量,所以你要在输出I_TABLE-DATE前,定义一个全局变量A,写一个简单的取前一个月的逻辑,然后输出I_TABLE-DATE改为A就可以了
步骤:1、在SMARTFORMS--表格--全局设置--全局定义中定义A LIKE CHAR10.
2、在输出I_TABLE-DATE文本前,添加一个程序行,用Function:FIMA_DATE_CREATE等获取上个月数据:“2012年10月”
3、输出文本I_TABLE-DATE改为A,激活即可
你首先要用这个函数得到上一个月才能得到2012年9月.你现在是2012-10-30,怎么会得到2012年9月呢?
CALL FUNCTION 'FIMA_DATE_CREATE'
EXPORTING
I_DATE = SY-DATUM "当前日期
I_MONTHS = '-1' "减1月
I_SET_LAST_DAY_OF_MONTH = 'X'
IMPORTING
E_DATE = LASTDATE. "得到上一个月日期
右键-创建-逻辑流-程序行
在程序行里面去计算上一个月是几月
然后按照你现在的输出方式进行输出
建议在调用smartform之前
就在代码里面计算好
然后在smartform里面直接输出就好了
计算上一个月不用多说吧
你需要计算这个日期的前一个月是多少,方法是先设定一个变量,里面装这个日期的当月第一天,本例就是2012-10-01,然后用这个变量-1,就可以得到上个月的最后一天
然后你取前六位就可以了
concatenate I_TABLE-DATE+0(4) I_TABLE-DATE+5(2) '01' into var
var = var - 1.
输出var+0(6)
data: year(4) type c,
month(2) type c.
year = sy-datum+0(4).
month=sy-datum+4(2).
month = month -1.