ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dialog

dialog

原创 Linux操作系统 作者:TerryWangYR 时间:2008-05-18 23:23:36 0 删除 编辑

REPORT zpp000110

       LINE-SIZE 230

       LINE-COUNT 50

       MESSAGE-ID zpp

       NO STANDARD PAGE HEADING.

 

*Author      : whs

*Date        : 2004.04.27

*Description : 維護客戶預留數

*說明        : 計算oa复期時,設定每個客戶每周預留的數据

 

CONTROLS: fab TYPE TABLEVIEW USING SCREEN 100.

 

TABLES: sscrfields , zperdest , kna1.

DATA : w_mod(8) TYPE c ,

       w_moddesc(10) TYPE c.

DATA: BEGIN OF it OCCURS 10.

DATA:       sel TYPE c.

        INCLUDE STRUCTURE zperdest.

DATA: END OF it.

 

TYPES: BEGIN OF tab_type,

    fcode LIKE rsmpe-func,

  END OF tab_type.

DATA: tab TYPE STANDARD TABLE OF tab_type WITH

               NON-UNIQUE DEFAULT KEY INITIAL SIZE 10,

      wa_tab TYPE tab_type.

DATA: wa LIKE LINE OF fab-cols .

DATA: BEGIN OF wk OCCURS 0,

        week TYPE i,

        startdate TYPE sy-datum,

        enddate TYPE sy-datum,

      END OF wk.

 

DATA  t_lines TYPE i.

DATA  t_stop TYPE c.

DATA  ok_code(4) TYPE c.

DATA  line_count TYPE i.

 

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK aaa WITH FRAME. TITLE btxt3.

SELECT-OPTIONS : p_yymm FOR zperdest-yymm.

SELECT-OPTIONS : p_week FOR zperdest-week.

SELECT-OPTIONS : p_kunnr FOR zperdest-kunnr.

SELECT-OPTIONS : p_type FOR zperdest-jjlb.

SELECTION-SCREEN END OF BLOCK aaa.

 

 

INITIALIZATION.

  btxt3 = '請輸入選擇資料'.

  SET PF-STATUS 'START'.

 

AT USER-COMMAND.

 

AT SELECTION-SCREEN.

  CASE sscrfields-ucomm.

    WHEN 'ONLI'.

      w_mod = 'NEW'.

      w_moddesc = '新增'.

    WHEN 'NEW1'.

      w_mod = 'NEW'.

      w_moddesc = '新增'.

      sscrfields-ucomm = 'ONLI'.

    WHEN 'DISP1'.

      w_mod = 'QUERY'.

      w_moddesc = '查詢'.

      sscrfields-ucomm = 'ONLI'.

    WHEN 'EDIT1'.

      w_mod = 'EDIT'.

      w_moddesc = '修改'.

      sscrfields-ucomm = 'ONLI'.

  ENDCASE.

 

START-OF-SELECTION.

  CASE w_mod .

    WHEN 'NEW'.

      CLEAR it.

      it-sel = 'X'.

      APPEND it.

    WHEN 'EDIT' OR 'QUERY'.

      PERFORM. read_data.

  ENDCASE.

 

 

END-OF-SELECTION.

  CHECK t_stop = space.

  CALL SCREEN 100.

 

*&---------------------------------------------------------------------

 

*&      Module  exit_command  INPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE exit_command INPUT.

  CASE ok_code.

    WHEN 'EXIT' OR 'BACK' OR 'CANC'.

      CLEAR ok_code.

      SET SCREEN 0.

      LEAVE SCREEN.

  ENDCASE.

ENDMODULE.                 " exit_command  INPUT

*&---------------------------------------------------------------------

 

*&      Module  init_0100  OUTPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE init_0100 OUTPUT.

  SET TITLEBAR '0100' WITH w_moddesc.

  CASE w_mod .

    WHEN 'NEW'.

      CLEAR tab.

      MOVE 'DELE' TO wa_tab-fcode.

      APPEND wa_tab TO tab.

      SET PF-STATUS 'GUI18' EXCLUDING tab.

    WHEN 'EDIT'.

      CLEAR tab.

      MOVE 'ADDL' TO wa_tab-fcode.

      APPEND wa_tab TO tab.

      SET PF-STATUS 'GUI18' EXCLUDING tab.

      LOOP AT fab-cols INTO wa .

        IF wa-screen-name = 'IT-YYMM'

          OR wa-screen-name = 'IT-WEEK'

          OR wa-screen-name = 'IT-KUNNR'

          OR wa-screen-name = 'IT-JJLB'.

          wa-screen-input = '0'.

          MODIFY fab-cols FROM wa .

        ENDIF .

      ENDLOOP.

 

    WHEN 'QUERY'.

      CLEAR tab.

      MOVE 'SAVE' TO wa_tab-fcode.

      APPEND wa_tab TO tab.

      MOVE 'DELE' TO wa_tab-fcode.

      APPEND wa_tab TO tab.

      MOVE 'ADDL' TO wa_tab-fcode.

      APPEND wa_tab TO tab.

      SET PF-STATUS 'GUI18' EXCLUDING tab.

      LOOP AT fab-cols INTO wa .

        IF wa-screen-name = 'IT-YYMM'

          OR wa-screen-name = 'IT-JJLB'

          OR wa-screen-name = 'IT-WEEK'

          OR wa-screen-name = 'IT-KUNNR'

          OR wa-screen-name = 'IT-MENGE'.

          wa-screen-input = '0'.

          MODIFY fab-cols FROM wa .

        ENDIF .

      ENDLOOP.

  ENDCASE.

ENDMODULE.                 " init_0100  OUTPUT

*&---------------------------------------------------------------------

 

*&      Module  set_line_count  INPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE set_line_count INPUT.

  line_count = sy-loopc.

ENDMODULE.                 " set_line_count  INPUT

*&---------------------------------------------------------------------

 

*&      Module  modify_tab300  INPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE modify_tab300 INPUT.

  MODIFY it INDEX fab-current_line.

ENDMODULE.                 " modify_tab300  INPUT

*&---------------------------------------------------------------------

 

*&      Module  user_command_0100  INPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE user_command_0100 INPUT.

  CASE ok_code.

    WHEN 'ADDL'.

      CLEAR it.

      it-sel = 'X'.

      APPEND it.

 

      DESCRIBE TABLE it LINES t_lines .

      fab-lines = t_lines.

      fab-top_line = fab-lines - 5.

      CLEAR ok_code.

    WHEN 'SAVE'.

      READ TABLE it WITH KEY sel = 'X' .

      IF sy-subrc NE 0 .

        MESSAGE s063 .

        STOP.

        CLEAR ok_code .

      ENDIF .

      IF w_mod = 'NEW'.

        PERFORM. add_data.

      ELSEIF w_mod = 'EDIT'.

        PERFORM. modify_data.

      ENDIF.

      SET SCREEN 0.

      LEAVE SCREEN.

    WHEN 'SELA' .

      it-sel = 'X'.

      MODIFY it TRANSPORTING sel WHERE sel <> 'X' .

      CLEAR ok_code .

    WHEN 'CANA' .

      it-sel = space .

      MODIFY it TRANSPORTING sel WHERE sel NE space .

      CLEAR ok_code .

    WHEN 'P--'.

      CLEAR ok_code.

      PERFORM. paging USING 'P--'.

    WHEN 'P-'.

      CLEAR ok_code.

      PERFORM. paging USING 'P-'.

    WHEN 'P+'.

      CLEAR ok_code.

      PERFORM. paging USING 'P+'.

    WHEN 'P++'.

      CLEAR ok_code.

      PERFORM. paging USING 'P++'.

    WHEN 'DELE'.

      CLEAR ok_code.

      PERFORM. delete_data.

  ENDCASE.

 

ENDMODULE.                 " user_command_0100  INPUT

*&---------------------------------------------------------------------

 

*&      Module  set_cursor_pos300  OUTPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE set_cursor_pos300 OUTPUT.

  SET CURSOR FIELD 'IT-YYMM' LINE 1.

ENDMODULE.                 " set_cursor_pos300  OUTPUT

 

*&---------------------------------------------------------------------

 

*&      Form  paging

*&---------------------------------------------------------------------

 

FORM. paging USING   code.

  DATA: i TYPE i,

          j TYPE i.

  CASE code.

    WHEN 'P--'. fab-top_line = 1.

    WHEN 'P-'.

      fab-top_line = fab-top_line - line_count.

      IF fab-top_line < 1.

        fab-top_line = 1.

      ENDIF.

    WHEN 'P+'.

      i = fab-top_line + line_count.

      j = fab-lines - line_count + 1.

      IF j LE 0. j = 1. ENDIF.

      IF i LE j.

        fab-top_line = i.

      ELSE.

        fab-top_line = j.

      ENDIF.

    WHEN 'P++'.

      fab-top_line = fab-lines - line_count + 1.

      IF fab-top_line < 1.

        fab-top_line = 1.

      ENDIF.

  ENDCASE.

ENDFORM.

*&---------------------------------------------------------------------

 

*&      Module  check_state  INPUT

*&---------------------------------------------------------------------

 

*       text

*----------------------------------------------------------------------

 

MODULE check_state INPUT.

  DATA: p_len TYPE i.

  DATA: p_year TYPE i.

  IF it-yymm NE space AND it-week NE space.

    p_len = strlen( it-yymm ).

    p_year = it-yymm+0(4).

    IF p_len <> 6 OR p_year < 1000.

      CLEAR ok_code.

      MESSAGE e077 WITH '請輸入正确的月份 !'.

    ENDIF.

    IF it-yymm+4(2) > 12 OR it-yymm+4(2) = 0.

      CLEAR ok_code.

      MESSAGE e077 WITH '請輸入正确的月份 !'.

    ENDIF.

    IF it-week >= 1 AND it-week <= 6 .

    ELSE.

      CLEAR ok_code.

      MESSAGE e077 WITH '請輸入正確的星期  !'.

    ENDIF.

    PERFORM. compute_date USING it-yymm it-week

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9333231/viewspace-277756/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: BOM
请登录后发表评论 登录
全部评论

注册时间:2008-05-17

  • 博文量
    41
  • 访问量
    41223