SD_BAPI

创建销售订单BAPI及增强

http://blog.sina.com.cn/s/blog_1647b3eff0102wi32.html

  DATA:lv_objtype TYPE nast-objtype.

 

"SO BAPI参数
DATA:ls_order_header_in       LIKE bapisdhd1.
DATA:lt_order_header_in       LIKE TABLE OF  bapisdhd1.
DATA:ls_order_header_inx      LIKE bapisdhd1x.
DATA:lt_order_header_inx      LIKE TABLE OF bapisdhd1x.
DATA:lt_order_items_in        TYPE TABLE OF bapisditm.
DATA:lt_order_items_inx       LIKE TABLE OF bapisditmx.
DATA:ls_order_items_in        LIKE bapisditm.
DATA:ls_order_items_inx       LIKE bapisditmx.
DATA:lt_order_partners        LIKE TABLE OF bapiparnr.
DATA:ls_order_partners        LIKE LINE OF lt_order_partners.
DATA:lt_schedules_in          LIKE TABLE OF bapischdl .
DATA:lt_schedules_inx         LIKE TABLE OF  bapischdlx .
DATA:ls_schedules_in          LIKE bapischdl .
DATA:ls_schedules_inx         LIKE bapischdlx .
DATA:lt_order_conditions_in   LIKE TABLE OF  bapicond .
DATA:lt_order_conditions_inx  LIKE TABLE OF  bapicondx .
DATA:ls_order_conditions_in   LIKE  bapicond .
DATA:ls_order_conditions_inx  LIKE  bapicondx .

 LOOP AT p_gt_checkabox_so_header ASSIGNING FIELD-SYMBOL(<fs1>).
*-------SO创建
    CLEAR:lv_ebeln.
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input  = <fs1>-matnr
      IMPORTING
        output = <fs1>-matnr.
    ls_order_header_in = VALUE #( doc_type = 'ZRE3'  "订单类型
                             sales_org = '5100'
                             distr_chan = '10'
                             division = '10'
                             req_date_h = <fs1>-zthrq
                             doc_date = sy-datum ).

    ls_order_header_inx = VALUE #( updateflag = 'I'
                            doc_type = 'X'
                            sales_org = 'X'
                            distr_chan = 'X'
                            division = 'X'
                            req_date_h = 'X'
                            doc_date = 'X' ).

    CLEAR :lt_order_items_in,lt_order_items_in[].
    CLEAR :lt_order_items_inx,lt_order_items_inx[].
    CLEAR :lt_order_partners,lt_order_partners[].
    CLEAR :lt_schedules_in,lt_schedules_in[].
    CLEAR :lt_schedules_inx,lt_schedules_inx[].
    CLEAR :lt_return,lt_return[].

    lt_order_partners = VALUE #( FOR ls_tpar IN lt_tpar_so
                  ( VALUE #( BASE CORRESPONDING #( ls_tpar ) partn_numb = <fs1>-kunnr ) ) ).


    LOOP AT p_gt_checkabox_so_items   WHERE  kunnr =  <fs1>-kunnr
                                          AND    zdbdh =  <fs1>-zthdh
                                          AND    s_werks =  <fs1>-s_werks.
      CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
        EXPORTING
          input  = p_gt_checkabox_so_items-matnr
        IMPORTING
          output = p_gt_checkabox_so_items-matnr.
      ls_order_items_in-itm_number = p_gt_checkabox_so_items-zposnr ."items 号
      ls_order_items_in-material = p_gt_checkabox_so_items-matnr.
      ls_order_items_in-plant = p_gt_checkabox_so_items-s_werks."
      ls_order_items_in-store_loc    = '1001'.
      ls_order_items_in-target_qty   = p_gt_checkabox_so_items-menge."
*        ls_order_items_in-ship_point   = p_vstel."装运点
      ls_order_items_in-target_qu    =  p_gt_checkabox_so_items-meins."
*        ls_order_items_in-target_val   = 888."BAPIs 的货币金额(带有 9 个小数位)
*        ls_order_items_in-purch_no_c   =  '客户参考'  .
      ls_order_items_in-item_categ   =  'REN'  ."销售凭证项目类别
*        ls_order_items_in-item_categ   =   COND #( WHEN ls_order_header_in-doc_type = 'ZOR2' THEN 'TAS' ELSE 'TAN' ).
      APPEND ls_order_items_in TO lt_order_items_in.

      ls_schedules_inx-updateflag      = 'X'.
      ls_schedules_inx-itm_number      = 'X'.
      ls_schedules_inx-req_qty         = 'X'.
      ls_order_items_inx-material =  'X'.
      ls_order_items_inx-target_qty =  'X'.
      ls_order_items_inx-sales_unit =  'X'.
      ls_order_items_inx-plant =  'X'.
      ls_order_items_inx-purch_no_c =  'X'.
      ls_order_items_inx-item_categ =  'X'."销售凭证项目类别
      ls_order_items_inx-updateflag =  'I'.
      ls_order_items_inx-target_val =  'X'.
      APPEND ls_schedules_inx TO lt_schedules_inx.

*SCHED_TYPE

      ls_schedules_in-itm_number      =  p_gt_checkabox_so_items-zposnr."items 号"
      ls_schedules_in-req_qty         = p_gt_checkabox_so_items-menge .
      APPEND ls_schedules_in TO lt_schedules_in.

      ls_schedules_inx-updateflag      = 'X'.
      ls_schedules_inx-itm_number      = 'X'.
      ls_schedules_inx-req_qty         = 'X'.
      APPEND ls_schedules_inx TO lt_schedules_inx.
    ENDLOOP.
*    CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
*      EXPORTING
*        order_header_in     = ls_order_header_in
*        order_header_inx    = ls_order_header_inx
*      IMPORTING
*        salesdocument       = lv_ebeln
*      TABLES
*        return              = lt_return
*        order_items_in      = lt_order_items_in
*        order_items_inx     = lt_order_items_inx
*        order_partners      = lt_order_partners
*        order_schedules_in  = lt_schedules_in
*        order_schedules_inx = lt_schedules_inx.
*-----------------------------------------------------------------------------------------------------------

    CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
      EXPORTING
*       SALESDOCUMENTIN      =
        return_header_in     = ls_order_header_in
        return_header_inx    = ls_order_header_inx
      IMPORTING
        salesdocument        = lv_ebeln
      TABLES
        return               = lt_return
        return_items_in      = lt_order_items_in
        return_items_inx     = lt_order_items_inx
        return_partners      = lt_order_partners
        return_schedules_in  = lt_schedules_in
        return_schedules_inx = lt_schedules_inx.
*-----------------------------------------------------------------------------------------------------------
    LOOP AT lt_return WHERE type CA 'AE'.
    ENDLOOP.
    IF sy-subrc EQ 0.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      e_type = 'E'.
      e_msg =  |销售订单 { lv_ebeln } 创建失败:{ lt_return-message } |.
    ELSE.
      e_type = 'S'.
      e_msg =  |销售订单 { lv_ebeln } 创建成功 !|..
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.

 

转载于:https://www.cnblogs.com/ckstock/p/11284182.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值