首页 > 其他分享 >SMARTFORMS函数调用完整示例:打印工厂物料信息

SMARTFORMS函数调用完整示例:打印工厂物料信息

时间:2024-11-19 19:46:23浏览次数:3  
标签:MARD SMARTFORMS NAME 示例 DATA 函数调用 text TYPE

首先规划想要打印的效果和信息,这里示例的是想要打印物料数据库里面的信息。
①对相关数据表创建表结构:SE11 

注意数据类型,数量quan需要参考类型:
创建表结构:

②创建一个REPORT程序,并对相关的字段、变量、内表进行声明,并写一个SELECTION界面和一些基础的取数等,具体代码如下:

DATA GT_MARD TYPE ZMARD_TTY . "取数/向SMARTFORMS传输,用表类型定义一个内表,类型和smartform接口中的类型一致
DATA GS_MARD TYPE ZMARD_STR .

*SELECTION SCREEN
PARAMETERS P_WERKS LIKE GS_MARD-WERKS OBLIGATORY .
SELECT-OPTIONS S_LGORT FOR GS_MARD-LGORT .
SELECT-OPTIONS S_MATNR FOR GS_MARD-MATNR .

START-OF-SELECTION .
PERFORM GET_DATA .

END-OF-SELECTION .
SET PF-STATUS 'STATUS' .

IF GT_MARD IS NOT INITIAL .
  PERFORM DISPLAY_DATA .
ELSE .
  MESSAGE S001 DISPLAY LIKE 'E'.
ENDIF.

TOP-OF-PAGE ."表头事件
PERFORM TOP_OF_PAGE .

AT USER-COMMAND .
  PERFORM USER_COMMAND .

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_data .
  SELECT WERKS LGORT MATNR LABST
    FROM MARD
    INTO CORRESPONDING FIELDS OF TABLE GT_MARD
    WHERE WERKS = P_WERKS
    AND LGORT IN S_LGORT
    AND MATNR IN S_MATNR .

    SORT GT_MARD BY WERKS LGORT .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM display_data .
  WRITE:/1(65) SY-ULINE .
  LOOP AT GT_MARD INTO GS_MARD .
    WRITE:/1 SY-VLINE NO-GAP,(10) GS_MARD-WERKS NO-GAP,
             SY-VLINE NO-GAP,(10) GS_MARD-LGORT NO-GAP,
             SY-VLINE NO-GAP,(20) GS_MARD-MATNR NO-GAP,
             SY-VLINE NO-GAP,(20) GS_MARD-LABST NO-GAP,
             SY-VLINE .
    WRITE:/1(65) SY-ULINE .

  ENDLOOP .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM top_of_page .
  WRITE:/1(65) SY-ULINE .
    WRITE:/1 SY-VLINE NO-GAP,(10) '工厂' NO-GAP,
             SY-VLINE NO-GAP,(10) '仓库' NO-GAP,
             SY-VLINE NO-GAP,(20) '物料' NO-GAP,
             SY-VLINE NO-GAP,(20) '数量' NO-GAP,
             SY-VLINE .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM user_command .


  CASE SY-UCOMM .
    WHEN 'BACK' .
      LEAVE TO SCREEN 0 .
    WHEN 'EXIT' OR 'CANCEL' .
      LEAVE PROGRAM .
    WHEN 'SORTUP' .
      "升序
    WHEN 'SORTDOWN' .
      "降序
    WHEN 'DOWNLOAD' .

    WHEN 'CALLSF' ."调用smartforms
      PERFORM CALL_SF .

  ENDCASE .

ENDFORM.

③在T-CODE:SMARTFORMS 里面创建打印的样式设计:





这里用到强制分页,当物料库位不同时分页。首先对需要强制分页的变量进行全局定义。

注意这里创建好后激活执行测试,记下函数名:

④在程序里面调用

*SMARTFORMS 调用
DATA GV_FM_NAME TYPE RS38L_FNAM . "函数名称,函数模块中的导出参数类型一致
FORM call_sf .
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname                 = 'ZMATERIAL_01' "SMARTFORMS 的名称
*     VARIANT                  = ' '
*     DIRECT_CALL              = ' '
   IMPORTING
     FM_NAME                  = GV_FM_NAME
   EXCEPTIONS
     NO_FORM                  = 1
     NO_FUNCTION_MODULE       = 2
     OTHERS                   = 3
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE S000 WITH 'SMARTFORMS未被调用!' .
    EXIT .
  ENDIF.


  CALL FUNCTION GV_FM_NAME " '/1BCDWB/SF00000074'
*   EXPORTING
*     ARCHIVE_INDEX              =
*     ARCHIVE_INDEX_TAB          =
*     ARCHIVE_PARAMETERS         =
*     CONTROL_PARAMETERS         =
*     MAIL_APPL_OBJ              =
*     MAIL_RECIPIENT             =
*     MAIL_SENDER                =
*     OUTPUT_OPTIONS             =
*     USER_SETTINGS              = 'X'
*   IMPORTING
*     DOCUMENT_OUTPUT_INFO       =
*     JOB_OUTPUT_INFO            =
*     JOB_OUTPUT_OPTIONS         =
    TABLES
      it_mard                    = GT_MARD
   EXCEPTIONS
     FORMATTING_ERROR           = 1
     INTERNAL_ERROR             = 2
     SEND_ERROR                 = 3
     USER_CANCELED              = 4
     OTHERS                     = 5
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE S000 WITH 'SMARTFORMS未被调用!' .
    EXIT .
  ENDIF.


ENDFORM.

这里提一个额外的,如果不想出现下面的提示栏,可以在程序里面写上默认。

*给form修改打印参数
DATA: LS_SSFCTRLOP TYPE SSFCTRLOP."定义CONTROL_PARAMETERS参数
DATA: LS_SSFCOMPOP TYPE SSFCOMPOP."定义OUTPUT_OPTIONS参数

*定义变量接受function名字
DATA: LV_FORM TYPE RS38L_FNAM."函数模块中的导出参数类型一致
*给smartform的打印参数赋值
  LS_SSFCTRLOP-NO_DIALOG = 'X'."无弹窗
  LS_SSFCTRLOP-PREVIEW = 'X'."预览
  LS_SSFCOMPOP-TDDEST = 'LP01'."output参数

标签:MARD,SMARTFORMS,NAME,示例,DATA,函数调用,text,TYPE
From: https://blog.csdn.net/qq_55841727/article/details/143879035

相关文章

  • 达梦数据库迁移示例路径
    官方文档:https://eco.dameng.com/document/dm/zh-cn/faq/faq-db-changes.html博客:https://mp.weixin.qq.com/s/9ggRIiHdWz3LOIhfvS84mw迁移数据库实例路径迁移目标路径/usr/local/app/dmdbms/data/DAMENG/db-data/DAMENG步骤停止数据库服务进入达梦数据库......
  • echarts 图标示例集合
     {"color":["#33DFFF","#2F6EE6"],"grid":{"left":0,"top":0,"right":0,"bottom":0,"containLabel":fal......
  • .net core微服务 async task job示例
     Execute函数publicasyncTaskExecute(IJobExecutionContextcontext){Stopwatch_time=newStopwatch();_time.Start();stringstrRe="开始时间:"+DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");stringerrmsg=strin......
  • quartz .net8微服务避免dbcontext异常示例
     调整program.cs里注册QuartzJobService,去除掉原有框架内的QuartzCore文件夹中的Factorymiddlejob等方法//注册QuartzJobServicebuilder.Services.AddQuartz(q=>{varjobKey=newJobKey("Jobs");q.AddJob<InterAutoTicketing>(opts=>opts.WithIdentity(j......
  • 使用ProxyPool搭建代理IP池并获取代理IP示例
    安装ProxyPool首先确保已经安装了 pip 工具(Python的包管理工具),在命令行执行以下命令安装 proxypool:配置ProxyPoolProxyPool的配置文件通常是 config.py,可以根据需求修改配置项,比如设置代理IP的来源、验证周期等。以下是一个简单示例配置(部分关键配置项示意):启动ProxyP......
  • Linux隐藏登录和清除历史命令以及其他相关安全操作示例
    隐藏登录ssh -T [email protected] /bin/bash -i 命令拆解-T:告诉ssh客户端,不要分配一个TTY(伪终端)root:连接用户xxx.xxx.xxx.xxx:连接的服务器ip地址/bin/bash:在远程服务器上启动一个交互式的Bashshell。效果如下,默认登录一个终端的时候,会有一个pts/0,但是这里已经......
  • SpringBoot + Activiti工作流项目示例(代码分享)
     前言activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。一、项目形式springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。......
  • bloompy库的CountingBloomFilter使用说明及示例
    1、使用说明: HelponclassCountingBloomFilterinmodulebloompy:classCountingBloomFilter(BloomFilter) | CountingBloomFilter(error_rate=0.001,element_num=10000,bit_num=None) |  | Methodresolutionorder: |   CountingBloomFilter ......
  • Linux cp和mv命令 对于目录复制到目录的情况 的 所有情况示例
    cp和mv命令的行为总结表假设以下路径设置:源路径:/nihao或/nihao//nihao包含文件和子目录:file1,dir1/,file2目标路径:/nima或/nima/表格cp命令行为命令目标路径存在?最终路径结构cp-r/nihao/nima/是/nima/nihao/cp-r/nihao//nima/是/ni......
  • Axios 拦截器示例(JWT 登录与自动刷新)
    1.安装axios首先,确保你已经安装了axios:npminstallaxios2.设置Axios拦截器importaxiosfrom'axios';//创建一个axios实例constaxiosInstance=axios.create({baseURL:'http://localhost:8000/',//后端API地址timeout:10000,//设置超时时间......