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批量修改价格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用BAPI
- 下一篇: Coding更改程序的变式(report