ABAP BAPI 销售订单生产交货单函数

TYPESBEGIN OF ty_so,
         vbeln LIKE  vbap-vbeln,
         posnr LIKE  vbap-posnr,
       END OF ty_so.

 

FORM frm_create_dn  USING    u_so
                    CHANGING c_dn c_result.
  DATA:l_vbeln LIKE vbap-vbeln,
       l_posnr LIKE vbap-posnr.

  DATA: lt_so_item TYPE TABLE OF bapidlvreftosalesorder,
        ls_so_item TYPE bapidlvreftosalesorder,

        lt_return  TYPE TABLE OF bapiret2,
        ls_return  TYPE bapiret2.
  DATA: gt_so TYPE ty_so OCCURS 0,
        wa_so TYPE ty_so.

  CLEAR lt_so_item.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_so
    FROM vbap
    WHERE vbeln EQ u_so.

  LOOP AT gt_so INTO wa_so.
    ls_so_item-ref_doc = wa_so-vbeln.
    ls_so_item-ref_item = wa_so-posnr.
    APPEND ls_so_item TO lt_so_item.
    CLEAR ls_so_item.
  ENDLOOP.


  CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
    IMPORTING
      delivery          = c_dn
    TABLES
      sales_order_items = lt_so_item
      return            = lt_return.

  READ TABLE lt_return INTO ls_return WITH KEY type 'E'.

  IF sy-subrc EQ 0.
    c_result = ls_return-message.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*       IMPORTING
*         RETURN        =
      .

    EXPORT lt_return TO MEMORY ID 'LT_RETURN'.
    "PERFORM frm_show_message.
    RETURN.
  ELSE.
    c_result = ls_return-message.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait 'X'.
  ENDIF.

ENDFORM.

posted @ 2016-05-06 22:14  東東東東  阅读(1084)  评论(0编辑  收藏  举报