点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我需要以bex的形式获取当前期间的第一个期间(用户可以提供当前期间或上一个或任何期间)。
ex:如果用户输入009.2019,则实际数字应该从001.2018到009.2019。
计划关键值的值应从010.2019到012.2020。
为实际键图中的变量编写的代码。
" ZFISCPER_PYFP"时。
IF i_step =2。"在弹出窗口之后
读取表i_t_var_range并使用KEY vnam ='ZFISCPER_PYFP'进入ls_var_range。
如果sy-subrc =0。lv_year = ls_var_range-low(4)-1。
lv_fischar = lv_year。
SHIFT lv_fischar左侧删除领先空间。
将lv_fischar(4)'001'连接到lv_firstPeriod中。
将lv_fischar ls_var_range-low + 4(3)合并为lv_ofper。
ls_range-low = lv_firstPeriod。 "上一年的第一期
ls_range-high = lv_ofper。 "当前年份日期的用户输入期间
ls_range-sign ='I'。
ls_range-opt ='BT'。
附加ls_range至c_t_range。
ENDIF。
ENDIF。
,但这没有提供所需的输出。 相反,我们从多维数据集获取所有数据。
此致
拉奇
通常通过使用自定义退出变量类型" Not input ready"(限制输入变量)来限制操作键图形来解决。
Cmod/Badi出口中相同代码:
数据:lv_year1类型i。
数据:lv_fiscalper1类型poper。
数据:lv_fiscalyear1类型bdatj。
数据:lv_ofper1类型/bi0/oiofper。
数据:lv_curdate1类似于sy-datum。
数据:lv_fischar1(8)C型。
数据:lv_firstPeriod1 TYPE/bi0/oiofper。
数据:lv_fiscalper1_prev类型弹出器。
数据:lv_fiscalyear1_prev类型bdatj。
数据:lv_ofper1_prev类型/bi0/oiofper。
当" ZFISCper_actual"时。 "上一年度迄今为止会计期间
IF i_step =2。"在弹出窗口之前
如果sy-subrc =0。lv_curdate1 = sy-datum。
调用函数" DATE_TO_PERIOD_CONVERT"
导出i_date = lv_curdate1
i_periv ='K4'导入
e_buper = lv_fiscalper1
e_gjahr = lv_fiscalyear1
EXCEPTIONS input_false = 1
t009_notfound = 2
t009b_notfound = 3
其他=4。
连接lv_fiscalyear1 lv_fiscalper1 INTO lv_ofper1。
ENDIF。
IF sy-subrc <> 0。
消息ID sy-msgid类型sy-msgty编号sy-msgno与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
退出。
ENDIF。
lv_fiscalyear1_prev = lv_fiscalyear1-1-
lv_fiscalper1_prev ='001'。
将lv_fiscalyear1_prev lv_fiscalper1_prev连接到lv_ofper1_prev。
IF(lv_ofper1 IS INITIAL)。
引发例外类型cx_rs_error。
ELSE。
清除ls_range。
ls_range-low = lv_ofper1_prev。
ls_range-high = lv_ofper1。
ls_range-sign ='I'。
ls_range-opt ='EQ'。
附加ls_range到c_t_range。
ENDIF。
ENDIF。
创建一个CKF/RKF并将实际的关键指标和0fiscper拖入其中,并使用上面提到的cust exit变量限制0fiscper。 每当用户执行此报告时,他都会看到过去几年的第一个月到当前期间的实际关键数据。 如果您想为用户提供输入提示,只需创建一个称为" Actual"等的虚拟按键图,并使其以间隔/单个输入即可准备好,然后隐藏按键图。 因此,用户只需输入输入内容,但仅根据退出情况,所有操作都会进行。 输入只是为了让用户满意(在我们的案例中,他希望输入提示不惜一切代价:))。
注意:如果要查看从当前期间+1到下个月的下一年的数据,可以为Plan keyfiure创建相同的内容。 但是逻辑基本相同,几乎不需要更改
此致
raki
您可以在调试中检查,检查内部表中的值是什么,然后查看输入的值是否与表中的值匹配。
感谢您的有效回复。 除了上面的FM,上面的代码是否有任何错误? 读取语句未执行。 我认为i_t_varrange没有填充。 我们在提示中将输入作为009.2019。
实际上i_t_varrange是导入参数。 如果用户在输入提示中提供009.2019,则此值将存储在i_t_var_range中。 但是在上面的代码中,用户输入未存储在此参数中。 因此读取表无法正常工作。请检查我的代码onc
一周热门 更多>