MR21批量修改价格
前两天吃中饭时同事说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批量修改价格相关推荐
- MR21批量修改物料价格-BDC
REPORT z_update_price. TABLES:sscrfields,t100. *&---------------------------------------------- ...
- 讲解MR21和MR22修改价格的逻辑
前言 SAP中MR21和MR22都可以用来修改物料的价格,但是因为修改价格的系统逻辑不一致,所以其作用和结果也不一致.本文主要通过讲解其过程来理解其中的异同. 一. MR21和MR22的特点 MR21 ...
- 华为服务器批量BMC修改密码,华为服务器批量修改bmc地址
华为服务器批量修改bmc地址 内容精选 换一换 域名转入时,出现"域名已存在"的提示,导致域名无法导入.如果出现这种情况,其可能原因是,在域名转入华为云之前,已经将该域名托管至华为 ...
- SAP批量修改物料标准成本
SAP批量修改物料标准成本 2018年11月16日 15:18:17 有点想鲁下 阅读数 186 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jian ...
- 京东店铺如何批量修改主推SKU?
京东店铺如何批量修改主推产品sku?作为京东商家,你有没有遇到过,图片空间混乱,想找的产品sku图片不知道在哪里?想要修改产品sku,需要逐个查找产品再修改? 下面就来分享下,京东商品sku如何修改, ...
- 华为服务器批量修改bmc地址,华为服务器批量修改bmc地址
华为服务器批量修改bmc地址 内容精选 换一换 域名转入时,出现"域名已存在"的提示,导致域名无法导入.如果出现这种情况,其可能原因是,在域名转入华为云之前,已经将该域名托管至华为 ...
- 批量修改图片尺寸的方法
批量修改图片尺寸的方法 在日常的工作和生活中,我们经常会遇到需要对图片的尺寸进行修改,只需要修改几张还好,可以要修改几十张甚至更多的情况下,就真的很枯燥很费时间了.如果能够批量修改就好了. 我发现还真 ...
- Windows批量修改服务器密码,expect批量修改linux服务器密码
expect批量修改linux服务器密码 内容精选 换一换 批量修改弹性云服务器信息.当前仅支持批量修改云服务器名称,一次最多可以修改1000台.PUT /v1/{project_id}/clouds ...
- 商家如何更改拼多多上货助手价格?上货助手修改价格详细步骤
拼多多的入驻门槛并不高,但需要注意点有很多,其中最关键的就是上传商品,毕竟拼多多上传商品需要注意的规则还是蛮多的,并且现在拼多多平台也不是直接铺货就可以获取流量的时期,所以商家如果需要修改拼多多上货助 ...
最新文章
- 25个别出心裁的简历设计作品欣赏
- mysql--字段--索引的增删改查
- EJB----消息驱动bean--Topic 消息的发送与接收(Pub/sub 消息传递模型)
- Hadoop学习之MapReduce(五)
- __len__的作用
- SAP S/4HANA Material 物料主数据的简单介绍
- [转载] JAVA 构造函数及其重载
- I - Destroy Walls (HDU - 6187)
- 复制一个空洞文件且忽略掉其空洞内容
- 【为了爱,为了pascal】【第三章】 认识PASCAL语言基础
- mongodb的基本操作数据更新
- 数据分析师自学好还是报班好
- 74cms v5.0.1 漏洞复现
- couchbase php,CouchBase + PHP 安装与配置
- Unity Shader入门精要--第4 章 学习Shader 所需的数学基础:矩阵
- 数据可视化大屏-Vue项目
- iOS 一行代码集成微信浮窗功能
- No buffer space available问题解决
- Android Q安全锁屏下进入google photos不弹bouncer界面
- lob 索引 oracle,LOB字段相关概念(自动创建LOB索引段和重建索引方法)
热门文章
- 实现SQL SERVER 下的PadLeft函数
- “物联网”架构有多重要?
- linux之SQL语句简明教程---AND OR
- 项目杂记——在后台获取Repeater控件里面的控件
- 重庆市公安局北碚分局所需容灾备份设备及软件采购
- 眼睛很疼(2005-5-10)
- php网站漏洞检测对sql注入漏洞防护
- SAMBA服务和FTP服务讲解(week3_day1)--技术流ken
- ***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server
- thinkphp中的AJAX返回ajaxReturn()