注意:数量和金额必须用字符,否则 0.81 会变成81

*&---------------------------------------------------------------------*
*& Report ZSDR006B
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSDR006B.

INCLUDE ZSDR006B_TOP.

INCLUDE ZSDR006B_SCR.

INCLUDE ZSDR006B_FRM.

INITIALIZATION.
 CALL FUNCTION 'ICON_CREATE' " 给按钮添加图标和文本
    EXPORTING
      name   = icon_wd_dropdown_key   " 按钮的图片的名字
      text   = '模板下载'                   "按钮的文本
      info   = 'MBXZ'
    IMPORTING
      result = p_mbxz
    EXCEPTIONS
      OTHERS = 0.

AT SELECTION-SCREEN.
IF sscrfields-ucomm EQ 'MBXZ'.
    PERFORM frm_excel_down.
    sscrfields-ucomm = ''.
  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path .
  PERFORM get_filename CHANGING p_path.

START-OF-SELECTION.
PERFORM get_file_data.

end-of-SELECTION.
PERFORM get_data.
PERFORM alv.

*&---------------------------------------------------------------------*
*& 包含               ZSDR006B_TOP
*&---------------------------------------------------------------------*
TABLES: sscrfields.

DATA:BEGIN OF wa_item_mes,
       checkbox TYPE char1,  "勾选框
       status   TYPE char10, "红绿灯
       mes_01   TYPE char1,  "提示类别
       mes_02   TYPE string, "错误信息
     END OF wa_item_mes.

DATA:BEGIN OF wa_item,
       vbeln    LIKE vbak-vbeln,  "系统订单编号
       audat    TYPE char10,  "下单日期
       bstdk    TYPE char10,  "客户参考日期/发货日期
       auart    LIKE vbak-auart,  "单据类型
       vkbur    LIKE vbak-vkbur,  "销售部门/销售办事处
       bstnk    LIKE vbak-bstnk,  "客户参考/平台单号
*       bname    LIKE vbak-bname,  "名称/旺旺号
       cpmc     LIKE zsdt003-cpmc, "产品名称/商品编码
*       MATNR     LIKE zsdt003-MATNR,   "规格代码
*       GGMC     LIKE zsdt003-GGMC,   "规格名称
*       bzfs     LIKE zsdt003-bzfs,   "包装方式
       kwmeng   LIKE vbap-kwmeng,  "数量
       txt_01   TYPE string, "行项目文本.订单行项目文本
       lgort    LIKE vbap-lgort,  "库存地点
*       txt_02   TYPE string, "物流方式
       vsbed    LIKE vbak-vsbed, "装运条件
*       txt_03   TYPE string, "物流单号
       ihrez    LIKE vbak-ihrez,  "您的参考/客户联系人
       kmein    LIKE vbap-kmein,  "单位
       txt_04   TYPE string, "抬头文本,订单抬头文本
       kbetr    LIKE konv-kbetr, "单价
       zongje   LIKE konv-kbetr, "总金额
       waerk    LIKE vbap-waerk,  "货币
       zterm    LIKE vbkd-zterm,  "付款条件
       matnr_01 LIKE vbap-matnr,  "物料编码
       ggxh     LIKE zsdt003-ggxh, "规格型号
       cpmc_01  LIKE zsdt003-cpmc_01,  "物料描述
       edatu    TYPE char10,  "请求交货日期
       pstyv    LIKE vbap-pstyv,  "行项目类别
       vkorg    LIKE vbak-vkorg,  "销售组织
       vtweg    LIKE vbak-vtweg,  "分销渠道
       spart    LIKE vbak-spart,  "产品组
       vkgrp    LIKE vbak-vkgrp,  "销售组
       kunnr    LIKE vbak-kunnr,  "客户编码
       kunnr_01 LIKE vbak-kunnr,  "送达方
       werks    LIKE vbap-werks,  "工厂
       augru    LIKE vbak-augru,  "订单原因
       posnr    LIKE vbap-posnr,  "行项目
       kpein    LIKE vbap-kpein,  "价格单位
       bs_txt   TYPE c.        "标识不写入文本

*       audat_d_01 like sy-datum,"下单日期  day类型
    INCLUDE STRUCTURE wa_item_mes.
DATA:END OF wa_item.

DATA:gt_item       LIKE TABLE OF wa_item,
     gt_item_01    LIKE TABLE OF wa_item,
     gt_item_02    LIKE TABLE OF wa_item,
     gt_item_po    LIKE TABLE OF wa_item,
     gt_item_po_01 LIKE TABLE OF wa_item,
     gt_item_po_02 LIKE TABLE OF wa_item.

DATA: gs_order_header_in      TYPE bapisdhd1, "销售订单抬头
      gs_order_header_inx     TYPE bapisdhd1x,
      gs_return_header_in      TYPE bapisdhd1,
      gs_return_header_inx    TYPE bapisdhd1x,
      gs_order_items_in       LIKE  bapisditm,  "销售订单行项目
      gs_order_items_inx      LIKE  bapisditmx,
      gs_order_partners       LIKE  bapiparnr,  "销售订单:合作伙伴
      gs_return_items_in      LIKE  bapisditm,
      gs_return_items_inx     LIKE  bapisditmx,
      gs_return_partners      LIKE  bapiparnr,
      gs_order_conditions_in  LIKE  bapicond, "销售订单:通讯字段
      gs_order_conditions_inx LIKE  bapicondx,
      gs_return_conditions_in LIKE  bapicond,
      gs_order_header_in_s    TYPE  bapisdhead,
      gs_order_items_in_s     LIKE  bapiitemin,
      gs_order_partners_s     LIKE  bapipartnr,
      gs_order_schedule_in    LIKE  bapischdl,
      gs_order_items_out      LIKE  bapiitemex,
      gs_order_condition_ex   LIKE  bapicond,
      gt_order_items_in        TYPE TABLE OF  bapisditm,  "销售订单行项目
      gt_order_items_inx      TYPE TABLE OF bapisditmx,
      gt_order_partners        TYPE TABLE OF  bapiparnr,
      gt_return_items_in      TYPE TABLE OF  bapisditm,
      gt_return_items_inx      TYPE TABLE OF  bapisditmx,
      gt_return_partners      TYPE TABLE OF  bapiparnr,
      gt_order_conditions_in  TYPE TABLE OF  bapicond,
      gt_order_conditions_inx TYPE TABLE OF  bapicondx,
      gt_return_conditions_in TYPE TABLE OF  bapicond,
      gt_order_header_in_s    TYPE  TABLE OF bapisdhead,
      gt_order_items_in_s     LIKE  TABLE OF bapiitemin,
      gt_order_partners_s     LIKE  TABLE OF bapipartnr,
      gt_order_schedule_in    LIKE  TABLE OF bapischdl,
      gt_order_items_out      LIKE  TABLE OF bapiitemex,
      gt_order_condition_ex   LIKE  TABLE OF bapicond,
      gs_order_schedules_in   LIKE bapischdl,
      gt_order_schedules_in   LIKE TABLE OF bapischdl,
      gs_return_schedules_in  LIKE  bapischdl,
      gt_return_schedules_in  LIKE  TABLE OF bapischdl,
      wa_return               LIKE bapiret2,
      return                  LIKE TABLE OF  bapiret2,
      gs_text                 LIKE bapisdtext,
      gt_text                 TYPE TABLE OF bapisdtext.

TYPE-POOLS:truxs.
DATA:xlstab TYPE truxs_t_text_data.

DATA:matnr_18 TYPE char18.
DATA:l_switch TYPE TABLE OF bapisdls WITH HEADER LINE.
l_switch-pricing = 'G'.
APPEND l_switch.

DATA:w_text TYPE tline,
     l_text TYPE TABLE OF tline,
     tdname TYPE thead-tdname,
     vbtyp  TYPE c.

DATA:mes_str TYPE string.

TYPE-POOLS:slis.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv, "lvc_t_fcat, "列描述内表,列清单
      wa_fieldcat LIKE LINE OF it_fieldcat,
      it_layout   TYPE slis_layout_alv. "lvc_s_layo. "表格规格属性内表

CONSTANTS cns_user_command TYPE slis_formname VALUE 'ALV_USER_COMMAND' .

DATA:z_pp_0001 TYPE REF TO zhele_pp_0001.
CREATE OBJECT z_pp_0001.

*&---------------------------------------------------------------------*
*& 包含               ZSDR006B_SCR
*&---------------------------------------------------------------------*
PARAMETERS p_path  LIKE rlgrap-filename." OBLIGATORY.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN PUSHBUTTON 4(20) p_mbxz USER-COMMAND mbxz. " 定义搜索按钮

*&---------------------------------------------------------------------*
*& 包含               ZSDR006B_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包含               ZSDR003_FRM
*&---------------------------------------------------------------------*

FORM frm_excel_down .
* 相关变量定义
  DATA:lo_objdata     LIKE wwwdatatab,
       lo_mime        LIKE w3mime,
       lc_filename    TYPE string VALUE '销售订单批导模板',
       lc_fullpath    TYPE string VALUE 'c:\',
       lc_path        TYPE string VALUE 'c:\',
       ls_destination LIKE rlgrap-filename,
       ls_objnam      TYPE string,
       l_rc           LIKE sy-subrc,
       ls_errtxt      TYPE string,
       l_objid        TYPE wwwdatatab-objid,
       l_dest         LIKE sapb-sappfad.

* 模版上传的对象名
  l_objid = 'ZSDR006B'.
* 模板下载路径名
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title              = '模板下载'
      default_extension         = 'XLS'
      default_file_name         = lc_filename
    CHANGING
      filename                  = lc_filename
      path                      = lc_path
      fullpath                  = lc_fullpath
    EXCEPTIONS
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5.
* 没有选择路径
  IF lc_fullpath = ''.
    MESSAGE  '请选择正确的路径!' TYPE 'E'.
  ELSE.
*-  路径名
    l_dest = lc_fullpath.

SELECT SINGLE
           relid                   "IMPORT/EXPORT 记录中的区域
           objid                   "SAP WWW 网关对象名
      FROM wwwdata
      INTO CORRESPONDING FIELDS OF lo_objdata
     WHERE srtf2 = 0
      AND relid = 'MI'
      AND objid = l_objid.

IF sy-subrc <> 0 OR lo_objdata-objid IS INITIAL.
      MESSAGE '没有获得模板数据' TYPE 'E'.
    ENDIF.

ls_destination = l_dest.
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = lo_objdata
        destination = ls_destination
      IMPORTING
        rc          = l_rc.
    IF l_rc <> 0.
      MESSAGE '模板下载失败' TYPE 'E'.
    ENDIF.
  ENDIF.
ENDFORM.

FORM get_filename  CHANGING p_path.

DATA: l_v_file_filter  TYPE string.
  DATA: l_v_filetable TYPE file_table,
        l_t_filetable TYPE filetable.
  DATA: l_v_rc           TYPE i.
  DATA: l_v_user_action  TYPE i.

l_v_file_filter = '(*.xlsx;*.xls)|*.xlsx;*.xls|'.
  cl_gui_frontend_services=>file_open_dialog(
     EXPORTING window_title = 'Select file'
               file_filter  = l_v_file_filter
     CHANGING  file_table   = l_t_filetable
               rc           = l_v_rc
               user_action  = l_v_user_action ).
  CHECK l_v_user_action EQ 0.
  CHECK l_t_filetable[] IS NOT INITIAL.
  READ TABLE l_t_filetable INTO l_v_filetable INDEX 1.
  p_path = l_v_filetable-filename.

ENDFORM.                    " GET_FILENAME

FORM get_file_data .
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR    =
      i_line_header        = '2'
      i_tab_raw_data       = xlstab
      i_filename           = p_path
    TABLES
      i_tab_converted_data = gt_item
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

*  LOOP AT  gt_data INTO gw_data.
*    TRANSLATE gw_data-bsart TO UPPER CASE.
*    TRANSLATE gw_data-mtabc TO UPPER CASE.
*    MODIFY gt_data FROM gw_data.
*  ENDLOOP.

ENDFORM.                    "get_file_data

FORM get_data.
  DATA:i TYPE posnr_va.
  APPEND LINES OF gt_item TO gt_item_po.
  LOOP AT gt_item INTO wa_item.

"必输信息,不能为空
*    IF wa_item-bstdk    IS INITIAL
    IF wa_item-auart    IS INITIAL
*    OR wa_item-vkbur    IS INITIAL
*    OR wa_item-bstnk    IS INITIAL
*    OR wa_item-bname    IS INITIAL
*    OR wa_item-matnr    IS INITIAL
*    OR wa_item-ggmc    IS INITIAL
*    OR wa_item-cpmc    IS INITIAL
    OR wa_item-kwmeng   IS INITIAL
    OR wa_item-lgort    IS INITIAL
*    OR wa_item-txt_02   IS INITIAL
*    OR wa_item-txt_03   IS INITIAL
*    OR wa_item-ihrez    IS INITIAL
    OR wa_item-kmein    IS INITIAL
*    OR wa_item-txt_04   IS INITIAL
*    OR   ( wa_item-kbetr    IS INITIAL    and  wa_item-pstyv    <> 'ZANN'      )
    OR wa_item-waerk    IS INITIAL
    OR wa_item-zterm    IS INITIAL
    OR wa_item-edatu    IS INITIAL
    OR wa_item-pstyv    IS INITIAL
    OR wa_item-vkorg    IS INITIAL
    OR wa_item-vtweg    IS INITIAL
*    OR wa_item-vkgrp    IS INITIAL
    OR wa_item-kunnr    IS INITIAL
    OR wa_item-kunnr_01  IS INITIAL
    OR wa_item-werks    IS INITIAL.
      "提示字段不能为空,
      wa_item-mes_01 = 'E'.
      wa_item-mes_02 = '必输字段不能为空,请检查!'.

ENDIF.

IF wa_item-vbeln IS NOT INITIAL.
      APPEND wa_item TO gt_item_01.
      APPEND wa_item TO gt_item_po_01.
    ELSE.
      APPEND wa_item TO gt_item_02.
      APPEND wa_item TO gt_item_po_02.
    ENDIF.
  ENDLOOP.
  CLEAR:gt_item,wa_item.

SORT gt_item_01 BY vbeln.
  SORT gt_item_po_01 BY vbeln.
  DELETE ADJACENT DUPLICATES FROM gt_item_01 COMPARING vbeln.

SORT gt_item_02 BY bstnk.
  SORT gt_item_po_02 BY bstnk.
  DELETE ADJACENT DUPLICATES FROM gt_item_02 COMPARING bstnk.

"有 销售订单号 的单据处理
  LOOP AT gt_item_01 INTO DATA(wa_item_01)
    WHERE mes_01 = ''.
    CLEAR:gs_order_header_in,
          gs_order_header_inx,
          gt_order_items_in,
          gt_order_items_inx,
          gt_order_partners,
          gt_order_schedules_in,
          gt_order_conditions_in,
          gt_order_conditions_inx,
          i.

"下单日期格式转换
    SEARCH wa_item_01-audat FOR '/'.
    IF sy-subrc = 0.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          biaos   = '/'
          day_in  = wa_item_01-audat
        IMPORTING
          day_out = wa_item_01-audat.
    ELSE.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          day_in  = wa_item_01-audat
        IMPORTING
          day_out = wa_item_01-audat.
    ENDIF.

"客户参考日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_01-bstdk
*      IMPORTING
*        day_out = wa_item_01-bstdk.

SEARCH wa_item_01-bstdk FOR '/'.
    IF sy-subrc = 0.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          biaos   = '/'
          day_in  = wa_item_01-bstdk
        IMPORTING
          day_out = wa_item_01-bstdk.
    ELSE.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          day_in  = wa_item_01-bstdk
        IMPORTING
          day_out = wa_item_01-bstdk.
    ENDIF.

"请求交货日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_01-edatu
*      IMPORTING
*        day_out = wa_item_01-edatu.

SEARCH wa_item_01-edatu FOR '/'.
    IF sy-subrc = 0.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          biaos   = '/'
          day_in  = wa_item_01-edatu
        IMPORTING
          day_out = wa_item_01-edatu.
    ELSE.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          day_in  = wa_item_01-edatu
        IMPORTING
          day_out = wa_item_01-edatu.
    ENDIF.

gs_order_header_in-doc_date = wa_item_01-audat.  "下单日期
    IF gs_order_header_in-doc_date = ''.
      gs_order_header_in-doc_date = sy-datum.
    ENDIF.
    gs_order_header_in-purch_date = wa_item_01-bstdk.  "客户参考日期/发货日期
    gs_order_header_in-doc_type = wa_item_01-auart.  "单据类型
*    gs_order_header_in-doc_type = 'ZSO2'.
    gs_order_header_in-sales_off = wa_item_01-vkbur. "销售部门/销售办事处
    gs_order_header_in-purch_no_c = wa_item_01-bstnk."客户参考
*    gs_order_header_in-name = wa_item_01-bname.  "名称/旺旺号
    gs_order_header_in-ref_1 = wa_item_01-ihrez. "您的参考/客户联系人
    gs_order_header_in-sales_org = wa_item_01-vkorg. "销售组织
    gs_order_header_in-distr_chan = wa_item_01-vtweg.  "分销渠道
    gs_order_header_in-division = wa_item_01-spart.  "产品组
    gs_order_header_in-sales_grp = wa_item_01-vkgrp. "销售组
    gs_order_header_in-ord_reason = wa_item_01-augru.  "订单原因
    gs_order_header_in-req_date_h = wa_item_01-edatu. "请求交货日期
    gs_order_header_in-pmnttrms = wa_item_01-zterm. "付款条件
    gs_order_header_in-ship_cond = wa_item_01-vsbed. "物流信息

gs_order_header_inx-updateflag = 'X'.
    gs_order_header_inx-doc_date = 'X'.  "下单日期
    gs_order_header_inx-purch_date = 'X'.  "客户参考日期/发货日期
    gs_order_header_inx-doc_type = 'X'.  "单据类型
    gs_order_header_inx-sales_off = 'X'. "销售部门/销售办事处
    gs_order_header_inx-purch_no_c = 'X'."客户参考
*    gs_order_header_inx-name = 'X'.  "名称/旺旺号
    gs_order_header_inx-ref_1 = 'X'. "您的参考/客户联系人
    gs_order_header_inx-sales_org = 'X'. "销售组织
    gs_order_header_inx-distr_chan = 'X'.  "分销渠道
    gs_order_header_inx-division = 'X'.  "产品组
    gs_order_header_inx-sales_grp = 'X'. "销售组
    gs_order_header_inx-ord_reason = 'X'.  "订单原因
    gs_order_header_inx-req_date_h = 'X'.
    gs_order_header_inx-pmnttrms = 'X'.
    gs_order_header_inx-ship_cond = 'X'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_item_01-kunnr
      IMPORTING
        output = wa_item_01-kunnr.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_item_01-kunnr_01
      IMPORTING
        output = wa_item_01-kunnr_01.

"合作伙伴
    IF wa_item_01-kunnr IS INITIAL.
      gs_order_partners-partn_role = 'AG'.
      gs_order_partners-partn_numb = wa_item_01-kunnr.
      APPEND gs_order_partners TO gt_order_partners.
      gs_order_partners-partn_role = 'WE'.
      gs_order_partners-partn_numb = wa_item_01-kunnr_01.
      APPEND gs_order_partners TO gt_order_partners.
    ELSE.
      gs_order_partners-partn_role = 'AG'.
      gs_order_partners-partn_numb = wa_item_01-kunnr.
      APPEND gs_order_partners TO gt_order_partners.
      gs_order_partners-partn_role = 'WE'.
      gs_order_partners-partn_numb = wa_item_01-kunnr_01.
      APPEND gs_order_partners TO gt_order_partners.
    ENDIF.
*    APPEND gs_order_partners TO gt_order_partners.

LOOP AT gt_item_po_01 INTO DATA(wa_item_po_01)
      WHERE vbeln = wa_item_01-vbeln.
      CLEAR:gs_order_items_in,
            gs_order_items_inx,
            gs_order_partners,
            gs_order_conditions_in,
            gs_order_conditions_inx,
            gs_text.

IF wa_item_po_01-ihrez <> wa_item_01-ihrez.
        wa_item_01-mes_01 = 'E'.
        wa_item_01-mes_02 = '同一订单下:您的参考/客户联系人不一致,请检查'.
        MODIFY gt_item_01
        FROM wa_item_01
        TRANSPORTING mes_01 mes_02.

wa_item_po_01-mes_01 = 'E'.
        wa_item_po_01-mes_02 = '同一订单下:您的参考/客户联系人不一致,请检查'.
        MODIFY gt_item_po_01
        FROM wa_item_po_01
        TRANSPORTING mes_01 mes_02.
      ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = wa_item_po_01-kunnr
        IMPORTING
          output = wa_item_po_01-kunnr.
      IF wa_item_po_01-kunnr <> wa_item_01-kunnr
      OR wa_item_po_01-vkorg <> wa_item_01-vkorg
      OR wa_item_po_01-vtweg <> wa_item_01-vtweg
      OR wa_item_po_01-spart <> wa_item_01-spart.
        "提示同一订单下的 客户编码,销售组织,分销渠道,产品组不相同
        wa_item_01-mes_01 = 'E'.
        wa_item_01-mes_02 = '同一订单下:客户编码,销售组织,分销渠道,产品组不相同'.
        MODIFY gt_item_01
        FROM wa_item_01
        TRANSPORTING mes_01 mes_02.

wa_item_po_01-mes_01 = 'E'.
        wa_item_po_01-mes_02 = '同一订单下:客户编码,销售组织,分销渠道,产品组不相同'.
        MODIFY gt_item_po_01
        FROM wa_item_po_01
        TRANSPORTING mes_01 mes_02.

ENDIF.

*      IF wa_item_po_01-matnr_01 IS INITIAL.
*        SELECT SINGLE matnr_01 INTO wa_item_po_01-matnr_01
*          FROM zsdt003
*          WHERE matnr = wa_item_po_01-matnr
*          AND ggmc = wa_item_po_01-ggmc
*          AND cpmc = wa_item_po_01-cpmc
*          AND bzfs = wa_item_po_01-bzfs.
*        IF sy-subrc <> 0.
*          "提示物料错误,请检查数据
*          wa_item_01-mes_01 = 'E'.
*          wa_item_01-mes_02 = '物料不存在,请检查!'.
*          MODIFY gt_item_01 FROM wa_item_01 TRANSPORTING mes_01 mes_02.
*
*          wa_item_po_01-mes_01 = 'E'.
*          wa_item_po_01-mes_02 = '物料不存在,请检查!'.
*          MODIFY gt_item_po_01 FROM wa_item_po_01 TRANSPORTING mes_01 mes_02.
*
*        ENDIF.
*      ENDIF.

IF wa_item_po_01-kunnr IS NOT INITIAL.
        CLEAR:wa_item_po_01-kunnr.
        SELECT SINGLE kunnr INTO wa_item_po_01-kunnr
          FROM kna1
          WHERE kunnr = wa_item_01-kunnr.
        IF sy-subrc <> 0.
          "提示物料错误,请检查数据
          wa_item_01-mes_01 = 'E'.
          wa_item_01-mes_02 = '客户不存在,请检查!'.
          MODIFY gt_item_01 FROM wa_item_01 TRANSPORTING mes_01 mes_02.

wa_item_po_01-mes_01 = 'E'.
          wa_item_po_01-mes_02 = '客户不存在,请检查!'.
          MODIFY gt_item_po_01 FROM wa_item_po_01 TRANSPORTING mes_01 mes_02.

ENDIF.
      ENDIF.

"行项目
      i = i + 10.
*      call function 'CONVERSION_EXIT_ALPHA_INPUT'
*        exporting
*          input  = i
*        importing
*          output = i.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' " 单位转换
        EXPORTING
          input          = wa_item_po_01-kmein
          language       = sy-langu
        IMPORTING
          output         = wa_item_po_01-kmein
        EXCEPTIONS
          unit_not_found = 1
          OTHERS         = 2.

gs_order_items_in-itm_number = i.
      gs_order_items_in-target_qty = wa_item_po_01-kwmeng.
      gs_order_items_in-store_loc = wa_item_po_01-lgort.
*      gs_order_items_in-target_qu = wa_item_po_01-kmein.
      gs_order_items_in-sales_unit = wa_item_po_01-kmein.
      gs_order_items_in-currency = wa_item_po_01-waerk.
*      DATA:matnr_18 TYPE char18.
      CLEAR:matnr_18.
      matnr_18 = wa_item_po_01-matnr_01.
      gs_order_items_in-material = matnr_18. "物料号,18位的,需要转换
*      call function 'CONVERSION_EXIT_ALPHA_INPUT'
*        exporting
*          input  = t_zsds11-material
*        importing
*          output = t_zsds11-material.
      gs_order_items_in-item_categ = wa_item_po_01-pstyv.
*      gs_order_items_in-item_categ = 'ZAN'.
      gs_order_items_in-plant = wa_item_po_01-werks.
      APPEND gs_order_items_in TO gt_order_items_in.

gs_order_items_inx-itm_number = i.
      gs_order_items_inx-updateflag = 'X'.
      gs_order_items_inx-target_qty = 'X'.
      gs_order_items_inx-store_loc = 'X'.
*      gs_order_items_inx-target_qu = 'X'.
      gs_order_items_inx-sales_unit = 'X'.
*      gs_order_items_inx-CURRENCY = 'X'.
      gs_order_items_inx-material = 'X'. "物料号,18位的,需要转换
      gs_order_items_inx-item_categ = 'X'.
      gs_order_items_inx-plant = 'X'.
      APPEND gs_order_items_inx TO gt_order_items_inx.

*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*        EXPORTING
*          input  = wa_item_01-kunnr
*        IMPORTING
*          output = wa_item_01-kunnr.
*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*        EXPORTING
*          input  = wa_item_01-kunnr_01
*        IMPORTING
*          output = wa_item_01-kunnr_01.

*      "合作伙伴
*      IF wa_item_01-kunnr IS INITIAL.
*        gs_order_partners-partn_role = 'AG'.
*        gs_order_partners-partn_numb = wa_item_01-kunnr_01.
*        APPEND gs_order_partners TO gt_order_partners.
*        gs_order_partners-partn_role = 'WE'.
*        gs_order_partners-partn_numb = wa_item_01-kunnr_01.
*        APPEND gs_order_partners TO gt_order_partners.
*      ELSE.
*        gs_order_partners-partn_role = 'AG'.
*        gs_order_partners-partn_numb = wa_item_01-kunnr.
*        APPEND gs_order_partners TO gt_order_partners.
*        gs_order_partners-partn_role = 'WE'.
*        gs_order_partners-partn_numb = wa_item_01-kunnr_01.
*        APPEND gs_order_partners TO gt_order_partners.
*      ENDIF.
*      APPEND gs_order_partners TO gt_order_partners.

"定价条件
      gs_order_conditions_in-itm_number = i.  "itm_number
      gs_order_conditions_in-cond_type  = 'ZPR1'.            "定价条件
      gs_order_conditions_in-cond_value = wa_item_po_01-kbetr.
      gs_order_conditions_in-currency   = wa_item_po_01-waerk.    "
      gs_order_conditions_in-cond_unit  = wa_item_po_01-kmein.  "条件单位
      gs_order_conditions_in-cond_p_unt = wa_item_po_01-kpein.  "价格单位
      APPEND gs_order_conditions_in TO gt_order_conditions_in.

CLEAR gs_order_conditions_inx.
      gs_order_conditions_inx-itm_number = i.
      gs_order_conditions_inx-cond_type  = 'ZPR1'.
      gs_order_conditions_inx-updateflag = 'X'.
      gs_order_conditions_inx-cond_value = 'X'.
      gs_order_conditions_inx-currency   = 'X'.
      gs_order_conditions_inx-cond_unit  = 'X'.
      gs_order_conditions_inx-cond_p_unt = 'X'.
      APPEND gs_order_conditions_inx TO gt_order_conditions_inx.

"凭证计划行字段
      gs_order_schedules_in-itm_number = i.
      gs_order_schedules_in-req_qty    = wa_item_po_01-kwmeng.
      APPEND gs_order_schedules_in TO gt_order_schedules_in.

*      gs_text-DOC_NUMBER = wa_item_01-vbeln.
*      gs_text-ITM_NUMBER = i.
*      gs_text-TEXT_ID = '0001'.
*      gs_text-TEXT_LINE = wa_item_po_01-txt_01.
*      APPEND gs_text TO gt_text.

"行项目赋值
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = i
        IMPORTING
          output = wa_item_po_01-posnr.

MODIFY gt_item_po_01 FROM wa_item_po_01 TRANSPORTING posnr.

CLEAR:wa_item_po_01.
    ENDLOOP.

IF wa_item_01-mes_01 = ''.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = wa_item_01-vbeln
        IMPORTING
          output = wa_item_01-vbeln.

*    DATA:l_switch TYPE TABLE OF bapisdls WITH HEADER LINE.
*    l_switch-pricing = 'G'.
*    APPEND l_switch.
      CLEAR:return,vbtyp.
      SELECT SINGLE vbtyp
        INTO vbtyp
        FROM tvak
        WHERE auart = wa_item_01-auart.

IF vbtyp = 'H'.

CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
          EXPORTING
            salesdocumentin      = wa_item_01-vbeln    "销售订单
            return_header_in     = gs_order_header_in  "通讯字段: 销售和分销凭证抬头
            return_header_inx    = gs_order_header_inx "通讯字段: 销售和分销凭证抬头复选框
*           SENDER               = "发送人逻辑系统
*           BINARY_RELATIONSHIPTYPE       =   "对象关系服务二进位链接类型
*           INT_NUMBER_ASSIGNMENT         =   "标记
*           BEHAVE_WHEN_ERROR    = "标记
            logic_switch         = l_switch "逻辑切换的 SD 复选框
*           TESTRUN              = "标记
*           CONVERT              = ' ' "标记
*        IMPORTING
*           salesdocument        = wa_item_02-vbeln   "销售订单
          TABLES
            return               = return  "返回参数
            return_items_in      = gt_order_items_in "通讯字段: 销售和分销凭证项目
            return_items_inx     = gt_order_items_inx  "通讯字段: 销售和分销凭证项目复选框
            return_partners      = gt_order_partners "通讯字段: SD单据合作伙伴:WWW
            return_schedules_in  = gt_order_schedules_in "维护 SD 凭证计划行的通讯字段
*           order_schedules_inx  = gt_order_schedules_inx "维护销售凭证计划行的复选框清单
            return_conditions_in = gt_order_conditions_in  "维护订单条件的通讯字段
*           order_conditions_inx = gt_order_conditions_inx "维护订单条件的通讯字段的复选框清单
*           ORDER_CFGS_REF       = "CU:配置数据
*           ORDER_CFGS_INST      = "个别配置实例
*           ORDER_CFGS_PART_OF   = "个别配置的部分信息
*           ORDER_CFGS_VALUE     = "个别配置的特性值分配
*           ORDER_CFGS_BLOB      = "BLOB 内部配置数据 (SCE)
*           ORDER_CFGS_VK        = "配置的变式条件代码
*           ORDER_CFGS_REFINST   = "CU:在配置中参考订单项目 / 实例
*           ORDER_CCARD          = "通讯表:付款单/开票凭证的说明
*           ORDER_TEXT           = "通讯字段:SD 文本
*           ORDER_KEYS           = "销售和分销凭证中的关键值
*           EXTENSIONIN          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
*           PARTNERADDRESSES     = "地址的 BAPI 参考结构(组织/公司)
*           EXTENSIONEX          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
          .

ELSE.
        CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
          EXPORTING
            salesdocumentin      = wa_item_01-vbeln    "销售订单
            order_header_in      = gs_order_header_in  "通讯字段: 销售和分销凭证抬头
            order_header_inx     = gs_order_header_inx "通讯字段: 销售和分销凭证抬头复选框
*           SENDER               = "发送人逻辑系统
*           BINARY_RELATIONSHIPTYPE       =   "对象关系服务二进位链接类型
*           INT_NUMBER_ASSIGNMENT         =   "标记
*           BEHAVE_WHEN_ERROR    = "标记
            logic_switch         = l_switch "逻辑切换的 SD 复选框
*           TESTRUN              = "标记
*           CONVERT              = ' ' "标记
*        importing
*           salesdocument        = salesdocument   "销售订单
          TABLES
            return               = return  "返回参数
            order_items_in       = gt_order_items_in "通讯字段: 销售和分销凭证项目
            order_items_inx      = gt_order_items_inx  "通讯字段: 销售和分销凭证项目复选框
            order_partners       = gt_order_partners "通讯字段: SD单据合作伙伴:WWW
            order_schedules_in   = gt_order_schedules_in "维护 SD 凭证计划行的通讯字段
*           order_schedules_inx  = gt_order_schedules_inx "维护销售凭证计划行的复选框清单
            order_conditions_in  = gt_order_conditions_in  "维护订单条件的通讯字段
            order_conditions_inx = gt_order_conditions_inx "维护订单条件的通讯字段的复选框清单
*           ORDER_CFGS_REF       = "CU:配置数据
*           ORDER_CFGS_INST      = "个别配置实例
*           ORDER_CFGS_PART_OF   = "个别配置的部分信息
*           ORDER_CFGS_VALUE     = "个别配置的特性值分配
*           ORDER_CFGS_BLOB      = "BLOB 内部配置数据 (SCE)
*           ORDER_CFGS_VK        = "配置的变式条件代码
*           ORDER_CFGS_REFINST   = "CU:在配置中参考订单项目 / 实例
*           ORDER_CCARD          = "通讯表:付款单/开票凭证的说明
*           ORDER_TEXT           = gt_text"通讯字段:SD 文本
*           ORDER_KEYS           = "销售和分销凭证中的关键值
*           EXTENSIONIN          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
*           PARTNERADDRESSES     = "地址的 BAPI 参考结构(组织/公司)
*           EXTENSIONEX          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
          .
      ENDIF.

READ TABLE return INTO wa_return
      WITH KEY type = 'E'.
      IF sy-subrc <> 0.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.

tdname = wa_item_01-vbeln.
        "抬头文本:物流方式

*        CLEAR:w_text,l_text.
*        w_text-tdline = wa_item_01-txt_02.
*        APPEND w_text TO l_text.
*
*        CALL FUNCTION 'CREATE_TEXT'
*          EXPORTING
*            fid         = '0002'
*            flanguage   = sy-langu
*            fname       = tdname
*            fobject     = 'VBBK'
*            save_direct = 'X'
*            fformat     = '*'
*          TABLES
*            flines      = l_text.

"抬头文本:物流单号
*        CLEAR:w_text,l_text.
*        w_text-tdline = wa_item_01-txt_03.
*        APPEND w_text TO l_text.
*
*        CALL FUNCTION 'CREATE_TEXT'
*          EXPORTING
*            fid         = '0004'
*            flanguage   = sy-langu
*            fname       = tdname
*            fobject     = 'VBBK'
*            save_direct = 'X'
*            fformat     = '*'
*          TABLES
*            flines      = l_text.

"抬头文本
        CLEAR:w_text,l_text.
        w_text-tdline = wa_item_01-txt_04.
        APPEND w_text TO l_text.

CALL FUNCTION 'CREATE_TEXT'
          EXPORTING
            fid         = '0001'
            flanguage   = sy-langu
            fname       = tdname
            fobject     = 'VBBK'
            save_direct = 'X'
            fformat     = '*'
          TABLES
            flines      = l_text.

"给行项目的 bs_txt 字段赋值,以判断后面行项目文本的创建
*        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*          EXPORTING
*            input  = wa_item_01-vbeln
*          IMPORTING
*            output = wa_item_01-vbeln.

wa_item_po_01-bs_txt = '1'.
        wa_item_po_01-mes_01 = 'S'.
        wa_item_po_01-mes_02 = '保存成功,销售单号为:' && wa_item_01-vbeln.

MODIFY gt_item_po_01
        FROM wa_item_po_01
        TRANSPORTING bs_txt mes_01 mes_02
        WHERE vbeln = wa_item_01-vbeln.

CLEAR:wa_item_po_01.
      ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .

CLEAR:mes_str,wa_return.
        LOOP AT return INTO wa_return
          WHERE type = 'E'.

mes_str = mes_str && wa_return-message && ','.

ENDLOOP.
        wa_item_01-mes_01 = 'E'.
        wa_item_01-mes_02 = mes_str.
        MODIFY gt_item_01
        FROM wa_item_01
        TRANSPORTING mes_01 mes_02.

wa_item_po_01-mes_01 = 'E'.
        wa_item_po_01-mes_02 = mes_str.
        MODIFY gt_item_po_01
        FROM wa_item_po_01
        TRANSPORTING mes_01 mes_02
        WHERE vbeln = wa_item_01-vbeln.

ENDIF.
    ENDIF.

CLEAR:wa_item_01.
  ENDLOOP.

LOOP AT gt_item_po_01 INTO wa_item_po_01
    WHERE bs_txt = '1'.

CLEAR:tdname.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_item_po_01-posnr
      IMPORTING
        output = wa_item_po_01-posnr.

tdname = wa_item_po_01-vbeln && wa_item_po_01-posnr.

CLEAR:w_text,l_text.
    w_text-tdline = wa_item_po_01-txt_01.
    APPEND w_text TO l_text.

CALL FUNCTION 'CREATE_TEXT'
      EXPORTING
        fid         = '0001'
        flanguage   = sy-langu
        fname       = tdname
        fobject     = 'VBBP'
        save_direct = 'X'
        fformat     = '*'
      TABLES
        flines      = l_text.

ENDLOOP.

CLEAR:gt_order_items_in,
        gt_order_items_inx,
        gt_order_partners,
        gt_order_schedules_in,
        gt_order_conditions_in,
        gt_order_conditions_inx,
        return.

****************    没有 销售订单号  的单据    ****************
  LOOP AT gt_item_02 INTO DATA(wa_item_02)
    WHERE mes_01 = ''.
    CLEAR:gs_order_header_in,
          gs_order_header_inx,
          gt_order_items_in,
          gt_order_items_inx,
          gt_order_partners,
          gt_order_schedules_in,
          gt_order_conditions_in,
          gt_order_conditions_inx,
          i.

*    "下单日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_02-audat
*      IMPORTING
*        day_out = wa_item_02-audat.
*
*    "客户参考日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_02-bstdk
*      IMPORTING
*        day_out = wa_item_02-bstdk.
*
*    "请求交货日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_02-edatu
*      IMPORTING
*        day_out = wa_item_02-edatu.

"下单日期格式转换
    SEARCH wa_item_02-audat FOR '/'.
    IF sy-subrc = 0.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          biaos   = '/'
          day_in  = wa_item_02-audat
        IMPORTING
          day_out = wa_item_02-audat.
    ELSE.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          day_in  = wa_item_02-audat
        IMPORTING
          day_out = wa_item_02-audat.
    ENDIF.

"客户参考日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_01-bstdk
*      IMPORTING
*        day_out = wa_item_01-bstdk.

SEARCH wa_item_02-bstdk FOR '/'.
    IF sy-subrc = 0.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          biaos   = '/'
          day_in  = wa_item_02-bstdk
        IMPORTING
          day_out = wa_item_02-bstdk.
    ELSE.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          day_in  = wa_item_02-bstdk
        IMPORTING
          day_out = wa_item_02-bstdk.
    ENDIF.

"请求交货日期格式转换
*    CALL METHOD z_pp_0001->date_change
*      EXPORTING
*        biaos   = '/'
*        day_in  = wa_item_01-edatu
*      IMPORTING
*        day_out = wa_item_01-edatu.

SEARCH wa_item_02-edatu FOR '/'.
    IF sy-subrc = 0.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          biaos   = '/'
          day_in  = wa_item_02-edatu
        IMPORTING
          day_out = wa_item_02-edatu.
    ELSE.
      CALL METHOD z_pp_0001->date_change
        EXPORTING
          day_in  = wa_item_02-edatu
        IMPORTING
          day_out = wa_item_02-edatu.
    ENDIF.

gs_order_header_in-doc_date = wa_item_02-audat.  "下单日期
    IF gs_order_header_in-doc_date = ''.
      gs_order_header_in-doc_date = sy-datum.
    ENDIF.
    gs_order_header_in-purch_date = wa_item_02-bstdk.  "客户参考日期/发货日期
    gs_order_header_in-doc_type = wa_item_02-auart.  "单据类型
*    gs_order_header_in-doc_type = 'ZSO2'.
    gs_order_header_in-sales_off = wa_item_02-vkbur. "销售部门/销售办事处
    gs_order_header_in-purch_no_c = wa_item_02-bstnk."客户参考
*    gs_order_header_in-name = wa_item_02-bname.  "名称/旺旺号
    gs_order_header_in-ref_1 = wa_item_02-ihrez. "您的参考/客户联系人
    gs_order_header_in-sales_org = wa_item_02-vkorg. "销售组织
    gs_order_header_in-distr_chan = wa_item_02-vtweg.  "分销渠道
    gs_order_header_in-division = wa_item_02-spart.  "产品组
    gs_order_header_in-sales_grp = wa_item_02-vkgrp. "销售组
    gs_order_header_in-ord_reason = wa_item_02-augru.  "订单原因
    gs_order_header_in-req_date_h = wa_item_02-edatu. "请求交货日期
    gs_order_header_in-pmnttrms = wa_item_02-zterm. "付款条件
    gs_order_header_in-ship_cond = wa_item_02-vsbed. "物流信息

gs_order_header_inx-updateflag = 'X'.
    gs_order_header_inx-doc_date = 'X'.  "下单日期
    gs_order_header_inx-purch_date = 'X'.  "客户参考日期/发货日期
    gs_order_header_inx-doc_type = 'X'.  "单据类型
    gs_order_header_inx-sales_off = 'X'. "销售部门/销售办事处
    gs_order_header_inx-purch_no_c = 'X'."客户参考
*    gs_order_header_inx-name = 'X'.  "名称/旺旺号
    gs_order_header_inx-ref_1 = 'X'. "您的参考/客户联系人
    gs_order_header_inx-sales_org = 'X'. "销售组织
    gs_order_header_inx-distr_chan = 'X'.  "分销渠道
    gs_order_header_inx-division = 'X'.  "产品组
    gs_order_header_inx-sales_grp = 'X'. "销售组
    gs_order_header_inx-ord_reason = 'X'.  "订单原因
    gs_order_header_inx-req_date_h = 'X'. "请求交货日期
    gs_order_header_inx-pmnttrms = 'X'.
    gs_order_header_inx-ship_cond = 'X'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_item_02-kunnr
      IMPORTING
        output = wa_item_02-kunnr.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_item_02-kunnr_01
      IMPORTING
        output = wa_item_02-kunnr_01.

"合作伙伴
    IF wa_item_01-kunnr IS INITIAL.
      gs_order_partners-partn_role = 'AG'.
      gs_order_partners-partn_numb = wa_item_02-kunnr.
      APPEND gs_order_partners TO gt_order_partners.
      gs_order_partners-partn_role = 'WE'.
      gs_order_partners-partn_numb = wa_item_02-kunnr_01.
      APPEND gs_order_partners TO gt_order_partners.
    ELSE.
      gs_order_partners-partn_role = 'AG'.
      gs_order_partners-partn_numb = wa_item_02-kunnr.
      APPEND gs_order_partners TO gt_order_partners.
      gs_order_partners-partn_role = 'WE'.
      gs_order_partners-partn_numb = wa_item_02-kunnr_01.
      APPEND gs_order_partners TO gt_order_partners.
    ENDIF.
*    APPEND gs_order_partners TO gt_order_partners.

*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*        EXPORTING
*          input  = wa_item_02-kunnr
*        IMPORTING
*          output = wa_item_02-kunnr.
*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*        EXPORTING
*          input  = wa_item_02-kunnr_01
*        IMPORTING
*          output = wa_item_02-kunnr_01.

LOOP AT gt_item_po_02 INTO DATA(wa_item_po_02)
      WHERE bstnk = wa_item_02-bstnk.
      CLEAR:gs_order_items_in,
            gs_order_items_inx,
            gs_order_partners,
            gs_order_conditions_in,
            gs_order_conditions_inx.

CLEAR:wa_item_02-mes_01,wa_item_02-mes_02,
            wa_item_po_02-mes_01,wa_item_po_02-mes_02.
      IF wa_item_po_02-ihrez <> wa_item_02-ihrez.
        wa_item_02-mes_01 = 'E'.
        wa_item_02-mes_02 = '同一订单下:您的参考/客户联系人不一致,请检查'.
        MODIFY gt_item_02
        FROM wa_item_02
        TRANSPORTING mes_01 mes_02.

wa_item_po_02-mes_01 = 'E'.
        wa_item_po_02-mes_02 = '同一订单下:您的参考/客户联系人不一致,请检查'.
        MODIFY gt_item_po_02
        FROM wa_item_po_02
        TRANSPORTING mes_01 mes_02.
      ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = wa_item_po_02-kunnr
        IMPORTING
          output = wa_item_po_02-kunnr.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = wa_item_po_02-kunnr_01
        IMPORTING
          output = wa_item_po_02-kunnr_01.

IF wa_item_po_02-kunnr <> wa_item_02-kunnr
      OR wa_item_po_02-vkorg <> wa_item_02-vkorg
      OR wa_item_po_02-vtweg <> wa_item_02-vtweg
      OR wa_item_po_02-spart <> wa_item_02-spart.
        "提示同一客户参考下的 客户编码,销售组织,分销渠道,产品组不相同
        wa_item_02-mes_01 = 'E'.
        wa_item_02-mes_02 = '同一客户参考下:客户编码,销售组织,分销渠道,产品组不相同'.
        MODIFY gt_item_02
        FROM wa_item_02
        TRANSPORTING mes_01 mes_02.

wa_item_po_02-mes_01 = 'E'.
        wa_item_po_02-mes_02 = '同一客户参考下:客户编码,销售组织,分销渠道,产品组不相同'.
        MODIFY gt_item_po_02
        FROM wa_item_po_02
        TRANSPORTING mes_01 mes_02.

ENDIF.

*      IF wa_item_po_02-matnr_01 IS INITIAL.
*        SELECT SINGLE matnr_01 INTO wa_item_po_02-matnr_01
*          FROM zsdt003
*          WHERE matnr = wa_item_po_02-matnr
*          AND ggmc = wa_item_po_02-ggmc
*          AND cpmc = wa_item_po_02-cpmc
*          AND bzfs = wa_item_po_02-bzfs.
*        IF sy-subrc <> 0.
*          "提示物料错误,请检查数据
*          wa_item_02-mes_01 = 'E'.
*          wa_item_02-mes_02 = '物料不存在,请检查!'.
*          MODIFY gt_item_02 FROM wa_item_02 TRANSPORTING mes_01 mes_02.
*
*          wa_item_po_02-mes_01 = 'E'.
*          wa_item_po_02-mes_02 = '物料不存在,请检查!'.
*          MODIFY gt_item_po_02 FROM wa_item_po_02 TRANSPORTING mes_01 mes_02.
*
*
*        ENDIF.
*      ENDIF.

IF wa_item_po_02-kunnr IS NOT INITIAL.
        CLEAR:wa_item_po_02-kunnr.
        SELECT SINGLE kunnr INTO wa_item_po_02-kunnr
          FROM kna1
          WHERE kunnr = wa_item_02-kunnr.
        IF sy-subrc <> 0.
          "提示物料错误,请检查数据
          wa_item_02-mes_01 = 'E'.
          wa_item_02-mes_02 = '客户不存在,请检查!'.
          MODIFY gt_item_02 FROM wa_item_02 TRANSPORTING mes_01 mes_02.

wa_item_po_02-mes_01 = 'E'.
          wa_item_po_02-mes_02 = '客户不存在,请检查!'.
          MODIFY gt_item_po_02 FROM wa_item_po_02 TRANSPORTING mes_01 mes_02.

ENDIF.
      ENDIF.

"行项目
      i = i + 10.
*      call function 'CONVERSION_EXIT_ALPHA_INPUT'
*        exporting
*          input  = i
*        importing
*          output = i.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' " 单位转换
        EXPORTING
          input          = wa_item_po_02-kmein
          language       = sy-langu
        IMPORTING
          output         = wa_item_po_02-kmein
        EXCEPTIONS
          unit_not_found = 1
          OTHERS         = 2.

gs_order_items_in-itm_number = i.
      gs_order_items_in-target_qty = wa_item_po_02-kwmeng.
      gs_order_items_in-store_loc = wa_item_po_02-lgort.
*      gs_order_items_in-target_qu = wa_item_po_01-kmein.
      gs_order_items_in-sales_unit = wa_item_po_02-kmein.
      gs_order_items_in-currency = wa_item_po_02-waerk.

CLEAR:matnr_18.
      matnr_18 = wa_item_po_02-matnr_01.
      gs_order_items_in-material = matnr_18. "物料号,18位的,需要转换
*      call function 'CONVERSION_EXIT_ALPHA_INPUT'
*        exporting
*          input  = t_zsds11-material
*        importing
*          output = t_zsds11-material.
      gs_order_items_in-item_categ = wa_item_po_02-pstyv.
*      gs_order_items_in-item_categ = 'ZAN'.
      gs_order_items_in-plant = wa_item_po_02-werks.
      APPEND gs_order_items_in TO gt_order_items_in.

gs_order_items_inx-itm_number = i.
      gs_order_items_inx-updateflag = 'X'.
      gs_order_items_inx-target_qty = 'X'.
      gs_order_items_inx-store_loc = 'X'.
*      gs_order_items_inx-target_qu = 'X'.
      gs_order_items_inx-sales_unit = 'X'.
*      gs_order_items_inx-CURRENCY = 'X'.
      gs_order_items_inx-material = 'X'. "物料号,18位的,需要转换
      gs_order_items_inx-item_categ = 'X'.
      gs_order_items_inx-plant = 'X'.
      APPEND gs_order_items_inx TO gt_order_items_inx.

*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*        EXPORTING
*          input  = wa_item_02-kunnr
*        IMPORTING
*          output = wa_item_02-kunnr.
*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*        EXPORTING
*          input  = wa_item_02-kunnr_01
*        IMPORTING
*          output = wa_item_02-kunnr_01.

*      "合作伙伴
*      IF wa_item_01-kunnr IS INITIAL.
*        gs_order_partners-partn_role = 'AG'.
*        gs_order_partners-partn_numb = wa_item_02-kunnr_01.
*        APPEND gs_order_partners TO gt_order_partners.
*        gs_order_partners-partn_role = 'WE'.
*        gs_order_partners-partn_numb = wa_item_02-kunnr_01.
*        APPEND gs_order_partners TO gt_order_partners.
*      ELSE.
*        gs_order_partners-partn_role = 'AG'.
*        gs_order_partners-partn_numb = wa_item_02-kunnr.
*        APPEND gs_order_partners TO gt_order_partners.
*        gs_order_partners-partn_role = 'WE'.
*        gs_order_partners-partn_numb = wa_item_02-kunnr_01.
*        APPEND gs_order_partners TO gt_order_partners.
*      ENDIF.
*      APPEND gs_order_partners TO gt_order_partners.

"定价条件
      gs_order_conditions_in-itm_number = i.  "itm_number
      gs_order_conditions_in-cond_type  = 'ZPR1'.            "定价条件
      gs_order_conditions_in-cond_value = wa_item_po_02-kbetr.  "单价
      gs_order_conditions_in-currency   = wa_item_po_02-waerk.  "货币
      gs_order_conditions_in-cond_unit  = wa_item_po_02-kmein.  "条件单位
      gs_order_conditions_in-cond_p_unt = wa_item_po_02-kpein.  "价格单位
      APPEND gs_order_conditions_in TO gt_order_conditions_in.

CLEAR gs_order_conditions_inx.
      gs_order_conditions_inx-itm_number = i.
      gs_order_conditions_inx-cond_type  = 'ZPR1'.
      gs_order_conditions_inx-updateflag = 'X'.
      gs_order_conditions_inx-cond_value = 'X'.
      gs_order_conditions_inx-currency   = 'X'.
      gs_order_conditions_inx-cond_unit  = 'X'.
      gs_order_conditions_inx-cond_p_unt = 'X'.
      APPEND gs_order_conditions_inx TO gt_order_conditions_inx.

"凭证计划行字段
      gs_order_schedules_in-itm_number = i.
      gs_order_schedules_in-req_qty    = wa_item_po_02-kwmeng.
      APPEND gs_order_schedules_in TO gt_order_schedules_in.

"行项目赋值
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = i
        IMPORTING
          output = wa_item_po_02-posnr.

MODIFY gt_item_po_02 FROM wa_item_po_02 TRANSPORTING posnr.

CLEAR:wa_item_po_02.

ENDLOOP.

*        if return[] is initial.
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*      EXPORTING
*        input  = wa_item_01-vbeln
*      IMPORTING
*        output = wa_item_01-vbeln.

IF wa_item_02-mes_01 = ''.

CLEAR:return,vbtyp.
      SELECT SINGLE vbtyp
        INTO vbtyp
        FROM tvak
        WHERE auart = wa_item_02-auart.
      IF vbtyp = 'H'.

CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
          EXPORTING
*           salesdocumentin      = wa_item_01-vbeln    "销售订单
            return_header_in     = gs_order_header_in  "通讯字段: 销售和分销凭证抬头
            return_header_inx    = gs_order_header_inx "通讯字段: 销售和分销凭证抬头复选框
*           SENDER               = "发送人逻辑系统
*           BINARY_RELATIONSHIPTYPE       =   "对象关系服务二进位链接类型
*           INT_NUMBER_ASSIGNMENT         =   "标记
*           BEHAVE_WHEN_ERROR    = "标记
            logic_switch         = l_switch "逻辑切换的 SD 复选框
*           TESTRUN              = "标记
*           CONVERT              = ' ' "标记
          IMPORTING
            salesdocument        = wa_item_02-vbeln   "销售订单
          TABLES
            return               = return  "返回参数
            return_items_in      = gt_order_items_in "通讯字段: 销售和分销凭证项目
            return_items_inx     = gt_order_items_inx  "通讯字段: 销售和分销凭证项目复选框
            return_partners      = gt_order_partners "通讯字段: SD单据合作伙伴:WWW
            return_schedules_in  = gt_order_schedules_in "维护 SD 凭证计划行的通讯字段
*           order_schedules_inx  = gt_order_schedules_inx "维护销售凭证计划行的复选框清单
            return_conditions_in = gt_order_conditions_in  "维护订单条件的通讯字段
*           order_conditions_inx = gt_order_conditions_inx "维护订单条件的通讯字段的复选框清单
*           ORDER_CFGS_REF       = "CU:配置数据
*           ORDER_CFGS_INST      = "个别配置实例
*           ORDER_CFGS_PART_OF   = "个别配置的部分信息
*           ORDER_CFGS_VALUE     = "个别配置的特性值分配
*           ORDER_CFGS_BLOB      = "BLOB 内部配置数据 (SCE)
*           ORDER_CFGS_VK        = "配置的变式条件代码
*           ORDER_CFGS_REFINST   = "CU:在配置中参考订单项目 / 实例
*           ORDER_CCARD          = "通讯表:付款单/开票凭证的说明
*           ORDER_TEXT           = "通讯字段:SD 文本
*           ORDER_KEYS           = "销售和分销凭证中的关键值
*           EXTENSIONIN          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
*           PARTNERADDRESSES     = "地址的 BAPI 参考结构(组织/公司)
*           EXTENSIONEX          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
          .

ELSE.

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
          EXPORTING
*           salesdocumentin      = wa_item_01-vbeln    "销售订单
            order_header_in      = gs_order_header_in  "通讯字段: 销售和分销凭证抬头
            order_header_inx     = gs_order_header_inx "通讯字段: 销售和分销凭证抬头复选框
*           SENDER               = "发送人逻辑系统
*           BINARY_RELATIONSHIPTYPE       =   "对象关系服务二进位链接类型
*           INT_NUMBER_ASSIGNMENT         =   "标记
*           BEHAVE_WHEN_ERROR    = "标记
            logic_switch         = l_switch "逻辑切换的 SD 复选框
*           TESTRUN              = "标记
*           CONVERT              = ' ' "标记
          IMPORTING
            salesdocument        = wa_item_02-vbeln   "销售订单
          TABLES
            return               = return  "返回参数
            order_items_in       = gt_order_items_in "通讯字段: 销售和分销凭证项目
            order_items_inx      = gt_order_items_inx  "通讯字段: 销售和分销凭证项目复选框
            order_partners       = gt_order_partners "通讯字段: SD单据合作伙伴:WWW
            order_schedules_in   = gt_order_schedules_in "维护 SD 凭证计划行的通讯字段
*           order_schedules_inx  = gt_order_schedules_inx "维护销售凭证计划行的复选框清单
            order_conditions_in  = gt_order_conditions_in  "维护订单条件的通讯字段
            order_conditions_inx = gt_order_conditions_inx "维护订单条件的通讯字段的复选框清单
*           ORDER_CFGS_REF       = "CU:配置数据
*           ORDER_CFGS_INST      = "个别配置实例
*           ORDER_CFGS_PART_OF   = "个别配置的部分信息
*           ORDER_CFGS_VALUE     = "个别配置的特性值分配
*           ORDER_CFGS_BLOB      = "BLOB 内部配置数据 (SCE)
*           ORDER_CFGS_VK        = "配置的变式条件代码
*           ORDER_CFGS_REFINST   = "CU:在配置中参考订单项目 / 实例
*           ORDER_CCARD          = "通讯表:付款单/开票凭证的说明
*           ORDER_TEXT           = "通讯字段:SD 文本
*           ORDER_KEYS           = "销售和分销凭证中的关键值
*           EXTENSIONIN          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
*           PARTNERADDRESSES     = "地址的 BAPI 参考结构(组织/公司)
*           EXTENSIONEX          = "BAPI 参数 ExtensionIn/ExtensionOut 的参考结构
          .

ENDIF.

READ TABLE return INTO wa_return
      WITH KEY type = 'E'.
      IF sy-subrc <> 0.

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

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = wa_item_02-vbeln
          IMPORTING
            output = wa_item_02-vbeln.

CLEAR:tdname.

tdname = wa_item_02-vbeln.
        "抬头文本:物流方式

*        CLEAR:w_text,l_text.
*        w_text-tdline = wa_item_02-txt_02.
*        APPEND w_text TO l_text.
*
*        CALL FUNCTION 'CREATE_TEXT'
*          EXPORTING
*            fid         = '0002'
*            flanguage   = sy-langu
*            fname       = tdname
*            fobject     = 'VBBK'
*            save_direct = 'X'
*            fformat     = '*'
*          TABLES
*            flines      = l_text.

"抬头文本:物流单号
*        CLEAR:w_text,l_text.
*        w_text-tdline = wa_item_02-txt_03.
*        APPEND w_text TO l_text.
*
*        CALL FUNCTION 'CREATE_TEXT'
*          EXPORTING
*            fid         = '0004'
*            flanguage   = sy-langu
*            fname       = tdname
*            fobject     = 'VBBK'
*            save_direct = 'X'
*            fformat     = '*'
*          TABLES
*            flines      = l_text.

"抬头文本
        CLEAR:w_text,l_text.
        w_text-tdline = wa_item_02-txt_04.
        APPEND w_text TO l_text.

CALL FUNCTION 'CREATE_TEXT'
          EXPORTING
            fid         = '0001'
            flanguage   = sy-langu
            fname       = tdname
            fobject     = 'VBBK'
            save_direct = 'X'
            fformat     = '*'
          TABLES
            flines      = l_text.

"给行项目的 bs_txt 字段赋值,以判断后面行项目文本的创建
*        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*          EXPORTING
*            input  = wa_item_02-vbeln
*          IMPORTING
*            output = wa_item_02-vbeln.

wa_item_po_02-bs_txt = '1'.
        wa_item_po_02-vbeln = wa_item_02-vbeln.
        wa_item_po_02-mes_01 = 'S'.
        wa_item_po_02-mes_02 = '保存成功,销售单号为:' && wa_item_02-vbeln.
        MODIFY gt_item_po_02
        FROM wa_item_po_02
        TRANSPORTING vbeln bs_txt mes_01 mes_02
        WHERE bstnk = wa_item_02-bstnk.

CLEAR:wa_item_po_02.
      ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .

CLEAR:mes_str,wa_return.
        LOOP AT return INTO wa_return
          WHERE type = 'E'.

mes_str = mes_str && wa_return-message && ','.

ENDLOOP.
        wa_item_02-mes_01 = 'E'.
        wa_item_02-mes_02 = mes_str.
        MODIFY gt_item_02
        FROM wa_item_02
        TRANSPORTING mes_01 mes_02.

wa_item_po_02-mes_01 = 'E'.
        wa_item_po_02-mes_02 = mes_str.
        MODIFY gt_item_po_02
        FROM wa_item_po_02
        TRANSPORTING mes_01 mes_02
        WHERE bstnk = wa_item_02-bstnk.

ENDIF.

ENDIF.

CLEAR:wa_item_02.

ENDLOOP.

LOOP AT gt_item_po_02 INTO wa_item_po_02
  WHERE bs_txt = '1'.

CLEAR:tdname.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_item_po_02-posnr
      IMPORTING
        output = wa_item_po_02-posnr.

tdname = wa_item_po_02-vbeln && wa_item_po_02-posnr.

CLEAR:w_text,l_text.
    w_text-tdline = wa_item_po_02-txt_01.
    APPEND w_text TO l_text.

CALL FUNCTION 'CREATE_TEXT'
      EXPORTING
        fid         = '0001'
        flanguage   = sy-langu
        fname       = tdname
        fobject     = 'VBBP'
        save_direct = 'X'
        fformat     = '*'
      TABLES
        flines      = l_text.

ENDLOOP.

APPEND LINES OF gt_item_po_02 TO gt_item_po_01.

ENDFORM.

FORM alv.
  DATA : col_pos TYPE i VALUE 1.
  CLEAR:it_fieldcat,wa_fieldcat.

*    ALV显示界面的设置
*  it_layout-sel_mode  =  'A'.
  it_layout-zebra = 'X'.
  it_layout-colwidth_optimize = 'X'.
*  it_layout-info_fieldname = 'COLOR'.
  PERFORM fieldcat_int USING col_pos  'MES_01' '' '提示类别' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'MES_02' '' '提示信息' '' ''  '' '' '' ''.

PERFORM fieldcat_int USING col_pos  'VBELN' '' '系统订单编号' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'POSNR' '' '订单行项目' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'AUDAT' '' '下单日期' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'BSTDK' '' '客户参考日期/发货日期' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'AUART' '' '单据类型' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'VKBUR' '' '销售部门/销售办事处' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'BSTNK' '' '客户参考/平台单号' '' ''  '' '' '' ''.
*  PERFORM fieldcat_int USING col_pos  'BNAME' '' '名称/旺旺号' '' ''  '' '' '' ''.
*  PERFORM fieldcat_int USING col_pos  'MATNR' '' '规格代码/商品编码' '' ''  '' '' '' ''.
*  PERFORM fieldcat_int USING col_pos  'GGMC' '' '规格名称' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'CPMC' '' '产品名称' '' ''  '' '' '' ''.
*  PERFORM fieldcat_int USING col_pos  'BZFS' '' '包装方式' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'KWMENG' '' '数量' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'TXT_01' '' '订单行项目文本' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'LGORT' '' '库存地点' '' ''  '' '' '' ''.
*  PERFORM fieldcat_int USING col_pos  'TXT_02' '' '物流方式' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'VSBED' '' '装运条件' '' ''  '' '' '' ''.
*  PERFORM fieldcat_int USING col_pos  'TXT_03' '' '物流单号' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'IHREZ' '' '您的参考/客户联系人' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'KMEIN' '' '单位' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'TXT_04' '' '订单抬头文本' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'KBETR' '' '单价' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'ZONGJE' '' '总金额' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'WAERK' '' '货币' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'ZTERM' '' '付款条件' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'MATNR_01' '' '物料编码' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'GGXH' '' '规格型号' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'CPMC_01' '' '物料描述' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'EDATU' '' '请求交货日期' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'PSTYV' '' '行项目类别' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'VKORG' '' '销售组织' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'VTWEG' '' '分销渠道' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'SPART' '' '产品组' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'VKGRP' '' '销售组' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'KUNNR' '' '客户编码' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'KUNNR_1' '' '送达方' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'WERKS' '' '工厂' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'AUGRU' '' '订单原因' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'POSNR' '' '行项目' '' ''  '' '' '' ''.
  PERFORM fieldcat_int USING col_pos  'KPEIN' '' '价格单位' '' ''  '' '' '' ''.

*    调用ALV需要使用的函数
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'SET_PF_STATUS'
      i_callback_user_command  = cns_user_command
      is_layout                = it_layout
      it_fieldcat              = it_fieldcat
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_item_po_01.

ENDFORM.                    "alv_data

FORM set_pf_status USING rt_extab TYPE slis_t_extab.
*    获取gui状态
  DATA: wa_extab TYPE slis_extab.

SET PF-STATUS 'OPEN' EXCLUDING rt_extab.

ENDFORM.                    "set_pf_status

FORM fieldcat_int  USING   p_col_pos         " 1
                            p_fieldname       " 2
                            p_key             " 3
                            p_seltext_l       " 4
                            p_edit
                            p_zero
                            p_checkbox
                            p_no_out
                            p_tname
                            p_fname.
  wa_fieldcat-col_pos       = p_col_pos.
  wa_fieldcat-fieldname     = p_fieldname.
  wa_fieldcat-key           = p_key.
*  wa_fieldcat-coltext    = p_seltext_l.
  wa_fieldcat-seltext_l = p_seltext_l.
  wa_fieldcat-edit            = p_edit.
  wa_fieldcat-no_zero        = p_zero.
  wa_fieldcat-checkbox     = p_checkbox.
  wa_fieldcat-no_out      = p_no_out.
*  wa_fieldcat-colddictxt       = 'L'.
  wa_fieldcat-ref_tabname    = p_tname.
  wa_fieldcat-ref_fieldname  = p_fname.

APPEND wa_fieldcat TO it_fieldcat.
  p_col_pos = p_col_pos + 1.
  CLEAR: wa_fieldcat.

ENDFORM.                    "FIELDCAT_INT

销售订单批量导入(1)相关推荐

  1. 电商订单批量导入API接口功能

    与主流的第三方物流快递信息服务商合作完成API对接,可以使整个平台订单管理以及物流货单管理高度自动化,因为在发货订单量较多(上万单时),电商卖家根本无法依靠在人力在合作的物流系统中一个个录入来完成. ...

  2. SAP 销售订单批量可用性检查(ATP)

    事务代码:V_V2

  3. 销售订单发票计划导入

    前言:本人曾查遍了包括SAP官网在内的大小网站来研究发票计划.发票计划是个冷门的业务,很多顾问也是第一次听说.经过两周的研究,终于把它搞明白了. 问题的根源: VBKD-FPLNR 这个字段在做完创建 ...

  4. SAP接口编程案例 - VBA批量更新销售订单定价类型

    碰到一个需求,需要对销售订单的定价类型进行批量更新,对这种临时批量处理,考虑到数据源一般放在 Excel 中,使用 VBA 来调用 BAPI 实现不失为一种快捷的方式. 了解 BAPI 如何使用 更改 ...

  5. 畅捷通T+与畅捷通T+对接集成批量新增销售订单连通存货批量创建(批量新增销售订单)

    畅捷通T+与畅捷通T+对接集成批量新增销售订单连通存货批量创建(批量新增销售订单) 对接系统畅捷通T+ "T+"是一款灵动.智慧.时尚的互联网管理软件,主要针对中小型工贸和商贸企业 ...

  6. 导入销售订单时要求制定折扣物料

    导入销售订单时要求制定折扣物料 Please Specify a discount item for this customer. 在尝试导入销售订单数据时,发现导入发生错误,提示说要制定折扣物料. ...

  7. 批量生成销售订单、退货订单

    生成一般销售订单和退货订单所要使用的BAPI不同, 一般销售订单: BAPI_SALESORDER_CREATEFROMDAT2 退货订单: BAPI_CUSTOMERRETURN_CREATE 二者 ...

  8. 总账科目往来批量导入程序

    REPORT ZRFICO100 NO STANDARD PAGE HEADING MESSAGE-ID ZFI_01. TYPE-POOLS: SLIS,ICON. TABLES: SSCRFIEL ...

  9. VA01销售订单批导问题解决

    目录 1业务场景 2.难点解决 2.1特性内部错误 2.2修改条件类型 2.3删除条件类型 2.4修改订单状态 2.5修改业务伙伴 2.6修改订单数量 2.7定价类型 2.7.1定价类型介绍 2.7. ...

  10. oracle导入excel字段超过4000字符数据_产品思考:B端产品中,为什么批量导入功能很重要?...

    B端产品的重要价值是提高企业的办公效率,在企业的日常工作中批量录入数据的场景很多,所以批量导入是b端设计中很重要的一个功能.本文作者结合案例,分享了自己关于B端产品批量导入功能的思考. 在做b端产品的 ...

最新文章

  1. java中wait方法使用实例_java中wait、notify和notifyAll的概念用法和例子?
  2. NDK,动态链接库,JNI
  3. C++中private成员变量和protect成员变量的区别
  4. java 随机生成图,Java中的快速实值随机生成器
  5. python barrier_Python多线程-Barrier(障碍对象)
  6. pktgen:DPDK流量生成器
  7. 安装构建以太坊钱包Parity
  8. 关于Oracle中的错误 「SQL*Loader-522: lfiopn failed for file (xxx.log)」
  9. 【时间序列预测】基于matlab麻雀算法优化LSTM时间序列预测【含Matlab源码 JQ001期】
  10. 左右极限相等的matlab,如何求左右极限
  11. 全网最全Selenium自动化测试相关资源汇总
  12. java:从入门到放弃(二)
  13. 共享电单车重蹈覆辙:新车投放半年就进“坟场”
  14. 谷物大脑(来自樊登读书会)
  15. Oracle的 IT 世界观
  16. 服装设计师和时尚达人必看的实用网站信息大全
  17. linux strip作用,linux gcc strip命令简介
  18. 分享一种身份证OCR识别技术
  19. Django DRF 两种接口安全机制及其配置
  20. matlab ndims 图像对称,MATLAB实现将图像转换为素描(简笔画)风格

热门文章

  1. 计算机桌面成英文怎样变成中文版,电脑系统菜单全变成英文怎么办
  2. 算法图解——の——二分查找【附带pdf下载链接】
  3. 计算机基础知识大全100,计算机基础知识汇总
  4. 生活中常用的汉字?有4600个。都有哪些呢?
  5. php把日期转成时间戳,php如何把日期转为时间戳
  6. 汇编软件DOSBox使用教程
  7. Mac下Chrome添加.crx浏览器插件
  8. vivado 开发教程(二) 使用IP集成器
  9. stata 将数据集变量名称导出_Stata 15 统计数据分析软件
  10. 记录一次众测平台邀请码获取