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