SO BAPI SD_SALESDOCUMENT_CREATE

 DATA: E_ORDER_HEADER_IN  LIKE  BAPISDHD1 OCCURS WITH HEADER LINE,
          E_ORDER_PARTNERS   LIKE  BAPIPARNR OCCURS WITH HEADER LINE,
          E_ORDER_ITEMS_IN   LIKE  BAPISDITM OCCURS WITH HEADER LINE,
          E_ORDER_BAPISCHDL  LIKE BAPISCHDL OCCURS WITH HEADER LINE,
          E_AUART            LIKE  VBAK-AUART ,
          E_KUNNR            LIKE  VBAK-KUNNR,
          CNT TYPE I,
          E_MENGE TYPE DZMENG.
  DATA: lt_order_text TYPE TABLE OF bapisdtext.
  DATA: ls_order_conditions_in  TYPE bapicond.
  DATA  lt_order_conditions_in  TYPE TABLE OF bapicond.
  DATA: e_order_text  TYPE bapisdtext.
  DATA : W_KNA1 LIKE KNA1 ,
         W_ADR6 LIKE ADR6 .
  data: ls_type type ZSCS004-PURAUDITFLAG.
  data: ls_knumv type vbak-knumv.
  DATA : W_NAME LIKE KNA1-NAME1.
  data: ls_inco1 type KNVV-INCO1,
      ls_zterm type KNVV-ZTERM.
  data: it_konv like KONV OCCURS WITH HEADER LINE.  "选择条目
  data: ls_konv type KONV.
  DATA : I_BAPISDTEXT  TYPE STANDARD TABLE OF BAPISDTEXT.
  DATA : l_external TYPE BAPI2093_RES_KEY-RESERV_NO.
  DATA : WA_BAPISDTEXT LIKE LINE OF I_BAPISDTEXT.
  data:ls_sale type ZSD_SALE_TEST.
  data: ls_first type KUNNR,
        ls_last type KUNNR.

 loop AT ZSD_SALE_TEST INTO ls_sale.

    "add_text 抬头文本
    e_order_text-doc_number SALESDOCUMENT.
    e_order_text-itm_number '000000'.
    e_order_text-text_id '0001'.
    e_order_text-langu 1.
    e_order_text-langu_iso 'ZH'.
    e_order_text-format_col '*'.
    e_order_text-text_line ls_sale-text_line.
    e_order_text-function '005'.
    APPEND e_order_text TO lt_order_text.

    "add_text:
    e_order_text-doc_number SALESDOCUMENT.
    e_order_text-itm_number ls_sale-POSNR.
    e_order_text-text_id '0002'.
    e_order_text-langu 1.
    e_order_text-langu_iso 'ZH'.
    e_order_text-format_col '*'.
    e_order_text-text_line ls_sale-ARKTX.
    e_order_text-function '005'.
    APPEND e_order_text TO lt_order_text.
    clear e_order_text.

    "add_partners 抬头文本
*    "客户代码之前加1位
*    CONCATENATE '1' ls_sale-FIRST_NAME into ls_first.
*    CONCATENATE '1' ls_sale-LAST_NAME into ls_last.
    ls_first ls_sale-FIRST_NAME.
    ls_last ls_sale-LAST_NAME.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            INPUT  ls_first
          IMPORTING
            OUTPUT ls_first.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            INPUT  ls_last
          IMPORTING
            OUTPUT ls_last.

    E_ORDER_PARTNERS-PARTN_ROLE 'AG'.  "售达方
    E_ORDER_PARTNERS-PARTN_NUMB ls_first.  "售达方代码
    APPEND E_ORDER_PARTNERS.

    E_ORDER_PARTNERS-PARTN_ROLE 'WE'.  "送达方
    E_ORDER_PARTNERS-PARTN_NUMB ls_last.   "送达方代码
    APPEND E_ORDER_PARTNERS.

    E_AUART ls_sale-AUART.

    E_ORDER_HEADER_IN-DOC_TYPE E_AUART.              "订单类型
    E_ORDER_HEADER_IN-SALES_ORG ls_sale-VKORG.               "销售组织
    E_ORDER_HEADER_IN-DISTR_CHAN ls_sale-VTWEG.              "分销渠道
    E_ORDER_HEADER_IN-DIVISION ls_sale-SPART.                "产品组
    E_ORDER_HEADER_IN-req_date_h ls_sale-ETDAT.              "请求交货日期
    E_ORDER_HEADER_IN-ship_type '01'.                 "装运类型
    E_ORDER_HEADER_IN-ship_cond ls_sale-VSBED.                "装运条件
    E_ORDER_HEADER_IN-PURCH_NO_C  ls_sale-BSTNK.       "客户采购订单编号

    E_ORDER_ITEMS_IN-item_categ ls_sale-PSTYV.               "项目类别
    E_ORDER_ITEMS_IN-plant ls_sale-WERKS.                    "工厂
    E_ORDER_ITEMS_IN-store_loc ls_sale-LGORT.                "库存地点


    E_ORDER_ITEMS_IN-MATERIAL ls_sale-MABNR.                 "物料
*    E_ORDER_ITEMS_IN-BATCH = ls_sale-CHARG.                     "批次
    E_ORDER_ITEMS_IN-TARGET_QTY ls_sale-KWMENG.              "订单数量
    E_ORDER_ITEMS_IN-sales_unit ls_sale-VRKME.               "单位
    E_ORDER_ITEMS_IN-ITM_NUMBER ls_sale-POSNR.               "项目号
    E_ORDER_ITEMS_IN-DLV_PRIO ls_sale-REQUESTYPE.            "交货优先权
*  E_ORDER_ITEMS_IN-PMNTTRMS = '0001'.
    select KNVV~INCO1 KNVV~ZTERM
    INTO (ls_inco1,ls_zterm)
    from KNVV
    where KUNNR ls_first and
      VKORG ls_sale-VKORG and
      VTWEG ls_sale-VTWEG and
      SPART ls_sale-SPART.
    endselect.

    E_ORDER_ITEMS_IN-PMNTTRMS ls_zterm.                          "付款条件
    E_ORDER_ITEMS_IN-INCOTERMS1 ls_inco1.                         "国际贸易条件
    E_ORDER_BAPISCHDL-REQ_QTY ls_sale-KWMENG.                "订单数量
    E_ORDER_BAPISCHDL-ITM_NUMBER ls_sale-POSNR.              "项目号

*  **  add_conditions:
      ls_order_conditions_in-itm_number ls_sale-POSNR.
      ls_order_conditions_in-cond_type  'ZPR2'.  "定价条件
      ls_order_conditions_in-cond_value ls_sale-KBETR.  "价格
      ls_order_conditions_in-currency   'RMB'.  "货币或%
      ls_order_conditions_in-cond_unit  ls_sale-VRKME.  "条件单位
    ls_order_conditions_in-cond_p_unt ls_sale-KWMENG.  "条件定价单位

*     ls_order_conditions_in-cond_unit = 'Z37'.
*     ls_order_conditions_in-itm_number = POSNR.
*  **      IF ( t_create-auart = 'ZCR' ) OR ( t_create-auart = 'ZDR' ).
*  **        ls_order_conditions_in-cond_type = 'ZPR2'.
*  **      ELSE.
*  **        ls_order_conditions_in-cond_type = 'ZPR1'.
*  **      ENDIF.
*     ls_order_conditions_in-cond_value = 10.
      ls_order_conditions_in-cond_updat  'X'.  "价格更新标志
      APPEND ls_order_conditions_in TO lt_order_conditions_in.

    CLEAR   WA_BAPISDTEXT.
    REFRESH I_BAPISDTEXT.

*  WA_BAPISDTEXT-TEXT_ID   = '0001'.
*  WA_BAPISDTEXT-LANGU     = SY-LANGU.
*  WA_BAPISDTEXT-TEXT_LINE = COMMENT.
*  APPEND WA_BAPISDTEXT TO I_BAPISDTEXT.
    APPEND E_ORDER_BAPISCHDL.
    APPEND E_ORDER_ITEMS_IN.
*    MODIFY zsd_sale_test from ls_sale.
    clear ls_sale.
  endloop.


****创建销售订单
*  CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
*    EXPORTING
*      ORDER_HEADER_IN     = E_ORDER_HEADER_IN
*    IMPORTING
*      SALESDOCUMENT       = SALESDOCUMENT
*    TABLES
*      RETURN              = RETURN
*      ORDER_SCHEDULES_IN  = E_ORDER_BAPISCHDL
*      ORDER_ITEMS_IN      = E_ORDER_ITEMS_IN
*      ORDER_PARTNERS      = E_ORDER_PARTNERS
*      ORDER_CONDITIONS_IN = lt_order_conditions_in
*      ORDER_TEXT          = lt_order_text.

CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
      EXPORTING
        SALESDOCUMENT     SALESDOCUMENT
        sales_header_in     E_ORDER_HEADER_IN
*        logic_switch        = lv_logic_switch
      IMPORTING
        SALESDOCUMENT_EX       SALESDOCUMENT
      TABLES
        return              RETURN
        sales_items_in      E_ORDER_ITEMS_IN
        sales_partners      E_ORDER_PARTNERS
        sales_schedules_in  E_ORDER_BAPISCHDL
        sales_conditions_in lt_order_conditions_in
        sales_text          lt_order_text.

原文地址:https://www.cnblogs.com/rockyzjut/p/3171023.html