SAP-LIST 报表-实战

作者: 鼠小倩 | 来源:发表于2022-07-31 23:33 被阅读0次
业务背景:

通过前期开发的学员录入考勤系统积累的学员信息、学员考勤信息。为了便于管理与统计,现需要实现学员卡片打印、学员考勤打印。(write方式)

功能分析:

1)为实现打印功能,需用write方式;开发学员卡片打印程序、学员考勤打印程序。
2)课堂上确认具体格式需求。

打印实现效果
代码实现

1.LIST报表属性绘制基本页面

*&---------------------------------------------------------------------*
*& Report ZHY01_HY101_20220627_02
*&---------------------------------------------------------------------*
*& Program Name         <程序名称>: ZHY01_HY101_20220627_02
*& Purpose              <程序用途>: LIST 作业
*& Project Name         <项目名称>: SAP_ABAP_01期间
*& Created by           <创 建 人>: HY101
*& Created on           <创建日期>: 20220627
*& FC Consultant        <功能顾问>: 鼠小倩
*& Description          <功能描述>: LIST 作业
*&---------------------------------------------------------------------*
*              Modification Log<程序修改日志>
*<日期>        <开发者>       <功能顾问>            <修改描述>
* 20220627     HY101       鼠小倩                S4HK909676
*&---------------------------------------------------------------------*
REPORT ZHY01_HY101_20220627_02 NO STANDARD PAGE HEADING LINE-SIZE 150.

*定义变量及初始化
   DATA: D_DATE    TYPE D,
         D_TIME    TYPE T.

*页眉
TOP-OF-PAGE.
WRITE '学员基本信息卡' COLOR COL_HEADING.

START-OF-SELECTION.
*首行
  ULINE AT 20(100).  "绘制横线
  WRITE: /20 SY-VLINE,119 SY-VLINE.  "位置20和位置120绘制竖线
  ULINE AT /20(100).

*左右外框+字
D_DATE = SY-DATUM.
D_TIME = SY-UZEIT.
WRITE: /20 SY-VLINE,'学员基本信息卡:'.
POSITION 95.
WRITE: (25) D_DATE USING EDIT MASK '查询日期:____年__月__日',119 SY-VLINE,
       /20 SY-VLINE,119 SY-VLINE.
POSITION 96.
WRITE: (25) D_TIME USING EDIT MASK '查询时间:__点__分__秒',119 SY-VLINE,
       /20 SY-VLINE,30'学号:',119 SY-VLINE,
       /20 SY-VLINE,30'姓名:',119 SY-VLINE,
       /20 SY-VLINE,30'性别:',119 SY-VLINE,
       /20 SY-VLINE,30'年龄:',119 SY-VLINE.
ULINE AT /20(100).

*页数
WRITE: /20 SY-VLINE,105 '共',107 sy-pagno,'页',119 SY-VLINE,
       /20 SY-VLINE,105 '第',107 sy-pagno,'页',119 SY-VLINE.

*热点-考勤记录
SKIP TO LINE 13.
*INCLUDE <LIST>.
FORMAT HOTSPOT on COLOR 6 INVERSE ON.
WRITE 23'考勤记录'.
FORMAT HOTSPOT OFF COLOR OFF.
*AT LINE-SELECTION.

*考勤记录外框:左右下
DO 21 TIMES.
WRITE: /20 SY-VLINE,119 SY-VLINE.  "位置20和位置120绘制竖线
ENDDO.
ULINE AT /20(100).

*考勤汇总-横线
SKIP TO LINE 30.
ULINE AT /80(40).

*考勤汇总-竖线
SKIP TO LINE 30.
DO 5 TIMES.
  WRITE: /80 SY-VLINE.
ENDDO.

*考勤汇总-字
SKIP TO LINE 31.
   POSITION 81.
   WRITE:  '考勤汇总',100 '5月',105'0次',
           /'',100 '6月',105'2次',
           /'',100 '7月',105'3次'.

*内表-横线
SKIP TO LINE 15.
DO 7 TIMES.
  ULINE AT 30(50).  "绘制横线
  write /.
  NEW-LINE.
ENDDO.

*内表-竖线
SKIP TO LINE 16.
  WRITE: /30 SY-VLINE,'考勤日期',54 SY-VLINE,'考勤时间',79 SY-VLINE.  "位置30和位置79绘制竖线
  write /.
SKIP TO LINE 18.
DO 6 TIMES.
  WRITE: /30 SY-VLINE,54 SY-VLINE,79 SY-VLINE.  "位置30和位置79绘制竖线
  write /.
ENDDO.
SKIP TO LINE 29.
ULINE AT 30(50).  "绘制横线

运行结果展示

2.动态获取数据库数据。

TABLES: ZTKT_XYXX,
        ZTKT_XYKQ.

*定义变量及初始化
   DATA: gs_index,
         gt_table TYPE TABLE OF ztkt_xyxx,
         gs_table TYPE  ztkt_xyxx,
         gt_edit TYPE TABLE OF ztkt_xykq,
         gs_edit TYPE  ztkt_xykq.

*获取数据库数据
SELECT *
  FROM ztkt_xyxx
  INTO  CORRESPONDING FIELDS OF TABLE gt_table
  WHERE zxh = 'HY101'.

  SELECT *
    FROM ztkt_xykq
    INTO CORRESPONDING FIELDS OF TABLE gt_edit
    FOR ALL ENTRIES IN gt_table WHERE zxh = gt_table-zxh.

    LOOP AT  gt_table INTO gs_table.
    ENDLOOP.
    LOOP AT gt_edit INTO gs_edit.
    gs_index = sy-tfill.
    ENDLOOP.

WRITE / '考勤记录查询' COLOR COL_HEADING.
WRITE: / '学号:',gs_table-zxh,
      / '姓名:',gs_table-Zxm,
      / '性别:',gs_table-Zxb,
      / '性别:',gs_table-Zxb,
      / '考勤日期',gs_edit-zrq,
      / '考勤时间',gs_edit-zkqsj.

运行结果

3.点击热点——“考勤记录”后的新页

*&---------------------------------------------------------------------*
*&点击热点后的新页
*&---------------------------------------------------------------------*
AT LINE-SELECTION.
WRITE / '考勤记录查询' COLOR COL_HEADING.
*首行
  ULINE AT 20(100).  "绘制横线
  WRITE: /20 SY-VLINE,119 SY-VLINE.  "位置20和位置120绘制竖线
  ULINE AT /20(100).
*左右外框+字
D_DATE = SY-DATUM.
D_TIME = SY-UZEIT.
WRITE: /20 SY-VLINE,'学员基本信息卡:'.
POSITION 95.
WRITE: (25) D_DATE USING EDIT MASK '查询日期:____年__月__日',119 SY-VLINE,
       /20 SY-VLINE,119 SY-VLINE.
POSITION 96.
WRITE: (25) D_TIME USING EDIT MASK '查询时间:__点__分__秒',119 SY-VLINE,
       /20 SY-VLINE,30'学号:',gs_table-zxh,119 SY-VLINE,
       /20 SY-VLINE,30'姓名:',gs_table-Zxm,119 SY-VLINE,
       /20 SY-VLINE,30'性别:',gs_table-Zxb,119 SY-VLINE,
       /20 SY-VLINE,30'性别:',gs_table-Zxb,119 SY-VLINE.
ULINE AT /20(100).

*页数
WRITE: /20 SY-VLINE,105 '共',107 sy-pagno,'页',119 SY-VLINE,
       /20 SY-VLINE,105 '第',107 sy-pagno,'页',119 SY-VLINE.

*考勤记录外框:左右下
DO 21 TIMES.
WRITE: /20 SY-VLINE,119 SY-VLINE.  "位置20和位置120绘制竖线
ENDDO.
ULINE AT /20(100).

*考勤汇总-横线
SKIP TO LINE 30.
ULINE AT /80(40).

*考勤汇总-竖线
SKIP TO LINE 30.
DO 5 TIMES.
  WRITE: /80 SY-VLINE.
ENDDO.

*考勤汇总-字
SKIP TO LINE 31.
   POSITION 81.
   WRITE:  '考勤汇总',100 '5月',105'0次',
           /'',100 '6月',105'2次',
           /'',100 '7月',105'3次'.
*内表-横线
SKIP TO LINE 15.
DO 7 TIMES.
  ULINE AT 30(50).  "绘制横线
  write /.
  NEW-LINE.
ENDDO.

*内表-竖线
SKIP TO LINE 16.
  WRITE: /30 SY-VLINE,'考勤日期',54 SY-VLINE,'考勤时间',79 SY-VLINE.  "位置30和位置79绘制竖线
*  write /.
SKIP TO LINE 18.
DO 6 TIMES.
  WRITE: /30 SY-VLINE,gs_edit-zrq,54 SY-VLINE,gs_edit-zkqsj,79 SY-VLINE.  "位置30和位置79绘制竖线
  write /.
ENDDO.
SKIP TO LINE 29.
ULINE AT 30(50).  "绘制横线

运行结果
点击热点

查询结果

相关文章

网友评论

    本文标题:SAP-LIST 报表-实战

    本文链接:https://www.haomeiwen.com/subject/goskwrtx.html