当前位置: 首页 > news >正文

ABAP 批导demo调用SM30表维护demo

ABAP 批导demo&调用SM30表维护demo

&---------------------------------------------------------------------
*& Report ZPP036
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT zpp036.

TABLES:ztpp010,sscrfields.

**全局定义
DATA:gt_alv TYPE TABLE OF ztpp010,
gs_alv TYPE ztpp010.

DATA: BEGIN OF itfile OCCURS 0 ,
matnr TYPE string, "物料
zmatnr1 TYPE string, "替代料1
zmatnr2 TYPE string, "替代料2
END OF itfile.

DATA: gs_functxt TYPE smp_dyntxt. "功能代码文本
DATA: gt_fcat TYPE lvc_t_fcat, "字段目录
gs_fcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo.
DATA: excl_cua_funct TYPE TABLE OF vimexclfun.

PARAMETERS: p_pfile TYPE localfile.
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN: FUNCTION KEY 2.

**初始化
INITIALIZATION.

gs_functxt-icon_id = icon_tools.
gs_functxt-quickinfo = ‘替代料关系表’.
gs_functxt-icon_text = ‘替代料关系表’.
sscrfields-functxt_01 = gs_functxt.

gs_functxt-icon_id = icon_export.
gs_functxt-quickinfo = ‘下载导入模版’.
gs_functxt-icon_text = ‘下载导入模版’.
sscrfields-functxt_02 = gs_functxt.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pfile.
PERFORM frm_input_help CHANGING p_pfile.

AT SELECTION-SCREEN.
IF sscrfields-ucomm = ‘FC02’.
PERFORM frm_download_template.
ELSEIF sscrfields-ucomm = ‘FC01’.
PERFORM frm_view_maintenance_call TABLES excl_cua_funct USING ‘ZTPP010’ ‘S’.
ENDIF.

START-OF-SELECTION.
PERFORM get_data USING p_pfile. "导入数据

END-OF-SELECTION.
PERFORM frm_layout.
PERFORM frm_fcat.
PERFORM frm_show.
&---------------------------------------------------------------------
*& Form frm_input_help
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& <-- P_PFILE
&---------------------------------------------------------------------
FORM frm_input_help CHANGING p_o_file.
DATA:
ltd_filetable TYPE filetable,
lth_filetable TYPE LINE OF filetable,
lw_rc TYPE i.

CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = ltd_filetable
rc = lw_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.

IF sy-subrc = 0.
READ TABLE ltd_filetable INTO lth_filetable INDEX 1.
p_o_file = lth_filetable-filename.
ELSE.
MESSAGE ID sy-msgid TYPE ‘I’ NUMBER sy-msgno
DISPLAY LIKE ‘E’
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_download_template
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_download_template .
DATA: lv_filepath TYPE string, " 存放路径
lv_filename TYPE string, "文件名称
lv_path TYPE string . " 下载后存放全路径
DATA: lv_objdata LIKE wwwdatatab,
lv_obj_name LIKE wwwdatatab-objid,
lt_mime LIKE w3mime OCCURS 10.
DATA: lv_ret TYPE abap_bool,
lv_answer.
DATA: lv_file TYPE string.

"设置 www object信息
lv_obj_name = ‘ZPP036’.

"保存对话框
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = ‘下载模板’
default_extension = ‘xlsx’
default_file_name = ‘ZPP036导入模板.xlsx’
file_filter = ‘EXCEL’
prompt_on_overwrite = ‘’
CHANGING
fullpath = lv_path
filename = lv_filename
path = lv_filepath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.

"检查文件是否存在
MOVE lv_path TO lv_file.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = lv_file
RECEIVING
result = lv_ret
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.

IF lv_ret EQ ‘X’.

  • 模版已存在,是否覆盖
    CALL FUNCTION ‘POPUP_TO_CONFIRM’
    EXPORTING
    text_question = ‘模版已存在,是否覆盖?’
    text_button_1 = ‘是’(005)
    text_button_2 = ‘否’(006)
    IMPORTING
    answer = lv_answer
    EXCEPTIONS
    text_not_found = 1
    OTHERS = 2.
    IF sy-subrc <> 0.

    ENDIF.

    IF lv_answer EQ ‘A’. "取消
    EXIT.
    ELSEIF lv_answer NE ‘1’. "否
    EXIT.
    ENDIF.
    ELSE.
    lv_answer = ‘1’.
    ENDIF.

    IF lv_answer EQ ‘1’.

    SELECT relid objid
    FROM wwwdata
    INTO CORRESPONDING FIELDS OF lv_objdata
    UP TO 1 ROWS
    WHERE srtf2 = 0
    AND relid = ‘MI’
    AND objid = lv_obj_name.
    ENDSELECT.

    IF lv_path IS NOT INITIAL.
    " 装载至本地文件
    p_pfile = lv_path.
    CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’ "
    EXPORTING
    key = lv_objdata
    destination = p_pfile.
    ENDIF.

    ENDIF.
    ENDFORM.
    &---------------------------------------------------------------------
    *& Form frm_view_maintenance_call
    &---------------------------------------------------------------------
    *& text
    &---------------------------------------------------------------------
    *& --> EXCL_CUA_FUNCT
    *& --> P_
    *& --> P_
    &---------------------------------------------------------------------
    FORM frm_view_maintenance_call TABLES excl_cua_funct STRUCTURE vimexclfun
    USING p_view_name LIKE dd02v-tabname
    p_action TYPE char1.

    CALL FUNCTION ‘VIEW_MAINTENANCE_CALL’
    EXPORTING
    action = p_action

  • CORR_NUMBER                  = '          '
    
  • GENERATE_MAINT_TOOL_IF_MISSING       = ' '
    
  • SHOW_SELECTION_POPUP         = ' '
    view_name                    = p_view_name
    
  • NO_WARNING_FOR_CLIENTINDEP   = ' '
    
  • RFC_DESTINATION_FOR_UPGRADE  = ' '
    
  • CLIENT_FOR_UPGRADE           = ' '
    
  • VARIANT_FOR_SELECTION        = ' '
    
  • COMPLEX_SELCONDS_USED        = ' '
    
  • CHECK_DDIC_MAINFLAG          = ' '
    
  • SUPPRESS_WA_POPUP            = ' '
    

    TABLES

  • DBA_SELLIST                  =
    excl_cua_funct               = excl_cua_funct
    

    EXCEPTIONS
    client_reference = 1
    foreign_lock = 2
    invalid_action = 3
    no_clientindependent_auth = 4
    no_database_function = 5
    no_editor_function = 6
    no_show_auth = 7
    no_tvdir_entry = 8
    no_upd_auth = 9
    only_show_allowed = 10
    system_failure = 11
    unknown_field_in_dba_sellist = 12
    view_not_found = 13
    maintenance_prohibited = 14
    OTHERS = 15.
    IF sy-subrc <> 0.

  • Implement suitable error handling here
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form get_data
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> P_PFILE
&---------------------------------------------------------------------
FORM get_data USING p_p_pfile.

FIELD-SYMBOLS: TYPE any.
DATA: l_intern TYPE zalsmex_tabline3 OCCURS 0 WITH HEADER LINE.

DATA: c_row TYPE i VALUE 4, "读EXCEL第4行开始
c_col TYPE i VALUE 1, "读EXCEL第1列开始
l_index TYPE i,
l_msg(60) TYPE c,
g_mod TYPE d,
l_row(5) TYPE n,
li_len TYPE sy-tabix,
l_cstr(4).

CALL FUNCTION ‘ZALSM_EXCEL_TO_INTERNAL_TABLE2’
EXPORTING
filename = p_pfile
i_begin_col = ‘1’ "开始列
i_begin_row = ‘2’ "开始行
i_end_col = ‘3’ "结束列
i_end_row = ‘99999’ "结束行

  • I_END_ROW               = '100000'   "结束行
    
  • I_SHEET_NO              =
    

    TABLES
    intern = l_intern
    EXCEPTIONS
    inconsistent_parameters = 1
    upload_ole = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE ‘导入数据文件失败!’ TYPE ‘S’.
    STOP.
    ENDIF.

    SORT l_intern BY row col.

    REFRESH gt_alv.
    LOOP AT l_intern.
    ASSIGN COMPONENT l_intern-col OF STRUCTURE itfile TO .
    "动态方法将值传到相应的内表
    = l_intern-value.

    AT END OF row.
    MOVE-CORRESPONDING itfile TO gs_alv.

    APPEND gs_alv TO gt_alv.
    CLEAR: gs_alv,itfile.
    

    ENDAT.
    ENDLOOP.

    CHECK gt_alv IS NOT INITIAL.

    MODIFY ztpp010 FROM TABLE gt_alv.
    IF sy-subrc = 0.
    COMMIT WORK.
    MESSAGE ‘已成功导入’ TYPE ‘S’.
    ENDIF.

ENDFORM.
&---------------------------------------------------------------------
*& Form frm_layout
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_layout .
CLEAR gs_layout.
gs_layout-zebra = ‘X’.
gs_layout-cwidth_opt = ‘X’.
gs_layout-sel_mode = ‘A’.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_fcat
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_fcat .
REFRESH gt_fcat.
DEFINE set_fieldcat_alv.

CLEAR gs_fcat.

gs_fcat-fieldname = &1.
gs_fcat-coltext = &2.
gs_fcat-ref_field = &3.
gs_fcat-ref_table = &4.
gs_fcat-outputlen = &5.

APPEND gs_fcat TO gt_fcat.

END-OF-DEFINITION.

set_fieldcat_alv ‘MATNR’ ‘物料代码’ ‘’ ‘’ ‘18’ .
set_fieldcat_alv ‘ZMATNR1’ ‘替代料1’ ‘’ ‘’ ‘18’.
set_fieldcat_alv ‘ZMATNR2’ ‘替代料2’ ‘’ ‘’ ‘18’.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_show
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_show .
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fcat

  • i_callback_pf_status_set = 'PF_STATUS'
    
  • i_callback_user_command  = 'USER_COMMAND'
    
  • it_events          = lt_events
    i_save             = 'A'
    
    TABLES
    t_outtab = gt_alv
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    ENDFORM.

相关文章:

ABAP 批导demo调用SM30表维护demo

ABAP 批导demo&调用SM30表维护demo &--------------------------------------------------------------------- *& Report ZPP036 &--------------------------------------------------------------------- *& &-----------------------------------…...

Mysql 文件导入与导出

i/o 一、导出(mysqldump)<一>、导出sql文件<二>、导出csv文件 二、导入(load)三、常见报错The Mysql server is running with the --secure-file-priv option so it cannot execute this statement 一、导出(mysqldump) <一>、导出sql文件 1、整库 mysqld…...

《每天十分钟》-红宝书第4版-迭代器与生成器

理解迭代 计数循环就是一种最简单的迭代 for (let i 1; i < 10; i) { console.log(i); }迭代之前需要事先知道如何使用数据结构。数组中的每一项都只能先通过引用取得数组对象&#xff0c;然后再通过[]操作符取得特定索引位置上的项。这种情况并不适用于所有数据结构。遍…...

1、【vue篇】vue框架快速上手

注意事项&#xff1a; methods必须要加s 导入vue&#xff1a;<script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>导入Axios:<script src"https://unpkg.com/axios/dist/axios.min.js"></script> 简单Vue程序…...

Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏)

目录 1. GUIStyle1.1 参数总览1.2 样式代码 2. GUISkin2.1 参数总览2.2 创建自定义Skin 3. EditorStyles2.1 参数总览1.2 反射获取所有EditorStyles 1. GUIStyle GUIStyle是一个用于定制GUI控件样式的类&#xff0c;它包含了控件的外观属性&#xff0c;如字体、颜色、背景等。…...

Spring Boot Starters

Spring Boot Starters 概述 Spring Boot Starters是一系列为特定应用场景预设的依赖管理和自动配置方案。每个Starter都是为了简化特定类型的项目构建和配置。例如&#xff0c;spring-boot-starter-web是为创建基于Spring MVC的Web应用程序而设计的。 Starter的结构 一个典型…...

Qt防止创建窗口抢焦点

问题是&#xff0c;当我在 Qt 中打开一个新窗口时&#xff0c;它会自动窃取前一个应用程序的焦点。 有什么办法可以防止这种情况发生吗&#xff1f; setAttribute(Qt::WA_ShowWithoutActivating);这会强制窗口不激活。即使有Qt::WindowStaysOnTopHint flag 出处&#xff1a; S…...

shared_ptr 与 unique_ptr 的转换 笔记

推荐B站文章&#xff1a; 6.shared_ptr与unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p6&vd_sourcea934d7fc6f47698a29dac90a922ba5a3我的往期文章&#xff1a; 独占指针&#xff1a;unique_ptr 与 函数调用-CSDN博客https://blog.csdn.n…...

python windows和linux 文件同步

在Python中&#xff0c;可以使用paramiko库来实现Windows和Linux之间的文件同步。paramiko是一个用于SSH连接的Python库&#xff0c;可以用于在Windows和Linux之间进行文件传输。 以下是一个简单的示例代码&#xff0c;演示如何使用paramiko库在Windows和Linux之间同步文件&am…...

【数据结构】72变的双端队列

双端队列 前言一、双端队列1.1 双端队列的定义1.2 输入受限的双端队列1.3 输出受限的双端队列1.5 输入输出都受限的双端队列1.6 小结 二、双端队列的使用2.1 双端队列的出队序列——暴力求解2.1.1 栈的出栈序列2.1.2 输入受限的双端队列2.1.3 输出受限的双端队列2.1.4 输入输出…...

kafka为什么不支持读写分离?

kafka为什么不支持读写分离&#xff1f; 在kafka中&#xff0c;生产者写入消息&#xff0c;消费者读取消息的操作都是与 leader 副本进行交互的&#xff0c;从而实现的是一种主写主读的生产消费模型。kafka不支持读写分离&#xff0c;也就是主写从读。 读写分离有以下不足&am…...

arcgis 面要素shp数据处理

面要素是工作中用到最多的&#xff0c;那么面要素是如何形成的呢&#xff0c;主要还是由闭合的线要素转换而成。在面要素数据中常用的有以下几点&#xff1a; 一、 线转面&#xff08;要素转面&#xff09; 通过上一篇得到了点转线的要素&#xff0c;那么根据上节的线要素&am…...

数轴(0 ~ m)上有n个不同点,最多只能移动一个点,移动到[1, m]中任意一点,求最终最小相邻两个点的距离的最大值是什么

题目 思路:先找到相邻距离最小的位置,假设为pos, 那么不是移动第pos个点就是移动第(pos - 1)个点,先移动pos点,用数组vec存除了pos点之外的所有点,求出最小相邻距离和最大相邻距离,那么肯定将pos点插入到最大相邻距离中。 #include <bits/stdc++.h> using namesp…...

BGP路由反射-数据中心IDC项目经验

一、背景描述 R1,R2,R3在AS200区域内&#xff0c;R1和R2,R1和R3建立OSPF&#xff0c;宣告接口互联. AS200区域内&#xff0c;R1和R2建立IBGP, R1和R3建立IBGP R2和R4建立EBGP, R3和R5建立EBGP。 网络拓扑&#xff1a; 二、故障现象 R1和R2可以收到来自AS100区域R4的E…...

提取视频中的某一帧画面,留住视频中的美好瞬间

你是否曾经被视频中的某一帧画面深深吸引&#xff0c;却又惋惜于无法将其永久保存&#xff1f;现在&#xff0c;有了我们【媒体梦工厂】&#xff0c;这一遗憾将成为过去&#xff0c;这个软件可以提取视频中的某一帧保存为图片&#xff0c;为你留住那些稍纵即逝的美好。 所需工…...

一个好用的服务器控制面板

简介 它是一个免费开源的管理面板工具&#xff0c;可以帮助你集中管理多个服务器和网站。Ajenti 支持 Linux、BSD、Mac OS X和Windows 等多个操作系统&#xff0c;并且可以通过一个直观的 Web 界面来完成各种系统管理任务。 相比于其他管理面板&#xff0c;Ajenti有以下几个优…...

软件测评中心▏软件系统测试的定义与测试流程简析

软件系统测试是指在软件开发的各个阶段对软件系统进行全面、系统的测试&#xff0c;以发现并修复潜在的问题和错误。系统测试旨在确保软件在各种不同的环境和使用条件下都能正常运行&#xff0c;满足用户需求&#xff0c;并且具备良好的性能和稳定性&#xff0c;包括以下测试流…...

基于JavaWeb+SSM+Vue基于微信小程序生鲜云订单零售系统的设计和实现

基于JavaWebSSMVue基于微信小程序生鲜云订单零售系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计…...

查询列表实时按照更新时间降序排列 没有更新时间就按创建时间

例子: sql两个字段排序 ORDER BY update_time DESC , create_time DESC <select id"selectLawIllegalActivitiesList" parameterType"LawIllegalActivities" resultMap"LawIllegalActivitiesResult"><include refid"selectL…...

愉快的使用vscode刷leetcode,开启摸鱼新高度

文章目录 1. 安装leetcode插件2. 安装node.js3. vscode配置 1. 安装leetcode插件 插件扩展中搜索LeetCode&#xff0c;一般刚开始都是第一个&#xff0c;如下图所示。 2. 安装node.js window安装方法 去 node.js官网 下载相应的安装包&#xff0c;一路next即可。 ubuntu安…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...