小春网

 找回密码
 注册账号
查看: 3777|回复: 80
收起左侧

[随便说说] 捉迷藏游戏,大家一起来玩吧。。。。

[复制链接]
发表于 2009-6-5 12:24:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

x
本帖最后由 阿佩 于 2009-7-24 17:46 编辑

规则

1,首先在本帖子报名。
2,在本版任何一个地方都可以发自己的照片一张,背影除外。
3,可以限时删除,不过至少保留2分钟!----从发帖时间和编辑时间可以看出来。
4,只能把照片以发帖和回复帖子形式发出来,不可以编辑以前的帖子

下午3点开始试运行。
大家踊跃参加啊。


获胜的人在本帖子贴出来自己发照片的那个连接。

为了操作方便,直接在本贴内奖励经验值


*&---------------------------------------------------------------------*
*& Report  Y_IT1_UPLOAD
*&
*&---------------------------------------------------------------------*
*& アドオンテーブルアップロードプログラム
*&
*&---------------------------------------------------------------------*

REPORT  ybuta_zar0002  NO STANDARD PAGE HEADING.
* Table fields information type
TYPES:
  t_tabinfo         TYPE  STANDARD TABLE OF  rpy_fiel.

DATA:
  itab_data         TYPE  stringtab,        "Input File data
  r_itab_table      TYPE  REF TO data,      "Table data pointer
  itab_tabinfo      TYPE  t_tabinfo,        "Table fields information
  v_tab             TYPE  c,                "Tab
  v_subrc           TYPE  i,
  v_input_count     TYPE  i,
  v_exectype        TYPE  c  LENGTH  1.

FIELD-SYMBOLS:
           TYPE  STANDARD TABLE.

*Input Screen
PARAMETERS:
* password
  p_pwd(12)         TYPE  c  LOWER CASE,
* table name
  p_table           TYPE  rsrd1-tbma_val,
* input file name
  p_ufile           TYPE  char128  LOWER CASE.

SELECTION-SCREEN:
**file type
  BEGIN OF BLOCK block1 WITH FRAME TITLE text-020,
  BEGIN OF LINE,
  COMMENT 1(18) text-003  FOR FIELD  rb_pc.
PARAMETERS:
  rb_pc   RADIOBUTTON GROUP f01
          USER-COMMAND  zfile.
SELECTION-SCREEN:
  COMMENT 33(18) text-002  FOR FIELD  rb_host.
PARAMETERS:
  rb_host  RADIOBUTTON GROUP f01.
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block1.

SELECTION-SCREEN:
**update type
  BEGIN OF BLOCK block2 WITH FRAME TITLE text-004,
  BEGIN OF LINE,
  COMMENT 1(18) text-005  FOR FIELD  r_upset1.
PARAMETERS:
  r_upset1  RADIOBUTTON GROUP f02.      "overwrite
SELECTION-SCREEN:
  COMMENT 33(18) text-019  FOR FIELD  r_upset4.
PARAMETERS:
  r_upset4  RADIOBUTTON GROUP f02.     "Delete
SELECTION-SCREEN:
  COMMENT 65(18) text-021  FOR FIELD  r_upset5.
PARAMETERS:
  r_upset5  RADIOBUTTON GROUP f02.
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block2.

**File Type
SELECTION-SCREEN:
  BEGIN OF BLOCK block3 WITH FRAME TITLE text-007,
  BEGIN OF LINE,
  COMMENT 1(18) text-008  FOR FIELD  p_notcm1.
PARAMETERS:
  p_notcm1  RADIOBUTTON GROUP f03. "no separator
SELECTION-SCREEN:
  COMMENT 33(18) text-009  FOR FIELD  p_notcm2.
PARAMETERS:
  p_notcm2  RADIOBUTTON GROUP f03.     "separator comma
SELECTION-SCREEN:
  END OF LINE,
  BEGIN OF LINE,
  COMMENT 1(18) text-011  FOR FIELD  p_notcm3.
PARAMETERS:
  p_notcm3  RADIOBUTTON GROUP f03 DEFAULT 'X'.     "separator tab
SELECTION-SCREEN:
  END OF LINE,
  BEGIN OF LINE,
  END OF LINE,
  BEGIN OF LINE,
  COMMENT 1(18) text-018  FOR FIELD  p_whead.
PARAMETERS:
  p_whead  AS CHECKBOX.
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block3.

**Auto fields
SELECTION-SCREEN:
  BEGIN OF BLOCK block4 WITH FRAME TITLE text-012,
  BEGIN OF LINE,
  COMMENT 1(24) text-013  FOR FIELD  p_date.
PARAMETERS:
  p_date  AS CHECKBOX.    "date to sy-datum
SELECTION-SCREEN:
  COMMENT 33(24) text-014  FOR FIELD  p_time.
PARAMETERS:
  p_time  AS CHECKBOX.    "time to sy-uzeit
SELECTION-SCREEN:
  END OF LINE,
  BEGIN OF LINE,
  COMMENT 1(24) text-015  FOR FIELD  p_name.
PARAMETERS:
  p_name  AS CHECKBOX.     "name to sy-uname
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block4.

*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF  screen-name  =  'P_PWD'.
      screen-invisible  =  '1'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR  p_ufile.

* File name input help
  IF  rb_pc  =  'X'.
    PERFORM  fm_get_filename_pc
               CHANGING
                 p_ufile.

  ELSE.
    PERFORM  fm_get_filename
               CHANGING
                 p_ufile.
  ENDIF.

*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.

  IF  sy-ucomm    'ZFILE'.
    PERFORM  check_pwd
               CHANGING
                 p_pwd.

    PERFORM  check_tablename
               USING
                 p_table.

    IF  rb_pc  =  'X'.
      PERFORM  check_filename
                 USING
                   p_ufile.

    ELSE.
*      PERFORM  check_filename_host
*                 USING
*                   p_ufile.

    ENDIF.
  ENDIF.

*&---------------------------------------------------------------------*
START-OF-SELECTION.

* From PC
  IF  rb_pc  =  'X'.
*   Upload file data
    PERFORM  fm_uploadpc
               USING
                 p_ufile
               CHANGING
                 itab_data.
* From Host
  ELSE.
    PERFORM  fm_uploadhost
               USING
                 p_ufile
               CHANGING
                 itab_data.

  ENDIF.
* Delete header
  IF p_whead = 'X'.
    DELETE itab_data INDEX 1.
  ENDIF.

* Empty data
  IF itab_data IS INITIAL
  AND sy-batch    'X'.
    MESSAGE s000(0k)  WITH  text-m12
      DISPLAY LIKE  'E'.
    RETURN.
  ENDIF.

* Auto set field
  IF p_notcm1 IS INITIAL.
    IF p_date = 'X'.
      REPLACE ALL OCCURRENCES OF '&date&'
        IN TABLE itab_data WITH sy-datum
        IN CHARACTER MODE
        IGNORING CASE.
    ENDIF.

    IF p_time = 'X'.
      REPLACE ALL OCCURRENCES OF '&time&'
        IN TABLE itab_data WITH sy-uzeit
        IN CHARACTER MODE
        IGNORING CASE.
    ENDIF.

    IF p_name = 'X'.
      REPLACE ALL OCCURRENCES OF '&name&'
        IN TABLE itab_data WITH sy-uname
        IN CHARACTER MODE
        IGNORING CASE.
    ENDIF.

  ENDIF.
* Get table fields information
  PERFORM  get_tableinfo
             USING
               p_table
             CHANGING
               itab_tabinfo.

  CREATE DATA:
    r_itab_table  TYPE  STANDARD TABLE OF  (p_table).

  ASSIGN:
    r_itab_table->*  TO  .

* Split to each field
  IF p_notcm1 = 'X'.
* No separator
    PERFORM  set_dbdata_fixedlen
               USING
                 p_table
                 itab_tabinfo
                 itab_data
               CHANGING
                 .

  ELSEIF p_notcm2 = 'X'.
* comma separator
    PERFORM  set_dbdata
               USING
                 p_table
                 ','
                 itab_tabinfo
                 itab_data
               CHANGING
                 .
  ELSE.
* tab separator
    v_tab = cl_abap_char_utilities=>horizontal_tab.
    PERFORM  set_dbdata
               USING
                 p_table
                 v_tab
                 itab_tabinfo
                 itab_data
               CHANGING
                 .
  ENDIF.

  v_input_count  =  LINES( itab_data ).
  FREE  itab_data.

  PERFORM  check_duplicates
             USING
               itab_tabinfo
             CHANGING
               
               v_subrc.

  IF  v_subrc  IS NOT INITIAL.
    MESSAGE s000(0k)  WITH  text-m01
      DISPLAY LIKE  'E'.
    RETURN.
  ENDIF.

* DB Process
  CASE  'X'.
    WHEN  r_upset1.
*   Modify
      PERFORM  modify_table
                 USING
                   p_table
                  
                 CHANGING
                   v_subrc.

      v_exectype  =  'M'.
    WHEN  r_upset4.
* Delete
      PERFORM  delete_tabledata
                 USING
                   p_table
                  
                 CHANGING
                   v_subrc.

      v_exectype  =  'D'.
    WHEN  r_upset5.
      PERFORM  del_and_ins_data
                 USING
                   p_table
                  
                 CHANGING
                   v_subrc.

      v_exectype  =  'U'.
  ENDCASE.
  IF  sy-batch  =  'X'.
    IF  v_subrc  IS INITIAL.
      COMMIT WORK.
      MESSAGE  text-m20  TYPE 'S'.
    ELSE.
      MESSAGE  text-m21  TYPE 'S'.
    ENDIF.
  ELSE.
    IF  v_subrc  IS INITIAL.
      WRITE: / text-m20.
    ELSE.
      WRITE: / text-m21.
    ENDIF.

*   Log Table
    PERFORM  insert_resultdata
               USING
                 v_subrc
                 p_table
                 v_exectype
                 v_input_count.

  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  FM_GET_FILENAM
*&---------------------------------------------------------------------*
*       Get PC file name
*----------------------------------------------------------------------*
*        U_TABLENAME    DB Table name
*   U_TABLENAME     DB table name
*      --> U_TABLEDATA     DB data
*      P_V_EXECTYPE  text
*      -->P_V_INS_COUNT  text
*      -->P_V_DLT_COUNT  text
*----------------------------------------------------------------------*
FORM  insert_resultdata
        USING
          u_subrc                 TYPE  sysubrc
          u_tablename             TYPE  c
          u_exectype              TYPE  c
          u_input_count           TYPE  i.

  DATA:
    l_str_result    TYPE  ybuta_t0001.
*----------------------------------------------------------------------*
  CLEAR: l_str_result.

  l_str_result-username     =  sy-uname.
  l_str_result-execdate     =  sy-datum.
  l_str_result-exectime     =  sy-uzeit.
  l_str_result-exectype     =  u_exectype.
  l_str_result-tablename    =  u_tablename.

  IF  u_subrc  IS INITIAL.
    l_str_result-rec_count    =  u_input_count.
    l_str_result-exec_status  =  'S'.
  ELSE.
    l_str_result-exec_status  =  'E'.
  ENDIF.

  INSERT  ybuta_t0001  FROM  l_str_result.
  IF  sy-subrc  =  0.
    COMMIT WORK.

  ELSE.
    ROLLBACK WORK.
    IF  sy-batch  =  'X'.
      MESSAGE  text-m22  TYPE  'S'.
      MESSAGE  text-m16  TYPE  'S'.
    ELSE.
      WRITE: / text-m22,
             / text-m16.
    ENDIF.
  ENDIF.

ENDFORM.                    " insert_resultdata
*&---------------------------------------------------------------------*
*&      Form  check_duplicates
*&---------------------------------------------------------------------*
*       CHECK RECORDS WITH THE SAME PRIMARY KEY
*----------------------------------------------------------------------*
*      --> U_ITAB_TABINFO  text
*      P_ITAB_TABINFO  text
*      -->P_P_TABLE  text
*      -->P_ITAB_TABLE  text
*      -->P_V_INPUT_COUNT  text
*       U_TABLENAME  TABLENAME
*----------------------------------------------------------------------*
FORM  check_tablename
        USING
          u_tablename             TYPE  c.

  DATA:
    l_tabname       TYPE  tabname.
*----------------------------------------------------------------------*
  IF  u_tablename  IS INITIAL.
    SET CURSOR FIELD  'P_TABLE'.
    MESSAGE  text-m26  TYPE  'E'.
  ENDIF.

*check table existence
  SELECT  SINGLE tabname
     FROM dd02l
     INTO l_tabname
    WHERE tabname  = u_tablename
      AND as4local = 'A'
      AND as4vers  = 0
      AND tabclass = 'TRANSP'.

  IF sy-subrc  0.
    SET CURSOR FIELD  'P_TABLE'.
    MESSAGE e000(0k)
      WITH  text-m09  u_tablename  text-m10.
  ENDIF.

*Add-on table check
  IF NOT (  u_tablename(1) = 'Z'
         OR u_tablename(1) = 'Y' ).
    SET CURSOR FIELD  'P_TABLE'.
    MESSAGE e000(0k)
      WITH  text-m09  u_tablename  text-m11.
  ENDIF.

ENDFORM.                    " check_tablename
*&---------------------------------------------------------------------*
*&      Form  fm_uploadhost
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_UFILE  text
*      get_text( ).
      MESSAGE  l_errtext  TYPE  'E'.

  ENDTRY.
ENDFORM.                    " fm_uploadhost
*&---------------------------------------------------------------------*
*&      Form  check_filename_host
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_UFILE  text
*----------------------------------------------------------------------*
FORM  check_filename_host
        USING
          u_ufile                 TYPE  c.

  DATA:
    l_r_root        TYPE  REF TO  cx_root,
    l_errtext       TYPE  string.
*----------------------------------------------------------------------*
  IF  u_ufile  IS INITIAL.
    SET CURSOR FIELD  'P_UFILE'.
    MESSAGE  text-m24  TYPE  'E'.
  ENDIF.

  TRY.
      OPEN DATASET  u_ufile  FOR INPUT
        IN TEXT MODE ENCODING DEFAULT.
      IF  sy-subrc    0.
        SET CURSOR FIELD  'P_UFILE'.
        MESSAGE  text-m23  TYPE  'E'.
      ENDIF.

      CLOSE DATASET  u_ufile.
    CATCH  cx_root  INTO  l_r_root.
      l_errtext  =  l_r_root->get_text( ).
      MESSAGE  l_errtext  TYPE  'E'.

  ENDTRY.
ENDFORM.                    " check_filename_host
*&---------------------------------------------------------------------*
*&      Form  fm_get_filename_pc
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      file_open_dialog
*    EXPORTING
*      window_title            =
*      default_extension       =
*      default_filename        =
*      file_filter             =
*      with_encoding           =
*      initial_directory       =
*      multiselection          =
    CHANGING
      file_table              = l_filetab
      rc                      = l_rc
*      user_action             =
*      file_encoding           =
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5
          .
  IF sy-subrc  0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  READ TABLE  l_filetab  INTO  l_str_file
    INDEX  1.

  c_ufile  =  l_str_file-filename.
ENDFORM.                    " fm_get_filename_pc
*&---------------------------------------------------------------------*
*&      Form  del_and_ins_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_TABLE  text
*      -->P_  text
*      
头像被屏蔽
发表于 2009-6-5 12:25:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2009-6-5 12:25:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-6-5 12:25:58 | 显示全部楼层
报名!!不上照片,呵呵呵
回复

使用道具 举报

 楼主| 发表于 2009-6-5 12:26:34 | 显示全部楼层
本帖最后由 阿佩 于 2009-7-24 17:45 编辑
天啊
还要照片!!

人丑不好意思玩阿
若山牧水 发表于 2009-6-5 12:25

靠。那就看自己藏起来的艺术了。参加吧。
*&---------------------------------------------------------------------*
*& Report  YBUTA_ZAR0001
*&
*&---------------------------------------------------------------------*
*& アドオンテーブルダウンロードプログラム
*&
*&---------------------------------------------------------------------*

REPORT  ybuta_zar0001  NO STANDARD PAGE HEADING.
TYPE-POOLS:
  rsds.

* Table fields information type
TYPES:
  t_tabinfo         TYPE  STANDARD TABLE OF rpy_fiel.

DATA:
  itab_data         TYPE  stringtab,    "Input File data
  itab_table        TYPE  REF TO data,  "Table data pointer
  itab_tabinfo      TYPE  t_tabinfo,
  v_sep             TYPE  c  LENGTH  1, "separator
  v_where           TYPE  string,
  v_canc            TYPE  c  LENGTH  1,
  v_writemode       TYPE  c  LENGTH  1.

FIELD-SYMBOLS:
           TYPE  STANDARD TABLE.

* Parameters Definition
PARAMETERS:
  p_table      TYPE  rsrd1-tbma_val,        "Table Name
  p_dfile      TYPE  char128  LOWER CASE.    "Output File Name

**File Format
SELECTION-SCREEN:
  BEGIN OF BLOCK block6 WITH FRAME TITLE text-016.
SELECTION-SCREEN:
  BEGIN OF LINE,
  COMMENT 3(16) text-003  FOR FIELD  rb_pc.
PARAMETERS:
  rb_pc   RADIOBUTTON GROUP r01
          USER-COMMAND  zfile.
SELECTION-SCREEN:
  COMMENT 28(16) text-002  FOR FIELD  rb_host.
PARAMETERS:
  rb_host RADIOBUTTON GROUP r01.
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block6.


**Writing Format
SELECTION-SCREEN:
  BEGIN OF BLOCK block2 WITH FRAME TITLE text-004,
  BEGIN OF LINE,
  COMMENT 3(16) text-005  FOR FIELD  r_upset1.
PARAMETERS:
  r_upset1 RADIOBUTTON GROUP r02  DEFAULT 'X'.      "Overwrite
SELECTION-SCREEN:
  COMMENT 28(16) text-006  FOR FIELD  r_upset2.
PARAMETERS:
  r_upset2 RADIOBUTTON GROUP r02.      "Add
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block2.
**File Format
SELECTION-SCREEN:
  BEGIN OF BLOCK block3 WITH FRAME TITLE text-007,
  BEGIN OF LINE,
  COMMENT 3(16) text-008  FOR FIELD  p_notcm1.
PARAMETERS:
  p_notcm1 RADIOBUTTON GROUP r03. "No Pause
SELECTION-SCREEN:
  COMMENT 28(16) text-009  FOR FIELD  p_notcm2.
PARAMETERS:
  p_notcm2 RADIOBUTTON GROUP r03.      "Comma Pause
SELECTION-SCREEN:
  COMMENT 55(16) text-010  FOR FIELD  p_notcm3.
PARAMETERS:
  p_notcm3 RADIOBUTTON GROUP r03 DEFAULT 'X'.  "Tab Pause
SELECTION-SCREEN:
  END OF LINE,
  END OF BLOCK block3.
**Title
SELECTION-SCREEN:
  BEGIN OF BLOCK block4 WITH FRAME TITLE text-011,
  BEGIN OF LINE.
PARAMETERS:
  p_hyouda AS CHECKBOX.                "Title Display ON
SELECTION-SCREEN:
  COMMENT 3(20) text-012  FOR FIELD  p_hyouda,
  END OF LINE.
**Kind of Title
SELECTION-SCREEN:
  BEGIN OF BLOCK block5 WITH FRAME TITLE text-013,
  BEGIN OF LINE,
  COMMENT 1(16) text-014  FOR FIELD  p_komna1.
PARAMETERS:
  p_komna1 RADIOBUTTON GROUP r04 DEFAULT 'X'. "Output field name
SELECTION-SCREEN:
  COMMENT 26(16) text-015  FOR FIELD  p_komna2.
PARAMETERS:
  p_komna2 RADIOBUTTON GROUP r04.      "Output Description
SELECTION-SCREEN:
  END   OF LINE,
  END   OF BLOCK block5,
  END   OF BLOCK block4.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR  p_dfile.
  IF  rb_pc  =  'X'.
    PERFORM  fm_get_filename
               CHANGING
                 p_dfile.
  ELSE.
    PERFORM  fm_get_filename_host
               CHANGING
                 p_dfile.
  ENDIF.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
  IF  sy-ucomm    'ZFILE'.
    PERFORM  check_tablename
             USING
               p_table.
    IF  rb_pc  =  'X'.
      PERFORM  fm_check_directory
                 USING
                   p_dfile.
    ELSE.
*      PERFORM  fm_check_dir_host
*                 USING
*                   p_dfile.
    ENDIF.
  ENDIF.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  IF  sy-batch  =  'X'.
    CLEAR  v_where.
  ELSE.
    PERFORM  where_edit
               USING
                 p_table
               CHANGING
                 v_where
                 v_canc.
    IF  v_canc  IS NOT INITIAL.
      RETURN.
    ENDIF.
  ENDIF.
  CREATE DATA  itab_table  TYPE STANDARD TABLE OF (p_table).
  ASSIGN  itab_table->*  TO  .
* Select data
  PERFORM  select_data
             USING
               p_table
               v_where
             CHANGING
               .
  IF    IS INITIAL
  AND sy-batch    'X'.
    MESSAGE  s429(mo).
    RETURN.
  ENDIF.
* Get table fields information
  PERFORM  get_tableinfo
             USING
               p_table
             CHANGING
               itab_tabinfo.
  PERFORM  sort_itab
             USING
               itab_tabinfo
             CHANGING
               .
  IF p_notcm2 = 'X'.
    v_sep = ','.
  ELSEIF p_notcm3 = 'X'.
    v_sep = cl_abap_char_utilities=>horizontal_tab.
  ENDIF.
* Output header
  IF  p_notcm1  =  space
  AND p_hyouda  =  'X'.
    PERFORM  insert_header
               USING
                 p_komna1
                 itab_tabinfo
                 v_sep
               CHANGING
                 itab_data.
  ENDIF.
* Create file data
  IF p_notcm1 = 'X'.
* No separator
    PERFORM  set_data_fixedlen
               USING
                 itab_tabinfo
                 
               CHANGING
                 itab_data.
  ELSE.
    PERFORM  set_dbdata
               USING
                 v_sep
                 
               CHANGING
                 itab_data.
  ENDIF.
  FREE: ,
        itab_tabinfo.
* Download file
*   overwrite
  IF  r_upset1  =  'X'.
    v_writemode  =  space.
*   add
  ELSE.
    v_writemode  =  'X'.
  ENDIF.
*   To PC
  IF  rb_pc  =  'X'.
    PERFORM  download_data
               USING
                 p_dfile
                 itab_data
                 v_writemode.
*   To Host
  ELSE.
    PERFORM  transfer_downdata
               USING
                 p_dfile
                 itab_data
                 v_writemode.
  ENDIF.
  IF  sy-batch  =  'X'.
    MESSAGE  text-m05  TYPE  'S'.
  ELSE.
    WRITE: / text-m05.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  FM_GET_FILENAM
*&---------------------------------------------------------------------*
*       Get PC file name
*----------------------------------------------------------------------*
*      file_save_dialog
*    EXPORTING
*      window_title         =
*      default_extension    =
*      default_file_name    =
*      with_encoding        =
*      file_filter          =
*      initial_directory    =
*      prompt_on_overwrite  = 'X'
    CHANGING
      filename             = l_filename
      path                 = l_path
      fullpath             = l_fullpath
*      user_action          =
*      file_encoding        =
    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.
  c_filename  =  l_fullpath.
ENDFORM.                    "FM_GET_FILENAME
*&---------------------------------------------------------------------*
*&      Form  select_data
*&---------------------------------------------------------------------*
*       select from DB
*----------------------------------------------------------------------*
*      -->U_TABLENAME     DB table name
*      U_FILE  File name
*      -->U_DATA  data
*      -->U_MODE  Overwrite/add
*----------------------------------------------------------------------*
FORM  download_data
        USING
          u_file                  TYPE  c
          u_data                  TYPE  stringtab
          u_mode                  TYPE  c.
  DATA:
    l_filename      TYPE  string.
*----------------------------------------------------------------------*
  l_filename  =  u_file.
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
*     BIN_FILESIZE                    =
      filename                        = l_filename
*     FILETYPE                        = 'ASC'
      append                          = u_mode
*     WRITE_FIELD_SEPARATOR           = ' '
*     HEADER                          = '00'
*     TRUNC_TRAILING_BLANKS           = ' '
*     WRITE_LF                        = 'X'
*     COL_SELECT                      = ' '
*     COL_SELECT_MASK                 = ' '
*     DAT_MODE                        = ' '
*     CONFIRM_OVERWRITE               = ' '
*     NO_AUTH_CHECK                   = ' '
*     CODEPAGE                        = ' '
*     IGNORE_CERR                     = ABAP_TRUE
*     REPLACEMENT                     = '#'
*     WRITE_BOM                       = ' '
      trunc_trailing_blanks_eol       = space
*     WK1_N_FORMAT                    = ' '
*     WK1_N_SIZE                      = ' '
*     WK1_T_FORMAT                    = ' '
*     WK1_T_SIZE                      = ' '
*     WRITE_EOL                       = ABAP_TRUE
*   IMPORTING
*     FILELENGTH                      =
    TABLES
      data_tab                        = u_data
*     FIELDNAMES                      =
    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
      OTHERS                          = 22.
  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.                    " download_data
*&---------------------------------------------------------------------*
*&      Form  get_tableinfo
*&---------------------------------------------------------------------*
*       Get table fields information
*----------------------------------------------------------------------*
*  -->  U_TABLENAME    DB Table name
*   0.
      lds_fieldstab-tablename = lds_dd03l-tabname.
      lds_fieldstab-fieldname = lds_dd03l-fieldname.
      APPEND lds_fieldstab TO ldt_fieldstab.
      IF sy-tabix >= 20.
        EXIT.
      ENDIF.
    ENDLOOP.
  ENDIF.
  CALL FUNCTION 'FREE_SELECTIONS_INIT'
*     EXPORTING
*       KIND                           = 'T'
*       EXPRESSIONS                    =
*       FIELD_RANGES_INT               =
*       FIELD_GROUPS_KEY               =
*       RESTRICTION                    =
*       ALV                            =
*       CURR_QUAN_PROG                 = SY-CPROG
*       CURR_QUAN_RELATION             =
     IMPORTING
       selection_id                   = ldf_selid
*       WHERE_CLAUSES                  =
*       EXPRESSIONS                    =
*       FIELD_RANGES                   =
*       NUMBER_OF_ACTIVE_FIELDS        =
     TABLES
       tables_tab   = ldt_tablestab
       fields_tab   = ldt_fieldstab
     EXCEPTIONS
       fields_incomplete              = 1
       fields_no_join                 = 2
       field_not_found                = 3
       no_tables                      = 4
       table_not_found                = 5
       expression_not_supported       = 6
       incorrect_expression           = 7
       illegal_kind                   = 8
       area_not_found                 = 9
       inconsistent_area              = 10
       kind_f_no_fields_left          = 11
       kind_f_no_fields               = 12
       too_many_fields                = 13
       dup_field                      = 14
       field_no_type                  = 15
       field_ill_type                 = 16
       dup_event_field                = 17
       node_not_in_ldb                = 18
       area_no_field                  = 19
       OTHERS                         = 20
              .
  IF sy-subrc  0.
    MESSAGE  e001(00)  WITH  text-m06.
  ENDIF.
  CONCATENATE
      text-m02
      u_table
    INTO  l_title
    SEPARATED BY  space.
* 動的選択画面 - 表示
  CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
    EXPORTING
      selection_id  = ldf_selid
      title         = l_title
      frame_text    = '選択基準'
      status        = 1
      tree_visible  = ' '
    IMPORTING
      where_clauses = ldt_clauses
    TABLES
      fields_tab    = ldt_fieldstab
    EXCEPTIONS
      no_action     = 2
      OTHERS        = 5.
  CASE sy-subrc.
    WHEN 0.
    WHEN 2.
      c_canc  =  'X'.
      RETURN.
    WHEN OTHERS.
      MESSAGE  e001(00)  WITH  text-m06.
  ENDCASE.
* 対象テーブルの入力値だけを取得
  lds_clauses-tablename = u_table.
  READ TABLE ldt_clauses
    WITH KEY tablename  =  lds_clauses-tablename
        INTO lds_clauses.                                   "#EC *
* SQLのWhere句用に加工
  LOOP AT lds_clauses-where_tab INTO ldf_line.
    CONCATENATE prf_where
                ldf_line
           INTO prf_where  SEPARATED BY space.
  ENDLOOP.
ENDFORM.                    " where_edit
*&---------------------------------------------------------------------*
*&      Form  fm_check_directory
*&---------------------------------------------------------------------*
*       CHECK DIRECTORY EXISTENCE
*----------------------------------------------------------------------*
*      --> U_FILENAME  FILENAME
*----------------------------------------------------------------------*
FORM  fm_check_directory
        USING
          u_filename              TYPE  c.
  DATA:
    l_c_filename    TYPE  string,
    l_c_result      TYPE  c  LENGTH  1,
    l_c_separator   TYPE  c  LENGTH  1,
    l_c_directory   TYPE  string.
*----------------------------------------------------------------------*
  IF  u_filename  IS INITIAL.
    SET CURSOR FIELD  'P_DFILE'.
    MESSAGE  text-m09  TYPE  'E'.
  ENDIF.
  CLEAR: l_c_result,
         l_c_separator.
  l_c_filename  =  u_filename.
  CALL METHOD cl_gui_frontend_services=>get_file_separator
    CHANGING
      file_separator       = l_c_separator
    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.
  PERFORM  fm_split_filename
             USING
               l_c_filename
               l_c_separator
             CHANGING
               l_c_directory.
  PERFORM  fm_check_pc_dir
             USING
               l_c_directory
             CHANGING
               l_c_result.
  IF  l_c_result IS INITIAL.
    SET CURSOR FIELD  'P_DFILE'.
    MESSAGE  text-m07  TYPE  'E'.
  ENDIF.
  PERFORM  fm_check_pc_dir
             USING
               l_c_filename
             CHANGING
               l_c_result.
  IF  l_c_result IS NOT INITIAL.
    SET CURSOR FIELD  'P_DFILE'.
    MESSAGE  text-m09  TYPE  'E'.
  ENDIF.
ENDFORM.                    " fm_check_directory
*&---------------------------------------------------------------------*
*&      Form  check_tablename
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_TABLE  text
*----------------------------------------------------------------------*
FORM  check_tablename
        USING
          u_tablename             TYPE  c.
  DATA:
    l_tabname       TYPE  tabname.
*----------------------------------------------------------------------*
  IF  u_tablename  IS INITIAL.
    SET CURSOR FIELD  'P_TABLE'.
    MESSAGE  text-m10  TYPE  'E'.
  ENDIF.
*check table existence
  SELECT  SINGLE tabname
     FROM dd02l
     INTO l_tabname
    WHERE tabname  = u_tablename
      AND as4local = 'A'
      AND as4vers  = 0
      AND tabclass = 'TRANSP'.
  IF sy-subrc  0.
    SET CURSOR FIELD  'P_TABLE'.
    MESSAGE e000(0k)
      WITH  text-m02  u_tablename  text-m03.
  ENDIF.
*Add-on table check
  IF NOT (  u_tablename(1) = 'Z'
         OR u_tablename(1) = 'Y' ).
    SET CURSOR FIELD  'P_TABLE'.
    MESSAGE e000(0k)
      WITH  text-m02  u_tablename  text-m04.
  ENDIF.
ENDFORM.                    " check_tablename
*&---------------------------------------------------------------------*
*&      Form  transfer_downdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_DFILE  text
*      -->P_ITAB_DATA  text
*      -->P_SPACE  text
*----------------------------------------------------------------------*
FORM  transfer_downdata
      USING
        u_dfile                   TYPE  c
        u_itab_data               TYPE  stringtab
        u_access                  TYPE  c.
  DATA:
    l_r_root        TYPE  REF TO  cx_root,
    l_errtext       TYPE  string,
    l_str_data      TYPE  string.
*----------------------------------------------------------------------*
  TRY.
      CASE  u_access.
        WHEN  space.
          OPEN DATASET  u_dfile  FOR OUTPUT
            IN TEXT MODE ENCODING DEFAULT.
        WHEN  'X'.
          OPEN DATASET  u_dfile  FOR APPENDING
            IN TEXT MODE ENCODING DEFAULT.
      ENDCASE.
      IF  sy-subrc    0.
        MESSAGE  text-m08  TYPE  'E'.
      ENDIF.
      LOOP AT  u_itab_data  INTO  l_str_data.
        TRANSFER  l_str_data  TO  u_dfile.
      ENDLOOP.
      CLOSE DATASET  u_dfile.
    CATCH  cx_root  INTO  l_r_root.
      l_errtext  =  l_r_root->get_text( ).
      MESSAGE  l_errtext  TYPE  'E'.
  ENDTRY.
ENDFORM.                    " transfer_downdata
*&---------------------------------------------------------------------*
*&      Form  fm_get_filename_host
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      P_U_FILENAME  text
*      P_L_C_DIRECTORY  text
*      directory_exist
    EXPORTING
      directory            = u_directory
    RECEIVING
      result               = c_result
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5.
  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.                    " fm_check_pc_dir
*&---------------------------------------------------------------------*
*&      Form  sort_itab
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ITAB_TABINFO  text
*      
回复

使用道具 举报

发表于 2009-6-5 12:26:40 | 显示全部楼层
??
难道今天是相片节?。。。。。。。。

热烈欢度~
回复

使用道具 举报

 楼主| 发表于 2009-6-5 12:27:08 | 显示全部楼层
??
难道今天是相片节?。。。。。。。。

热烈欢度~
夕夕舞 发表于 2009-6-5 12:26

还有这个节日。?哈哈
回复

使用道具 举报

发表于 2009-6-5 12:27:48 | 显示全部楼层
这个游戏感觉挺有意思的。。。[.2D2EA467F]
回复

使用道具 举报

头像被屏蔽
发表于 2009-6-5 12:27:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-6-5 12:28:07 | 显示全部楼层
关键是现在肚子太大,见不了人啊
怎么办?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表