批量创建可配置物料参数文件

news2024/11/18 15:38:43

启用可配置物料之后,每次创建新的物料需要通过CU41创建可配置物料,没找大批量创建的程序,所以SHDB录屏搞了一个代码。

前提:物料主数据初始化通过程序导入时,可配置物料参数文件已按照物料代码赋值。

​效果:

源代码:

*&---------------------------------------------------------------------*
*& Report ZCU41
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

REPORT zcu41
       NO STANDARD PAGE HEADING LINE-SIZE 255.


TABLES: sscrfields.
TABLES:mara,mseg.
TYPE-POOLS: icon, slis.

*-------- ALV structures

DATA: wa_fieldcat TYPE slis_fieldcat_alv,
      it_fieldcat TYPE slis_t_fieldcat_alv,
      g_layout    TYPE slis_layout_alv,
      g_title     TYPE lvc_title,
      pos         TYPE i,
      l_field     TYPE slis_fieldcat_alv,   "字段列结构
      l_fieldcat  TYPE slis_t_fieldcat_alv, "字段列内表
      l_status_01 TYPE slis_formname VALUE 'L_STATUS_01'.



DATA : BEGIN OF itab_data OCCURS 0,
         icon         TYPE icon_d,
         type(1),
         sel(1),
         matnr        TYPE marc-matnr, "物料代码
         maktx        TYPE makt-maktx,
         message(200),
       END OF itab_data.

DATA:itab_bdctab TYPE TABLE OF bdcdata WITH HEADER LINE.
DATA:p_mode TYPE char1 VALUE 'N',
     p_upda TYPE char1 VALUE 'L'.
DATA lv_mess TYPE string.
DATA BEGIN OF messtab OCCURS 10.
INCLUDE STRUCTURE bdcmsgcoll.
DATA END OF messtab.


DEFINE add_col.
  CLEAR wa_fieldcat.
  ADD 1 TO pos.
  wa_fieldcat-col_pos = pos.
  wa_fieldcat-fieldname = &1.
  wa_fieldcat-ref_fieldname = &2.
  wa_fieldcat-ref_tabname = &3.
  wa_fieldcat-seltext_m = &4.
  wa_fieldcat-tabname = &5.
  wa_fieldcat-do_sum = &6.
  wa_fieldcat-edit_mask = &7.
  wa_fieldcat-hotspot = &8.
  wa_fieldcat-checkbox = &9.
  APPEND wa_fieldcat TO it_fieldcat.
END-OF-DEFINITION.

START-OF-SELECTION.

  PERFORM frm_get_data.
  PERFORM frm_display_data.

*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_display_data .
  REFRESH: it_fieldcat.
  CLEAR g_layout.
  add_col 'ICON'       space space '状态'            'ITAB_DATA' space space space space.
  add_col 'SEL'        space space '选择'            'ITAB_DATA' space space 'X'   'X'.
  add_col 'MATNR'      space space '物料代码'        'ITAB_DATA' space '==ALPHA' space space.
  add_col 'MAKTX'      space space '物料描述'        'ITAB_DATA' space space space space.
  add_col 'MESSAGE'    space space '处理消息'        'ITAB_DATA' space space space space.
  g_layout-colwidth_optimize = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'L_STATUS100'
      i_callback_user_command  = 'FRM_USER_COMMAND'
      is_layout                = g_layout
      it_fieldcat              = it_fieldcat
    TABLES
      t_outtab                 = itab_data
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.


FORM l_status100 USING extab TYPE slis_t_extab.
  SET  PF-STATUS  'ST01'.
ENDFORM.                    "L_STATUS100


*&---------------------------------------------------------------------*
*&      Form  frm_user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
  DATA: ref TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = ref.
  CALL METHOD ref->check_changed_data.
  CASE r_ucomm.
    WHEN '&IC1'.
      IF rs_selfield-fieldname = 'SEL'.
        READ TABLE itab_data INDEX rs_selfield-tabindex.
        IF itab_data-sel = ''.
          itab_data-sel = 'X'.
        ELSE.
          itab_data-sel = ''.
        ENDIF.
        MODIFY itab_data INDEX rs_selfield-tabindex.
        CLEAR itab_data.
      ENDIF.
    WHEN 'ALL'.
      itab_data-sel = 'X'.
      MODIFY itab_data FROM itab_data  TRANSPORTING sel   WHERE sel = '' .
    WHEN 'SAL'.
      itab_data-sel = ''.
      MODIFY itab_data FROM itab_data  TRANSPORTING sel   WHERE sel = 'X' .
    WHEN 'IMP'.
      PERFORM frm_excute.
  ENDCASE.
  rs_selfield-refresh = 'X'.
ENDFORM.






*&---------------------------------------------------------------------*
*&      FORM  BDC_DYNPRO
*&---------------------------------------------------------------------*
FORM bdc_dynpro  USING   name value.
  CLEAR itab_bdctab.
  itab_bdctab-program = name.
  itab_bdctab-dynpro  = value.
  itab_bdctab-dynbegin = 'X'.
  APPEND itab_bdctab.
ENDFORM.                    "BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      FORM  BDC_FIELD
*&---------------------------------------------------------------------*
FORM bdc_field  USING    name value.
  CLEAR itab_bdctab.
  itab_bdctab-fnam = name.
  itab_bdctab-fval = value.
  APPEND itab_bdctab.
ENDFORM.                    "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form frm_excute
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_excute .

  LOOP AT itab_data INTO DATA(lw_data) WHERE sel = 'X' AND type NE 'S'.
    REFRESH:itab_bdctab,itab_bdctab[],messtab,messtab[].

    PERFORM bdc_dynpro      USING 'SAPLCUCO' '0110'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RCUCO-DATUM'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'RCUCO-MATNR'
                                  lw_data-matnr."物料代码
    PERFORM bdc_field       USING 'RCUCO-DATUM'
                                  '20230101'."日期,默认20230101
    PERFORM bdc_dynpro      USING 'SAPLCUCO' '0200'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RCUCO-KLART(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'RCUCO-PRFID(01)'
                                  lw_data-matnr."参数名,默认物料代码
    PERFORM bdc_field       USING 'RCUCO-KLART(01)'
                                  '300'."固定值300
    PERFORM bdc_dynpro      USING 'SAPLCUCO' '0200'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=SAVE'.


    CALL TRANSACTION 'CU41' USING itab_bdctab
        MODE      p_mode
        UPDATE    p_upda
        MESSAGES INTO messtab.

    READ TABLE messtab WITH KEY msgtyp = 'E'.
    IF sy-subrc EQ 0.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          id        = messtab-msgid
          lang      = '1'
          no        = messtab-msgnr
          v1        = messtab-msgv1
          v2        = messtab-msgv2
          v3        = messtab-msgv3
          v4        = messtab-msgv4
        IMPORTING
          msg       = lv_mess
        EXCEPTIONS
          not_found = 1
          OTHERS    = 2.
      lw_data-message = lv_mess.
      lw_data-type    = 'E'.
      lw_data-icon    = icon_red_light.
    ELSE.
      lw_data-message = '创建成功'.
      lw_data-type    = 'S'.
      lw_data-icon    =  icon_green_light.
    ENDIF.

    MODIFY itab_data FROM lw_data TRANSPORTING message type  icon WHERE matnr = lw_data-matnr  AND SEL = 'X' AND type NE 'S'.
    CLEAR lw_data.
  ENDLOOP.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data .
  SELECT mara~matnr,makt~maktx
    INTO CORRESPONDING FIELDS OF TABLE @itab_data
    FROM mara INNER JOIN makt ON mara~matnr = makt~matnr AND makt~spras = '1'
    WHERE mara~kzkfg = 'X'.

  LOOP AT itab_data.
    SELECT SINGLE objek
      FROM cuco
      INTO @DATA(lv_objek)
      WHERE objek = @itab_data-matnr.
    IF sy-subrc = 0.
      DELETE itab_data.
    ENDIF.
  ENDLOOP.
ENDFORM.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同比环比使用方法

一、解释&#xff1a; 1.同比&#xff1a;本期与去年同期相比 &#xff0c;如2023年8月 比 2022年8月 2.环比&#xff1a;本期与上期相比 &#xff0c;如2023年8月 比 2023年7月 二、应用&#xff1a; 1.场景&#xff1a;统计日报、周报、月报、年报下进店客流的同比和环…

Stable Diffusion教程(6) - 图片高清放大

放大后细节 修复图片损坏 显存占用 速度 批量放大 文生图放大 好 是 高 慢 否 附加功能放大 一般 否 中 快 是 图生图放大 好 是 低 慢 是 tile模型放大 非常好 是 高 快 是 通过文生图页面的高清修复 优点&#xff1a;放大时能添加更多细节&am…

LeetCode--HOT100题(18)

目录 题目描述&#xff1a;73. 矩阵置零&#xff08;中等&#xff09;题目接口解题思路1代码解题思路2代码 PS: 题目描述&#xff1a;73. 矩阵置零&#xff08;中等&#xff09; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都…

【Linux】网络基础之IP协议

目录 &#x1f338;1、基本概念&#x1f33a;2、IP协议报文结构&#x1f368;2.1、4位版本号&#x1f369;2.2、4位首部长度和16位总长度&#x1f36a;2.3、8位生存时间&#xff08;TTL&#xff09;&#x1f36b;2.4、8位协议&#x1f36c;2.5、16位首部校验和&#x1f36d;2.6…

Manim(一款强大的数学可视化动画引擎)学习历程

相逢情便深&#xff0c;恨不相逢早 第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服&#xff0c;我觉得它完全符合我的审美&#xff0c;我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown&#xff0…

vue卡片轮播图

我的项目是vue3的&#xff0c;用的swiper8 <template><div class"tab-all"><div class"tab-four"><swiper:loop"true":autoplay"{disableOnInteraction:false,delay:3000}":slides-per-view"3":center…

快速上手字符串函数

文章目录 前言一、求字符串的长度strlen函数strlen函数学习使用strlen函数模拟实现strlen函数模拟实现方法1&#xff1a;计数器法strlen函数模拟实现方法2&#xff1a;指针减指针法strlen函数模拟实现方法3&#xff1a;递归方法 二、字符串的拷贝&#xff0c;拼接和比较strcpy函…

某科技公司提前批测试岗

文章目录 题目 今天给大家带来一家提前批测试岗的真题&#xff0c;目前已经发offer 题目 1.自我介绍 2.登录页面测试用例设计 3.如何模拟多用户登录 可以使用Jmeter,loadRunner性能测试工具来模拟大量用户登录操作去观察一些参数变化 4.有使用过Jmeter,loadRunner做过性能压…

为什么 CSS 这么难学?

前言 CSS难其实就难在其内容的多变上&#xff0c;我觉得这些其实都可以通过大量的练习来解决&#xff0c;去记再多的东西不如写几个demo或者小项目来的收获大&#xff0c;当然练完项目所需要的总结是必需的&#xff01;下面我推荐整理了一些学习css相关的网站和项目&#xff0…

谁会拒绝一篇关于【python装饰器】的友情分享呢~

一、什么是装饰器 1. python装饰器是用于拓展原来函数功能的一种函数&#xff0c;目的是在不改变原函数的情况下&#xff0c;给函数增加功能。2. 装饰器是通过闭包实现&#xff0c;所以讲装饰器首先得知道什么是闭包。 二、什么是闭包 1、什么是闭包 1. 一个定义在函数内部的…

【Jmeter】配置不同业务请求比例,应对综合场景压测

目录 背景 Jmeter实现&#xff08;Random&#xff09; 在测试计划下&#xff0c;我们右键“添加”——配置原件——Random Variable 设置随机数的变量名称为num&#xff0c;设置取值范围0到100 右键线程组添加“逻辑控制器”——如果&#xff08;if&#xff09;控制器 当…

Win11系统优化

当你看到这篇文章&#xff0c;我相信你电脑卡的已经不行不行的了&#xff0c;执行完快抢救一下。 一、设置win11系统显示效果&#xff08;减轻系统运行压力&#xff09; &#xff08;1&#xff09;.点击桌面的&#x1f50d;按钮&#xff0c;然后在输入框内输入“查看高级系统设…

卷积相关点

从传统的神经网络到卷积神经网络 一.传统的神经网络&#xff08;全连接网络&#xff09; 参数太多&#xff0c;冗余度高&#xff0c;容易过拟合&#xff0c;难以训练 二.卷积神经网络 1.空间平移的不变性&#xff1a;当输入的图像在空间上发生平移时&#xff0c;CNN的相应不…

f12 CSS网页调试_css样式被划了黑线怎么办

我的问题是这样的 class加上去了,但是样式不生效,此时可能是样式被其他样式覆盖了, 解决方案就是 给颜色后边添加一个!important

Java—抽象类

目录 1.抽象类概念 2.抽象类语法 3.抽象类特性 4.抽象类作用 1.抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果 一个类中没有包含足够的信息来描绘一个具体的…

10年测试经验分享 —— 新手如何去做性能测试?

大家好我是彭于晏&#xff1a;一名北漂10年的测试&#xff0c;今天给大家带来关于性能测试的一些个人经验和测试新手如何快速上手性能测试。 1、性能测试是什么&#xff1f; 一句话概括&#xff1a;不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。 具体一…

uC-OS2 V2.93 STM32L476 移植:系统启动篇

前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程&#xff0c;下载了 uC-OS2 V2.93 的源码&#xff0c;并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器&#xff08;Systick&#xff09;与 PendSV_Handler&#xf…

jwt+shiro认证

文章目录 jwt shiro 认证jwt 使用引入依赖编写 jwt 工具类测试 shiro jwt 认证项目文件路径&#xff1a;引入依赖shiro.ini重写 Realm认证服务接口认证服务接口实现类自定义 token测试 代码来自于小傅哥 《API网关》 项目 jwt shiro 认证 jwt 使用 引入依赖 <dependen…

一个SpringBoot 项目能处理多少请求?

这篇文章带大家盘一个读者遇到的面试题哈。 根据读者转述&#xff0c;面试官的原问题就是&#xff1a;一个 SpringBoot 项目能同时处理多少请求&#xff1f; 不知道你听到这个问题之后的第一反应是什么。 我大概知道他要问的是哪个方向&#xff0c;但是对于这种只有一句话的…

【C语言督学训练营 第二十一天】汇编语言零基础入门

文章目录 前言1.C语言源文件转汇编2.汇编指令格式3.汇编常用指令3.1 相关寄存器3.2 常用指令3.3 数据传送指令3.4 算术/逻辑运算指令3.5 控制流指令3.6 条件码 4.如何定义汇编中的变量5.选择循环汇编实战6.函数调用汇编实战7.C语言源文件转机器指令 前言 汇编语言是一种功能很强…