業(yè)務背景:
通過前期開發(fā)的學員錄入考勤系統(tǒng)積累的學員信息、學員考勤信息。為了便于管理與統(tǒng)計,現(xiàn)需要實現(xiàn)學員卡片打印、學員考勤打印。(write方式)
功能分析:
1)為實現(xiàn)打印功能,需用write方式;開發(fā)學員卡片打印程序、學員考勤打印程序。
2)課堂上確認具體格式需求。
打印實現(xiàn)效果

代碼實現(xiàn)
1.LIST報表屬性繪制基本頁面
*&---------------------------------------------------------------------*
*& Report ZHY01_HY101_20220627_02
*&---------------------------------------------------------------------*
*& Program Name <程序名稱>: ZHY01_HY101_20220627_02
*& Purpose <程序用途>: LIST 作業(yè)
*& Project Name <項目名稱>: SAP_ABAP_01期間
*& Created by <創(chuàng) 建 人>: HY101
*& Created on <創(chuàng)建日期>: 20220627
*& FC Consultant <功能顧問>: 鼠小倩
*& Description <功能描述>: LIST 作業(yè)
*&---------------------------------------------------------------------*
* Modification Log<程序修改日志>
*<日期> <開發(fā)者> <功能顧問> <修改描述>
* 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 '查詢?nèi)掌冢篲___年__月__日',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).
*頁數(shù)
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次'.
*內(nèi)表-橫線
SKIP TO LINE 15.
DO 7 TIMES.
ULINE AT 30(50). "繪制橫線
write /.
NEW-LINE.
ENDDO.
*內(nèi)表-豎線
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). "繪制橫線
運行結(jié)果展示

2.動態(tài)獲取數(shù)據(jù)庫數(shù)據(jù)。
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.
*獲取數(shù)據(jù)庫數(shù)據(jù)
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.
運行結(jié)果

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 '查詢?nèi)掌冢篲___年__月__日',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).
*頁數(shù)
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次'.
*內(nèi)表-橫線
SKIP TO LINE 15.
DO 7 TIMES.
ULINE AT 30(50). "繪制橫線
write /.
NEW-LINE.
ENDDO.
*內(nèi)表-豎線
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). "繪制橫線
運行結(jié)果
點擊熱點

查詢結(jié)果
