清竹龙 2025-12-10 16:06 采纳率: 0%
浏览 3

VF01/VF04 开票

SAP VF01开票把含税单价修改后,还是会复原,比如:100,改成200,回车就变成100

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2025-12-10 16:08
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    在SAP系统中,使用 VF01(开票)VF04(修改开票) 进行开票操作时,如果发现将含税单价从 100 改为 200 后,回车后又自动恢复为 100,这通常是由以下几种原因导致的:


    可能原因分析:

    1. 主数据配置问题

      • 开票时使用的物料主数据中的价格信息(如“销售价格”或“定价条件”)被系统优先读取。
      • 如果你在开票界面手动修改的价格与主数据中的价格不一致,系统可能会自动覆盖你的修改。
    2. 定价程序(Pricing Procedure)逻辑冲突

      • 定价程序中设置了某些条件类型(如“净价”、“折扣”等),可能导致系统重新计算价格。
      • 例如,如果定价程序中包含“净价”条件类型,且该条件类型被设置为自动更新,系统会根据主数据重新计算价格。
    3. 用户权限或字段维护问题

      • 某些字段在特定角色下是只读的,无法手动修改。
      • 可能由于用户权限限制,导致你不能修改某些关键字段。
    4. 表单/屏幕逻辑错误

      • 在某些版本的 SAP 中,开票屏幕可能通过BAPI或**用户出口(User Exit)**进行价格控制,这些逻辑可能强制还原价格。

    解决方案(详细步骤):

    1. 检查并确认主数据中的价格设置

    • 路径: MM02(物料主数据) → 查看“销售视图”中的“销售价格”。
    • 重点检查:
      • 是否有默认价格(如“净价”)被设置。
      • 是否有“定价条件”(如“PR00”)被激活。

    加粗重点: 确保你所修改的价格与主数据中的价格一致,否则系统会覆盖你的输入。

    2. 检查定价程序(Pricing Procedure)

    • 路径: VK11(定价程序) → 查看当前使用的定价程序。
    • 重点检查:
      • 是否有“净价”条件类型(如 PR00)。
      • 是否有“自动更新”设置,导致系统重新计算价格。

    加粗重点: 如果定价程序中存在自动更新的条件类型,建议联系系统管理员或顾问进行调整。

    3. 检查用户权限和屏幕字段设置

    • 路径: SU53(授权对象) → 检查用户对“销售订单”或“开票”的访问权限。
    • 路径: SE16 → 查询 VBRKVBRP 表格,查看是否字段被锁定。

    加粗重点: 如果字段被锁定(如“含税单价”为只读),需联系系统管理员修改字段属性。

    4. 检查用户出口(User Exit)或 BAPI 逻辑

    • 路径: SE38 → 检查 EXIT_SAPLV60A_001 或其他相关用户出口。
    • 路径: BAPI_INCOMINGINVOICE_CREATE → 检查是否有逻辑强制还原价格。

    加粗重点: 如果有自定义逻辑(如用户出口),需联系开发人员进行调试和修改。


    代码示例(如果需要修改用户出口):

    如果你需要修改用户出口来避免价格被还原,可以参考以下伪代码逻辑(需根据实际业务场景调整):

    FORM userexit_move_field.
      IF sy-tcode = 'VF01' OR sy-tcode = 'VF04'.
        " 避免系统自动更新价格
        IF vbrp-netwr NE '0'.
          vbrp-netwr = vbrp-netwr. " 保留用户输入值
        ENDIF.
      ENDIF.
    ENDFORM.
    

    加粗重点: 上述代码仅为示例,具体实现需结合实际系统环境,并由专业 SAP 开发人员进行测试和部署。


    总结:

    | 步骤 | 内容 | |------|------| | 1 | 检查主数据中的价格设置 | | 2 | 检查定价程序逻辑 | | 3 | 检查用户权限和字段设置 | | 4 | 检查用户出口或 BAPI 逻辑 |


    如果你能提供具体的系统版本、定价程序编号或用户出口名称,我可以进一步帮你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月10日