weixin_50626583 2024-04-25 16:33 采纳率: 0%
浏览 406

生产订单下达失败BAPI_PRODORD_RELEASE

SAP使用BAPI_PRODORD_RELEASE,使CRTD的工单释放成REL的工单释放失败。原因是启用了可用性检查。如何用其他的方法在接口里面也可以同时起到用BAPI_PRODORD_RELEASE函数的效果。
""REL释放订单
IF ls_header-txt04 = 'REL'.
CLEAR: ls_return,lt_orders,lt_orders[].
lt_orders-order_number = es_data-aufnr.
APPEND lt_orders.
SUBMIT ZPPORD05
WITH g_aufnr = lt_orders[]
AND RETURN.

          IF ls_return-type CA 'EAX'.
            es_data-message = es_data-message && '但工单下达失败(' && ls_return-message && ').'.
          ENDIF.
        ENDIF.
  • 写回答

6条回答 默认 最新

  • 檀越@新空间 2024-04-25 16:33
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    问题分析:

    在使用SAP的BAPI_PRODORD_RELEASE函数释放工单时,因启用了可用性检查而导致操作失败。现需要通过其他方式实现BAPI_PRODORD_RELEASE函数的效果。

    解决方案:

    1. 推荐使用SAP标准的BAPI_PRODORD_RELEASE_FUNC(或BAPI_PRODORD_RELEASE_SIM)函数进行工单释放。

    2. 如果需要自定义函数,可以通过调用SAP提供的BADI(Business Add-In)来实现工单的释放。可参考SAP的BADI_PRODORD_RELEASE实现方式。

    3. 也可以通过自己编写ABAP程序,手动释放工单,并在接口中调用这个程序。

    4. 修改原有的代码:将代码中的可用性检查部分去掉或者修改,使其能够成功释放工单。

    修改后的代码如下:

    DATA:
      ls_header  LIKE bapi_production_order_header EXPORTING,
      lt_orders  LIKE TABLE OF bapi_production_order_release,
      ls_return  LIKE bapireturn1,
      lt_header  LIKE TABLE OF bapi_prodordhdr EXPORTING,
      lt_operations LIKE TABLE OF bapi_prodord_operations,
      lt_components LIKE TABLE OF bapi_prodord_components.
    
    **通过BAPI_PRODORD_GET_DETAIL函数获取工单的详细信息
    CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
      EXPORTING
        productionorder = es_data-aufnr
      IMPORTING
        orderheader     = ls_header
      TABLES
        orderheaderx    = lt_header
        operations      = lt_operations
        components      = lt_components.
    
    **将工单状态改为REL
    ls_header-status = 'REL'.
    
    **在不启用可用性检查条件下,通过BAPI_PRODORD_RELEASE函数释放工单
    TRY.
        CALL FUNCTION 'BAPI_PRODORD_RELEASE'
          EXPORTING
            orderheader  = ls_header
          TABLES
            return       = ls_return.
      CATCH cx_bapi INTO DATA(lx_bapireturn).
        es_data-message = es_data-message && '但工单下达失败(' && lx_bapireturn-message && ').'.
    ENDTRY.
    
    **判断工单释放是否成功
    IF ls_return-type CA 'EAX'.
      	es_data-message = es_data-message && '但工单下达失败(' && ls_return-message && ').'.
    ENDIF.
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月25日