当前位置:   article > 正文

ABAP MR21: BAPI_MATVAL_PRICE_CHANGE

ABAP MR21: BAPI_MATVAL_PRICE_CHANGE

文章目录


前言

MR21 发布物料价格,BAPI_MATVAL_PRICE_CHANGE

一、报错问题

BAPI报错:估价XXX  对于物料XXXXXXXXXXXXX没有被维护

解决办法:CKML_PRICE_SEND没有对应的评估范围数据,SM30:VCKML_PRICE_SEND维护即可(目前开发方面找到这种方式,具体配置不是很清楚),问题解决。

二、代码如下

  1. DATA: ls_price_date TYPE bapi_matval_pricedate.
  2. DATA: lt_prices TYPE TABLE OF bapi_matval_prices, " 物料价格
  3. ls_price TYPE bapi_matval_prices,
  4. lt_returns TYPE TABLE OF bapiret2,
  5. ls_return TYPE bapiret2,
  6. lv_bwtar LIKE mbew-bwtar.
  7. DATA: lv_price_document TYPE bapi_pricechange_document.
  8. DATA: lv_mes TYPE string,
  9. lv_mesg TYPE string.
  10. DATA:lt_log TYPE TABLE OF ztfi068.
  11. DATA:lt_log_c TYPE TABLE OF ztfi068_c.
  12. DATA:lv_bukrs TYPE t001-bukrs VALUE '2450',
  13. lv_valutyp TYPE valutyp VALUE '0',
  14. lv_curtp TYPE curtp VALUE '10'.
  15. SELECT SINGLE waers
  16. FROM t001
  17. WHERE bukrs = @lv_bukrs
  18. INTO @DATA(lv_waers).
  19. LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_alv>) WHERE sel = c_true.
  20. * 校验价格不能为空
  21. IF <fs_alv>-netpr01 IS INITIAL.
  22. <fs_alv>-icon = c_red.
  23. <fs_alv>-message = '价格合计为空!'.
  24. CONTINUE.
  25. ENDIF.
  26. * 价格改变日期
  27. ls_price_date-price_date = sy-datum.
  28. ls_price_date-fisc_year = sy-datum+0(4).
  29. ls_price_date-fisc_period = sy-datum+4(2).
  30. ls_price_date-price_date_src = sy-datum.
  31. ls_price_date-fisc_year_src = sy-datum+0(4).
  32. ls_price_date-fisc_period_src = sy-datum+4(2).
  33. * 价格
  34. ls_price-valuation_view = lv_valutyp. " 评估视图
  35. ls_price-curr_type = lv_curtp.
  36. ls_price-price = <fs_alv>-netpr03.
  37. ls_price-price_unit = '1'.
  38. ls_price-currency = lv_waers.
  39. APPEND ls_price TO lt_prices.
  40. CLEAR ls_price.
  41. CALL FUNCTION 'BAPI_MATVAL_PRICE_CHANGE'
  42. EXPORTING
  43. material = <fs_alv>-zzlbj
  44. valuationarea = <fs_alv>-werks
  45. valuationtype = lv_bwtar
  46. pricedate = ls_price_date
  47. IMPORTING
  48. pricechangedocument = lv_price_document
  49. TABLES
  50. prices = lt_prices
  51. return = lt_returns.
  52. IF NOT line_exists( lt_returns[ type = 'E' ] ).
  53. CLEAR:lt_log,lt_log_c.
  54. APPEND INITIAL LINE TO lt_log ASSIGNING FIELD-SYMBOL(<fs_log>).
  55. <fs_log> = CORRESPONDING #( <fs_alv> ).
  56. * 获取guid号
  57. TRY .
  58. <fs_log>-guid = cl_system_uuid=>create_uuid_x16_static( ).
  59. CATCH cx_uuid_error.
  60. ENDTRY.
  61. <fs_log>-crnam = sy-uname.
  62. <fs_log>-crdat = sy-datum.
  63. <fs_log>-crtim = sy-uzeit.
  64. IF lt_log IS NOT INITIAL.
  65. MODIFY ztfi068 FROM TABLE lt_log.
  66. ENDIF.
  67. APPEND INITIAL LINE TO lt_log_c ASSIGNING FIELD-SYMBOL(<fs_log_c>).
  68. <fs_log_c>-zzlbj = <fs_alv>-zzlbj.
  69. <fs_log_c>-werks = <fs_alv>-werks.
  70. <fs_log_c>-datum = sy-datum.
  71. <fs_log_c>-datum_c = sy-datum(6).
  72. IF lt_log_c IS NOT INITIAL.
  73. MODIFY ztfi068_c FROM TABLE lt_log_c.
  74. ENDIF.
  75. * 成功
  76. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  77. EXPORTING
  78. wait = 'X'.
  79. <fs_alv>-icon = c_green.
  80. <fs_alv>-message = '成功'.
  81. ELSE.
  82. * 失败
  83. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  84. lv_mesg = '失败:'.
  85. LOOP AT lt_returns ASSIGNING FIELD-SYMBOL(<fs_return>) WHERE type = 'E' .
  86. CLEAR lv_mes.
  87. CALL FUNCTION 'MESSAGE_TEXT_BUILD'
  88. EXPORTING
  89. msgid = <fs_return>-id
  90. msgnr = <fs_return>-number
  91. msgv1 = <fs_return>-message_v1
  92. msgv2 = <fs_return>-message_v2
  93. msgv3 = <fs_return>-message_v3
  94. msgv4 = <fs_return>-message_v4
  95. IMPORTING
  96. message_text_output = lv_mes.
  97. lv_mesg = |{ lv_mesg };{ lv_mes }|.
  98. ENDLOOP.
  99. <fs_alv>-icon = c_red.
  100. <fs_alv>-message = lv_mesg.
  101. ENDIF.
  102. CLEAR:lt_prices,ls_price_date,lv_price_document,lt_returns,lv_mesg.
  103. ENDLOOP.

总结

MR21 发布物料价格,BAPI_MATVAL_PRICE_CHANGE

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/502633
推荐阅读
相关标签
  

闽ICP备14008679号