*======================================================================* * PROGRAM : ZUPDOWN * * DESCRIPTION : TABLE UPLOAD & DOWNLOAD * * MODULE : °øÅë * * DEVELOPER : ERP25 * * EXTERNAL REF : * * CREATED DATE : 2009.09.18 * *----------------------------------------------------------------------* * MODIFIED HISTORY * * DEVELOPER DATE DESCRIPTION * * ERP25 2009.09.18 ÃÖÃÊ ÀÛ¼º * *======================================================================* REPORT ztableupdown MESSAGE-ID sy. TYPE-POOLS rsds. ********************************************************************** * TABLES ********************************************************************** TABLES: sscrfields. ********************************************************************** * DATA ********************************************************************** DATA: gt_where TYPE rsds_type, gt_whc LIKE rsdswhere OCCURS 0 WITH HEADER LINE, gt_fields LIKE rsdsfields OCCURS 0 WITH HEADER LINE. DATA: filename TYPE string, path TYPE string, fullpath TYPE string, rc TYPE i. DATA gt_fieldcat TYPE lvc_s_fcat OCCURS 0 WITH HEADER LINE. DATA gv_tabclass LIKE dd02l-tabclass. FIELD-SYMBOLS TYPE table. FIELD-SYMBOLS TYPE table. DATA: gt_zfit9010 LIKE zfit9010 OCCURS 0 WITH HEADER LINE , wa_zfit9010 LIKE zfit9010. DATA: BEGIN OF gt_values OCCURS 0, key(40), txt(80), END OF gt_values. DATA: gt_outtab TYPE srtt_strng WITH HEADER LINE. DATA: dtab TYPE REF TO data, dwa TYPE REF TO data. FIELD-SYMBOLS: TYPE table, TYPE ANY. ********************************************************************** * SELECT-OPTIONS & PARAMETERS ********************************************************************** SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. PARAMETERS: p_tabl LIKE dd02l-tabname. PARAMETERS: p_sysnm LIKE tmscsys-sysnam AS LISTBOX VISIBLE LENGTH 24. SELECTION-SCREEN SKIP 1. PARAMETERS: p_dn RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND bbb, p_up RADIOBUTTON GROUP g1. SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN COMMENT /2(83) t_text1. SELECTION-SCREEN COMMENT /2(83) t_text2. SELECTION-SCREEN COMMENT /2(83) t_text3. SELECTION-SCREEN COMMENT /2(83) t_text4. SELECTION-SCREEN FUNCTION KEY 1. SELECTION-SCREEN FUNCTION KEY 2. ********************************************************************** * INITIALIZATION ********************************************************************** INITIALIZATION. GET PARAMETER ID 'DTB' FIELD p_tabl. sscrfields-functxt_01 = '@3W@Å×À̺íÁ¶È¸'. sscrfields-functxt_02 = '@KG@¼±ÅÃÁ¶°Ç'. PERFORM make_dest_drdn. ********************************************************************** * AT SELECTION-SCREEN ********************************************************************** AT SELECTION-SCREEN. CASE sscrfields-ucomm. WHEN 'FC01'. SET PARAMETER ID 'DTB' FIELD p_tabl. CALL FUNCTION 'RS_TABLE_LIST_CREATE' EXPORTING table_name = p_tabl. WHEN 'FC02'. PERFORM get_where_clause. ENDCASE. DATA: BEGIN OF lt_exclude OCCURS 0, fcode(20), END OF lt_exclude. CASE 'X'. WHEN p_up. APPEND 'FC02' TO lt_exclude. CLEAR: gt_where, gt_fields[], t_text1, t_text2, t_text3, t_text4. t_text1 = '¾÷·Îµå File TypeÀº TABºÐ¸® ÅؽºÆ® ÀÔ´Ï´Ù.'. t_text2 = '2¹ø° ¶óÀκÎÅÍ ¾÷·Îµå µË´Ï´Ù.'. t_text3 = '@8R@1¹ø° ¶óÀÎÀº ¾Æ¹«°Íµµ ³ÖÁö ¸¶¼¼¿ä!! (Áß¿ä)'. WHEN p_dn. CLEAR: t_text1, t_text2, t_text3, t_text4. PERFORM write_query TABLES gt_where-clauses. IF gt_where-clauses IS INITIAL. t_text1 = '¿©±â¿¡ ¼±ÅÃÁ¶°ÇÀÌ Ç¥½ÃµË´Ï´Ù.'. ENDIF. ENDCASE. CALL FUNCTION 'RS_SET_SELSCREEN_STATUS' EXPORTING p_status = '%_00' TABLES p_exclude = lt_exclude. ********************************************************************** * ON VALUE-REQUEST ********************************************************************** AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_sysnm. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'P_SYSNM' values = gt_values[]. ********************************************************************** * START-OF-SELECTION ********************************************************************** START-OF-SELECTION. SELECT SINGLE tabclass INTO gv_tabclass FROM dd02l WHERE tabname = p_tabl. CASE gv_tabclass. WHEN 'TRANSP'. WHEN 'CLUSTER' OR 'POOL' OR 'VIEW'. CASE 'X'. WHEN p_dn. WHEN p_up. MESSAGE s499 DISPLAY LIKE 'E' WITH p_tabl ': ¾÷·Îµå°¡ ºÒ°¡´ÉÇÑ Å¸ÀÔÀÔ´Ï´Ù!'. EXIT. ENDCASE. WHEN OTHERS. CASE 'X'. WHEN p_dn. MESSAGE s499 DISPLAY LIKE 'E' WITH p_tabl ': ´Ù¿î·Îµå°¡ ºÒ°¡´ÉÇÑ Å¸ÀÔÀÔ´Ï´Ù!'. WHEN p_up. MESSAGE s499 DISPLAY LIKE 'E' WITH p_tabl ': ¾÷·Îµå°¡ ºÒ°¡´ÉÇÑ Å¸ÀÔÀÔ´Ï´Ù!'. ENDCASE. EXIT. ENDCASE. SET PARAMETER ID 'DTB' FIELD p_tabl. CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING i_structure_name = p_tabl CHANGING ct_fieldcat = gt_fieldcat[]. CHECK LINES( gt_fieldcat ) > 0. DATA ldtab TYPE REF TO data. CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_fieldcat[] IMPORTING ep_table = ldtab. ASSIGN ldtab->* TO . CASE 'X'. WHEN p_dn. PERFORM down_load_to_local TABLES gt_where-clauses. WHEN p_up. PERFORM upload_from_local. ENDCASE. *&---------------------------------------------------------------------* *& Form DOWN_LOAD_TO_LOCAL *&---------------------------------------------------------------------* FORM down_load_to_local TABLES u_t_expr TYPE rsds_twhere. DATA: BEGIN OF lt_header OCCURS 0, field(40), END OF lt_header. LOOP AT gt_fieldcat. APPEND gt_fieldcat-fieldname TO lt_header. ENDLOOP. DATA: l_where TYPE rsds_where. MOVE p_tabl TO l_where-tablename. IF NOT u_t_expr[] IS INITIAL. READ TABLE u_t_expr WITH KEY tablename = l_where-tablename INTO l_where. ENDIF. REFRESH: . IF p_sysnm = ''. SELECT * INTO CORRESPONDING FIELDS OF TABLE FROM (p_tabl) WHERE (l_where-where_tab). ELSE. PERFORM get_remote_data USING p_tabl. ENDIF. CONCATENATE p_tabl '_' sy-datum+2(6) INTO filename. CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING default_extension = 'TXT' default_file_name = filename CHANGING filename = filename path = path fullpath = fullpath user_action = rc EXCEPTIONS OTHERS = 4. IF rc <> 0. MESSAGE s002 WITH 'Ãë¼ÒÇÏ¿´½À´Ï´Ù.'. EXIT. ENDIF. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = fullpath write_field_separator = 'X' TABLES data_tab = fieldnames = lt_header[] EXCEPTIONS OTHERS = 22. ENDFORM. "DOWN_LOAD_TO_LOCAL *&--------------------------------------------------------------------* *& Form GET_WHERE_CLAUSE *&--------------------------------------------------------------------* FORM get_where_clause . SELECT SINGLE tabclass INTO gv_tabclass FROM dd02l WHERE tabname = p_tabl AND as4local = 'A'. CHECK sy-subrc = 0. DATA: lt_tabls LIKE rsdstabs OCCURS 0 WITH HEADER LINE, ls_selid LIKE rsdynsel-selid. APPEND p_tabl TO lt_tabls. CALL FUNCTION 'FREE_SELECTIONS_INIT' EXPORTING expressions = gt_where-texpr IMPORTING selection_id = ls_selid where_clauses = gt_where-clauses expressions = gt_where-texpr field_ranges = gt_where-trange TABLES tables_tab = lt_tabls fields_tab = gt_fields EXCEPTIONS OTHERS = 20. DATA title LIKE sy-title. title = p_tabl. CALL FUNCTION 'FREE_SELECTIONS_DIALOG' EXPORTING selection_id = ls_selid title = title as_window = 'X' IMPORTING where_clauses = gt_where-clauses expressions = gt_where-texpr field_ranges = gt_where-trange TABLES fields_tab = gt_fields EXCEPTIONS OTHERS = 5. ENDFORM. "GET_WHERE_CLAUSE *&--------------------------------------------------------------------* *& Form WRITE_QUERY *&--------------------------------------------------------------------* FORM write_query TABLES u_t_expr TYPE rsds_twhere. DATA ls_where TYPE rsds_where. DATA lt_query TYPE rsdswhere OCCURS 0 WITH HEADER LINE. DATA ttt TYPE string. CHECK u_t_expr[] IS NOT INITIAL. CLEAR: t_text1, t_text2, t_text3, t_text4. READ TABLE u_t_expr WITH KEY tablename = p_tabl INTO ls_where. lt_query[] = ls_where-where_tab. LOOP AT lt_query. CONDENSE lt_query. CONCATENATE ttt lt_query-line INTO ttt SEPARATED BY space. ENDLOOP. SHIFT ttt. DATA: len TYPE i, pos TYPE i, str TYPE i, iii TYPE n, txt(100), xxx(10). FIELD-SYMBOLS . str = STRLEN( ttt ). WHILE str > 0 AND iii < 5. IF str < len OR str < 83. len = str. ELSE. len = 83. ENDIF. txt = ttt+pos(len). pos = pos + len. str = str - len. iii = iii + 1. CONCATENATE 'T_TEXT' iii INTO xxx. ASSIGN (xxx) TO . = txt. ENDWHILE. ENDFORM. "WRITE_QUERY *&--------------------------------------------------------------------* *& Form UPLOAD_FROM_LOCAL *&--------------------------------------------------------------------* FORM upload_from_local . DATA: lv_cnt LIKE sy-tabix. DATA: lv_err LIKE sy-tabix, lv_suc LIKE sy-tabix. DATA: lv_sum LIKE sy-tabix. DATA: lv_tabname LIKE dd02l-tabname. IF NOT ( p_tabl(1) = 'Z' OR p_tabl(1) = 'Y' ). MESSAGE s002 WITH 'CBO Å×ÀÌºí¸¸ ¾÷·Îµå °¡´ÉÇÕ´Ï´Ù.' DISPLAY LIKE 'E'. EXIT. ENDIF. DATA ftab TYPE TABLE OF file_table WITH HEADER LINE. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING default_extension = 'TXT' CHANGING file_table = ftab[] rc = rc EXCEPTIONS OTHERS = 5. IF rc <> 1. MESSAGE s002 WITH 'Ãë¼ÒÇÏ¿´½À´Ï´Ù.'. EXIT. ENDIF. READ TABLE ftab INDEX 1 INTO fullpath. CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = fullpath has_field_separator = 'X' CHANGING data_tab = EXCEPTIONS OTHERS = 19. DELETE INDEX 1. lv_cnt = LINES( ). lv_tabname = p_tabl. * MODIFY (p_tabl) FROM TABLE . LOOP AT INTO wa_zfit9010 . MODIFY (p_tabl) FROM wa_zfit9010. IF sy-subrc = 0. lv_suc = lv_suc + 1. ELSE. lv_err = lv_err + 1. ENDIF. ENDLOOP. WRITE: / lv_suc, '¼º°ø °Ç¼ö°¡ select µÇ¾ú½À´Ï´Ù.' . WRITE: / lv_err, 'ERROR °Ç¼ö°¡ select µÇ¾ú½À´Ï´Ù.' . * * IF sy-subrc = 0. * MESSAGE s499 WITH '¾÷·Îµå ¼º°ø' sy-dbcnt. * ELSE. * MESSAGE s002 WITH 'µ¥ÀÌÅÍ ¾÷·ÎµåÁß ¿¡·¯¹ß»ý'. * ENDIF. COMMIT WORK. WRITE:/ '----------------------------------------------------------'. WRITE:/ '----------------------------------------------------------'. SELECT COUNT( * ) AS cnt FROM (p_tabl) INTO lv_cnt. IF sy-subrc = 0. WRITE:/ lv_cnt, '°Ç¼ö°¡ select µÇ¾ú½À´Ï´Ù.' . ELSE. WRITE:/ lv_cnt, '°Ç¼ö°¡ select µÇ¾ú½À´Ï´Ù.' . ENDIF. ENDFORM. "UPLOAD_FROM_LOCAL *&---------------------------------------------------------------------* *& Form MAKE_DEST_DRDN *&---------------------------------------------------------------------* FORM make_dest_drdn . SELECT rfcdest AS key INTO CORRESPONDING FIELDS OF TABLE gt_values FROM rfcdes WHERE rfctype = '3'. SELECT rfcdest AS key "RFCDOC1 as TXT INTO CORRESPONDING FIELDS OF TABLE gt_values FROM rfcdoc FOR ALL ENTRIES IN gt_values WHERE rfcdest = gt_values-key(32) AND rfclang = '3'. SORT gt_values. ENDFORM. " MAKE_DEST_DRDN *&---------------------------------------------------------------------* *& Form GET_REMOTE_DATA *&---------------------------------------------------------------------* FORM get_remote_data USING table. DATA l_where LIKE LINE OF gt_where-clauses. DATA ttt(100). CLEAR gt_whc[]. READ TABLE gt_where-clauses WITH KEY tablename = table INTO l_where. gt_whc[] = l_where-where_tab. CALL FUNCTION 'ZPP_RFC_GET_REMOTE_DATA' DESTINATION p_sysnm EXPORTING tabname = table IMPORTING outtab = gt_outtab[] TABLES where = gt_whc EXCEPTIONS OTHERS = 4. FREE: dtab, dwa. CREATE DATA dtab TYPE TABLE OF (table). ASSIGN dtab->* TO . CHECK IS ASSIGNED. CREATE DATA dwa LIKE LINE OF . ASSIGN dwa->* TO . CHECK IS ASSIGNED. FIELD-SYMBOLS TYPE ANY. LOOP AT gt_outtab. ASSIGN COMPONENT gt_outtab-fieldname OF STRUCTURE TO . = gt_outtab-string. AT END OF tabix. APPEND TO . CLEAR . ENDAT. ENDLOOP. = . ENDFORM. " GET_REMOTE_DATA