前两天吃中饭时同事说MR21修改价格用LSMW导入,每次只能导入一条商品价格,而每一个商品价格的修改都会产生一个凭证,问是否能批量导入。先去找了下BAPI,看了下BAPI_MATVAL_PRICE_CHANGE和BAPI_M_REVAL_CREATEPRICECHANGE两个BAPI,发现前一个每次只能修改一个商品价格,后一个根本就跑不起来,不知道咋回事,只能回头用SHDB解决问题。

REPORT zmr21
       NO STANDARD PAGE HEADING LINE-SIZE 255.

INCLUDE bdcrecx1.

PARAMETERS: dataset(132) LOWER CASE.
***    DO NOT CHANGE - the generated data section - DO NOT CHANGE    ***
*
*   If it is nessesary to change the data section use the rules:
*   1.) Each definition of a field exists of two lines
*   2.) The first line shows exactly the comment
*       '* data element: ' followed with the data element
*       which describes the field.
*       If you don't have a data element use the
*       comment without a data element name
*   3.) The second line shows the fieldname of the
*       structure, the fieldname must consist of
*       a fieldname and optional the character '_' and
*       three numbers and the field length in brackets
*   4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHANGE  ***
DATA: BEGIN OF record OCCURS 0,
* data element: BUDAT
        budat_001(010),
* data element: BUKRS
        bukrs_002(004),
* data element: WERKS_D
        werks_003(004),
* data element: SCREEN_VARIANT
        screen_variant_004(030),
* data element: SCREEN_VARIANT
        screen_variant_005(030),
* data element: MATNR
        matnr_01_006(018),
* data element: VALPR
        newvalpr_01_007(015),

END OF record.

*** End generated data section ***

START-OF-SELECTION.

*  PERFORM open_dataset USING dataset.
  PERFORM of_getexcel.
  PERFORM open_group.
  PERFORM of_processdata.
  PERFORM close_group.
*  PERFORM close_dataset USING dataset.

FORM of_processdata.
  DATA: li_cur TYPE i VALUE 0,
      li_mod TYPE i,
      ls_fname(30) TYPE c,
      ls_temp(2) TYPE c,
      li_len TYPE i,
      li_inex TYPE i VALUE 0.
  li_mod = LINES( record ).
  break ypcheng.
  LOOP AT record.
    li_cur = li_cur + 1.
    li_inex = li_inex + 1.
    IF li_inex = 1.
      PERFORM bdc_dynpro      USING 'SAPRCKM_MR21' '0201'.
      PERFORM bdc_field       USING 'BDC_CURSOR'  'MR21HEAD-WERKS'.
      PERFORM bdc_field       USING 'MR21HEAD-BUDAT' record-budat_001.
      PERFORM bdc_field       USING 'MR21HEAD-BUKRS' record-bukrs_002.
      PERFORM bdc_field       USING 'MR21HEAD-WERKS' record-werks_003.
    ENDIF.
    MOVE li_cur TO ls_temp.
    li_len = STRLEN( ls_temp ).
    IF li_len = 1.
      CONCATENATE '0' ls_temp INTO ls_temp.
    ENDIF.
    PERFORM bdc_dynpro      USING 'SAPRCKM_MR21' '0201'.
    PERFORM bdc_field       USING 'BDC_OKCODE' '=ENTR'.
    PERFORM bdc_field USING 'MR21HEAD-SCREEN_VARIANT' 'MR21_LAGERMATERIAL_0250'.
    CONCATENATE 'CKI_MR21_0250-MATNR(' ls_temp ')' INTO ls_fname.
    PERFORM bdc_field       USING ls_fname record-matnr_01_006.
    CONCATENATE 'CKI_MR21_0250-NEWVALPR(' ls_temp ')' INTO ls_fname.
    PERFORM bdc_field       USING ls_fname record-newvalpr_01_007.
    li_mod = li_cur MOD 9.
    IF li_mod = 0.
      CLEAR li_cur.
      PERFORM bdc_dynpro      USING 'SAPRCKM_MR21' '0201'.
      PERFORM bdc_field USING 'BDC_OKCODE' '=DOWN'.
    ENDIF.
  ENDLOOP.
  PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
  PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
  PERFORM bdc_transaction USING 'MR21'.
ENDFORM.                    "of_processdata

*&---------------------------------------------------------------------*
*&      Form  of_getexcel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM of_getexcel.
  DATA: filenm TYPE rlgrap-filename VALUE 'e:\mr21.xls'.
  FIELD-SYMBOLS: <fs1>.
  DATA: BEGIN OF iexcel OCCURS 0.
          INCLUDE STRUCTURE alsmex_tabline.
  DATA: END OF iexcel.
  DATA: ls_colname TYPE string,
        li_currow TYPE i.
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = filenm
      i_begin_col             = 1
      i_begin_row             = 1
      i_end_col               = 14
      i_end_row               = 30000
    TABLES
      intern                  = iexcel
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
    WRITE: / 'EXCEL UPLOAD FAILED ', filenm, sy-subrc.
  ELSE.
    SORT iexcel BY row col.
    DELETE iexcel WHERE row = '0001'.
    LOOP AT iexcel.
      CASE iexcel-col.
        WHEN '0001'.
          record-budat_001 = iexcel-value.
        WHEN '0002'.
          record-bukrs_002 = iexcel-value.
        WHEN '0003'.
          record-werks_003 = iexcel-value.
        WHEN '0004'.
          record-matnr_01_006 = iexcel-value.
        WHEN '0005'.
          record-newvalpr_01_007 = iexcel-value.
      ENDCASE.
      AT END OF row.
        APPEND record.
        CLEAR: record.
      ENDAT.
    ENDLOOP.
  ENDIF.
ENDFORM.                    "of_getexcel

MR21批量修改价格相关推荐

  1. MR21批量修改物料价格-BDC

    REPORT  z_update_price. TABLES:sscrfields,t100. *&---------------------------------------------- ...

  2. 讲解MR21和MR22修改价格的逻辑

    前言 SAP中MR21和MR22都可以用来修改物料的价格,但是因为修改价格的系统逻辑不一致,所以其作用和结果也不一致.本文主要通过讲解其过程来理解其中的异同. 一. MR21和MR22的特点 MR21 ...

  3. 华为服务器批量BMC修改密码,华为服务器批量修改bmc地址

    华为服务器批量修改bmc地址 内容精选 换一换 域名转入时,出现"域名已存在"的提示,导致域名无法导入.如果出现这种情况,其可能原因是,在域名转入华为云之前,已经将该域名托管至华为 ...

  4. SAP批量修改物料标准成本

    SAP批量修改物料标准成本 2018年11月16日 15:18:17 有点想鲁下 阅读数 186 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jian ...

  5. 京东店铺如何批量修改主推SKU?

    京东店铺如何批量修改主推产品sku?作为京东商家,你有没有遇到过,图片空间混乱,想找的产品sku图片不知道在哪里?想要修改产品sku,需要逐个查找产品再修改? 下面就来分享下,京东商品sku如何修改, ...

  6. 华为服务器批量修改bmc地址,华为服务器批量修改bmc地址

    华为服务器批量修改bmc地址 内容精选 换一换 域名转入时,出现"域名已存在"的提示,导致域名无法导入.如果出现这种情况,其可能原因是,在域名转入华为云之前,已经将该域名托管至华为 ...

  7. 批量修改图片尺寸的方法

    批量修改图片尺寸的方法 在日常的工作和生活中,我们经常会遇到需要对图片的尺寸进行修改,只需要修改几张还好,可以要修改几十张甚至更多的情况下,就真的很枯燥很费时间了.如果能够批量修改就好了. 我发现还真 ...

  8. Windows批量修改服务器密码,expect批量修改linux服务器密码

    expect批量修改linux服务器密码 内容精选 换一换 批量修改弹性云服务器信息.当前仅支持批量修改云服务器名称,一次最多可以修改1000台.PUT /v1/{project_id}/clouds ...

  9. 商家如何更改拼多多上货助手价格?上货助手修改价格详细步骤

    拼多多的入驻门槛并不高,但需要注意点有很多,其中最关键的就是上传商品,毕竟拼多多上传商品需要注意的规则还是蛮多的,并且现在拼多多平台也不是直接铺货就可以获取流量的时期,所以商家如果需要修改拼多多上货助 ...

最新文章

  1. 25个别出心裁的简历设计作品欣赏
  2. mysql--字段--索引的增删改查
  3. EJB----消息驱动bean--Topic 消息的发送与接收(Pub/sub 消息传递模型)
  4. Hadoop学习之MapReduce(五)
  5. __len__的作用
  6. SAP S/4HANA Material 物料主数据的简单介绍
  7. [转载] JAVA 构造函数及其重载
  8. I - Destroy Walls (HDU - 6187)
  9. 复制一个空洞文件且忽略掉其空洞内容
  10. 【为了爱,为了pascal】【第三章】 认识PASCAL语言基础
  11. mongodb的基本操作数据更新
  12. 数据分析师自学好还是报班好
  13. 74cms v5.0.1 漏洞复现
  14. couchbase php,CouchBase + PHP 安装与配置
  15. Unity Shader入门精要--第4 章 学习Shader 所需的数学基础:矩阵
  16. 数据可视化大屏-Vue项目
  17. iOS 一行代码集成微信浮窗功能
  18. No buffer space available问题解决
  19. Android Q安全锁屏下进入google photos不弹bouncer界面
  20. lob 索引 oracle,LOB字段相关概念(自动创建LOB索引段和重建索引方法)

热门文章

  1. 实现SQL SERVER 下的PadLeft函数
  2. “物联网”架构有多重要?
  3. linux之SQL语句简明教程---AND OR
  4. 项目杂记——在后台获取Repeater控件里面的控件
  5. 重庆市公安局北碚分局所需容灾备份设备及软件采购
  6. 眼睛很疼(2005-5-10)
  7. php网站漏洞检测对sql注入漏洞防护
  8. SAMBA服务和FTP服务讲解(week3_day1)--技术流ken
  9. ***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server
  10. thinkphp中的AJAX返回ajaxReturn()