• 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() WHERE sel = c_true.
    20. * 校验价格不能为空
    21. IF -netpr01 IS INITIAL.
    22. -icon = c_red.
    23. -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

  • 相关阅读:
    Python统计学10——时间序列分析自回归模型(ARIMA)
    应用层—协议
    Python Flask MongoDB Web开发:前 言
    前端面经总结、学习【2023秋招】
    【LeetCode动态规划#08】完全背包问题实战与分析(零钱兑换II--求组合、组合总和IV--求排列)
    测试用例基础知识
    MySQL JDBC编程
    C++&QT day8
    k8s常见的命令集锦
    动态规划(记忆化搜索)
  • 原文地址:https://blog.csdn.net/JZYDDFZJ/article/details/138144863