文章目录
前言
报表程序是我们SAP中最常用的功能之一,尤其是ALV报表出来之后,报表的开发数据的展示都及其快速强大,同时选择屏幕的筛选功能也是非常实用,今天这篇文章简单介绍一下选择屏幕如何给定初始值。
一、笔者的需求
笔者最近收到需求是开发了一个标准成本实际成本的对比报表,这个报表还是比较常用的,财务那边需要经常查看数据,但是每次进来的时候他们输入的年度和期间其实就是当前日期的上一个月,例如当前是2023.06.那么输入事务码进入后选择屏幕的年度就是2023期间就是5。这样可以极大节省操作时间使用起来也就很方便,既不干扰这两个筛选条件本身的功能也能实现快捷方便操作。
二、实现这种效果有几种方式?
笔者这里介绍2种实现方式,如果大家有要补充的可以评论私信我哦
1、最简单的使用 DEFAULT 关键字
* DATA d_poper TYPE numc2. "ckmlprkeph-poper 参考这个类型也不行
* d_poper = sy-datum+4(2) - 1. "DEFAULT后面不能直接这样写 sy-datum+4(2) - 1
SELECT-OPTIONS:
s_BDATJ FOR ckmlprkeph-bdatj NO INTERVALS DEFAULT sy-datum+0(4), "年度
s_POPER FOR ckmlprkeph-poper DEFAULT d_poper, "期间
s_MATNR FOR ckmlhd-matnr, "物料号
s_PRTYP FOR ckmlprkeph-prtyp, "价格类型
s_BWKEY FOR ckmlhd-bwkey, "工厂
s_BWTAR FOR ckmlhd-bwtar, "评估类
s_VBELN FOR ckmlhd-vbeln. "销售凭证
上面的年度是没问题,但是期间默认为上一个月是没有实现了,笔者也不知道是什么原因。这样写期间前面就多了一个等于号
2、使用 AT SELECTION-SCREEN OUTPUT 事件完成
*&---------------------------------------------------------------------*
*& Report ZCORP014
*&---------------------------------------------------------------------*
*&
*&创建人:LKK
*&创建时间:2023/06/20
*&
*&---------------------------------------------------------------------*
REPORT zcorp014.
INCLUDE zcorp014_top.
INCLUDE zcorp014_frm.
INITIALIZATION.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN OUTPUT."在此语句下面直接给SELECT-OPTIONS声明的对应内表赋值即可s_POPER[]就是我们声明的期间选择输入框
s_POPER[] = VALUE #( sign = 'I' option = 'EQ' ( low = sy-datum+4(2) - 1 high = sy-datum+4(2) - 1 ) ).
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_dis_data.
AT SELECTION-SCREEN OUTPUT 是一个ABAP事件,它是在选择屏幕的PBO(屏幕前处理)阶段触发的。在这个事件中,您可以对选择屏幕进行一些动态的修改,例如给输入字段赋值、改变字段的属性、隐藏或显示字段等。
也可以使用SCREEN内表来访问和修改选择屏幕的元素,例如字段名、长度、可见性等。您也可以使用MODIFY SCREEN语句来应用您的修改。
3、使用内存ID赋值
"给此输入框设置id
s_POPER FOR ckmlprkeph-poper MEMORY ID zqj, "期间
AT SELECTION-SCREEN OUTPUT.
SET PARAMETER ID 'ZQJ' FIELD '12'."这里的iD一定要大写 不然起不到作用
4、关于补充点
a.
b.
c.
如果后期我想起了有什么要补充的会继续写在这里,或者大家有什么想让我介绍的也可以评论私信我哦。
三、总结
以上就是今天要讲的内容,本文仅仅简单介绍了sap中报表如何使用ABAP赋值初始值的3中方法,如果有说错或者不好的地方还望大家提出来见谅。感觉笔者写的好的别忘了关注点赞加评论哦,也欢迎大家一起来讨论。谢谢!