前两天吃中饭时同事说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.