销售订单批量导入(1)

 

销售订单批量导入(1)_第1张图片

销售订单批量导入(1)_第2张图片

 

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

销售订单批量导入(1)_第3张图片

销售订单批量导入(1)_第4张图片

销售订单批量导入(1)_第5张图片

销售订单批量导入(1)_第6张图片

销售订单批量导入(1)_第7张图片

*&---------------------------------------------------------------------*
*& 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

 

你可能感兴趣的:(IT养家,SD,ABAP)