ITPub博客

首页 > Linux操作系统 > Linux操作系统 > TC维护常用的部分代码

TC维护常用的部分代码

原创 Linux操作系统 作者:gaohangzzu 时间:2010-06-04 09:22:32 0 删除 编辑

1 :对话框

       data:w_ret(1) TYPE c.        
    PERFORM frm_popup_confirm USING text-m06 cos_x CHANGING w_ret.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; }     IF w_ret = '1'.
      process 1
    ELSEIF w_ret = '2'.
      it_t040 = it_t040bk.
    ELSE.
      RETURN.
    ENDIF.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*  子程序名称 : 确认对话框
*  子程序名   : frm_popup_confirm
*  概要       : 确认对话框
* 参数       : 无
*  返回值     : 无
*----------------------------------------------------------------------*
FORM frm_popup_confirm USING fw_text TYPE c
                             fw_disp TYPE c
                       CHANGING fw_ans TYPE c.
  CLEAR fw_ans.
  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      titlebar              = text-p01(确认对话框)
      text_question         = fw_text
      text_button_1         = text-p02(是)
      text_button_2         = text-p03(否)
      display_cancel_button = fw_disp
    IMPORTING
      answer                = fw_ans
    EXCEPTIONS
      text_not_found        = 1
      OTHERS                = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " frm_popup_confirm

2 下载内表

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S52 { color: #0000FF; }  PERFORM frm_download TABLES it_t040.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*  子程序名称 : 数据下载
*  子程序名   : frm_download
*  概要       : 数据下载
* 参数       : 无
*  返回值     : 无
*----------------------------------------------------------------------*
FORM frm_download TABLES fit_data.
  DATA: lw_filename TYPE string,
        lw_path TYPE string,
        lw_fullpath TYPE string,
        lw_filter TYPE string.

  CLEAR lw_filename.
  lw_filter = text-p04.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_extension    = 'xls'
      file_filter          = lw_filter
      initial_directory    = 'C:\'
    CHANGING
      filename             = lw_filename
      path                 = lw_path
      fullpath             = lw_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CHECK lw_filename IS NOT INITIAL.
  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename                  = lw_filename
      write_field_separator     = cl_abap_char_utilities=>horizontal_tab
      trunc_trailing_blanks     = 'X'
      codepage                  = '4110'
      write_bom                 = 'X'
    CHANGING
      data_tab                  = fit_data[]
    EXCEPTIONS
      file_write_error          = 1
      no_batch                  = 2
      gui_refuse_filetransfer   = 3
      invalid_type              = 4
      no_authority              = 5
      unknown_error             = 6
      header_not_allowed        = 7
      separator_not_allowed     = 8
      filesize_not_allowed      = 9
      header_too_long           = 10
      dp_error_create           = 11
      dp_error_send             = 12
      dp_error_write            = 13
      unknown_dp_error          = 14
      access_denied             = 15
      dp_out_of_memory          = 16
      disk_full                 = 17
      dp_timeout                = 18
      file_not_found            = 19
      dataprovider_exception    = 20
      control_flush_error       = 21
      not_supported_by_gui      = 22
      error_no_gui              = 23
      OTHERS                    = 24
          .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " frm_download

3 显示-->更改按钮的实现

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S52 { color: #0000FF; } MODULE user_command_9060 INPUT.
  DELETE it_t110 WHERE uname = space.

  save_ok = ok_code.
  CLEAR ok_code.

  CASE save_ok.
    WHEN cos_anlz.
*     点击显示<->变更
      PERFORM frm_anlz_9060.

       endcase.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*&      Form  FRM_ANLZ_9060
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_anlz_9060 .
  IF iw_status-mode = cos_u AND it_t110 <> it_t110bk.
*   变更模式下
    PERFORM frm_popup_confirm USING text-m06 cos_x CHANGING w_ret.
    IF w_ret = '1'.
      PERFORM frm_save_9060.
    ELSEIF w_ret = '2'.
      it_t110 = it_t110bk.
    ELSE.
      RETURN.
    ENDIF.
  ENDIF.

  IF iw_status-mode = cos_u.
    PERFORM frm_unlock_table USING '9'.
  ELSEIF iw_status-mode = cos_d.
    PERFORM frm_lock_table USING '9'.
    mcr_show_msg.
  ENDIF.

  IF iw_status-mode = cos_u.
    mcr_set_status text-t06 text-l04 cos_d sy-dynnr.
  ELSEIF iw_status-mode = cos_d.
    mcr_set_status text-t05 text-l04 cos_u sy-dynnr.
  ENDIF.
ENDFORM.                    " FRM_ANLZ_9060

 

PBO里面的两个地方设置

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S52 { color: #0000FF; } PROCESS BEFORE OUTPUT.
  MODULE status_module.

  MODULE initial_9060.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*&      Module  status_module  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_module OUTPUT.
  IF sy-dynnr = '9040'.
    APPEND cos_load TO it_fcode.
  ENDIF.
  SET PF-STATUS 'STT_010' EXCLUDING it_fcode.
  SET TITLEBAR 'TIT_010' WITH iw_status-actxt iw_status-title.
ENDMODULE.                 " status_module  OUTPUT

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*&      Module  INITIAL_9060  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE initial_9060 OUTPUT.
  IF iw_status-mode = cos_a.
    mcr_set_empty_record it_t110.
  ENDIF.

  w_tabline = LINES( it_t110 ).
  ctrl_9060-lines = w_tabline.

  IF iw_status-mode = cos_d OR w_tabline = 0.
*   显示模式或没有记录的情况下,设置为只读状态
    iw_col_9060-screen-input = '0'.
    iw_col_9060-screen-required = '0'.
    MODIFY ctrl_9060-cols FROM iw_col_9060
                          TRANSPORTING screen-input screen-required
                          WHERE screen-input = '1' OR
                                screen-input = '0'.
  ELSE.
*   新建模式的情况下,设置为可写状态
    iw_col_9060-screen-input = '1'.
    MODIFY ctrl_9060-cols FROM iw_col_9060 TRANSPORTING screen-input
                          WHERE screen-input = '0'.
    IF iw_status-mode = cos_u.
*     变更模式的情况下,公司代码(主键)列设置为只读状态
      iw_col_9060-screen-input = '0'.
      MODIFY ctrl_9060-cols FROM iw_col_9060 TRANSPORTING screen-input
                            WHERE index = 1.
    ENDIF.

    iw_col_9060-screen-required = '2'.
    MODIFY ctrl_9060-cols FROM iw_col_9060
                          TRANSPORTING screen-required
                          WHERE index <= 1.
  ENDIF.

  IF w_tabline = 0.
    ctrl_9060-line_sel_mode = '3'.
  ELSE.
    ctrl_9060-line_sel_mode = '2'.
  ENDIF.
ENDMODULE.                 " INITIAL_9060  OUTPUT

 

4 on chain-input 和on input的差异

组合字段条件调用

CHAIN.

FIELD:f1,f2,…

MODULE mod1 ON CHAIN-INPUT | CHAIN-QEQUEST.

FIELD:g1,g2,…

MODULE mod2 ON CHAIN-INPUT | CHAIN-QEQUEST.

…

ENDCHAIN.

当fi之一满足条件时,mod1被调用,                                                                                                当gi或fi满足条件时Mod2被调用

CHAIN.

FIELD:f1,f2.

FIELD: f3 MODULE mod1 ON INPUT.

ENDCHAIN.

只有f3包含非初始值时才调用mod1

CHAIN.

FIELD:f1,f2.

FIELD:f3 MODULE mod1 ON CHAIN-INPUT.

ENDCHAIN.

f1,f2,f3中任一字段包含非初始值時都調用mod1.

注意on input 与on chain-input的不同

 

5 用户ID明细表路径检查

 

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S52 { color: #0000FF; }     PERFORM frm_filepath_chk  USING    p_lcl_ph
                              CHANGING lw_return.

 

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*  子程序名称 :文件路径检查
*  子程序名   :frm_filepath_chk
*  概要       :文件路径检查
* 参数1      :fw_path   TYPE c
*  参数2      :fw_return TYPE c
*----------------------------------------------------------------------*
FORM frm_filepath_chk  USING    fw_path   TYPE c
                       CHANGING fw_return TYPE c.
  DATA:  lw_filename TYPE string,
         lw_drive    TYPE pcfile-drive,
         lw_path     TYPE string,
         lw_return   TYPE abap_bool.
  CLEAR fw_return.
  lw_filename = fw_path.
  CALL FUNCTION 'CH_SPLIT_FILENAME'
    EXPORTING
      complete_filename = lw_filename
    IMPORTING
      drive             = lw_drive
      path              = lw_path
    EXCEPTIONS
      invalid_drive     = 1
      invalid_path      = 2
      OTHERS            = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CONCATENATE lw_drive lw_path INTO lw_path SEPARATED BY ':'.
  CLEAR lw_return.
  CALL METHOD cl_gui_frontend_services=>directory_exist
    EXPORTING
      directory            = lw_path
    RECEIVING
      result               = lw_return
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5.
  IF sy-subrc <> 0 OR lw_return = space.
    fw_return = cos_x.
  ENDIF.
ENDFORM.                    " frm_filepath_chk

 

6设置status的标题

第一部分:调用屏幕前的部分

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; }   mcr_set_status text-t05 text-l01 cos_u sy-dynnr.

  mcr_get_t090 'TABNAME = ''ZZZZZT0040'''.

* 锁表处理
  PERFORM frm_lock_table USING '4'.

  mcr_show_msg.

  CALL SCREEN 9000.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S52 { color: #0000FF; } *----------------------------------------------------------------------*
* 宏定义
*----------------------------------------------------------------------*
DEFINE mcr_set_status.
  clear iw_status.
  iw_status-actxt = &1.
  iw_status-title = &2.
  iw_status-mode = &3.
  iw_status-dynnr = &4.

  refresh it_fcode.
  case iw_status-mode.
    when cos_a.
      append cos_anlz to it_fcode.
      append cos_newl to it_fcode.
      append cos_load to it_fcode.
    when cos_d.
      append cos_newl to it_fcode.
      append cos_dele to it_fcode.
    when cos_u.

  endcase.
END-OF-DEFINITION.

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S32 { color: #3399FF; } .L1S52 { color: #0000FF; } DEFINE mcr_get_t090.
  w_where = &1.
  refresh: it_t090o, it_t090n.
  select * from zzzzzt0090
    into table it_t090o
    where (w_where).

  sort it_t090o by tabname ascending
                   tabkey ascending
                   fieldname ascending
                   datum descending
                   uzeit descending.

  delete adjacent duplicates from it_t090o
                  comparing tabname tabkey fieldname.

  delete it_t090o where zchgtp = cos_d.
END-OF-DEFINITION.

 

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } FORM frm_lock_table USING fw_flg TYPE c.
  CLEAR iw_return.
  CASE fw_flg.
    WHEN '4'.
      CALL FUNCTION 'ENQUEUE_EZ_ZZZZZT0040_01'
        EXPORTING
          mode_zzzzzt0040 = 'E'
          mandt           = sy-mandt
          _scope          = '3'
        EXCEPTIONS
          foreign_lock    = 1
          system_failure  = 2
          OTHERS          = 3.

  ENDCASE.

  iw_return-subrc = sy-subrc.
  iw_return-msgid = sy-msgid.
  iw_return-msgty = sy-msgty.
  iw_return-msgno = sy-msgno.
  iw_return-msgv1 = sy-msgv1.
  iw_return-msgv2 = sy-msgv2.
  iw_return-msgv3 = sy-msgv3.
  iw_return-msgv4 = sy-msgv4.

ENDFORM.                    " frm_lock_table

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } DEFINE mcr_show_msg.
  if iw_return-subrc <> 0.
    message id sy-msgid type 'S' number sy-msgno
            display like sy-msgty
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    return.
  endif.
END-OF-DEFINITION.

 

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

上一篇: SAP-SDN
请登录后发表评论 登录
全部评论

注册时间:2010-05-20

  • 博文量
    43
  • 访问量
    91195