zoukankan      html  css  js  c++  java
  • ABAPSAP的SCreen录入的简单模板

    1、主程序单元

    ************************************************************************
    * Copyright 2003                                         *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      :SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   :
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    include zfie0032top."全局变量说明但愿
    include zfie0032o01."输出Module说明单元
    include zfie0032i01."输入Module说明单元
    include zfie0032f01."共用函数说明单元
    include zfie0032fi1."输入函数说明单元
    include zfie0032fi2."输入函数说明单元
    include zfie0032h01."输入帮助说明单元 

    2、 zfie0032top单元
    ************************************************************************
    * Copyright 2003                                       *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      :SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   :
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    report zfie0030 message-id zdev.
    constants: con_show(6)   value 'SHOW',
               con_change(6) value 'CHANGE'.
    class cl_gui_cfw definition load.
    tables: zfi017v,*zfi017v,bseg,setheadert,zfi010,zfi017,csku,cskt. "
    *公司,年份,次数的新旧值
    data: v_bukrs like zfi017-bukrs,
          v_gjahr like zfi017-gjahr,
          v_zmon  like zfi017-zmon,
          v_oldbukrs like zfi017-bukrs,
          v_oldgjahr like zfi017-gjahr,
          v_oldzmon  like zfi017-zmon.
    *grid的控件
    controls: tctrl_order  type tableview using screen '0100'.
    data: col type cxtab_column.
    * Table for all entries loaded from database
    data:   begin of order_extract occurs 0100.
            include structure zfi017v.
            include structure vimflagtab.
    data: end of order_extract.
    * Table for entries selected to show on screen
    data: begin of order_total occurs 10.
            include structure zfi017v.
            include structure vimflagtab.
    data: end of order_total.
    *记录数据的状态信息的变量定义
    data: begin of status_order. "state vector
            include structure vimstatus.
    data: end of status_order.
    data:  grid_item   type i.
    data: answer(1)   type c,
          actionmode(6),
          datastate(1),
          mark_total   type i,
          init(1),
          first_flag(1).
    data: wa_zfi017v type zfi017v.
    data: ok_code like sy-ucomm,
          save_ok like sy-ucomm.           "OK-Code
    data  g_return_code type i.
    data: vim_marked(1) type c.                "mark-checkbox field
    *存储屏幕选择的字段名
    data  indexfldname(30).
    data: gt_fieldcatalog  type lvc_t_fcat,
          text(70).
    **********************************************************
    *用于帮助的变量说明
    *屏幕字段的帮助函数使用的变量
    *用于成本要素组的属于帮助
    data: begin of i_zfi010 occurs 0,
          name like zfi010-name,
    end of i_zfi010.
    *用于成本中心的输入帮助
    data: begin of i_setheadert occurs 0,
            ktext like cskt-ktext,
          end of i_setheadert.
    data: butxt like t001-bukrs.
    data: ktext like cskt-kostl.
    data: name like zfi010-name.
    *用于输入帮助,存储帮助函数的通讯内表
    data:    begin of fldtab occurs 2.
            include structure help_value.
    data:    end of fldtab.
    data:    f4dyn          like sy-dynnr.
    data:    begin of f4hlp occurs 1.
            include structure dynpread.
    data:    end of f4hlp.

    3、ZFIE0032O01单元
    ************************************************************************
    * Copyright 2003 C-Bons Wuhan                                          *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      :  SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   :
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *

    ************************************************************************
    ************************************************************************
    *&Form Name    : init_data
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *根据用户输入条件的变化,进行数据读取
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *

    ************************************************************************
    module init_data output.
      if first_flag eq space.
        first_flag = 'X'.
        v_gjahr = sy-datum+0(4).
        bseg-pswsl = 2.
      endif.
      if ( v_oldgjahr ne v_gjahr or v_oldbukrs ne v_bukrs and
        v_oldzmon ne v_zmon ) and
        v_gjahr ne space and  v_bukrs ne space and v_zmon ne space.
        perform fill_data.
      else.
    *    SET CURSOR FIELD f LINE lin OFFSET o.
      endif.
    endmodule.                 " init_data  OUTPUT
    ************************************************************************
    *&Form Name    : init_pbo
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *设置标题栏和工具条按钮
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *

    ************************************************************************
    module init_pbo output.
      set pf-status 'MAIN100'.
      set titlebar 'MAINTITLE'.
    endmodule.                             " PBO  OUTPUT
    ************************************************************************
    *&Form Name    :liste_show_liste
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *将显示数据写到显示字段中,并设置主键字段是否可输入
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *

    ************************************************************************
    module liste_show_liste output.
      if tctrl_order-current_line gt tctrl_order-lines.
        exit from step-loop.
      endif.
      grid_item = sy-loopc.
      zfi017v-kostl = order_extract-kostl.
      zfi017v-ktext = order_extract-ktext.
      zfi017v-kstar = order_extract-kstar.
      zfi017v-descript = order_extract-descript.
      zfi017v-adamt = order_extract-adamt.
      zfi017v-reasn = order_extract-reasn.
      zfi017v-zyearmonth = order_extract-zyearmonth.
      vim_marked = order_extract-mark.
      loop at screen.
        if ( order_extract-action = 'L'
         and screen-name = 'VIM_MARKED' ).
          screen-input = 0.
          modify screen.
        endif.
        if ( zfi017v-kostl ne space
         and screen-name = 'ZFI017V-KOSTL' ) or
         ( zfi017v-kstar ne space
         and screen-name = 'ZFI017V-KSTAR' ) .
          screen-input = 0.
          modify screen.
        endif.
      endloop.
      if vim_marked = 'M'.
        vim_marked = 'X'.
      endif.
    endmodule.                 " LISTE_SHOW_LISTE  OUTPUT
    ************************************************************************
    *&Form Name    : fill_data
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *根据用户输入读取数据并初试化状态变量
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *

    ************************************************************************
    form fill_data .
      select *
        into corresponding fields of order_extract
      from zfi017
      where zfi017~bukrs = v_bukrs
        and zfi017~gjahr = v_gjahr
        and zfi017~zmon = v_zmon.
        select single cskt~ktext as descript
          into (order_extract-descript)
          from cskt
          where spras = '1'
            and kokrs = '1000'
            and kostl = order_extract-kostl.
        select single ktext
        into (order_extract-ktext)
        from csku
        where spras = '1' and ktopl ='CB00'
              and kstar = order_extract-kstar.
        append order_extract.
      endselect.
      sort order_extract by bukrs gjahr kostl kstar.
    *  order_extract[] = order_total[].
      if actionmode = con_change.
        perform insert_newworkarea using grid_item.
      endif.
      describe table order_extract lines tctrl_order-lines.
      tctrl_order-top_line = 1.
      clear ok_code.
      mark_total = 1.
      clear:datastate,status_order.
      v_oldgjahr = v_gjahr.
      v_oldbukrs = v_bukrs.
    endform.                    " fill_data
    ************************************************************************
    *&Form Name    : init_ctrl
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *根据数据状态,设置屏幕字段是否可以输入
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *

    ************************************************************************
    module init_ctrl output.
      if actionmode eq space.
        actionmode = con_show.
      endif.
      if con_show eq actionmode.
        loop at screen.
          case screen-name.
            when  'V_BUKRS'.
              screen-input = 1.
              modify screen.
            when  'V_GJAHR'.
              screen-input = 1.
              modify screen.
            when  'V_ZMON'.
              screen-input = 1.
              modify screen.
          endcase.
        endloop.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-KOSTL'.
        if sy-subrc = 0.
          col-screen-input = '0'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-KSTAR'.
        if sy-subrc = 0.
          col-screen-input = '0'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-ADAMT'.
        if sy-subrc = 0.
          col-screen-input = '0'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-REASN'.
        if sy-subrc = 0.
          col-screen-input = '0'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-ZYEARMONTH'.
        if sy-subrc = 0.
          col-screen-input = '0'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
      else.
        loop at screen.
          case screen-name.
            when  'V_BUKRS'.
              screen-input = 0.
              modify screen.
            when  'V_GJAHR'.
              screen-input = 0.
              modify screen.
            when  'V_ZMON'.
              screen-input = 0.
              modify screen.
          endcase.
        endloop.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-KOSTL'.
        if sy-subrc = 0.
          col-screen-input = '1'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-KSTAR'.
        if sy-subrc = 0.
          col-screen-input = '1'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-ADAMT'.
        if sy-subrc = 0.
          col-screen-input = '1'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-REASN'.
        if sy-subrc = 0.
          col-screen-input = '1'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
        read table tctrl_order-cols into col
          with key screen-name = 'ZFI017V-ZYEARMONTH'.
        if sy-subrc = 0.
          col-screen-input = '1'.
          modify tctrl_order-cols index  sy-tabix from col.
        endif.
      endif.
    endmodule.                 " init_ctrl  OUTPUT

    4、ZFIE0032I01单元
    ************************************************************************
    * Copyright 2003                                          *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      : SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   :  *
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    ************************************************************************
    *&Form Name    : LISTE_EXIT_COMMAND
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *处理系统退出命令,提示用户是否保存数据
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module liste_exit_command input.
      data:  savestate  type i .
      case ok_code.
        when  'CANC'.
          set screen 0.
          leave screen.
        when 'BACK'.
          if datastate = 'X'.
            call function 'POPUP_TO_CONFIRM_STEP'
              exporting
                titel     = '退出维护'
                textline1 = '数据被修改。'
                textline2 = '是否先保存所做更改?'
              importing
                answer    = answer.
            case answer.
              when 'J'.
                perform save_data changing savestate.
                sy-subrc = savestate.
              when 'n'.
                sy-subrc = 1.
              when 'A'.
                sy-subrc = 0.
            endcase.
          endif.
          if sy-subrc = 0.
            set screen 0.
            leave screen.
          endif.
        when 'EXIT'.
          if datastate = 'X'.
            call function 'POPUP_TO_CONFIRM_STEP'
              exporting
                titel     = '退出维护'
                textline1 = '数据被修改。'
                textline2 = '是否先保存所做更改?'
              importing
                answer    = answer.
            case answer.
              when 'J'.
                perform save_data changing savestate.
                sy-subrc = savestate.
              when 'n'.
                sy-subrc = 1.
              when 'A'.
                sy-subrc = 0.
            endcase.
          endif.
          if sy-subrc = 0.
            set screen 0.
            leave screen.
            perform exit_program.
          endif.
      endcase.
    endmodule.                 " LISTE_EXIT_COMMAND  INPUT
    **&---------------------------------------------------------------------
    *
    **&      Module  LISTE_BEFORE_LOOP  INPUT
    **&---------------------------------------------------------------------
    *
    **       text
    **----------------------------------------------------------------------
    *
    *MODULE liste_before_loop INPUT.
    *
    *ENDMODULE.                 " LISTE_BEFORE_LOOP  INPUT
    ************************************************************************
    *&Form Name    : do_mark_checkbox
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *处理记录选中标记字段
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module liste_mark_checkbox input.
      if  status_order-upd_flag eq space.  "only mouse mark
        perform update_entry using space 0 tctrl_order-top_line.
      endif.
    endmodule.                 " LISTE_MARK_CHECKBOX  INPUT
    ************************************************************************
    *&Form Name    : set_update_orderkey_flag
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *标记数据被修改,标记关键有新值需要检查
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module set_update_orderkey_flag input.
      status_order-upd_flag = 'X'.
      status_order-auth_check = 'X'.
      status_order-st_data = 'X'.
      datastate = 'X'.
    endmodule.                 " set_update_orderkey_flag  INPUT
    ************************************************************************
    *&Form Name    : set_update_orderkey_group
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *标记数据被修改,标记关键有新值需要检查
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module set_update_orderkey_group input.
      status_order-upd_flag = 'X'.
      status_order-auth_check = 'X'.
      status_order-st_mode = 'X'.
      datastate = 'X'.
    endmodule.                 " set_update_orderkey_flag  INPUT
    ************************************************************************
    *&Form Name    : set_update_order_flag
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *标记数据被修改
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module set_update_order_flag input.
      status_order-upd_flag = 'X'.
      datastate = 'X'.
    endmodule.                 " SET_UPDATE_FLAG  INPUT
    ************************************************************************
    *&Form Name    : liste_update_order
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *将工作区数据更新到显示和缓冲内表中
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module liste_update_order input.
      if status_order-upd_flag = 'X'.
        perform check_key_order.
        perform update_tab_order using sy-subrc sy-tabix.
        clear status_order.
      endif.
    endmodule.                 " LISTE_UPDATE_LISTE  INPUT
    ************************************************************************
    *&Form Name    : check_key_order
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *关键字检查,判断是否重复
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form check_key_order .
    *  CLEAR order_total.
    *  READ TABLE order_total WITH KEY
    *    kostl = zfi017v-kostl
    *    KSTAR = zfi017v-KSTAR BINARY SEARCH.
    *  CHECK sy-subrc EQ 0.
    *  IF status_order-auth_check = 'X'.
    *    IF order_total-action EQ 'D'
    *    OR order_total-action  EQ 'X'
    *    OR order_total-action  EQ 'Y'.
    *      MESSAGE ID 'SV' TYPE 'E' NUMBER '010'.
    *    ELSE.
    *      MESSAGE ID 'SV' TYPE 'E' NUMBER '009'.
    *    ENDIF.
    *  ENDIF.
    endform.                    "check_key_order
    ************************************************************************
    *&Form Name    : liste_after_loop
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *处理用户操作
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module liste_after_loop input.
    *  DATA: savestate TYPE i.
      save_ok = ok_code.
      clear ok_code.
      case save_ok.
        when 'EXIT' or 'BACK' or 'CANC'.
          if datastate = 'C'.
            call function 'POPUP_TO_CONFIRM_STEP'
              exporting
                titel     = '退出维护'
                textline1 = '数据被修改。'
                textline2 = '是否先保存所做更改?'
              importing
                answer    = answer.
            case answer.
              when 'J'.
                perform save_data changing savestate.
                sy-subrc = savestate.
              when 'n'.
                sy-subrc = 1.
              when 'A'.
                sy-subrc = 0.
            endcase.
          endif.
          if sy-subrc = 0.
            set screen 0.
            leave screen.
            perform exit_program.
          endif.
        when 'EDIT'.
          if datastate eq space.
            if con_show eq actionmode.
              call function 'ENQUEUE_EZFIE017'
                exporting
                  bukrs          = v_bukrs
                  gjahr          = v_gjahr
                  zmon           = v_zmon
                exceptions
                  foreign_lock   = 2
                  system_failure = 3.
              if sy-subrc ne 0.
                message i622 with v_bukrs v_gjahr sy-msgv1.
              else.
                actionmode = con_change.
                if  ( v_oldgjahr = v_gjahr and v_oldbukrs = v_bukrs
                  and v_gjahr ne space and v_bukrs ne space ).
                  perform insert_newworkarea using grid_item.
                endif.
              endif.
            endif.
          endif.
        when 'DELE'.
          if con_show ne actionmode.
            perform delete_order.
          endif.
        when 'SAVE' or 'SAVV'.
          if datastate ne space.
            perform save_data changing savestate.
            if savestate eq 0.
              call function 'DEQUEUE_EZFIE017'
                exporting
                  bukrs = v_bukrs
                  gjahr = v_gjahr
                  zmon  = v_zmon.
              clear datastate.
            endif.
          else.
            call function 'DEQUEUE_EZFIE017'
              exporting
                bukrs = v_bukrs
                gjahr = v_gjahr
                zmon  = v_zmon.
            perform clear_action.
          endif.
        when 'SOUP'.
    * search for selected columns.
          loop at tctrl_order-cols into col.
            if col-selected = 'X'.
              indexfldname = col-screen-name+11.
              sort order_total by (indexfldname).
              exit.
            endif.
          endloop.
        when 'SODO'.
          loop at tctrl_order-cols into col.
            if col-selected = 'X'.
              indexfldname = col-screen-name+11.
              sort order_total by (indexfldname) descending.
              exit.
            endif.
          endloop.
        when others.
          call method cl_gui_cfw=>dispatch.
      endcase.
      call method cl_gui_cfw=>flush.
    endmodule.                 " LISTE_AFTER_LOOP  INPUT
    ************************************************************************
    *&Form Name    : insert_newworkarea
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *为编辑数据添加临时空记录
    *----------------------------------------------------------------------*
    *参数说明 
    *-->p_entries:插入新空白记录数
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form insert_newworkarea  using    p_entries.
      if p_entries eq 0.
        p_entries = 20.
      endif.
      clear order_extract.
      move 'L' to order_extract-action.
      do p_entries times.
        append order_extract.
      enddo.
      move tctrl_order-lines to tctrl_order-top_line.
      describe table order_extract lines tctrl_order-lines.
    endform.                    " insert_newworkarea
    ************************************************************************
    *&Form Name    : delete_order
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *删除的数据,在缓冲数据中设立删除标志(只能删除新建且未保存的定价)
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    *                                                                      *
    ************************************************************************
    *----------------------------------------------------------------------*
    form delete_order .

      loop at order_extract.
        if order_extract-mark = 'M' and
          order_extract-action ne 'L'.
          delete order_extract.
        endif.
      endloop.
      describe table order_extract lines tctrl_order-lines.
    endform.                    " delete_order

    5、ZFIE0032F01单元
    ************************************************************************
    * Copyright 2003 Wuhan                                          *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      : SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   :  *
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    ************************************************************************
    *&Form Name    : exit_program
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *退出程序时, 解除锁
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form exit_program.
      call function 'DEQUEUE_EZFIE017'
        exporting
          bukrs = v_bukrs
          gjahr = v_gjahr
          znum = v_zmon.
      leave program.
    endform.                               " exit_program

    6、ZFIE0032FI1单元
    ************************************************************************
    * Copyright 2003 *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      : SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   : *
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    ************************************************************************
    *&Form Name    : clear_action
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *清除数据操作状态,恢复到初试显示状态
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form clear_action.
    *  order_extract[] = order_total[].
      actionmode = con_show.
      describe table order_extract lines tctrl_order-lines.
      tctrl_order-top_line = 1.
      clear ok_code.
      mark_total = 1.
      clear:datastate,status_order.
      clear status_order.
    endform.                    " clear_action
    ************************************************************************
    *&Form Name    : clear_mark
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *清除记录选中标记
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form clear_mark .
      loop at order_total.
        order_total-mark = space.
        modify order_total index sy-tabix.
      endloop.
    endform.                    " clear_mark
    ************************************************************************
    *&Form Name    : save_data
    * Created by   : DEV01                                                 *
    * Created on   :
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *保存数据
    *----------------------------------------------------------------------*
    *参数说明 
    *<--savestate:返回保存是否成功,成功为0值
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form save_data changing savestate type i.
      data i_znum type i.
      savestate = -1.
      delete from zfi017
        where bukrs = v_bukrs and
              gjahr = v_gjahr and
              zmon = v_zmon.
      i_znum = 1.
      loop at order_extract.
        if order_extract-action eq space.
          zfi017-bukrs = order_extract-bukrs.
          zfi017-gjahr = order_extract-gjahr.
          zfi017-zmon = order_extract-zmon.
          zfi017-znum = i_znum.
          zfi017-kostl = order_extract-kostl.
          zfi017-kstar = order_extract-kstar.
          zfi017-adamt = order_extract-adamt.
          zfi017-reasn = order_extract-reasn.
          zfi017-zyearmonth = order_extract-zyearmonth.
          insert zfi017.
          if sy-subrc ne 0.
            rollback work.
            exit.
          endif.
          i_znum = i_znum + 1.
        elseif order_extract-action = 'U'.
          zfi017-bukrs = order_extract-bukrs.
          zfi017-gjahr = order_extract-gjahr.
          zfi017-zmon = order_extract-zmon.
          zfi017-znum = i_znum.
          zfi017-kostl = order_extract-kostl.
          zfi017-kstar = order_extract-kstar.
          zfi017-adamt = order_extract-adamt.
          zfi017-reasn = order_extract-reasn.
          zfi017-zyearmonth = order_extract-zyearmonth.
          insert zfi017.
          if sy-subrc ne 0.
            rollback work.
            exit.
          endif.
          i_znum = i_znum + 1.
          order_total-action = space.
          modify order_extract.
        elseif order_extract-action = 'X'.
          delete order_total.
        elseif ( ( order_extract-action = 'D' ) or
          ( order_extract-action = 'Y' ) ).
          delete order_extract.
        elseif order_extract-action = 'N'.
          zfi017-bukrs = order_extract-bukrs.
          zfi017-gjahr = order_extract-gjahr.
          zfi017-zmon = order_extract-zmon.
          zfi017-znum = i_znum.
          zfi017-kostl = order_extract-kostl.
          zfi017-kstar = order_extract-kstar.
          zfi017-adamt = order_extract-adamt.
          zfi017-reasn = order_extract-reasn.
          zfi017-zyearmonth = order_extract-zyearmonth.
          insert zfi017.
          if sy-subrc ne 0.
            rollback work.
            exit.
          endif.
          i_znum = i_znum + 1.
          order_total-action = space.
          modify order_extract.
        endif.

    7、ZFIE0032FI2单元
    ************************************************************************
    * Copyright 2003 *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      : SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   : *
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    ************************************************************************
    *&Form Name    : update_tab_order
    * Created by   : DEV01                                                 *
    * Created on   :  *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *将显示缓冲work area的数据更新到内表
    *----------------------------------------------------------------------*
    *参数说明               *
    *  -->  p_rc    :记录定位操作返回的sy-subrc的值
    *  -->  p_index :记录的索引位置
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form update_tab_order using value(p_rc)
                             value(p_index).
       perform update_entry using 'X'  p_rc p_index.
    endform.                    " update_tab
    ************************************************************************
    *&Form Name    : update_tab_order
    * Created by   : DEV01                                                 *
    * Created on   :*
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *将显示缓冲work area的数据更新到内表
    *----------------------------------------------------------------------*
    *参数说明 
    *  -->  p_workarea : ‘X' 更新显示和缓冲双份内表数据
    *                      space 只更新显示内表数据
    *  -->  p_rc    :记录定位操作返回的sy-subrc的值
    *  -->  p_index :记录的索引位置
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    form update_entry using value(p_workarea)
                               value(p_rc)
                               value(p_index).
        read table order_extract index tctrl_order-top_line.
        if order_extract-action = 'L'.
          move-corresponding zfi017v to order_extract.
          order_extract-bukrs = v_bukrs.
          order_extract-gjahr = v_gjahr.
          order_extract-zmon = v_zmon.
          order_extract-action  = 'N'.
          if vim_marked ne space.
            order_extract-mark  = 'M'.
          endif.
          modify order_extract index tctrl_order-top_line.
          clear order_extract.
          order_extract-action  = 'L'.
          append order_extract.
        else.
          move-corresponding zfi017v to order_extract.
          order_extract-bukrs = v_bukrs.
          order_extract-gjahr = v_gjahr.
          order_extract-zmon = v_zmon.
          order_extract-action  = 'U'.
          if vim_marked ne space.
            order_extract-mark  = 'M'.
          endif.
          modify order_extract index tctrl_order-top_line.
        endif.
        describe table order_extract lines tctrl_order-lines.
    endform.                    "update_tab_order
      endloop.
      commit work.
      savestate = 0.
      perform clear_action.
      message s024.
    endform.                    " save_data

    8、ZFIE0032H01单元
    ************************************************************************
    * Copyright 2003 Wuhan                                          *
    * All Rights Reserved                                                  *
    *----------------------------------------------------------------------*
    * Program Name : ZFIE0005                                              *
    * TYPE         : REPORT                                                *
    * Project      : SAP Implementation Project                     *
    * Program Title: 管理部门年度预算考核额调整
    * Created by   : DEV01                                                 *
    * Created on   :  *
    * Version      : 1.0                                                   *
    * Function Description:                                                *
    * 管理部门年度预算考核额调整
    *----------------------------------------------------------------------*
    *操作数据表
    *ZFI017
    *----------------------------------------------------------------------*
    *引用数据表
    *
    *----------------------------------------------------------------------*
    * Modification Log:                                                    *
    * Date        Programmer     Correction Number      DesingDoc Number   *
    ************************************************************************
    ************************************************************************
    *&Form Name    : v_bukrs_check
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *公司代码字段输入检查:不能为空且代码不能不存在
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module v_bukrs_check input.
      tables: t001.
      if v_bukrs = space.
        message e023 with '公司代码'.
      endif.
      select single * from t001 where bukrs = v_bukrs.
      if sy-subrc ne 0.
        message e014 with v_bukrs.
      endif.
    endmodule.                 " v_bukrs_check  INPUT
    ************************************************************************
    *&Form Name    : v_gjahr_check
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *年份代码字段输入检查:不能为空且年份不能小于1990
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module v_gjahr_check input.
      if v_gjahr = space.
        message e023 with '年份'.
      endif.
      if v_gjahr gt 9999 or v_gjahr lt 1000.
        message e046.
      endif.
    endmodule.                 " v_gjahr_check  INPUT
    ************************************************************************
    *&Form Name    : v_zmon_check
    * Created by   : DEV01                                                 *
    * Created on   :  *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *月份字段输入检查
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module v_zmon_check input.
      if v_zmon = space.
        message e023 with '月份'.
      endif.
      if v_zmon gt 12 or v_zmon lt 1.
        message e047.
      endif.
    endmodule.                 " v_gjahr_check  INPUT
    ************************************************************************
    *&Form Name    : select_kostl
    * Created by   : DEV01                                                 *
    * Created on   :   *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *获取成本中心组(帮助输入)
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module select_kostl input.
      data:
           dynpro_values type table of dynpread,
           field_value like line of dynpro_values,
           l_year like bkpf-gjahr,
           g_kh(10).
      data: begin of i_tree occurs 0,
          setname like setnode-setname,
        end of i_tree.
      data: i_subtree like i_tree occurs 0 with header line,
        i_temptree like i_tree occurs 0 with header line.
      data l_count type i .
      ranges: s_setname for setnode-setname.
      ranges: s_kostl for cskt-kostl.

      refresh dynpro_values.
      field_value-fieldname = 'V_GJAHR'.
      append field_value to dynpro_values.

      call function 'DYNP_VALUES_READ'
        exporting
          dyname             = sy-repid
          dynumb             = sy-dynnr
          translate_to_upper = 'X'
        tables
          dynpfields         = dynpro_values.

      read table dynpro_values index 1 into field_value.
      l_year = field_value-fieldvalue(4).

      refresh i_setheadert.
      s_setname-option = 'EQ'.
      s_setname-sign = 'I'.
      l_count = 1.
      refresh i_temptree.
      refresh i_subtree.
    *特殊处理,2005年预算用2006的机构
      if l_year < 2006.
        l_year = 2006.
      endif.
      concatenate 'KH' l_year into g_kh.
      while l_count > 0.
        select setnode~subsetname as setname
          into (setheadert-setname)
          from setnode
            where setnode~setclass = '0101'
               and setnode~subclass = '1000'
               and setnode~subsetcls = '0101'
               and setnode~subsetscls = '1000'
               and setnode~setname = g_kh.
          move setheadert-setname to s_setname-low.
          append s_setname.
          i_temptree-setname = setheadert-setname.
          append i_temptree.
        endselect.
        append lines of i_temptree to i_subtree.
        describe table i_subtree lines l_count.
        if l_count ne 0.
          read table i_subtree index 1.
          g_kh = i_subtree-setname.
          delete i_subtree index 1.
        endif.
        refresh i_temptree.
        clear i_temptree.
      endwhile.

      select valsign as sign   valoption as option
        valfrom as low   valto   as high
        into table s_kostl
      from setleaf
      where setclass = '0101'
        and subclass = '1000'  and setname in s_setname.

      refresh i_setheadert.
      select single  bukrs  from t001  into butxt
      where bukrs = v_bukrs.
      if sy-subrc <> 0.
        message id 'ZDEV' type 'S' number '049'.
        exit.
      endif.
      select cskt~kostl cskt~ktext
        into (cskt-kostl,cskt-ktext)
      from cskt
       where spras = '1'
        and kokrs = '1000'
        and kostl in s_kostl.
        move cskt-kostl to i_setheadert-ktext.
        append i_setheadert.
        move cskt-ktext to i_setheadert-ktext.
        append i_setheadert.
      endselect.
      refresh fldtab.
      clear fldtab.
      fldtab-tabname    = 'CSKT'.
      fldtab-fieldname  = 'KOSTL'.
      fldtab-selectflag = 'X'.
      append fldtab.
      clear fldtab.
      fldtab-tabname    = 'CSKT'.
      fldtab-fieldname  = 'KTEXT'.
      append fldtab.
      call function 'HELP_VALUES_GET_WITH_TABLE'
        exporting
          display      = space
          fieldname    = 'KOSTL'
          tabname      = 'ZFI017V'
        importing
          select_value = ktext
        tables
          fields       = fldtab
          valuetab     = i_setheadert.
      if not ktext is initial.
        zfi017v-kostl = ktext.
      endif.
    endmodule.                 " select_kostl  INPUT

    ************************************************************************
    *&Form Name    : select_zgroup
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *获取某个年度成本要素组(帮助输入)
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module select_zgroup input.
      refresh i_zfi010.
    *********XIONGHM***************
      select kstar ktext
        into (csku-kstar,csku-ktext)
          from csku
          where spras = '1' and ktopl ='CB00'.
        i_zfi010-name = csku-kstar.
        append i_zfi010.
        i_zfi010-name = csku-ktext.
        append i_zfi010.
      endselect.

      refresh fldtab.
      clear fldtab.
      fldtab-tabname    = 'ZFI017V'.
      fldtab-fieldname  = 'KSTAR'.
      fldtab-selectflag = 'X'.
      append fldtab.
      clear fldtab.
      fldtab-tabname    = 'ZFI017V'.
      fldtab-fieldname  = 'KTEXT'.
      append fldtab.
      call function 'HELP_VALUES_GET_WITH_TABLE'
        exporting
          display      = space
          fieldname    = 'KSTAR'
          tabname      = 'ZFI017V'
        importing
          select_value = name
        tables
          fields       = fldtab
          valuetab     = i_zfi010.
      if not name is initial.
        zfi017v-kstar = name.
      endif.
    endmodule.                 " select_prodh  INPUT
    ************************************************************************
    *&Form Name    : v_check_kostl
    * Created by   : DEV01                                                 *
    * Created on   : *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *检查成本输入中心是否存在
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module v_check_kostl input.
      if zfi017v-kostl eq space.
        message e621 with zfi017v-kostl.
      endif.
      if  status_order-st_data ne space.
        select single ktext as descript
          into zfi017v-descript
        from cskt
         where spras = '1'
          and kokrs = '1000'
          and kostl = zfi017v-kostl.
        if sy-subrc ne 0.
          message e620 with zfi017v-kostl.
        endif.
      endif.
    endmodule.                 " v_check_kostl  INPUT
    ************************************************************************
    *&Form Name    : v_check_zgroup
    * Created by   : DEV01                                                 *
    * Created on   :   *
    *----------------------------------------------------------------------*
    * Function Description:                                                *
    *检查输入成本要素组是否存在
    *----------------------------------------------------------------------*
    *参数说明 
    *
    *----------------------------------------------------------------------*
    * Date        Programmer   Description          *
    ************************************************************************
    module v_check_zgroup input.
      if zfi017v-kstar eq space.
        message e621 with zfi017v-kstar.
      endif.
      if status_order-st_mode ne space.
        select single ktext
        into (zfi017v-ktext)
        from csku
        where spras = '1' and ktopl ='CB00'
              and kstar = zfi017v-kstar.
        if sy-subrc ne 0.
          message e621 with zfi017v-kstar.
        endif.
      endif.
    endmodule.                 " v_check_zgroup  INPUT

    9、屏幕PBO和PAI
    *BEFORE OUTPUT
    process before output.
      module init_pbo.
      module init_data.
      module init_ctrl.
      loop at order_extract with control tctrl_order
        cursor tctrl_order-top_line.

        module liste_show_liste.
      endloop.

    *After input
    process after input.
      module liste_exit_command at exit-command.
      field v_bukrs module v_bukrs_check on request.
      field v_gjahr module v_gjahr_check on request.
      field v_zmon module v_zmon_check on request.
      module liste_before_loop.
      loop at order_extract.
        field zfi017v-kostl
          module set_update_orderkey_flag on request.
        field zfi017v-kstar
          module set_update_orderkey_group on request.
        chain.
          field zfi017v-adamt.
          field zfi017v-reasn.
          field zfi017v-zyearmonth.
          module set_update_order_flag on chain-request.
        endchain.
        field vim_marked module liste_mark_checkbox.
    **检查
        field zfi017v-kostl module v_check_kostl.
        field zfi017v-kstar module v_check_zgroup.
    * save current data to order_total
        chain.
          field zfi017v-kostl.
          field zfi017v-kstar.
          field zfi017v-adamt.
          field zfi017v-reasn.
          field zfi017v-zyearmonth.
          module liste_update_order.
        endchain.
      endloop.
    *deal with function Code
      module liste_after_loop.

    process on value-request.
      field zfi017v-kostl module select_kostl.
      field zfi017v-kstar module select_zgroup.

  • 相关阅读:
    Spring Cloud Hystrix Dashboard的使用 5.1.3
    Spring Cloud Hystrix 服务容错保护 5.1
    Spring Cloud Ribbon 客户端负载均衡 4.3
    Spring Cloud 如何实现服务间的调用 4.2.3
    hadoop3.1集成yarn ha
    hadoop3.1 hdfs的api使用
    hadoop3.1 ha高可用部署
    hadoop3.1 分布式集群部署
    hadoop3.1伪分布式部署
    KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157527.html
Copyright © 2011-2022 走看看