ABAP:RV_CONDITION_COPY、VK11/VK12创建/修改销售价格注意点-----------血泪

”VK11/VK12创建/修改销售价格

  "默认值
  ts_input-kschl = 'YA01'."定价类型	YA01
  ts_input-konwa = 'CNY'."单位(货币单位)  固定值【CNY】
  ts_input-kpein = '1'."单位(数量)  固定值【1】
  ts_input-kmein = 'PCS'."单位(基本计量单位)  固定值【PCS】
  ts_input-prodh = ls_xfdata-prdha."产品层次
  ts_input-kbetr = ls_xfdata-xfnetpr ."现返金额

  "检查创建还是修改
  SELECT SINGLE *
  INTO @DATA(ls_a808)
  FROM a808  AS a INNER JOIN konp  AS b ON a~knumh = b~knumh
  WHERE a~kappl = 'V'
    AND a~kunnr = @ts_input-kunnr
    AND vkorg = @ts_input-vkorg
    AND prodh = @ts_input-prodh
    AND datbi = @ts_input-datbi
    AND datab = @ts_input-datab
    AND a~kschl = @ts_input-kschl
    AND b~loevm_ko = '' .
  IF sy-subrc = 0 .
    lv_mode = 'B' . " 修改
  ELSE.
    lv_mode  = 'A'.  "创建
  ENDIF.

  " Badi 相关 begin
  ls_komv-kappl = 'V'.     "应用 看表
  ls_komv-kschl = 'YA01'.  "类型 看表
  ls_komv-waers = 'CNY'.   "货币
  ls_komv-kmein = 'ZPC'.   "单位
  ls_komv-kpein = '1'.     "定价单位
  ls_komv-kbetr = ts_input-kbetr."售价
  APPEND ls_komv TO lt_komv.
  CLEAR ls_komg.

  ls_komg-vkorg = ts_input-vkorg.          "销售组织
  • ls_komg-vtweg = ls_ztsd_oa_qth-vtweg. "分销渠道
    ls_komg-kunnr = ts_input-kunnr. "客户
    ls_komg-prodh = ts_input-prodh. "产品层次

    CLEAR lv_selection_date.
    lv_selection_date = ts_input-datab+(6) && ‘01’.
    CALL FUNCTION ‘RV_CONDITION_COPY’

    EXPORTING
    application = ‘V’ "(V 销售)
    condition_table = ‘808’
    condition_type = ‘YA01’
    i_komp = ls_komp
    key_fields = ls_komg
    date_from = ts_input-datab
    date_to = ts_input-datbi
    enqueue = ‘X’ " lock entry 锁定VK11/VK12
    overlap_confirmed = ‘X’ " 直接覆盖,跨以前的期间不会弹出界面
    maintain_mode = lv_mode " A= create, B= change, C= display, D= create
    selection_date = lv_selection_date “跨月修改必须传不然只能修改本月的价格,传入的开始结束日期控制不了
    TABLES
    copy_records = lt_komv
    EXCEPTIONS
    enqueue_on_record = 1
    invalid_application = 2
    invalid_condition_number = 3
    invalid_condition_type = 4
    no_authority_ekorg = 5
    no_authority_kschl = 6
    no_authority_vkorg = 7
    no_selection = 8
    table_not_valid = 9
    no_material_for_settlement = 10
    no_unit_for_period_cond = 11
    no_unit_reference_magnitude = 12
    invalid_condition_table = 13
    OTHERS = 14.
    IF sy-subrc = 0.
    CALL FUNCTION ‘RV_CONDITION_SAVE’.
    CALL FUNCTION ‘RV_CONDITION_RESET’.
    COMMIT WORK AND WAIT.
    END.

源码解释:
跨月修改必须传不然只能修改本月的价格,传入的开始结束日期控制不了
在这里插入图片描述


版权声明:本文为FQHX_116原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。