多线程执行后台任务,提供效率

场景:
大批量复制物料描述到新的物料上,多线程同时执行已提高效率

在这里插入图片描述

REPORT zmm316.

INCLUDE zmm316_top.

INCLUDE zmm316_f01.
*-----------------------------------------------------------------------

  • I N I T I A L I Z A T I O N
    *-----------------------------------------------------------------------
    INITIALIZATION.

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

  • A T S E L E C T I O N - S C R E E N
    *-----------------------------------------------------------------------
    AT SELECTION-SCREEN.

START-OF-SELECTION.

  • 读取文件
  • IF p_sc = ‘X’.
  • PERFORM read_file.
  • PERFORM frm_data_check.
  • ELSEIF p_cx = ‘X’.

PERFORM frm_get_data.

  • ENDIF.
    &---------------------------------------------------------------------
    *& 包含 ZMM316_TOP
    &---------------------------------------------------------------------
    ----------------------------------------------------------------------
    TABLES: sscrfields,ztmatnr_match,a017,mara.

TYPES: BEGIN OF ty_alv,
matnr_o TYPE mseg-matnr, "旧物料号
matnr_n TYPE mseg-matnr,
zdate TYPE ztmatnr_match-zdate,
ztime TYPE ztmatnr_match-ztime,
zsel TYPE char1,
zlight TYPE char04, " 指示灯
zmsg TYPE char100,

  •     zwlsl   type P LENGTH 10  DECIMALS 3,
    
  •     zdate   TYPE DATS,
    
  •     zsl     TYPE i,END OF ty_alv.
    

TYPES: BEGIN OF ty_alv2,
matnr_n(18) TYPE c,
zsel TYPE char1,
zlight TYPE char04, " 指示灯
zmsg TYPE char100,

  •     zwlsl   type P LENGTH 10  DECIMALS 3,
    
  •     zdate   TYPE DATS,END OF ty_alv2.
    

DATA:gt_alv TYPE STANDARD TABLE OF ty_alv. "定义内表
DATA:gs_alv TYPE ty_alv. "定义工作区
FIELD-SYMBOLS: <fs_alv> TYPE ty_alv.

DATA:gt_fieldcat TYPE lvc_t_fcat, "字段目录内表
gs_fieldcat TYPE lvc_s_fcat, "字段目录工作区
gs_layout TYPE lvc_s_layo. "用于定义ALV表单的相关格式、属性
*DATA:gt_index_all TYPE STANDARD TABLE OF ty_index,

  • gs_index     TYPE ty_index.
    

DATA: gv_messages TYPE c LENGTH 200,
bdcdata TYPE TABLE OF bdcdata WITH HEADER LINE,
gs_option TYPE ctu_params,
messtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.

RANGES:r_matnr_old FOR mara-bismt.
RANGES:r_werks FOR a017-werks.
*-----------------------------------------------------------------------

  • P A R A M E T E R S & S E L E C T - O P T I O N S
    *-----------------------------------------------------------------------
  • 功能选择界面
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
    SELECT-OPTIONS: s_jmatnr FOR ztmatnr_match-matnr_old, "旧物料
  •            s_werks FOR a017-werks OBLIGATORY,"工厂s_xmatnr FOR ztmatnr_match-matnr_new NO-DISPLAY.   "新物料
    

PARAMETERS: p_sjfb TYPE char07, "数据分包
p_htrw TYPE char04. "后台任务

SELECTION-SCREEN END OF BLOCK blk1.

  • 下载模版按钮
    SELECTION-SCREEN FUNCTION KEY 1.

&---------------------------------------------------------------------
*& 包含 ZMM316_F01
&---------------------------------------------------------------------
FORM frm_get_data .

SELECT bismt AS matnr_n
matnr AS matnr_o
INTO CORRESPONDING FIELDS OF TABLE gt_alv
FROM mara
WHERE matnr IN s_jmatnr
AND bismt IN s_xmatnr
AND bismt <> ‘’.

SELECT matnr_new AS matnr_n,
matnr_old AS matnr_o,
zdate,
ztime
INTO TABLE @DATA(lt_match)
FROM ztmatnr_match "pa001 bseg mseg ekpo
.

SORT lt_match BY matnr_o.
.
REFRESH r_werks.

r_werks-sign = ‘I’.
r_werks-option = ‘CP’.
r_werks-low = ‘*’.
APPEND r_werks.

  • LOOP AT gt_alv ASSIGNING <fs_alv>.
  • READ TABLE lt_match INTO DATA(ls_match) WITH KEY matnr_o = <fs_alv>-matnr_o
  •                                                 BINARY SEARCH.
    
  • IF sy-subrc = 0.
  •  <fs_alv>-zlight = icon_green_light.
    
  • ENDIF.
  • ENDLOOP.
  • DELETE gt_alv[] WHERE zlight = icon_green_light.

******后台数据处理
DATA:lv_xhhs TYPE p LENGTH 13 DECIMALS 2."每次循环数据行数
DATA:lv_num TYPE p LENGTH 13 DECIMALS 2,
lv_time TYPE int4, "
lvf_indexf TYPE int4, "
lvt_indext TYPE int4. "

lv_num = lines( gt_alv ).

lv_xhhs = ceil( lv_num / p_sjfb ). "获得包得数量

DO lv_xhhs TIMES.

lv_time = lv_time + 1.
lvf_indexf = lvt_indext + 1."计算本次包发送的数据开始索引
lvt_indext = lv_time * p_sjfb ."计算本次包发送的数据结束索引REFRESH r_matnr_old.
LOOP AT gt_alv ASSIGNING <fs_alv> FROM lvf_indexf TO lvt_indext.   "循环取到得数据r_matnr_old-sign = 'I'.r_matnr_old-option = 'EQ'.r_matnr_old-low = <fs_alv>-matnr_o.APPEND r_matnr_old.
ENDLOOP.PERFORM frm_creat_job .

ENDDO.

ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CREAT_JOB
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  • –> p1 text
  • <-- p2 text
    ----------------------------------------------------------------------
    FORM frm_creat_job .

DATA:lv_number TYPE tbtcjob-jobcount,
lv_name TYPE tbtcjob-jobname,
lv_print_parameters TYPE pri_params VALUE ‘LP01’.

DATA lv_rep LIKE trdir-name VALUE ‘ZMM315’.
DATA:lv_job LIKE tbtco-jobname.
DATA:lv_num TYPE p LENGTH 13 DECIMALS 2.

lv_job =‘ZMM315后台复制采购信息记录’&& ‘-’ && sy-datum && ‘-’&& sy-uzeit.

DO.
SELECT COUNT(*)
INTO @DATA(lv_count)
FROM tbtco
WHERE tbtco~jobname LIKE ‘ZMM315后台复制采购信息记录%’
AND tbtco~status IN ( ‘R’,‘Y’ ).

IF lv_count < p_htrw.EXIT.
ENDIF.

ENDDO.

CLEAR lv_number.

"创建已计划状态的JOB
CALL FUNCTION ‘JOB_OPEN’
EXPORTING
jobname = lv_job
IMPORTING
jobcount = lv_number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc = 0.

SUBMIT (lv_rep)
TO SAP-SPOOL "打印机参数设置
SPOOL PARAMETERS lv_print_parameters "打印机格式
WITH s_matnr IN r_matnr_old
WITH s_werks IN r_werks
WITH p_job = 'X'
WITHOUT SPOOL DYNPRO
USER syst-uname
VIA JOB lv_job
NUMBER lv_number
AND RETURN.IF sy-subrc = 0."释放已计划的JOB,JOB状态为活动CALL FUNCTION 'JOB_CLOSE'EXPORTINGjobcount             = lv_numberjobname              = lv_jobstrtimmed            = 'X'EXCEPTIONScant_start_immediate = 1invalid_startdate    = 2jobname_missing      = 3job_close_failed     = 4job_nosteps          = 5job_notex            = 6lock_failed          = 7OTHERS               = 8.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.
ENDIF.

ENDIF.

ENDFORM.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/233235.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

向量数据库:usearch的简单使用+实现图片检索应用

usearch的简单使用 usearch是快速开源搜索和聚类引擎&#xff0c;用于C、C、Python、JavaScript、Rust、Java、Objective-C、Swift、C#、GoLang和Wolfram &#x1f50d;中的向量和&#x1f51c;字符串 // https://github.com/unum-cloud/usearch/blob/main/python/README.md …

[C#]使用sdcb.paddleocr部署v4版本ocr识别模型

【官方框架地址】 https://github.com/sdcb/PaddleSharp 【算法介绍】 PaddleOCR&#xff0c;全称为PaddlePaddle OCR&#xff0c;是PaddlePaddle深度学习平台下的一款强大的光学字符识别工具。它利用深度学习技术&#xff0c;实现了高精度的文字识别&#xff0c;可以帮助用户…

生态系统服务构建生态安全格局中的实践技术应用

生态安全是指生态系统的健康和完整情况。生态安全的内涵可以归纳为&#xff1a;一&#xff0c;保持生态系统活力和内外部组分、结构的稳定与持续性&#xff1b;二&#xff0c;维持生态系统生态功能的完整性&#xff1b;三&#xff0c;面临外来不利因素时&#xff0c;生态系统具…

window使用cpolar实现内网穿透

文章目录 cpolar下载和安装启动和配置cpolar卸载 cpolar下载和安装 进入spolar官网&#xff0c;完成注册&#xff0c;下载相应的cploar版本解压和运行安装文件 配置安装路径&#xff0c;然后选择next&#xff0c;完成即可 启动和配置 点击首页的快捷图标打开网页&#xf…

分布式系统架构设计之分布式消息队列基础知识

随着微服务、大数据和云计算的普及&#xff0c;分布式系统已经成为现代软件架构的核心。在分布式系统中&#xff0c;各个组件间的通信和数据交换尤其重要&#xff0c;而消息队列正是实现这一目标的关键技术之一。 在分布式架构设计过程中&#xff0c;架构师们需要对消息队列有…

StarRocks 在小红书自助分析场景的应用与实践

作者&#xff1a;小红书 OLAP 研发负责人 王成 近两年 StarRocks 一直是小红书 OLAP 引擎体系里非常重要的部分&#xff0c;过去一年&#xff0c;小红书的 StarRocks 使用规模呈现出翻倍的增长速度&#xff0c;目前整体规模已经达到 30 个集群&#xff0c;CPU 规模已经达到了 3…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件&#xff0c;有如下一段话&#xff1a; 在构建 Redis 时&#xff0c;通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc&#xff0c;但在 Linux 系统上&#xff0c;jemalloc 是…

图像分割-Grabcut法(C#)

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的VB版本请访问&#xff1a;图像分割-Grabcut法-CSDN博客 GrabCut是一种基于图像分割的技术&#xff0c;它可以用于将图像中的…

Python | 基于Mediapipe框架的手势识别系统

一、项目要求 1、题目 本题着力于解决会商演示系统中的非接触式人机交互问题&#xff0c;具体而言&#xff0c;其核心问题就是通过计算机视觉技术实现对基于视频流的手势动作进行实时检测和识别。通过摄像头采集并识别控制者连续的手势动作&#xff0c;完成包括点击、平移、缩放…

小白入门基础 - Restful

一&#xff1a;REST与RESTful&#xff1a; REST&#xff1a;表现层状态转移&#xff0c;资源在网络中以某种形式进行状态转移。 RESTful是基于REST理念的一套开发风格&#xff0c;是具体的开发规则。 服务器端只返回数据&#xff0c;以json或者xml的格式。 RESTful开发规范&a…

【大数据】Spark学习笔记

初识Spark Spark和Hadoop HadoopSpark起源时间20052009起源地MapReduceUniversity of California Berkeley数据处理引擎BatchBatch编程模型MapReduceResilient distributed Datesets内存管理Disk BasedJVM Managed延迟高中吞吐量中高优化机制手动手动APILow levelhigh level流…

MySQL之视图外连接、内连接和子查询的使用

目录 一、视图 1.1 含义 1.2 操作 1.3 SQL数据 二、连接查询案例 &#xff08;1&#xff09;查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 &#xff08;2&#xff09;查询同时存在" 01 "课程和" 02 "课程的情况 &a…

docker安裝gocd-server,并配置gitlab授权登录

gocd的地址&#xff1a;Installing GoCD server on Windows | GoCD User Documentation gocd文档&#xff1a;GitHub - gocd/docker-gocd-server: Docker server image for GoCD 一、docker拉取gocd镜像 #拉取server镜像 docker pull gocd/gocd-server:v21.1.0docker pull g…

java SSM水质历史数据可视化设计myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM水质历史数据可视化设计是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主…

QT常用控件使用及布局

QT常用控件使用及布局 文章目录 QT常用控件使用及布局1、创建带Ui的工程2、ui界面介绍1、界面设计区2、对象监视区3、对象监属性编辑区4、信号与槽5、布局器6、控件1、Layouts1、布局管理器2、布局的dome 2、Spacers3、Buttons4、项目视图组(Item Views)5、项目控件组(Item Wid…

“数据要素×”正式来袭|美创“全栈能力、深入场景”保障数据价值安全释放

千呼万唤&#xff0c;1月4日&#xff0c;国家数据局等17部门联合印发的《“数据要素”三年行动计划&#xff08;2024—2026年&#xff09;》&#xff08;下称《三年行动计划》&#xff09;正式发布&#xff01; 作为国家数据局成立以来公开发布的首个重磅文件&#xff0c;《三年…

大数据StarRocks(四) :常用命令

这次主要介绍生产工作中使用Starrocks时的常用命令 4.1 连接StarRocks 4.1.1 Linux命令行连接 [roothadoop1011 fe]# yum install mysql -y [roothadoop1011 fe]# mysql -h hadoop101 -uroot -P9030 -p4.1.2 Windows客户端 DBeaver 连接 4.2 常用命令 4.2.1 查看状态 1. 查…

uniapp获取手机当前信息及应用版本

appVersion 是app端查询的数据信息 appWgtVersion 是浏览器端查询的数据信息 onLoad() {const systemInfo uni.getSystemInfoSync();console.log(systemInfo);// #ifdef H5const uniAppVersion systemInfo.appVersion;// #endif// #ifndef H5const uniAppVersion systemIn…

案例分享:Qt多国语言输入法软键盘

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/135346374 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

vue-springboot基于java的实验室安全考试系统

本系统为用户而设计制作实验室安全考试系统&#xff0c;旨在实现实验室安全考试智能化、现代化管理。本实验室安全考试管理自动化系统的开发和研制的最终目的是将实验室安全考试的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的…