文章目录
MR21 发布物料价格,BAPI_MATVAL_PRICE_CHANGE
BAPI报错:估价XXX 对于物料XXXXXXXXXXXXX没有被维护
解决办法:CKML_PRICE_SEND没有对应的评估范围数据,SM30:VCKML_PRICE_SEND维护即可(目前开发方面找到这种方式,具体配置不是很清楚),问题解决。
- DATA: ls_price_date TYPE bapi_matval_pricedate.
- DATA: lt_prices TYPE TABLE OF bapi_matval_prices, " 物料价格
- ls_price TYPE bapi_matval_prices,
- lt_returns TYPE TABLE OF bapiret2,
- ls_return TYPE bapiret2,
- lv_bwtar LIKE mbew-bwtar.
- DATA: lv_price_document TYPE bapi_pricechange_document.
- DATA: lv_mes TYPE string,
- lv_mesg TYPE string.
- DATA:lt_log TYPE TABLE OF ztfi068.
- DATA:lt_log_c TYPE TABLE OF ztfi068_c.
- DATA:lv_bukrs TYPE t001-bukrs VALUE '2450',
- lv_valutyp TYPE valutyp VALUE '0',
- lv_curtp TYPE curtp VALUE '10'.
-
- SELECT SINGLE waers
- FROM t001
- WHERE bukrs = @lv_bukrs
- INTO @DATA(lv_waers).
-
- LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(
) WHERE sel = c_true. -
- * 校验价格不能为空
- IF
-netpr01 IS INITIAL. -
-icon = c_red. -
-message = '价格合计为空!'. - CONTINUE.
- ENDIF.
-
- * 价格改变日期
- ls_price_date-price_date = sy-datum.
- ls_price_date-fisc_year = sy-datum+0(4).
- ls_price_date-fisc_period = sy-datum+4(2).
- ls_price_date-price_date_src = sy-datum.
- ls_price_date-fisc_year_src = sy-datum+0(4).
- ls_price_date-fisc_period_src = sy-datum+4(2).
-
- * 价格
- ls_price-valuation_view = lv_valutyp. " 评估视图
- ls_price-curr_type = lv_curtp.
- ls_price-price = <fs_alv>-netpr03.
- ls_price-price_unit = '1'.
- ls_price-currency = lv_waers.
- APPEND ls_price TO lt_prices.
- CLEAR ls_price.
-
- CALL FUNCTION 'BAPI_MATVAL_PRICE_CHANGE'
- EXPORTING
- material = <fs_alv>-zzlbj
- valuationarea = <fs_alv>-werks
- valuationtype = lv_bwtar
- pricedate = ls_price_date
- IMPORTING
- pricechangedocument = lv_price_document
- TABLES
- prices = lt_prices
- return = lt_returns.
-
- IF NOT line_exists( lt_returns[ type = 'E' ] ).
- CLEAR:lt_log,lt_log_c.
- APPEND INITIAL LINE TO lt_log ASSIGNING FIELD-SYMBOL(<fs_log>).
- <fs_log> = CORRESPONDING #( <fs_alv> ).
- * 获取guid号
- TRY .
- <fs_log>-guid = cl_system_uuid=>create_uuid_x16_static( ).
- CATCH cx_uuid_error.
- ENDTRY.
- <fs_log>-crnam = sy-uname.
- <fs_log>-crdat = sy-datum.
- <fs_log>-crtim = sy-uzeit.
- IF lt_log IS NOT INITIAL.
- MODIFY ztfi068 FROM TABLE lt_log.
- ENDIF.
- APPEND INITIAL LINE TO lt_log_c ASSIGNING FIELD-SYMBOL(<fs_log_c>).
- <fs_log_c>-zzlbj = <fs_alv>-zzlbj.
- <fs_log_c>-werks = <fs_alv>-werks.
- <fs_log_c>-datum = sy-datum.
- <fs_log_c>-datum_c = sy-datum(6).
- IF lt_log_c IS NOT INITIAL.
- MODIFY ztfi068_c FROM TABLE lt_log_c.
- ENDIF.
- * 成功
- CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
- EXPORTING
- wait = 'X'.
- <fs_alv>-icon = c_green.
- <fs_alv>-message = '成功'.
- ELSE.
- * 失败
- CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
-
- lv_mesg = '失败:'.
-
- LOOP AT lt_returns ASSIGNING FIELD-SYMBOL(<fs_return>) WHERE type = 'E' .
- CLEAR lv_mes.
- CALL FUNCTION 'MESSAGE_TEXT_BUILD'
- EXPORTING
- msgid = <fs_return>-id
- msgnr = <fs_return>-number
- msgv1 = <fs_return>-message_v1
- msgv2 = <fs_return>-message_v2
- msgv3 = <fs_return>-message_v3
- msgv4 = <fs_return>-message_v4
- IMPORTING
- message_text_output = lv_mes.
- lv_mesg = |{ lv_mesg };{ lv_mes }|.
- ENDLOOP.
- <fs_alv>-icon = c_red.
- <fs_alv>-message = lv_mesg.
- ENDIF.
- CLEAR:lt_prices,ls_price_date,lv_price_document,lt_returns,lv_mesg.
- ENDLOOP.
MR21 发布物料价格,BAPI_MATVAL_PRICE_CHANGE