SAP-SMARTFORMS-凭证连续打印设置操作之三

更新时间:2023-05-28 10:11:40 阅读: 评论:0

争与不争-苏轼是什么朝代的

SAP-SMARTFORMS-凭证连续打印设置操作之三
2023年5月28日发(作者:鸡黍是什么意思)

SAP SMARTFORMS 凭证连续打印设置操作之三

---利用ALV显示,并进行手动选择打印

SAP系统中,凭证经常需要连续打印,如从凭证号100,打印至120;要求系统在打印

的时候自动按凭证号进行分页处理。下面的例子是利用表传递数据至SMARTFORMS中,并且利

用打印程序中的表循环来实现凭证的自动分页打印处理;SMARTFORMS的设置则非常的简单,

按一凭证号来进行设置即可。下面进行具体的操作讲解。

一、 打印效果显示,如下图所示:

运行报表程序:

运行后,出现下面的界面,这时我们就可以选择需要打印的单据号,然后再点击工具栏中的“打印”

按钮,即可进行选择性的连续打印,如下图:

上面为显示连续打印三销售凭证,运行后如下图所示:

二、 数据结构体的定义 zwyvbapTCODESE11,此结构体在后面的程序中也要用到,是传

递数据的接口。定义如下图所示:

三、 SMARTFORMS FORM界面设置

1、表格接口的数据,如下图所示:

2、表格接口表的数据如下图所示:

3、全局定义中的数据定义如下图所示:

四、 SMARTFORMS页和窗口的操作:

1、页头显示容。下面的操作都只进行截图显示。如下图所示:

2MAIN主窗口的设置:

打印表体的表头显示,如下图所示:

表体循环显示:

新程序行的设置:

统计区域的设置:

页尾的设置:

五、 REPORT 完整代码清单,如下图所示(TCODESE38

*&---------------------------------------------------------------------*

*& 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, "

过账日期

le 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 le = '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_clo = '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

nd_error = 3

ur_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

nd_error = 3

ur_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

nd_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.

* analy 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-ltext_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_afieldcat to it_fieldcat.

END-OF-DEFINITION.

d_field:

'VBELN' '

' space space 'X' space '10' space space,"

销售凭证

'VKORG' '

' space space space space '5' space space,"

销售凭证类

'vtweg' '

' space space space space '5' space space,"

销售凭证类

* 'SPART' '

' space space space space '5' space space,"

销售凭证类

'VKBUR' '

' space space space space '5' space space,"

销售凭证类

'VKGRP' '

' space space space space '5' space space,"

销售凭证类

'KUNNR' '

' space space space space '10' space space,

'VBELN' '

' space space 'X' space '10' space space,

'AUDAT' '

' space space space space '10' space space.

ENDFORM. "PF_ALV_LIST_FCAT

*&---------------------------------------------------------------------*

*& Form sub_t_pf_status

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->RT_EXTAB text

*----------------------------------------------------------------------*

FORM sub_t_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD'." EXCLUDING ex_tab.

SET TITLEBAR '选择手动打印条目'.

ENDFORM. "sub_t_pf_status

*&---------------------------------------------------------------------*

*& Form PF_ALV_LIST_DISPLY

*&---------------------------------------------------------------------*

* ALV

显示数据

*----------------------------------------------------------------------*

FORM pf_alv_list_disply TABLES table.

*ALV

数据显示函数

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

* i_interface_check = 'X'

i_callback_pf_status_t = wa_status

i_callback_ur_command = 'ALV_USER_COMMAND'

it_fieldcat = it_fieldcat

is_layout = wa_layout

i_grid_title = '销售订单交期统计表'

* I_CALLBACK_HTML_TOP_OF_PAGE = CNS_TOP_OF_PAGE "HTML_TOP_OF_PAGE'

i_save = 'X'

TABLES

t_outtab = gt_vbak_alv. "ALV

传递表到

ENDFORM. " PF_ALV_LIST_DISPLY

*&---------------------------------------------------------------------*

*& Form ALV_USER_COMMAND

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->R_UCOMM text

* -->RS_SELFIELD text

*----------------------------------------------------------------------*

FORM alv_ur_command USING r_ucomm LIKE sy-ucomm

rs_lfield TYPE slis_lfield. "ALV

响应点击自定义按钮之后的事件

DATA: lr_grid TYPE REF TO cl_gui_alv_grid,

lc_i TYPE i,

lv_subrc TYPE sy-subrc.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

IMPORTING

e_grid = lr_grid.

CALL METHOD lr_grid->check_changed_data.

rs_lfield-refresh = 'X'.

CASE r_ucomm. "

当点击打印按钮时,执行打印操作

WHEN 'PRINT'.

PERFORM print_so.

* MESSAGE '' TYPE 'I'.

打印事件

WHEN OTHERS.

ENDCASE.

"rs_lfield-fieldname,.

表示双击的字段名有时候有用

ENDFORM. "ALV_USER_COMMAND

附菜单设置图:

*科莱特信息技术所有,请注明出处。

萝卜鲫鱼汤的做法-我想对您说作文500字

SAP-SMARTFORMS-凭证连续打印设置操作之三

本文发布于:2023-05-28 10:11:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/168523990058051.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:SAP-SMARTFORMS-凭证连续打印设置操作之三.doc

本文 PDF 下载地址:SAP-SMARTFORMS-凭证连续打印设置操作之三.pdf

标签:销售凭证
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|