首页 > 其他分享 >SAP报表简明教程

SAP报表简明教程

时间:2023-12-15 10:22:23浏览次数:34  
标签:教程 MATNR layout &-----------------------------------------------------------

SAP报表简明教程

 

一、报表需求,根据物料编码和物料类型 查询报表。用户输入界面要求如下: 

 

二、开始写代码。先进入 TCODE:SE38 ,新建一个程序。 

  

点击创建按钮,如下图: 

 

 

输入标题,写明 此程序的功能 作者,创建时间,点保存,

 

 

输入自己事先建的 开发包, 

 

点击保存按钮, 

 输入传输请求号,如果没有就新建一个。点击 绿色的 勾 按钮。 

进入页面,如图: 

  

开始写代码:

 

定义一个结构体,这个结构体 字段会展示到报表上,字段来源可以多个表。

TYPES:BEGIN OF ty_MARA,  
  MATNR TYPE MARA-MATNR,   
  MTART TYPE MARA-MTART,

  MAKTX TYPE MAKT-MAKTX,
END OF ty_MARA.

DATA lt_mara TYPE TABLE OF ty_MARA.

 

代码解释:

 

 

TYPES:BEGIN OF ty_MARA,   定义结构体的名称

MATNR TYPE MARA-MATNR,    
MATNR 是结构体字段,可以自定义,
END OF ty_MARA.  这是结尾。

DATA lt_mara TYPE TABLE OF ty_MARA.  这句是定义一个 类型是结构体ty_MARA 的内表lt_mara。 

接着写:

 

DATA ls_layout TYPE slis_layout_alv. 定义报表的显示风格
DATA lt_fieldcat TYPE slis_t_fieldcat_alv.存放输出栏位名称的列表
DATA ls_fieldcat TYPE slis_fieldcat_alv.负责整个ALV的全局属性

DEFINE fill.
  CLEAR:ls_fieldcat.
*字段名
  ls_fieldcat-fieldname = &1.
*别名
  ls_fieldcat-seltext_l = &2.
  ls_fieldcat-seltext_m = &2.
  ls_fieldcat-seltext_s = &2.
  ls_fieldcat-outputlen = &3.
  ls_fieldcat-no_zero = &4.
  ls_fieldcat-qfieldname = &5.
  APPEND ls_fieldcat TO lt_fieldcat.
END-OF-DEFINITION.

 SELECT-OPTIONS I6 FOR MARA-MATNR.  "这就是页面显示需要输入的物料

 SELECT-OPTIONS I7 FOR MARA-MTART.  "这就是页面显示需要输入物料类型

*  AND   ERDAT IN I6


INITIALIZATION.  "该事件在屏幕未显示之前执行,对程序设置值及屏幕元素进行初始化赋值。


AT SELECTION-SCREEN OUTPUT.  用于屏幕输出时的各屏幕元素值的管控
AT SELECTION-SCREEN.

START-OF-SELECTION. 该事件在单击按钮后触发
  PERFORM GET_DATA.   获取屏幕输入值 的子例程

END-OF-SELECTION.

 

 

 PERFORM frm_display_alv.  定义了一些表格风格样式的子例程


*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_data .
SELECT *
   INTO CORRESPONDING FIELDS OF TABLE @lt_mara
   FROM MARA AS a
   LEFT JOIN  MAKT as b ON  a~MATNR = b~MATNR
*  LEFT JOIN MARD as c on a~MATNR = c~MATNR   已经注释了
*  LEFT JOIN eine as d on c~INFNR = d~INFNR   已经注释了

  where a~MATNR in @I6.
这是sql语句,两个表联合查询 ,物料基本资料表MARA 和物料描述遍,这两个表的 主键都是MATNR,他们用MATNR 关联起来


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_display_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
  PERFORM frm_set_fieldcat.
  PERFORM frm_set_layout.
  PERFORM frm_set_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_fieldcat
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_fieldcat . 作用是 把表头 字段 的英文改成中文
  "fieldname  seltext  outputlen  no_zero
  fill: 'MATNR' '物料' '' '' ''.
  fill: 'MTART' '物料类型' '' '' ''.
  fill: 'MAKTX' '描述' '' '' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_layout
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_layout . 
  CLEAR:ls_layout.
  ls_layout-colwidth_optimize = 'X'.
  ls_layout-window_titlebar = ''.
  ls_layout-zebra = 'X'.
  ls_layout-box_fieldname = 'MATNR'.
  ls_fieldcat-tabname = '物料查询'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-cprog
      i_callback_pf_status_set = ' '
      i_callback_user_command  = ' '
      is_layout                = ls_layout  上面已经定义好了
      it_fieldcat              = lt_fieldcat 上面已经定义好了

    TABLES
      t_outtab                 = lt_mara   这个是已经根据查询条件 查询出的内表
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
ENDFORM.

  

以上就是代码,激活运行之后显示: 

 

我们发现这里不是中文提示,需要设置文本元素:

在ABAP编辑器中:

转到→文本元素→选择文本    进行维护

 

 

 

 

勾选数据字典参考,然后保存,再激活,文本元素要单独激活。

显示这样就正常了。

 

 

查询结果:

标签:教程,MATNR,layout,&-----------------------------------------------------------
From: https://www.cnblogs.com/jiqingsishenet/p/17902771.html

相关文章

  • Go语言编程教程4-枚举
    课程要点了解Golang中的枚举自定义枚举值跳过某个枚举值枚举的常用惯例了解fmt.Stringer接口Golang中的枚举在Golang中并没有像其他语言一样,拥有类似于enum的常规枚举类型,而是通过使用一组常量来实现类似枚举的功能。如下所示,我们定义了三个常量来表示状态语义的枚举值......
  • Go语言编程教程3-变量与常量
    课程要点了解Golang中的变量的使用了解Golang中的常量的使用了解变量和常量的可访问性变量定义变量Golang是一门十分简约的语言,它的变量定义与其他主流语言有一定的相似之处,但是却没有像其他语言一样拥有很多可选的修饰符。在Golang的变量定义中,我们只会用到var这一个修......
  • Go语言编程教程2-Hello World
    课程要点创建并编译运行第一个Golang程序了解GoModule包管理系统使用fmt.Println与println函数分别打印helloworld,并了解它们的异同了解fmt.Printf格式化输出将Golang代码编译为汇编代码对Golang二进制文件进行反汇编了解交叉编译课程内容创建项目按照Go语言的约定,......
  • 无涯教程-Java - acos()函数
    该方法返回指定双精度值的反余弦值。acos()-语法doubleacos(doubled)这是参数的详细信息-d - 双精度数据类型。acos()-返回值此方法返回指定双精度值的反余弦。acos()-示例publicclassTest{publicstaticvoidmain(Stringargs[]){double......
  • 无涯教程-Java - asin()函数
    该方法返回指定双精度值的反正弦值。asin()-语法doubleasin(doubled)这是参数的详细信息-d - 双精度数据类型。asin()-返回值此方法返回指定双精度值的反正弦。asin()-示例publicclassTest{publicstaticvoidmain(Stringargs[]){doub......
  • 传奇世界架设教程开服一条龙
    10分钟架设一个传世游戏教程传世一条龙1、将YMserver压缩包上传到服务器并解压缩到D盘:最终目录为D:\YMserver2、安装环境文件夹里面的所有文件npp.7.8.2.Installer.exe运行库MSVBCRT.AIO.2020.04.10.X86+X64.exe3、游戏IP:199.199.199.199全部替换为你的外网IP包含了以下文件,我已经......
  • 无涯教程-Java - tan()函数
    该方法返回指定双精度值的切线。tan()-语法doubletan(doubled)这是参数的详细信息-d  - 双精度数据类型。tan()-返回值此方法返回指定双精度值的切线。tan()-示例publicclassTest{publicstaticvoidmain(Stringargs[]){doubledegrees=......
  • 无涯教程-Java - cos()函数
    该方法返回指定双精度值的余弦值。cos()-语法doublecos(doubled)d - 此方法接受双精度数据类型的值。cos()-返回值此方法返回指定双精度值的余弦值。cos()-示例publicclassTest{publicstaticvoidmain(Stringargs[]){doubledegrees=45.0......
  • Chat2DB接入文心一言AI教程(原创教程,转载请注明)
    引言关于Chat2DB和文心一言是啥我就不赘述了,由于Chat2DB自带的ai有调用次数限制,所以想着接入百度的文心AI,但是由于网上没有找到相关的教程,此方法是本人研究了一段时间才弄出来的,顺便记录一下备忘,也希望对有同样需求有所帮助!一、注册并实名认证百度智能云账号百度智能云地址:点击......
  • gsap基础-JS动画库
    https://blog.csdn.net/m0_61662775/article/details/131430585https://blog.csdn.net/changbb/article/details/131675810学习文档简介GSAP的全名是GreenSockAnimationPlatform一直发展到今天已经是3.x版本,这是一个适用于现代浏览器的专业Javascript动画库核心语法......