zoukankan      html  css  js  c++  java
  • 采购信息记录批导BAPI

    转自:https://www.cnblogs.com/freeandeasy/p/11810272.html
    作者的话:

     

    可以批导创建及修改信息记录的主数据。而且可以对条件中的时间段及其数量等级中的金额进行批导及修改。可以根据自己的实际需求进行修改。这就很棒,就很nice!!!

    对于时间段及其数量等级的创建及修改也是在网上各种找资料,不过对于这个BAPI_PRICES_CONDITIONS函数还是没有很好的理解。

    report zme11_12 no standard page HEADING.
    type-POOLS:truxs,icon.
    tables sscrfields.
    
    data:begin of it_fname occurs 0,
      name type char255,
    end of it_fname.
    
    data:bdcdata like bdcdata    occurs 0 with header line.  "用来存储屏幕字段参数值,传递录屏参数
    data:messtab like bdcmsgcoll occurs 0 with header line.  "记录执行BDC过程中产生的消息
    data:result_mesg type table of string with header line.  "结果信息
    
    data: ti_bapicondct like standard table of bapicondct with header line ,
          ti_bapicondhd like standard table of bapicondhd with header line ,
          ti_bapicondit like standard table of bapicondit with header line ,
          ti_bapicondqs like standard table of bapicondqs with header line ,
          ti_bapicondvs like standard table of bapicondvs with header line,
          bapiret2 like standard table of bapiret2 with header line,
          to_bapiknumhs like standard table of bapiknumhs with header line,
          to_mem_initial like standard table of cnd_mem_initial with header line,
          ls_a017 type a017.
    
    data text2 type text1_007s. "附加税值名
    data p type i.
    
    types:begin of ty_tab1,
      flag type c,                "记录标识
      wx type c,                  "是否外协
      eina_mahn1 type mahn1,      "CLX
      eina_urztp type urztp,      "价格执行方式
      eina_urzzt type urzzt,      "编号
      eine_norbm type norbm,      "标准数量
      eine_mwskz type mwskz,      "税代码
      eine_netpr type iprei,      "净价
      eine_waers type waers,      "净价货币
      eine_angnr type angnr,      "报价
      eine_peinh type epein,      "价格单位
    *  rm06i_ltex1 TYPE ltext,     "记录信息文本
      rv13a_datab type kodatab,   "有效时间从
      rv13a_datbi type kodatbi,   "有效时间到
    *  konp_konwa TYPE konwa,      "PB00比率单位(货币或百分数)
      konp_kschl2 type kscha,                                   "条件类型2
      konm_kbetr2 type konp-kbetr,                              "条件金额2
      konp_konwa2 type konwa,        "ZVA1比率单位(货币或百分数)
      eina_lifnr type elifn,      "供应商
      eina_matnr  type matnr,     "材料
      eine_ekorg type ekorg,      "采购组织
      eine_werks type ewerk,      "工厂
      konm_kstbm type kstbm,                                   "条件等级数量
      konm_kbetr type konp-kbetr,                                "条件金额
    end of ty_tab1.
    data:gt_tab1 type table of ty_tab1,
          wa_tab1 type ty_tab1.
    
    types:begin of numb_levels,
      flag type c,                "记录标识
      eina_lifnr type elifn,      "供应商
      eina_matnr  type matnr,     "材料
      eine_ekorg type ekorg,      "采购组织
      eine_werks type ewerk,      "工厂
      konm_kstbm type kstbm,     "条件等级数量
      konm_kbetr type kbetr,     "条件金额
      lifab      type eina-lifab,   "起始时间
      lifbi      type eina-lifbi,   "截止时间
    end of numb_levels.
    data:gt_nl type table of numb_levels,
          wa_nl type numb_levels.
    
    
    types:begin of ty_tab2,
      flag    type c,                "记录标识
      wx      type c,                  "是否外协
      lifnr   type lfa1-lifnr,
      matnr   type mara-matnr,
      ekorg   type eine-ekorg,
      werks   type eine-werks,
      netpr   type iprei,                                       "PB00金额
      konp_konwa  type konwa,         "比率单位(货币或百分数)
      peinh       like eine-peinh,          "价格单位
      konp_kschl2 type kscha,                                   "条件类型2
      konp_kbetr2 type kbetr_kond,    "金额2
      konp_konwa2 type konwa,        "比率单位(货币或百分数)
      lifab       type eina-lifab,   "起始时间
      lifbi       type eina-lifbi,   "截止时间
      konm_kstbm  type kstbm,                                   "条件等级数量
      konm_kbetr  type kbetr,                                   "条件金额
    end of ty_tab2.
    data:gt_tab2 type table of  ty_tab2,
          wa_tab2 type ty_tab2.
    
    data: aplfzc(3) type c,     "计划交货天数
          normbc(16) type c ,   "标准数量
          netprc(13) type c,    "净价
          peinhc(5) type c,     "条件定价单位
          lv_bprme type bprme.  "条件单位
    
    SELECTION-screen begin of block blk_001 with frame title text-001 .
      parameters:p_file like rlgrap-filename.
    SELECTION-screen end of block blk_001.
    SELECTION-screen begin of block blk_002 with frame title text-002.  "创建或修改
      parameters:radio_1 radiobutton group radi,    "创建
      radio_2 radiobutton group radi.               "修改
    SELECTION-screen end of block blk_002.
    
    SELECTION-screen function key 1. "应用工具栏增加按钮
    
    initialization.
    write icon_change_text as icon to sscrfields-functxt_01+0(4).
    sscrfields-functxt_01+4(*) = '下载模板'."分配字符位置
    
    at SELECTION-screen.
    perform dl_template.   "模板下载
    
    
    at SELECTION-screen on value-REQUEST for p_file  .
    perform open.
    
    START-of-SELECTION.
    if radio_1 = 'X'.
      perform upload_file1.
      perform process_file1.
      perform create_me11.
    else.
      perform upload_file2.
      perform process_file2.
      perform update_me12.
    endif.
    
    end-of-SELECTION.
    perform result_message.   "显示执行结果
    
    *&---------------------------------------------------------------------*
    *&      Form  create_me11
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    form create_me11.
      loop at gt_tab1 into wa_tab1 where flag = 'X'.
        clear: aplfzc,normbc,netprc,peinhc.
        aplfzc = wa_tab1-eina_mahn1.
        normbc = wa_tab1-eine_norbm.
        netprc = wa_tab1-eine_netpr. "净价
        peinhc = wa_tab1-eine_peinh.
        condense aplfzc no-GAPS.
        condense normbc no-GAPS.
        condense netprc no-GAPS.
        condense peinhc no-GAPS.
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
          input  = wa_tab1-eina_matnr
        importing
          output = wa_tab1-eina_matnr.
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
          input  = wa_tab1-eina_lifnr
        importing
          output = wa_tab1-eina_lifnr.
    
        select single waers from lfm1 into wa_tab1-eine_waers where lifnr = wa_tab1-eina_lifnr and ekorg = wa_tab1-eine_ekorg.
    
        if wa_tab1-eine_waers = 'USD'.
          wa_tab1-eine_mwskz = 'J0'.
      elseif wa_tab1-eine_waers = 'CNY'.
          wa_tab1-eine_mwskz = 'J6'.
        endif.
    
        select single t007s~text1 into text2 from t007s where t007s~mwskz = wa_tab1-eine_mwskz and t007s~spras = sy-langu and t007s~kalsm = 'TAXCN'.  "附加税值名
        if text2+1(1) = '%'.
          p = text2+0(1).
        else.
          p = text2+0(2).
        endif.
    
        netprc = netprc * ( 1 + ( p / 100 ) ).  "增值税
        condense netprc no-GAPS.
    
        clear: bdcdata,bdcdata[] .
        perform bdc_dynpro      using 'SAPMM06I'    '0100'.
        perform bdc_field       using 'BDC_CURSOR'  'EINE-WERKS'.
        perform bdc_field       using 'BDC_OKCODE'  '/00'.
        perform bdc_field       using 'EINA-LIFNR'  wa_tab1-eina_lifnr."供应商
        perform bdc_field       using 'EINA-MATNR'  wa_tab1-eina_matnr. "材料
        perform bdc_field       using 'EINE-EKORG'  wa_tab1-eine_ekorg. "采购组织
        perform bdc_field       using 'EINE-WERKS'  wa_tab1-eine_werks. "工厂
        if wa_tab1-wx = 'X'.
          perform bdc_field       using 'RM06I-LOHNB'            'X'.
        else.
          perform bdc_field       using 'RM06I-NORMB'            'X'.
        endif.
    
        perform bdc_dynpro      using 'SAPMM06I'    '0101'.
        perform bdc_field       using 'BDC_CURSOR'  'EINA-URZZT'.
        perform bdc_field       using 'BDC_OKCODE'  '/00'.
        perform bdc_field       using 'EINA-MAHN1'  aplfzc.    "CLX
        perform bdc_field       using 'EINA-URZTP'  wa_tab1-eina_urztp.    "价格执行方式
        perform bdc_field       using 'EINA-URZZT'  wa_tab1-eina_urzzt.    "编号
    
        perform bdc_dynpro      using 'SAPMM06I'      '0102'.
        perform bdc_field       using 'BDC_CURSOR'    'EINE-MWSKZ'.
        perform bdc_field       using 'BDC_OKCODE'    '=KO'.  "/00
        perform bdc_field       using 'EINE-NORBM'    normbc.  "标准数量
        perform bdc_field       using 'EINE-MWSKZ'    wa_tab1-eine_mwskz. "税代码
        perform bdc_field       using 'EINE-NETPR'    netprc.    "净价
        perform bdc_field       using 'EINE-WAERS'    wa_tab1-eine_waers.    "净价货币
    
        perform bdc_dynpro      using 'SAPMV13A'      '0201'.
        perform bdc_field       using 'BDC_CURSOR'    'RV13A-DATBI'.
        perform bdc_field       using 'BDC_OKCODE'    '=BACK'.
        perform bdc_field       using 'RV13A-DATAB'    wa_tab1-rv13a_datab. "开始时间
        perform bdc_field       using 'RV13A-DATBI'    wa_tab1-rv13a_datbi. "结束时间
        perform bdc_field       using 'KONP-KPEIN(01)' peinhc.             "单位
    
    
        perform bdc_dynpro      using 'SAPMM06I'      '0102'.
        perform bdc_field       using 'BDC_CURSOR'    'EINE-APLFZ'.
        perform bdc_field       using 'BDC_OKCODE'    '/00'.  "/00
        perform bdc_field       using 'EINE-NORBM'    normbc.  "标准数量
        perform bdc_field       using 'EINE-MWSKZ'    wa_tab1-eine_mwskz. "税代码
        perform bdc_field       using 'EINE-NETPR'    netprc.    "净价
    
        perform bdc_dynpro      using 'SAPMM06I'        '0105'.
        perform bdc_field       using 'BDC_CURSOR'      'EINE-ANGNR'.
        perform bdc_field       using 'BDC_OKCODE'      '/00'.
        perform bdc_field       using 'EINE-ANGNR'       wa_tab1-eine_angnr.  "报价
    
        perform bdc_dynpro      using 'SAPMM06I'        '0103'.
        perform bdc_field       using 'BDC_CURSOR'      'RM06I-LTEX1(01)'.
        perform bdc_field       using 'BDC_OKCODE'      '=BU'.
    *    PERFORM bdc_field       USING 'RM06I-LTEX1(01)' wa_tab1-rm06i_ltex1.  "记录信息
    
        call transaction 'ME11' using bdcdata mode 'N' update 'S' MESSAGES into messtab.
        read table messtab with key msgtyp = 'E'.
        if sy-subrc = 0.
          loop at messtab where msgtyp = 'E'.
            call function 'MESSAGE_TEXT_BUILD'  "消息编号及变量使用函数转换为消息内容输出
            exporting
              msgid                    = messtab-msgid
              msgnr                    = messtab-msgnr
              msgv1                     = messtab-msgv1
              msgv2                     = messtab-msgv2
              msgv3                     = messtab-msgv3
              msgv4                     = messtab-msgv4
            importing
              message_text_output       = result_mesg.
          endloop.
          append result_mesg.
          clear result_mesg.
        else.
          perform condition using wa_tab1.
        endif.
    
      endloop.
    endform.                    "create_me11
    
    
    *&---------------------------------------------------------------------*
    *&      Form  CONDITION
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_wa_tab1  text
    *----------------------------------------------------------------------*
    form condition  using  value(lt_tab) type ty_tab1.
      data num type n LENGTH 4.   "数量等级行号
      clear:ti_bapicondct[],ti_bapicondct,ti_bapicondhd[],ti_bapicondhd,ti_bapicondit[],ti_bapicondit,ti_bapicondqs[],ti_bapicondqs,lv_bprme.
      data esokzc type c.
      if lt_tab-wx = 'X'.
        esokzc = '3'.
      else.
        esokzc = '0'.
      endif.
      select single * into CORRESPONDING fields of ls_a017
      from a017 where  kschl = 'PB00'   "条件类型             "kappl = 'M' "应用:M采购
      and lifnr = lt_tab-eina_lifnr     "供应商帐户号
      and matnr = lt_tab-eina_matnr     "物料
      and ekorg = lt_tab-eine_ekorg     "采购组织
      and werks = lt_tab-eine_werks     "工厂
      and esokz = esokzc.                    "采购信息记录分类-(0:标准   3:分包合同)
      clear esokzc.
    
      select single kmein into lv_bprme from konp where knumh = ls_a017-knumh.      "konp:条件(项目)      kmein:条件单位
    
      ti_bapicondct-operation = '004' . "004修改  _009创建
      ti_bapicondct-cond_usage = 'A'.   "条件表用途:定价
      ti_bapicondct-table_no = '017' .  "条件表
      ti_bapicondct-applicatio = 'M' .
      ti_bapicondct-cond_type = 'PB00' .
      ti_bapicondct-valid_to = lt_tab-rv13a_datbi.    "条件记录有效截止日期
      ti_bapicondct-valid_from = lt_tab-rv13a_datab. "条件记录有效起始日
      ti_bapicondct-cond_no = ls_a017-knumh . "条件记录号
      append ti_bapicondct .
      clear ti_bapicondct .
    
    *KONH的BAPI结构----条件( 抬头 )
      ti_bapicondhd-operation = '004' .
      ti_bapicondhd-cond_no = ls_a017-knumh . "条件记录号
      ti_bapicondhd-created_by = sy-uname.    "创建对象的人员名称
      ti_bapicondhd-creat_date = sy-datum.    "记录的创建日期
      ti_bapicondhd-cond_usage = 'A' .
      ti_bapicondhd-table_no = ' 017' .
      ti_bapicondhd-applicatio = 'M' .
      ti_bapicondhd-cond_type = ' PB00' .
      ti_bapicondhd-valid_from = lt_tab-rv13a_datbi.
      ti_bapicondhd-valid_to = lt_tab-rv13a_datab.
      append ti_bapicondhd.
      clear ti_bapicondhd.
    
    *KONP的BAPI结构
      ti_bapicondit-operation = '004' .
      ti_bapicondit-cond_no = ls_a017-knumh.
      ti_bapicondit-cond_count = '01' .           "条件的序列号
      ti_bapicondit-applicatio = 'M' .
      ti_bapicondit-cond_type = 'PB00' .
      ti_bapicondit-scaletype = 'A' .
      ti_bapicondit-scalebasin = 'C' .            "等级基值指示符,数量规模
      ti_bapicondit-scale_qty = 1 .               "条件等级数量
      ti_bapicondit-calctypcon = 'C' .            "条件计算类型--- C:数量  A:百分比
      ti_bapicondit-cond_value = netprc.          "BAPIs 的货币金额(带有 9 个小数位)-净价
      ti_bapicondit-condcurr = lt_tab-eine_waers. "比率单位(货币或百分数):CNY
      ti_bapicondit-cond_p_unt = peinhc.          "条件定价单位(单位=1)
      ti_bapicondit-cond_unit = lv_bprme.         "条件单位(EA)
      ti_bapicondit-condcurren = lt_tab-eine_waers.
      ti_bapicondit-unitmeasur = lv_bprme.         "条件等级计量单位
      append ti_bapicondit.
      clear ti_bapicondit.
    
      call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
      exporting
        input  = lt_tab-eina_lifnr
      importing
        output = lt_tab-eina_lifnr.
      call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
      exporting
        input  = lt_tab-eina_matnr
      importing
        output = lt_tab-eina_matnr.
    *PB00--->设置等级数量
      loop at gt_nl into wa_nl where  konm_kbetr > 0.           "数量等级金额>0
        if lt_tab-eina_lifnr = wa_nl-eina_lifnr and lt_tab-eina_matnr = wa_nl-eina_matnr and lt_tab-eine_ekorg = wa_nl-eine_ekorg and lt_tab-eine_werks = wa_nl-eine_werks.
          num = num + 1.
          ti_bapicondqs-operation = '004' .
          ti_bapicondqs-cond_no = ls_a017-knumh.
          ti_bapicondqs-cond_count = '01' .
          ti_bapicondqs-line_no = num.
          ti_bapicondqs-scale_qty = wa_nl-konm_kstbm.   "条件等级数量
          ti_bapicondqs-cond_unit = lv_bprme.           "条件单位
          ti_bapicondqs-currency = wa_nl-konm_kbetr.    "BAPIs 的货币金额(带有 9 个小数位)
          ti_bapicondqs-condcurr = lt_tab-eine_waers.   "比率单位(货币或百分数)
          append ti_bapicondqs .
          clear ti_bapicondqs .
        endif.
      endloop.
      clear num.
    
      if lt_tab-eine_waers = 'CNY'.
    *如果货币单位为CNY,添加ZVA1类型
        ti_bapicondit-operation = '004' .
        ti_bapicondit-cond_no = ls_a017-knumh.
        ti_bapicondit-cond_count = '02'.                        "条件的序列号
        ti_bapicondit-applicatio = 'M'.
        ti_bapicondit-cond_type = 'ZVA1'.                       "类型2:ZVA1
        ti_bapicondit-scaletype = 'A'.                          "A基础等级
        ti_bapicondit-scalebasin = 'C' .                        "等级基值指示符,数量规模
        ti_bapicondit-scale_qty = '2'.                          "条件等级数量
        ti_bapicondit-calctypcon = 'A' .                        "条件计算类型--- C:数量  A:百分比
        if lt_tab-konm_kbetr2 <> 0 or lt_tab-konm_kbetr2 <> ''.
          ti_bapicondit-cond_value = lt_tab-konm_kbetr2.        "BAPIs 的货币金额(带有 9 个小数位)-(-5%)konm_kbetr2
        endif.
        ti_bapicondit-condcurr = lt_tab-konp_konwa2.            "比率单位(货币或百分数):CNY
        ti_bapicondit-cond_unit = lt_tab-konp_konwa2.           "条件单位
        ti_bapicondit-cond_unit = lv_bprme.
        ti_bapicondit-unitmeasur = lv_bprme.                    "条件等级计量单位
        append ti_bapicondit.
        clear ti_bapicondit.
    *ZVA1--->设置等级数量
        loop at gt_nl into wa_nl where  konm_kbetr < 0.         "数量等级金额>0
          if lt_tab-eina_lifnr = wa_nl-eina_lifnr and lt_tab-eina_matnr = wa_nl-eina_matnr and lt_tab-eine_ekorg = wa_nl-eine_ekorg and lt_tab-eine_werks = wa_nl-eine_werks.
            num = num + 1.
            ti_bapicondqs-operation = '004' .
            ti_bapicondqs-cond_no = ls_a017-knumh.
            ti_bapicondqs-cond_count = '02' .
            ti_bapicondqs-line_no = num.
            ti_bapicondqs-scale_qty = wa_nl-konm_kstbm. "条件等级数量
            ti_bapicondqs-cond_unit = lv_bprme.           "条件单位
            ti_bapicondqs-currency = wa_nl-konm_kbetr.  "BAPIs 的货币金额(带有 9 个小数位)
            ti_bapicondqs-condcurr = lt_tab-konp_konwa2.   "比率单位(货币或百分数)
            append ti_bapicondqs .
            clear ti_bapicondqs .
          endif.
        endloop.
        clear num.
      endif.
    
      call function 'BAPI_PRICES_CONDITIONS'
      tables
        ti_bapicondct  = ti_bapicondct
        ti_bapicondhd  = ti_bapicondhd
        ti_bapicondit  = ti_bapicondit
        ti_bapicondqs  = ti_bapicondqs
        ti_bapicondvs  = ti_bapicondvs
        to_bapiret2    = bapiret2
        to_bapiknumhs  = to_bapiknumhs
        to_mem_initial = to_mem_initial
      exceptions
        update_error   = 1
        others         = 2.
      if sy-subrc = 0.
        data gv_infnr type infnr.
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
          input         = lt_tab-eina_lifnr
        importing
          output        = lt_tab-eina_lifnr.
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
          input         = lt_tab-eina_matnr
        importing
          output        = lt_tab-eina_matnr.
        select single infnr into gv_infnr from eina where matnr = lt_tab-eina_matnr and lifnr = lt_tab-eina_lifnr.
        concatenate gv_infnr ' 信息记录已创建!' into result_mesg.
        append result_mesg.
        clear result_mesg.
        else.
        call function 'BAPI_TRANSACTION_ROLLBACK'.
        result_mesg = '操作错误!'.
        append result_mesg.
        clear:gv_infnr,result_mesg.
      endif.
    endform.                    " CONDITION
    *&---------------------------------------------------------------------*
    *&      Form  UPLOAD_FILE2
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form upload_file2 .
      data: it_raw_data type truxs_t_text_data.
      field-SYMBOLS <fs> type ty_tab2.
      field-SYMBOLS:<fw>.
      data: i_excel type table of alsmex_tabline,"表格结构。"
            w_excel type alsmex_tabline.
      data:num_col type i.
      refresh: gt_tab2.
      "调用此函数,将Excel中的内容以类似坐标的形式存储到I_excel内表中。"
      call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      exporting
        filename                = p_file
        i_begin_col             = 1
        i_begin_row             = 1
        i_end_col               = 55       "控制传入字段个数
        i_end_row               = 2500
      tables
        intern                  = i_excel
      exceptions
        inconsistent_parameters = 1
        upload_ole              = 2
        others                  = 3.
      delete i_excel where row = 1.        "删除第一行文本抬头。
      if i_excel is initial.
        call function 'POPUP_TO_CONFIRM_WITH_MESSAGE'
        exporting
    *     DEFAULTOPTION        = 'Y'
          diagnosetext1        = '数据错误'
    *     DIAGNOSETEXT2        = ' '
    *     DIAGNOSETEXT3        = ' '
          textline1            =  'Excel表格中没有内容!'
          titel                = '提示' .
        return.
      endif.
      sort i_excel by row col.
    
      loop at i_excel into w_excel.
        num_col = w_excel-col.
        assign component  num_col  of structure wa_tab2 to <fw>.
        <fw> = w_excel-value.
        at end of row.
          append wa_tab2 to gt_tab2.
          clear:wa_tab2.
        endat.
        clear:w_excel.
      endloop.
    endform.                    " UPLOAD_FILE2
    *&---------------------------------------------------------------------*
    *&      Form  UPDATE_ME12
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form update_me12.
      loop at gt_tab2 into wa_tab2 where flag = 'X'.
        clear: aplfzc,normbc,netprc,peinhc.
    *    aplfzc = wa_tab2-aplfz.
    *    normbc = wa_tab2-eine_norbm."标准数量
    *    netprc = wa_tab2-netpr.
        peinhc = wa_tab2-peinh.
    *    CONDENSE aplfzc NO-GAPS.
    **    Condense normbc No-GAPS.
    *    CONDENSE netprc NO-GAPS.
        condense peinhc no-GAPS.
    
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
          input  = wa_tab2-matnr
        importing
          output = wa_tab2-matnr.
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
          input  = wa_tab2-lifnr
        importing
          output = wa_tab2-lifnr.
    
        netprc = wa_tab2-netpr.
        condense netprc no-GAPS.
    
        clear bdcdata[].
        perform bdc_dynpro      using 'SAPMM06I' '0100'.
        perform bdc_field       using 'BDC_CURSOR'          'EINE-WERKS'.
        perform bdc_field       using 'BDC_OKCODE'          '/00'.
        perform bdc_field       using 'EINA-LIFNR'          wa_tab2-lifnr.
        perform bdc_field       using 'EINA-MATNR'          wa_tab2-matnr.
        perform bdc_field       using 'EINE-EKORG'          wa_tab2-ekorg.
        perform bdc_field       using 'EINE-WERKS'          wa_tab2-werks.
        if wa_tab2-wx = 'X'.
          perform bdc_field       using 'RM06I-LOHNB'            'X'.
        else.
          perform bdc_field       using 'RM06I-NORMB'            'X'.
        endif.
    
        perform bdc_dynpro      using 'SAPMM06I' '0101'.
        perform bdc_field       using 'BDC_OKCODE'          '=EINE'.
    
        perform bdc_dynpro      using 'SAPMM06I' '0102'.
        perform bdc_field       using 'BDC_CURSOR'          'EINE-MWSKZ'.
        perform bdc_field       using 'BDC_OKCODE'          '/00'.
    
        perform bdc_dynpro      using 'SAPMM06I' '0105'.
        perform bdc_field       using 'BDC_CURSOR'          'EINE-ANGNR'.
        perform bdc_field       using 'BDC_OKCODE'          '=KO'.
    
        perform bdc_dynpro      using 'SAPLV14A' '0102'.
        perform bdc_field       using 'BDC_CURSOR'          'VAKE-DATAB(01)'.
        perform bdc_field       using 'BDC_OKCODE'          '=NEWD'.
    
        perform bdc_dynpro      using 'SAPMV13A' '0201'.
        perform bdc_field       using 'BDC_CURSOR'          'KONP-KBETR(01)'.
        perform bdc_field       using 'BDC_OKCODE'          '=SICH'.
        perform bdc_field       using 'RV13A-DATAB'          wa_tab2-lifab.
        perform bdc_field       using 'RV13A-DATBI'          wa_tab2-lifbi.
        perform bdc_field       using 'KONP-KBETR(01)'       netprc.
    
        call transaction 'ME12' using bdcdata
              mode   'N'
              update 'S'
              MESSAGES into messtab.
        read table messtab with key msgtyp = 'E'.
        if sy-subrc = 0.
          loop at messtab where msgtyp = 'E'.
            call function 'MESSAGE_TEXT_BUILD'  "消息编号及变量使用函数转换为消息内容输出
            exporting
              msgid                    = messtab-msgid
              msgnr                    = messtab-msgnr
              msgv1                     = messtab-msgv1
              msgv2                     = messtab-msgv2
              msgv3                     = messtab-msgv3
              msgv4                     = messtab-msgv4
            importing
              message_text_output       = result_mesg.
          endloop.
          append result_mesg.
          clear result_mesg.
        else.
          perform condition2 using wa_tab2.  "更新数量等级
        endif.
      endloop.
    endform.                    "UPDATE_ME12
    
    *&---------------------------------------------------------------------*
    *&      Form  condition2
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->LT_TAB     text
    *----------------------------------------------------------------------*
    form condition2  using  value(lt_tab) type ty_tab2.
      data num type n LENGTH 4.   "数量等级行号
      clear:ti_bapicondct[],ti_bapicondct,ti_bapicondhd[],ti_bapicondhd,ti_bapicondit[],ti_bapicondit,ti_bapicondqs[],ti_bapicondqs,lv_bprme,num.
      data esokzc type c.
      if lt_tab-wx = 'X'.
        esokzc = '3'.
      else.
        esokzc = '0'.
      endif.
      select single * into CORRESPONDING fields of ls_a017
      from a017 where  kschl = 'PB00'   "条件类型
      and lifnr = lt_tab-lifnr     "供应商帐户号
      and matnr = lt_tab-matnr     "物料
      and ekorg = lt_tab-ekorg     "采购组织
      and werks = lt_tab-werks     "工厂
      and datab = lt_tab-lifab     "起始时间
      and datbi = lt_tab-lifbi     "截止时间
      and esokz = esokzc.               "采购信息记录分类-(0:标准   3:分包合同)
      clear esokzc.
    
      select single kmein into lv_bprme  from konp where knumh = ls_a017-knumh.      "konp:条件(项目)      kmein:
    
      ti_bapicondct-operation = '004' . "004修改  _009创建
      ti_bapicondct-cond_usage = 'A'.   "条件表用途:定价
      ti_bapicondct-table_no = '017' .  "条件表
      ti_bapicondct-applicatio = 'M' .
      ti_bapicondct-cond_type = 'PB00' .
      ti_bapicondct-valid_from = lt_tab-lifab. "条件记录有效起始日
      ti_bapicondct-valid_to = lt_tab-lifbi.    "条件记录有效截止日期
      ti_bapicondct-cond_no = ls_a017-knumh . "条件记录号
      append ti_bapicondct .
      clear ti_bapicondct .
    
    *KONH的BAPI结构----条件( 抬头 )
      ti_bapicondhd-operation = '004' .
      ti_bapicondhd-cond_no = ls_a017-knumh . "条件记录号
      ti_bapicondhd-created_by = sy-uname.    "创建对象的人员名称
      ti_bapicondhd-creat_date = sy-datum.    "记录的创建日期
      ti_bapicondhd-cond_usage = 'A' .
      ti_bapicondhd-table_no = ' 017' .
      ti_bapicondhd-applicatio = 'M' .
      ti_bapicondhd-cond_type = ' PB00' .
      ti_bapicondhd-valid_from = lt_tab-lifab.
      ti_bapicondhd-valid_to = lt_tab-lifbi.
      append ti_bapicondhd .
      clear ti_bapicondhd .
    
    *KONP的BAPI结构
      ti_bapicondit-operation = '004' .
      ti_bapicondit-cond_no = ls_a017-knumh.
      ti_bapicondit-cond_count = '01' .           "条件的序列号
      ti_bapicondit-applicatio = 'M' .
      ti_bapicondit-cond_type = 'PB00' .
      ti_bapicondit-scaletype = 'A' .
      ti_bapicondit-scalebasin = 'C' .            "等级基值指示符,数量规模
      ti_bapicondit-scale_qty = 1 .               "条件等级数量
      ti_bapicondit-calctypcon = 'C' .            "条件计算类型--- C:数量  A:百分比
      ti_bapicondit-cond_value = netprc.          "BAPIs 的货币金额(带有 9 个小数位)-净价
      ti_bapicondit-condcurr = lt_tab-konp_konwa. "比率单位(货币或百分数):CNY
      ti_bapicondit-cond_p_unt = peinhc.          "条件定价单位(单位=1)
      ti_bapicondit-cond_unit = lv_bprme.         "条件单位
      ti_bapicondit-condcurren = lt_tab-konp_konwa.
      ti_bapicondit-unitmeasur = lv_bprme.         "条件等级计量单位
      append ti_bapicondit.
      clear ti_bapicondit.
    *PB00--->设置等级数量
      loop at gt_nl into wa_nl where  konm_kbetr > 0.           "数量等级金额>0
        if lt_tab-lifab = wa_nl-lifab and lt_tab-lifbi = wa_nl-lifbi.
          num = num + 1.
          ti_bapicondqs-operation = '004' .
          ti_bapicondqs-cond_no = ls_a017-knumh.
          ti_bapicondqs-cond_count = '01' .
          ti_bapicondqs-line_no = num.
          ti_bapicondqs-scale_qty = wa_nl-konm_kstbm.   "条件等级数量
          ti_bapicondqs-cond_unit = lv_bprme.           "条件单位
          ti_bapicondqs-currency = wa_nl-konm_kbetr.    "BAPIs 的货币金额(带有 9 个小数位)
          ti_bapicondqs-condcurr = lt_tab-konp_konwa.   "比率单位(货币或百分数)
          append ti_bapicondqs .
          clear ti_bapicondqs .
        endif.
      endloop.
      clear num.
    
      if lt_tab-konp_konwa = 'CNY'.
    *如果货币单位为CNY,添加ZVA1类型
        ti_bapicondit-operation = '004' .
        ti_bapicondit-cond_no = ls_a017-knumh.
        ti_bapicondit-cond_count = '02'.                        "条件的序列号
        ti_bapicondit-applicatio = 'M'.
        ti_bapicondit-cond_type = lt_tab-konp_kschl2.           "进项税扣除ZVA1
        ti_bapicondit-scaletype = 'A'.                          "A基础等级
        ti_bapicondit-scalebasin = 'C' .                        "等级基值指示符,数量规模
        ti_bapicondit-scale_qty = '2'.                          "条件等级数量
        ti_bapicondit-calctypcon = 'A' .                        "条件计算类型--- C:数量  A:百分比
        if lt_tab-konp_kbetr2 <> 0 or lt_tab-konp_kbetr2 <> ''.
          ti_bapicondit-cond_value = lt_tab-konp_kbetr2.        "BAPIs 的货币金额(带有 9 个小数位)-(-5%)konm_kbetr2
        endif.
        ti_bapicondit-condcurr = lt_tab-konp_konwa2.            "比率单位(货币或百分数):CNY
        ti_bapicondit-cond_unit = lt_tab-konp_konwa2.           "条件单位
        ti_bapicondit-cond_unit = lv_bprme.
        ti_bapicondit-unitmeasur = lv_bprme.                    "条件等级计量单位
        append ti_bapicondit.
        clear ti_bapicondit.
    *ZVA1--->设置等级数量
        loop at gt_nl into wa_nl where  konm_kbetr < 0.         "数量等级金额>0
          if lt_tab-lifab = wa_nl-lifab and lt_tab-lifbi = wa_nl-lifbi.
            num = num + 1.
            ti_bapicondqs-operation = '004' .
            ti_bapicondqs-cond_no = ls_a017-knumh.
            ti_bapicondqs-cond_count = '02' .
            ti_bapicondqs-line_no = num.
            ti_bapicondqs-scale_qty = wa_nl-konm_kstbm.   "条件等级数量
            ti_bapicondqs-cond_unit = lv_bprme.           "条件单位
            ti_bapicondqs-currency = wa_nl-konm_kbetr.    "BAPIs 的货币金额(带有 9 个小数位)
            ti_bapicondqs-condcurr = lt_tab-konp_konwa2.  "比率单位(货币或百分数)
            append ti_bapicondqs .
            clear ti_bapicondqs .
          endif.
        endloop.
        clear num.
      endif.
      call function 'BAPI_PRICES_CONDITIONS'
      tables
        ti_bapicondct  = ti_bapicondct
        ti_bapicondhd  = ti_bapicondhd
        ti_bapicondit  = ti_bapicondit
        ti_bapicondqs  = ti_bapicondqs
        ti_bapicondvs  = ti_bapicondvs
        to_bapiret2    = bapiret2
        to_bapiknumhs  = to_bapiknumhs
        to_mem_initial = to_mem_initial
      exceptions
        update_error   = 1
        others         = 2.
      if sy-subrc = 0.
        concatenate '物料' lt_tab-matnr ' 已创建有效期 ' lt_tab-lifab '-' lt_tab-lifbi   into result_mesg.
        append result_mesg.
        clear result_mesg.
      else.
        call function 'BAPI_TRANSACTION_ROLLBACK'.
        result_mesg = '操作错误!'.
        append result_mesg.
        clear result_mesg.
      endif.
    endform.                    " CONDITION
    *&---------------------------------------------------------------------*
    *&      Form  PROCESS_FILE1
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form process_file1 .
      loop at gt_tab1 into wa_tab1.
        wa_nl-flag = wa_tab1-flag.
        wa_nl-eina_lifnr = wa_tab1-eina_lifnr.      "供应商
        wa_nl-eina_matnr = wa_tab1-eina_matnr.     "材料
        wa_nl-eine_ekorg = wa_tab1-eine_ekorg.      "采购组织
        wa_nl-eine_werks = wa_tab1-eine_werks.     "工厂
        wa_nl-konm_kstbm = wa_tab1-konm_kstbm.
        wa_nl-konm_kbetr = wa_tab1-konm_kbetr.
        append wa_nl to gt_nl.
      endloop.
    endform.                    " PROCESS_FILE1
    
    *&---------------------------------------------------------------------*
    *&      Form  process_file2
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    form process_file2 .
      loop at gt_tab2 into wa_tab2.
        wa_nl-flag = wa_tab1-flag.
        wa_nl-lifab = wa_tab2-lifab.   "起始时间
        wa_nl-lifbi = wa_tab2-lifbi.   "截止时间
        wa_nl-konm_kstbm = wa_tab2-konm_kstbm.
        wa_nl-konm_kbetr = wa_tab2-konm_kbetr.
        append wa_nl to gt_nl.
      endloop.
    endform.                    "process_file2
    
    *&---------------------------------------------------------------------*
    *&      Form  bdc_dynpro
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->VALUE(PROGRAM)  text
    *      -->VALUE(DYNPRO)   text
    *----------------------------------------------------------------------*
    form bdc_dynpro using value(program) value(dynpro).
      clear bdcdata.
      bdcdata-program  = program.
      bdcdata-dynpro   = dynpro.
      bdcdata-dynbegin = 'X'.
      append bdcdata.
    endform.                    "BDC_DYNPRO
    
    *&---------------------------------------------------------------------*
    *&      Form  bdc_field
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->VALUE(FNAM)  text
    *      -->VALUE(FVAL)  text
    *----------------------------------------------------------------------*
    form bdc_field using value(fnam) value(fval).
      clear bdcdata.
      bdcdata-fnam = fnam.
      bdcdata-fval = fval.
      append bdcdata.
    endform.                    "bdc_field
    *&---------------------------------------------------------------------*
    *&      Form  OPEN
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form open .
      call function 'KD_GET_FILENAME_ON_F4'
      exporting
        program_name  = syst-repid
        dynpro_number = syst-dynnr
        mask          = '*.xlsx,*.xls'
        static        = 'X'
      changing
        file_name     = p_file.
    endform.                    " OPEN
    
    *&---------------------------------------------------------------------*
    *&      Form  upload_file
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    form upload_file1.
      data: it_raw_data type truxs_t_text_data.
      field-SYMBOLS <fs> type ty_tab1.
      field-SYMBOLS:<fw>.
      data: i_excel type table of zalsmex_tabline,"表格结构。"
            w_excel type zalsmex_tabline.
      data:num_col type i.
      refresh: gt_tab1.
      "调用此函数,将Excel中的内容以类似坐标的形式存储到I_excel内表中。"
      call function 'ZZALSM_EXCEL_TO_INTERNAL_TABLE'
      exporting
        filename                = p_file
        i_begin_col             = 1
        i_begin_row             = 1
        i_end_col               = 30       "控制传入字段个数
        i_end_row               = 5000
      tables
        intern                  = i_excel
      exceptions
        inconsistent_parameters = 1
        upload_ole              = 2
        others                  = 3.
      delete i_excel where row = 1.        "删除第一行文本抬头。
      if i_excel is initial.
        call function 'POPUP_TO_CONFIRM_WITH_MESSAGE'
        exporting
          diagnosetext1 = '数据错误'
          textline1     = 'Excel表格中没有内容!'
          titel         = '提示'.
        return.
      endif.
      sort i_excel by row col.
    
      loop at i_excel into w_excel.
        num_col = w_excel-col.
        assign component  num_col  of structure wa_tab1 to <fw>.
        <fw> = w_excel-value.
        at end of row.
          append wa_tab1 to gt_tab1.
          clear:wa_tab1.
        endat.
        clear:w_excel.
      endloop.
    endform.                    " UPLOAD_FILE
    
    *&---------------------------------------------------------------------*
    *&      Form  result_message
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    form result_message.
      clear: aplfzc,normbc,netprc,peinhc.
      clear:ti_bapicondct[],ti_bapicondct,ti_bapicondhd[],ti_bapicondhd,ti_bapicondit[],ti_bapicondit,ti_bapicondqs[],ti_bapicondqs,lv_bprme.
      loop at result_mesg.
        write: / result_mesg.
      endloop.
    endform.                    "sub_output_result
    *&---------------------------------------------------------------------*
    *&      Form  DOWNLOAD_TEMPLATE
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form dl_template.
      case sscrfields-ucomm.
      when 'FC01'.
        if radio_1 = 'X'.
          perform download_template1. "创建
        else.
          perform download_template2. "修改
        endif.
      endcase.
    endform.                    " DOWNLOAD_TEMPLATE
    *&---------------------------------------------------------------------*
    *&      Form  DOWNLOAD_TEMPLATE1
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form download_template1 .
      data lv_file like rlgrap-filename.
      data lv_string type string.
    
      call function 'KD_GET_FILENAME_ON_F4'
      exporting
    *     PROGRAM_NAME        = SYST-REPID
    *     DYNPRO_NUMBER       = SYST-DYNNR
    *     field_name          = lv_string
        static              = 'X'
        mask                = ',EXCEL,*.xls.'
    *     FILEOPERATION       = 'R'
    *     PATH                =
      changing
        file_name           = lv_file.
      clear wa_tab1.
      wa_tab1-flag = 'X'.                 "记录标识
      wa_tab1-wx = ''.                    "是否外协
      wa_tab1-eina_mahn1 = '20'.          "CLX
      wa_tab1-eina_urztp = '1'.           "价格执行方式
      wa_tab1-eina_urzzt = '111'.         "编号
      wa_tab1-eine_norbm = '10'.          "标准数量
      wa_tab1-eine_mwskz = 'J6'.          "税代码
      wa_tab1-eine_netpr = '10'.          "净价
      wa_tab1-eine_waers = 'CNY'.         "净价货币
      wa_tab1-eine_angnr = '10'.          "报价
      wa_tab1-eine_peinh = '1'.           "价格单位
    *  wa_tab1-rm06i_ltex1 = '信息文本'.   "记录信息文本
      wa_tab1-rv13a_datab = '20190901'.   "有效时间从
      wa_tab1-rv13a_datbi = '20190910'.   "有效时间到
    *  wa_tab1-konp_konwa = 'CNY'.         "PB00比率单位(货币或百分数)
      wa_tab1-konp_kschl2 = 'ZVA1'.                             "条件类型2
      wa_tab1-konm_kbetr2 = '-5'.                               "条件金额2
      wa_tab1-konp_konwa2 = '%'.          "ZVA1比率单位(货币或百分数)
      wa_tab1-eina_lifnr = '101472'.      "供应商
      wa_tab1-eina_matnr  = 'YCL*'.       "材料
      wa_tab1-eine_ekorg = '1000'.        "采购组织
      wa_tab1-eine_werks = '7888'.        "工厂
      wa_tab1-konm_kstbm = '1000'.        "条件等级数量
      wa_tab1-konm_kbetr = '10'.          "条件金额
      append wa_tab1 to gt_tab1.
      clear wa_tab1.
      wa_tab1-eina_lifnr = '101472'.      "供应商
      wa_tab1-eina_matnr  = 'YCL*'.       "材料
      wa_tab1-eine_ekorg = '1000'.        "采购组织
      wa_tab1-eine_werks = '7888'.        "工厂
      wa_tab1-konm_kstbm = '2000'.        "条件等级数量
      wa_tab1-konm_kbetr = '9'.          "条件金额
      append wa_tab1 to gt_tab1.
      clear wa_tab1.
      wa_tab1-eina_lifnr = '101472'.      "供应商
      wa_tab1-eina_matnr  = 'YCL*'.       "材料
      wa_tab1-eine_ekorg = '1000'.        "采购组织
      wa_tab1-eine_werks = '7888'.        "工厂
      wa_tab1-konm_kstbm = '1000'.        "条件等级数量
      wa_tab1-konm_kbetr = '-5'.          "条件金额
      append wa_tab1 to gt_tab1.
      clear wa_tab1.
      wa_tab1-eina_lifnr = '101472'.      "供应商
      wa_tab1-eina_matnr  = 'YCL*'.       "材料
      wa_tab1-eine_ekorg = '1000'.        "采购组织
      wa_tab1-eine_werks = '7888'.        "工厂
      wa_tab1-konm_kstbm = '2000'.        "条件等级数量
      wa_tab1-konm_kbetr = '-4'.          "条件金额
      append wa_tab1 to gt_tab1.
      clear wa_tab1.
    
      if it_fname is initial.
        perform append_filename using:'新记录标识',
              '是否外协',
              'CLX',
              '价格执行方式',
              '编号',
              '标准数量',
              '税代码',
              '净价',
              '货币',
              '报价',
              '价格单位',
    *          '记录信息文本',
              '开始时间(8位数字)',
              '结束时间(8位数字)',
    *          'PB00单位',
              '条件类型2',
              '金额2',
              '单位2',
              '供应商',
              '物料',
              '采购组织',
              '工厂',
              '条件等级数量',
              '条件金额'.
      endif.
      lv_string = lv_file.
      call function 'GUI_DOWNLOAD'
      exporting
    *         BIN_FILESIZE                    =
        filename                        = lv_string
    *    filetype                       = 'DBF'
        filetype                        = 'DAT'
        append                       = 'X'
        write_field_separator           = 'X'
    *    codepage                        = '8400'   "指定写文件时用的字符集
      tables
        data_tab                        = gt_tab1
        fieldnames                      = it_fname[].
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno into result_mesg
        with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        append result_mesg.
        clear result_mesg.
      endif.
      clear: wa_tab1,gt_tab1,it_fname[].
    endform.                    " DOWNLOAD_TEMPLATE1
    *&---------------------------------------------------------------------*
    *&      Form  DOWNLOAD_TEMPLATE2
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form download_template2 .
      data lv_file like rlgrap-filename.
      data lv_string type string.
    
      call function 'KD_GET_FILENAME_ON_F4'
      exporting
    *     PROGRAM_NAME        = SYST-REPID
    *     DYNPRO_NUMBER       = SYST-DYNNR
    *     field_name          = lv_string
        static              = 'X'
        mask                = ',EXCEL,*.xls.'
    *     FILEOPERATION       = 'R'
    *     PATH                =
      changing
        file_name           = lv_file.
      clear wa_tab2.
      wa_tab2-flag = 'X'.                 "记录标识
      wa_tab2-wx = ''.                    "是否外协
      wa_tab2-lifnr = '101472'.      "供应商
      wa_tab2-matnr  = 'YCL*'.       "材料
      wa_tab2-ekorg = '1000'.        "采购组织
      wa_tab2-werks = '7888'.        "工厂
      wa_tab2-netpr = '20'.                                     "PB00金额
      wa_tab2-konp_konwa = 'CNY'.                               "PB00金额
      wa_tab2-peinh = '1'.           "价格单位
      wa_tab2-konp_kschl2 = 'ZVA1'.                             "条件类型2
      wa_tab2-konp_kbetr2 = '-5'.                               "条件金额2
      wa_tab2-konp_konwa2 = '%'.          "ZVA1比率单位(货币或百分数)
      wa_tab2-lifab = '20190901'.   "有效时间从
      wa_tab2-lifbi = '20190910'.   "有效时间到
      wa_tab2-konm_kstbm = '1000'.        "条件等级数量
      wa_tab2-konm_kbetr = '10'.          "条件金额
      append wa_tab2 to gt_tab2.
      clear wa_tab2.
      wa_tab2-lifab = '20190901'.   "有效时间从
      wa_tab2-lifbi = '20190910'.   "有效时间到
      wa_tab2-konm_kstbm = '2000'.        "条件等级数量
      wa_tab2-konm_kbetr = '9'.          "条件金额
      append wa_tab2 to gt_tab2.
      clear wa_tab2.
      wa_tab2-lifab = '20190901'.   "有效时间从
      wa_tab2-lifbi = '20190910'.   "有效时间到
      wa_tab2-konm_kstbm = '1000'.        "条件等级数量
      wa_tab2-konm_kbetr = '-5'.          "条件金额
      append wa_tab2 to gt_tab2.
      clear wa_tab2.
      wa_tab2-lifab = '20190901'.   "有效时间从
      wa_tab2-lifbi = '20190910'.   "有效时间到
      wa_tab2-konm_kstbm = '1000'.        "条件等级数量
      wa_tab2-konm_kbetr = '-4'.          "条件金额
      append wa_tab2 to gt_tab2.
      clear wa_tab2.
    
      if it_fname is initial.
        perform append_filename using:'新记录标识',
              '是否外协',
              '供应商',
              '物料',
              '采购组织',
              '工厂',
              'PB00金额',
              '货币',
              '单位',
              '条件类型2',
              '百分比',
              '货币2',
              '开始时间(8位数字)',
              '结束时间(8位数字)',
              '条件等级数量',
              '条件金额'.
      endif.
      lv_string = lv_file.
      call function 'GUI_DOWNLOAD'
      exporting
    *         BIN_FILESIZE                    =
        filename                        = lv_string
    *    filetype                       = 'DBF'
        filetype                        = 'DAT'
        append                       = 'X'
        write_field_separator           = 'X'
    *    codepage                        = '8400'   "指定写文件时用的字符集
      tables
        data_tab                        = gt_tab2
        fieldnames                      = it_fname[].
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno into result_mesg
        with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        append result_mesg.
        clear result_mesg.
      endif.
      clear: wa_tab2,gt_tab2,it_fname[].
    
    endform.                    " DOWNLOAD_TEMPLATE2
    
    *&---------------------------------------------------------------------*
    *&      Form  append_filename
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_NAME     text
    *----------------------------------------------------------------------*
    form append_filename using p_name .
      it_fname-name = p_name.
      append it_fname.
      clear it_fname.
    endform.                    "append_filename
  • 相关阅读:
    netty(4)高级篇-Websocket协议开发
    netty高级篇(3)-HTTP协议开发
    netty中级篇(2)
    netty入门篇(1)
    nio简介
    总账科目如何添加自定义属性?
    如何切换组织初次打开界面时,默认显示财务组织?
    超好用的免费Redis客户端
    Postman如何测试Webservice接口?
    创建Maven project 提示pom.xml 首行错误
  • 原文地址:https://www.cnblogs.com/rainysblog/p/11899660.html
Copyright © 2011-2022 走看看