ABAP 参照SO item 创建DN

DATA: it_soitem TYPE TABLE OF bapidlvreftosalesorder,
        is_soitem TYPE bapidlvreftosalesorder,
        it_return TYPE TABLE OF bapiret2,
        is_return TYPE bapiret2,

          l_dn TYPE bapishpdelivnumb-deliv_numb.

  DATA: l_date TYPE bapidlvcreateheader-due_date.

  l_date = '99991231'.

    LOOP AT gt_out INTO gs_out WHERE vbeln = ls_so-vbeln  AND street = ls_so-street AND check_box = 'X' AND text = ''.
      is_soitem-ref_doc  = gs_out-vbeln.
      is_soitem-ref_item = gs_out-posnr.
      is_soitem-dlv_qty  = gs_out-pikmg.
      is_soitem-sales_unit = gs_out-meins.
      APPEND is_soitem TO it_soitem.
    ENDLOOP.

    IF it_soitem IS NOT INITIAL.
      CLEAR l_dn.
      CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
        EXPORTING
          due_date          = l_date
        IMPORTING
          delivery          = l_dn
*         NUM_DELIVERIES    =
        TABLES
          sales_order_items = it_soitem
*         SERIAL_NUMBERS    =
*         EXTENSION_IN      =
*         DELIVERIES        =
          created_items     = lt_create
*         EXTENSION_OUT     =
          return            = it_return.

      CLEAR    lv_message.
      LOOP AT it_return INTO is_return WHERE type = 'E' OR type = 'A'.
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            msgid               = is_return-id
            msgnr               = is_return-number
            msgv1               = is_return-message_v1
            msgv2               = is_return-message_v2
            msgv3               = is_return-message_v3
            msgv4               = is_return-message_v4
          IMPORTING
            message_text_output = lv_message.
        CONCATENATE  gs_out-text  lv_message ';' INTO  gs_out-text.
      ENDLOOP.
      IF sy-subrc = 0.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        MODIFY gt_out FROM gs_out TRANSPORTING text
           WHERE check_box = 'X' AND vbeln = ls_so-vbeln .

      ELSE.

          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.

  Endif.

posted @ 2021-03-17 14:09  闫默涵  阅读(496)  评论(0)    收藏  举报