自动打印自定义采购入库单

自动打印自定义采购入库单

JEFF

2012-12-31

所有输出类型的设置都可以通过NACE进入设置;

这里我们新定义了一个打印输出类型专为采购收货时用;

在收货处理子程序中复制出标准程序SAPM07DR改为ZSAPM07DR_GR,表格为我们自定义的SMARTFORMS即ZSD_GOODS_REC,FORM子程序用默认的ENTRY_WE01;

如果是用SCRIPT FORM开发的FORM,那要在表格中输入我们开发好的SCRIPT FORM,这里我们用的是SMART FORM,所以填入快捷表格栏位中;

输出类型设好后要分配输出确定过程;

下面我们看一下FORM是如何开发的(略);

表格属性默认设置,有自定义了一个Style:ZSD_GOODS_STY,只要定义了字体大小,段落情况; 表格接口需要定义显示用的内表,分别参考结构ZSDE_REC_MAIN和ZSDE_REC_TOP;

ZSDE_REC_MAIN结构如下;

ZSDE_REC_TOP结构如下;

全局定义设置如下;

字段符号定义如下:

如果需求公司LOGO,那在新页面的背景图片中可以设置,不过需要先用SE78上传需要图片,如果需要条形码还可以通过SE73设置相应的条码信息;

以下为FORM抬头部分设置,用了一个循环把抬头表中的内容取出;

主窗口中TABLE中设置如下,所显示内容是抬头中对应物料凭证的内容,按物料凭证项目号排序;

最终效果如下;

标准物料凭证打印的事务码是MB90,且此程序还可以用来高度我们自己开发的打印程序及FORM;

下面我们来看一下如果修改复制出来的标准ZSAPM07DR_GR;

REPORT ZSAPM07DR_GR.

TABLES:NAST,*NAST,TNAPR,MKPF,MSEG.”其中NAST是标准的存放打印信息的,对于物料收货存放的是入库凭证+年度+项目

DATA: LF_FM_NAME TYPE RS38L_FNAM.”这个是标准的打印FORM时的变量

DATA XSCREEN(1) TYPE C. DATA RETCO LIKE SY-SUBRC.

DATA: BEGIN OF NAST_KEY, MBLNR LIKE MKPF-MBLNR, MJAHR LIKE MKPF-MJAHR, ZEILE LIKE MSEG-ZEILE,

END

OF

NAST_KEY.

DATA IT_MAIN LIKE ZSDE_REC_MAIN OCCURS 0 WITH HEADER LINE. DATA IT_TOP LIKE ZSDE_REC_TOP OCCURS 0 WITH HEADER LINE.

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

*& Form entry_we01

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

* text

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

* -->ENT_RETCO text * -->ENT_SCREEN text

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

FORM ENTRY_WE01 USING ENT_RETCO ENT_SCREEN.”这就是后台设置时对应的子程序,复制过来的子程序尽可能不要动到其抬对部分 XSCREEN = ENT_SCREEN. CLEAR ENT_RETCO.

PERFORM LESEN USING NAST-OBJKY. ENT_RETCO = RETCO.

ENDFORM. "entry_we01

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

*& Form lesen

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

* text

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

* -->P_NAST_OBJKY text

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

FORM LESEN USING OBJKY.

* NAST_KEY-MBLNR = OBJKY+0(10). * NAST_KEY-MJAHR = OBJKY+10(4). * NAST_KEY-ZEILE = OBJKY+14(4). NAST_KEY = OBJKY.

IF NAST_KEY-ZEILE = 0001.”因为是选择的个别单据打印,所以如果一个凭证中有多个ITEM,就会打印多次相同的单据,这个地方判断一下可以只打印一份 CLEAR RETCO.

SELECT SINGLE * FROM MKPF INTO MKPF WHERE MBLNR = NAST_KEY-MBLNR AND MJAHR = NAST_KEY-MJAHR. SELECT SINGLE * FROM MSEG INTO MSEG WHERE MBLNR = MKPF-MBLNR AND ZEILE = NAST_KEY-ZEILE AND MJAHR = MKPF-MJAHR.

IF SY-SUBRC NE 0.”根据NAST中的凭证内容就可以找到我们需要显示的所有信息 RETCO = SY-SUBRC. EXIT. ENDIF.

* CHECK SY-SUBRC = 0.

SELECT A~LIFNR A~ZEILE C~NAME1 B~MBLNR B~BUDAT A~EBELN A~EBELP A~LGORT A~LIFNR D~LGOBE A~MATNR

E~MAKTX A~MEINS A~MENGE F~BSTRF F~MABST INTO CORRESPONDING FIELDS OF TABLE IT_MAIN FROM MSEG AS A

INNER JOIN MKPF AS B ON B~MBLNR = A~MBLNR AND B~MJAHR = A~MJAHR INNER JOIN LFA1 AS C ON A~LIFNR = C~LIFNR

INNER JOIN T001L AS D ON D~LGORT = A~LGORT AND D~WERKS = A~WERKS INNER JOIN MAKT AS E ON E~MATNR = A~MATNR

INNER JOIN MARC AS F ON F~MATNR = A~MATNR AND F~WERKS = A~WERKS"

物料+工厂

WHERE A~MJAHR = NAST_KEY-MJAHR

AND A~MBLNR = NAST_KEY-MBLNR.

IF SY-SUBRC = 0.”以上是捞取我们需要的所有信息 LOOP AT IT_MAIN.

CONCATENATE IT_MAIN-EBELN '/' IT_MAIN-EBELP INTO IT_MAIN-ORDNM. CONCATENATE IT_MAIN-LGORT '/' IT_MAIN-LGOBE INTO IT_MAIN-SL. MODIFY IT_MAIN. ENDLOOP.

MOVE-CORRESPONDING IT_MAIN TO IT_TOP. APPEND IT_TOP.

ELSE.

MESSAGE S888(ZSRM) WITH '根据条件找不到数据!' DISPLAY LIKE 'E'. STOP.

LEAVE TO LIST-PROCESSING. ENDIF.

*---------------打印参数设置----------------------------------*

OUTPUT_OPTIONS-TDCOPIES = '3'. "副本数根据USER要求每次需要打印3份 * output_options-tdnoprev = 'X'. "无打印预览 * OUTPUT_OPTIONS-TDNEWID = 'X'. "New Spool

OUTPUT_OPTIONS-TDIMMED = 'X'. "立即打印

OUTPUT_OPTIONS-TDDELETE = 'X'. "Delete Spool After Print * OUTPUT_OPTIONS-TDFINAL = 'X'.

* OUTPUT_OPTIONS-TDIEXIT = 'X'. "Exit after printing in print preview

* OUTPUT_OPTIONS-TDDEST = 'WI'.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'”得到FORM名称 EXPORTING

FORMNAME = 'ZSD_GOODS_REC' * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING

FM_NAME = LF_FM_NAME * EXCEPTIONS

* NO_FORM = 1 * NO_FUNCTION_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.

CALL FUNCTION LF_FM_NAME”打印FORM * EXPORTING

* OUTPUT_OPTIONS = OUTPUT_OPTIONS * SPAGE1 = SPAGE * IMPORTING

* JOB_OUTPUT_OPTIONS = T_OUTPUT_OPTIONS TABLES

IT_TOP = IT_TOP IT_MAIN = IT_MAIN. IF SY-SUBRC = 0.

* IF T_OUTPUT_OPTIONS-TDPREVIEW NE 'X'.

* modify zqcc_mm_00_top from table it_tab_head. * endif. ENDIF. ENDIF.

ENDFORM. " lessen

第一次进入MIGO收货时系统会提示如下;

那是因为我们有用SU3在个人参数中设了NDR,这就提醒做收货的人要将打印打上;

如果在打印的过程中,系统并没有后台执行打印,且会弹出如下对话框,这里说明系统根据打印输出类型设置中指定的条件未找到打印机;

如出现以下错误,也可以通过ST22查看错误具体内容;

我们设的打印参数是用户参数;

即根据用户参数中设置的打印机打印,所以我们需要在SU3中设置打印机才行;

因为以上设置影响的范围是整个CLIENT,如果只是针对某个工厂那该如何设置呢? 首款输出类型中要设打印参数为工厂/仓位;

再进入OMJ3设对应工厂/仓位的打印机,及是否立即打印等;

SMARTFORMS调试的方法一般有两种,一是在SMARTFORMS中的程序行中加入BREAK-POINT或是BREAK username,再打印或预览时就会停在断点处,另一种方法是直接通过SMARTFORMS对应的FUNCTION NAME到SE37中设置断点的方法调试。

>>Done

自动打印自定义采购入库单

JEFF

2012-12-31

所有输出类型的设置都可以通过NACE进入设置;

这里我们新定义了一个打印输出类型专为采购收货时用;

在收货处理子程序中复制出标准程序SAPM07DR改为ZSAPM07DR_GR,表格为我们自定义的SMARTFORMS即ZSD_GOODS_REC,FORM子程序用默认的ENTRY_WE01;

如果是用SCRIPT FORM开发的FORM,那要在表格中输入我们开发好的SCRIPT FORM,这里我们用的是SMART FORM,所以填入快捷表格栏位中;

输出类型设好后要分配输出确定过程;

下面我们看一下FORM是如何开发的(略);

表格属性默认设置,有自定义了一个Style:ZSD_GOODS_STY,只要定义了字体大小,段落情况; 表格接口需要定义显示用的内表,分别参考结构ZSDE_REC_MAIN和ZSDE_REC_TOP;

ZSDE_REC_MAIN结构如下;

ZSDE_REC_TOP结构如下;

全局定义设置如下;

字段符号定义如下:

如果需求公司LOGO,那在新页面的背景图片中可以设置,不过需要先用SE78上传需要图片,如果需要条形码还可以通过SE73设置相应的条码信息;

以下为FORM抬头部分设置,用了一个循环把抬头表中的内容取出;

主窗口中TABLE中设置如下,所显示内容是抬头中对应物料凭证的内容,按物料凭证项目号排序;

最终效果如下;

标准物料凭证打印的事务码是MB90,且此程序还可以用来高度我们自己开发的打印程序及FORM;

下面我们来看一下如果修改复制出来的标准ZSAPM07DR_GR;

REPORT ZSAPM07DR_GR.

TABLES:NAST,*NAST,TNAPR,MKPF,MSEG.”其中NAST是标准的存放打印信息的,对于物料收货存放的是入库凭证+年度+项目

DATA: LF_FM_NAME TYPE RS38L_FNAM.”这个是标准的打印FORM时的变量

DATA XSCREEN(1) TYPE C. DATA RETCO LIKE SY-SUBRC.

DATA: BEGIN OF NAST_KEY, MBLNR LIKE MKPF-MBLNR, MJAHR LIKE MKPF-MJAHR, ZEILE LIKE MSEG-ZEILE,

END

OF

NAST_KEY.

DATA IT_MAIN LIKE ZSDE_REC_MAIN OCCURS 0 WITH HEADER LINE. DATA IT_TOP LIKE ZSDE_REC_TOP OCCURS 0 WITH HEADER LINE.

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

*& Form entry_we01

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

* text

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

* -->ENT_RETCO text * -->ENT_SCREEN text

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

FORM ENTRY_WE01 USING ENT_RETCO ENT_SCREEN.”这就是后台设置时对应的子程序,复制过来的子程序尽可能不要动到其抬对部分 XSCREEN = ENT_SCREEN. CLEAR ENT_RETCO.

PERFORM LESEN USING NAST-OBJKY. ENT_RETCO = RETCO.

ENDFORM. "entry_we01

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

*& Form lesen

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

* text

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

* -->P_NAST_OBJKY text

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

FORM LESEN USING OBJKY.

* NAST_KEY-MBLNR = OBJKY+0(10). * NAST_KEY-MJAHR = OBJKY+10(4). * NAST_KEY-ZEILE = OBJKY+14(4). NAST_KEY = OBJKY.

IF NAST_KEY-ZEILE = 0001.”因为是选择的个别单据打印,所以如果一个凭证中有多个ITEM,就会打印多次相同的单据,这个地方判断一下可以只打印一份 CLEAR RETCO.

SELECT SINGLE * FROM MKPF INTO MKPF WHERE MBLNR = NAST_KEY-MBLNR AND MJAHR = NAST_KEY-MJAHR. SELECT SINGLE * FROM MSEG INTO MSEG WHERE MBLNR = MKPF-MBLNR AND ZEILE = NAST_KEY-ZEILE AND MJAHR = MKPF-MJAHR.

IF SY-SUBRC NE 0.”根据NAST中的凭证内容就可以找到我们需要显示的所有信息 RETCO = SY-SUBRC. EXIT. ENDIF.

* CHECK SY-SUBRC = 0.

SELECT A~LIFNR A~ZEILE C~NAME1 B~MBLNR B~BUDAT A~EBELN A~EBELP A~LGORT A~LIFNR D~LGOBE A~MATNR

E~MAKTX A~MEINS A~MENGE F~BSTRF F~MABST INTO CORRESPONDING FIELDS OF TABLE IT_MAIN FROM MSEG AS A

INNER JOIN MKPF AS B ON B~MBLNR = A~MBLNR AND B~MJAHR = A~MJAHR INNER JOIN LFA1 AS C ON A~LIFNR = C~LIFNR

INNER JOIN T001L AS D ON D~LGORT = A~LGORT AND D~WERKS = A~WERKS INNER JOIN MAKT AS E ON E~MATNR = A~MATNR

INNER JOIN MARC AS F ON F~MATNR = A~MATNR AND F~WERKS = A~WERKS"

物料+工厂

WHERE A~MJAHR = NAST_KEY-MJAHR

AND A~MBLNR = NAST_KEY-MBLNR.

IF SY-SUBRC = 0.”以上是捞取我们需要的所有信息 LOOP AT IT_MAIN.

CONCATENATE IT_MAIN-EBELN '/' IT_MAIN-EBELP INTO IT_MAIN-ORDNM. CONCATENATE IT_MAIN-LGORT '/' IT_MAIN-LGOBE INTO IT_MAIN-SL. MODIFY IT_MAIN. ENDLOOP.

MOVE-CORRESPONDING IT_MAIN TO IT_TOP. APPEND IT_TOP.

ELSE.

MESSAGE S888(ZSRM) WITH '根据条件找不到数据!' DISPLAY LIKE 'E'. STOP.

LEAVE TO LIST-PROCESSING. ENDIF.

*---------------打印参数设置----------------------------------*

OUTPUT_OPTIONS-TDCOPIES = '3'. "副本数根据USER要求每次需要打印3份 * output_options-tdnoprev = 'X'. "无打印预览 * OUTPUT_OPTIONS-TDNEWID = 'X'. "New Spool

OUTPUT_OPTIONS-TDIMMED = 'X'. "立即打印

OUTPUT_OPTIONS-TDDELETE = 'X'. "Delete Spool After Print * OUTPUT_OPTIONS-TDFINAL = 'X'.

* OUTPUT_OPTIONS-TDIEXIT = 'X'. "Exit after printing in print preview

* OUTPUT_OPTIONS-TDDEST = 'WI'.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'”得到FORM名称 EXPORTING

FORMNAME = 'ZSD_GOODS_REC' * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING

FM_NAME = LF_FM_NAME * EXCEPTIONS

* NO_FORM = 1 * NO_FUNCTION_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.

CALL FUNCTION LF_FM_NAME”打印FORM * EXPORTING

* OUTPUT_OPTIONS = OUTPUT_OPTIONS * SPAGE1 = SPAGE * IMPORTING

* JOB_OUTPUT_OPTIONS = T_OUTPUT_OPTIONS TABLES

IT_TOP = IT_TOP IT_MAIN = IT_MAIN. IF SY-SUBRC = 0.

* IF T_OUTPUT_OPTIONS-TDPREVIEW NE 'X'.

* modify zqcc_mm_00_top from table it_tab_head. * endif. ENDIF. ENDIF.

ENDFORM. " lessen

第一次进入MIGO收货时系统会提示如下;

那是因为我们有用SU3在个人参数中设了NDR,这就提醒做收货的人要将打印打上;

如果在打印的过程中,系统并没有后台执行打印,且会弹出如下对话框,这里说明系统根据打印输出类型设置中指定的条件未找到打印机;

如出现以下错误,也可以通过ST22查看错误具体内容;

我们设的打印参数是用户参数;

即根据用户参数中设置的打印机打印,所以我们需要在SU3中设置打印机才行;

因为以上设置影响的范围是整个CLIENT,如果只是针对某个工厂那该如何设置呢? 首款输出类型中要设打印参数为工厂/仓位;

再进入OMJ3设对应工厂/仓位的打印机,及是否立即打印等;

SMARTFORMS调试的方法一般有两种,一是在SMARTFORMS中的程序行中加入BREAK-POINT或是BREAK username,再打印或预览时就会停在断点处,另一种方法是直接通过SMARTFORMS对应的FUNCTION NAME到SE37中设置断点的方法调试。

>>Done


相关内容

  • 财务软件需求
  • 公司财务软件需求 一.概况 二.核心需求 1.实现财务业务一体化 公司高层领导最关心和最希望得到解决的是建立一个适应市场变化和管理需求的财务.物流.生产.人力一体化管理体系.实现科学组织.合理安排.灵活调度,同时充分利用企业资源,合理调度安排物资计划,从最根本上使企业的成本得到充分降低.效率和效益得 ...

  • 生物制品管理系统方案
  • 生物制品管理系统 手机:[1**********] QQ : 497676936 解 决 方 案 艾思维软件 概述 本系统是在疾病预防控制中心现有工作的基础上开发完成,旨在通过软件实现对疫苗的进出库,往来账,统计报表,单据打印,基础数据等实现管理,方便数据的共享.存档与统计,提高工作效率减轻工作量, ...

  • T6财务业务一体化练习题
  • 普及版上机练习题 目的与要求: 掌握企业在进行期初建账时,如何进行核算体系的建立及各项基础档案的设置. 实验内容: 一.核算体系的建立 (一)启动系统管理,以"Admin"的身份进行注册. (二)增设三位操作员:([权限]->[操作员]) 001 黄红,002 张晶,003 ...

  • 财务业务一体化练习题
  • 财务业务一体化练习题 实验一 目的与要求: 掌握企业在进行期初建账时,如何进行核算体系的建立及各项基础档案的设置. 实验内容: 一.定义各项基础档案: 可通过企业门户中的基础信息,选择"基础档案",来增设下列档案. (一)定义部门档案:制造中心.营业中心.管理中心 制造中心下分: ...

  • 配送方案书
  • 百威9000V6商业管理系统 配送中心方案书 版本20090428 2003-2009 深圳市智百威科技发展有限公司 版权所有 说明 本方案书中所涉及的信息不能泄露到双方以外的任何机构,也不允许为除评估该建议书以外的其他任何目的而进行全部或部分复制.使用或透露.在合同最终授予我公司或与我公司的建议书 ...

  • 医院管理系统功能模块说明
  • 医院管理系统功能模块说明 门诊挂号系统 系统概述:主要完成病人的挂号.收费业务,以及医院内部及与院外单位结算: 门诊挂号 普通挂号收费:进行挂号收费.退号退费.废票重打等业务的办理.支持磁卡或IC 卡 挂号及相关操作,可预约挂号,选择医师就诊,能打印明细单. 普通挂号退费:由于挂号登记错误或病人要求 ...

  • 概要设计-医院管理信息系统
  • 需求说明书 题目:医院管理信息系统 概要设计说明书 院(系) 专 业 年 级 姓 名 指导教师 年4月25日 软件学院 软件工程 学 号 职 称 1 概述 ........................................................................ ...

  • 几种通用会计软件功能简介
  • 几种通用会计软件功能简介 赵龙华 1995-01-06 一.用友财务软件 (一)软件基本特点 用友软件是北京用友公司的产品,是财政部<会计核算软件管理的几项规定(试行)>颁发后第一个通过财政部评审的会计软件,其产品销售量达全国首位.该软件具有品种多.实用性强.控制功能强的特点,包括帐 ...

  • 金蝶KIS旗舰版总体介绍
  • 金蝶KIS 旗舰版 管理解决方案 金蝶软件(中国)有限公司 第一章 介绍 1.1金蝶KIS 旗舰版的模块配置 金蝶KIS 旗舰版配置的模块如下: 总账.报表.固定资产.现金管理.网上银行.实际成本.财务分析.应收款管理.应付款管理.人事管理.工资管理.采购管理.销售管理.仓存管理.存货核算,委外加工 ...