SAPSMARTFORMS凭证连续打印设置操作之三.docx
- 文档编号:4018390
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:17
- 大小:327.54KB
SAPSMARTFORMS凭证连续打印设置操作之三.docx
《SAPSMARTFORMS凭证连续打印设置操作之三.docx》由会员分享,可在线阅读,更多相关《SAPSMARTFORMS凭证连续打印设置操作之三.docx(17页珍藏版)》请在冰豆网上搜索。
SAPSMARTFORMS凭证连续打印设置操作之三
SAPSMARTFORMS凭证连续打印设置操作之三
---利用ALV显示,并进行手动选择打印
在SAP系统中,凭证经常需要连续打印,如从凭证号100,打印至120;要求系统在打印的时候自动按凭证号进行分页处理。
下面的例子是利用内表传递数据至SMARTFORMS中,并且利用打印程序中的内表循环来实现凭证的自动分页打印处理;而SMARTFORMS的设置则非常的简单,按一张凭证号来进行设置即可。
下面进行具体的操作讲解。
一、打印效果显示,如下图所示:
运行报表程序:
运行后,出现下面的界面,这时我们就可以选择需要打印的单据号,然后再点击工具栏中的“打印”按钮,即可进行选择性的连续打印,如下图:
上面为显示连续打印三张销售凭证,运行后如下图所示:
二、数据结构体的定义zwyvbap;TCODE:
SE11,此结构体在后面的程序中也要用到,是传递数据的接口。
定义如下图所示:
三、SMARTFORMSFORM界面设置
1、表格接口的数据,如下图所示:
2、表格接口表的数据如下图所示:
3、全局定义中的数据定义如下图所示:
四、SMARTFORMS页和窗口的操作:
1、页头显示内容。
下面的操作都只进行截图显示。
如下图所示:
2、MAIN主窗口的设置:
打印表体的表头显示,如下图所示:
表体循环显示:
新程序行的设置:
统计区域的设置:
页尾的设置:
五、REPORT完整代码清单,如下图所示(TCODE:
SE38):
*&---------------------------------------------------------------------*
*& Report ZP_SD_006
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zp_sd_007.
INCLUDE zp_sd_007_varl.
INCLUDE zp_sd_007_form.
INCLUDE zp_sd_007_alv.
START-OF-SELECTION.
PERFORM get_data_alv.
PERFORM show_alv TABLES gt_vbak_alv.
*&---------------------------------------------------------------------*
*& 包含 ZP_SD_007_VARL
*&---------------------------------------------------------------------*
TABLES:
vbak.
DATA:
formname TYPE tdsfname,
fm_name TYPE rs38l_fnam,
control TYPE ssfctrlop,
errtab TYPE tsferror.
DATA:
BEGIN OF gt_vbak OCCURS 0. "定义内表
INCLUDE TYPE zwyvbap.
DATA:
END OF gt_vbak.
DATA:
BEGIN OF gt_vbap OCCURS 0, "定义内表
vbeln LIKE vbak-vbeln.
DATA:
END OF gt_vbap.
DATA:
p_vbeln TYPE vbak-vbeln.
* 定义传递到FORM中的页头数据
DATA:
vkorg TYPE vbak-vkorg, "销售组织
vtweg TYPE vbak-vtweg, "分销渠道
vkbur TYPE vbak-vkbur, "销售办事处
vkgrp TYPE vbak-vkgrp, "销售组
kunnr TYPE vbak-kunnr, "供应商代码
name1 TYPE kna1-name1, "供应商名称
vbeln TYPE vbak-vbeln, "订单号码
audat TYPE vbak-audat. "过账日期
* 定义显示在ALV界面上的内表
DATA:
BEGIN OF gt_vbak_alv OCCURS 0,
vkorg TYPE vbak-vkorg, "销售组织
vtweg TYPE vbak-vtweg, "分销渠道
vkbur TYPE vbak-vkbur, "销售办事处
vkgrp TYPE vbak-vkgrp, "销售组
kunnr TYPE vbak-kunnr, "供应商代码
name1 TYPE kna1-name1, "供应商名称
vbeln TYPE vbak-vbeln, "订单号码
audat TYPE vbak-audat, "过账日期
sele TYPE char1. "定义选中栏,边上的
DATA:
END OF gt_vbak_alv.
SELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE text-001.
*PARAMETERS s_vbeln TYPE vbak-vbeln OBLIGATORY.
SELECT-OPTIONS:
s_vbeln FOR vbak-vbeln DEFAULT '4970' TO '4990'. "定义需要打印的凭证号码
SELECTION-SCREEN END OF BLOCK 100.
*&---------------------------------------------------------------------*
*& 包含 ZP_SD_007_FORM
*$ 显示在界面上的数据
*&---------------------------------------------------------------------*
FORM get_data_alv.
SELECT
vkorg
vtweg
vkbur
vkgrp
kunnr
vbeln
audat
INTO CORRESPONDING FIELDS OF TABLE gt_vbak_alv
FROM vbak
WHERE vbeln IN s_vbeln.
ENDFORM. "get_data_alv
*&---------------------------------------------------------------------*
*& Form print_so
*&---------------------------------------------------------------------*
* text 设置打印的程序
*----------------------------------------------------------------------*
FORM print_so.
CLEAR gt_vbap[].
* SELECT vbeln INTO CORRESPONDING FIELDS OF TABLE gt_vbap FROM vbak WHERE vbeln IN s_vbeln.
* 获取选中的数据,并把选中的数据传递至 内表中。
LOOP AT gt_vbak_alv WHERE sele = 'X'.
gt_vbap-vbeln = gt_vbak_alv-vbeln.
APPEND gt_vbap.
ENDLOOP.
formname = 'ZSD_PRINT_001'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = formname "#########Form## importing
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_founction_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
control-no_dialog = 'X'.
control-preview = 'X'.
control-no_open = 'X'.
control-no_close = 'X'.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
* ARCHIVE_PARAMETERS =
* USER_SETTINGS = 'X'
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJ =
* OUTPUT_OPTIONS =
control_parameters = control
* IMPORTING
* JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* error handling
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
LOOP AT gt_vbap. "对凭证号进行循环处理,即在程序中进行分页的设置
p_vbeln = gt_vbap-vbeln.
* 获取打印的表头数据
SELECT SINGLE
vkorg
vtweg
vkbur
vkgrp
kunnr
vbeln
audat
INTO (vkorg,vtweg,vkbur,vkgrp,kunnr,vbeln,audat)
FROM vbak
WHERE vbeln = p_vbeln.
* 获取打印的表体数据
CLEAR gt_vbak[]. "清空内表
SELECT
vbeln
posnr
matnr
arktx
kwmeng
netwr
netpr
meins
INTO CORRESPONDING FIELDS OF TABLE gt_vbak
FROM vbap
WHERE vbeln = p_vbeln.
CALL FUNCTION fm_name
EXPORTING
control_parameters = control
vkorg = vkorg "销售订单
vtweg = vtweg "客户
vkbur = vkbur "日期
vkgrp = vkgrp "日期
kunnr = kunnr
vbeln = vbeln
audat = audat
name1 = name1
TABLES
gt_vbak = gt_vbak "传递内表数据到SMARTFORMS中
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* error handling
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
CALL FUNCTION 'SSF_CLOSE'
* IMPORTING
* JOB_OUTPUT_INFO =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
* error handling
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* analyse internal error table of Smart Forms
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
errortab = errtab.
IF NOT errtab IS INITIAL.
* add your handling
ENDIF.
ENDFORM. "print_so
*&---------------------------------------------------------------------*
*& 包含 ZP_SD_007_ALV
*&---------------------------------------------------------------------*
TYPE-POOLS:
slis.
*-----------------------------------------------------------*
*ALV相关内表和结构 *
*-----------------------------------------------------------*
DATA:
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_status TYPE slis_formname VALUE 'SUB_SET_PF_STATUS',
wa_comand TYPE slis_formname VALUE 'USER_COMMAND',
it_events TYPE slis_t_event.
DATA:
g_layout TYPE lvc_s_layo,
fieldcat TYPE LINE OF lvc_t_fcat,
gt_fieldcat TYPE lvc_t_fcat.
*&---------------------------------------------------------------------*
*& 显示ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LT_TAB text
*----------------------------------------------------------------------*
FORM show_alv TABLES table.
*ALV表格显示样式
PERFORM alv_list_layout.
*ALV报表的字段设置
PERFORM pf_alv_list_fcat USING it_fieldcat.
*ALV报表显示
PERFORM pf_alv_list_disply TABLES table.
ENDFORM. " SHOW_ALV
*&---------------------------------------------------------------------*
*& Form ALV_LIST_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_list_layout.
wa_layout-colwidth_optimize = 'X'.
wa_layout-detail_initial_lines = 'X'.
wa_layout-box_fieldname = 'SELE'. "定义边框选中栏
ENDFORM. " ALV_LIST_LAYOUT
*&---------------------------------------------------------------------*
*& Form PF_ALV_LIST_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_FIELDCAT text
*----------------------------------------------------------------------*
FORM pf_alv_list_fcat USING p_it_fieldcat.
DATA:
lw_afieldcat TYPE slis_fieldcat_alv,
lw_pos TYPE i.
DEFINE d_field.
clear lw_afieldcat.
lw_pos = lw_pos + 1.
lw_afieldcat-col_pos = lw_pos.
lw_afieldcat-fieldname = &1.
"LW_AFIELDCAT-fix_column = 'X'.
lw_afieldcat-seltext_l = &2.
lw_afieldcat-ref_fieldname = &4.
lw_afieldcat-ref_tabname = &3.
lw_afieldcat-no_zero = &5.
lw_afieldcat-hotspot = &6.
lw_afieldcat-outputlen = &7.
lw_afieldcat-edit = &8.
lw_afieldcat-key = &9.
append lw_afieldc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAPSMARTFORMS 凭证 连续 打印 设置 操作