Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REPORT z_rih_test3.
- DATA: lt_datatab TYPE table_of_strings,
- lv_file TYPE string,
- lt_data TYPE TABLE OF text8192,
- lv_config_data TYPE string,
- lv_tablerow TYPE string,
- lt_temptable TYPE TABLE OF zcivilians1 .
- DATA ls_tempstructure TYPE zcivilians1 .
- FIELD-SYMBOLS <fl_row> TYPE string.
- FIELD-SYMBOLS <fl_row2> TYPE zcivilians1.
- ********************************file upload declaration**************************************
- SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-103 NO INTERVALS.
- PARAMETERS p_upload TYPE c RADIOBUTTON GROUP radi USER-COMMAND uc01. "upload
- PARAMETERS p_migr TYPE c RADIOBUTTON GROUP radi DEFAULT 'X'. "migration
- PARAMETERS p_map TYPE c RADIOBUTTON GROUP radi. "mapping
- SELECTION-SCREEN END OF BLOCK main.
- SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-100 NO INTERVALS .
- PARAMETERS p_chkdel AS CHECKBOX DEFAULT ' ' MODIF ID aax USER-COMMAND uc01.
- PARAMETERS p_file TYPE rlgrap-filename MODIF ID aaa. "UPLOAD
- PARAMETERS p_clear TYPE c LENGTH 1 NO-DISPLAY .
- SELECTION-SCREEN END OF BLOCK b1.
- SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-101 NO INTERVALS . "migration
- PARAMETERS p_chkmig AS CHECKBOX DEFAULT ' ' MODIF ID ccc.
- PARAMETERS p_mignum(5) TYPE c MODIF ID ccc OBLIGATORY DEFAULT '4'.
- PARAMETERS p_num2(5) TYPE c MODIF ID ccc OBLIGATORY DEFAULT '2'.
- ******************************************************************************************************************************************
- SELECTION-SCREEN END OF BLOCK b2.
- SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-102 NO INTERVALS. "mapping
- PARAMETERS: p_chkmap AS CHECKBOX DEFAULT 'X' MODIF ID bbb.
- SELECTION-SCREEN END OF BLOCK b3.
- AT SELECTION-SCREEN OUTPUT.
- LOOP AT SCREEN.
- CASE screen-group1.
- WHEN 'AAA'.
- IF p_upload = 'X'.
- IF p_chkdel = 'X'.
- screen-input = '0'. "this will grey out upload field if 0
- screen-invisible = '0'.
- screen-required = '0'.
- MODIFY SCREEN.
- ELSE.
- screen-input = '1'.
- screen-invisible = '0'.
- screen-required = '0'.
- MODIFY SCREEN.
- ENDIF.
- ELSE.
- screen-input = '0'.
- screen-invisible = '1'.
- screen-required = '0'.
- MODIFY SCREEN.
- ENDIF.
- WHEN 'BBB'.
- IF p_map = 'X'.
- screen-input = '1'.
- screen-invisible = '0'.
- screen-required = '0'.
- MODIFY SCREEN.
- ELSE.
- screen-input = '0'.
- screen-invisible = '1'.
- screen-required = '0'.
- MODIFY SCREEN.
- ENDIF.
- WHEN 'CCC'.
- IF p_migr = 'X'.
- screen-input = '1'.
- screen-invisible = '0'.
- screen-required = '0'.
- MODIFY SCREEN.
- ELSE.
- screen-input = '0'.
- screen-invisible = '1'.
- screen-required = '0'.
- MODIFY SCREEN.
- ENDIF.
- ENDCASE.
- IF screen-group1 = 'AAX'.
- IF p_upload = 'X'.
- screen-input = '1'.
- screen-invisible = '0'.
- screen-required = '0'.
- MODIFY SCREEN.
- ELSE.
- screen-input = '0'.
- screen-invisible = '1'.
- screen-required = '0'.
- MODIFY SCREEN.
- ENDIF.
- ENDIF.
- ENDLOOP.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
- CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
- CHANGING
- file_name = p_file.
- lv_file = p_file.
- CALL METHOD cl_gui_frontend_services=>gui_upload
- EXPORTING
- filename = lv_file
- filetype = 'ASC'
- CHANGING
- data_tab = lt_datatab "data from file goes here lv_datab
- EXCEPTIONS
- OTHERS = 1.
- ******************************* body ***************************************
- START-OF-SELECTION.
- IF p_upload = 'X'. "do upload
- IF p_chkdel = 'X'. "check del
- DELETE FROM zcibiltable . "write:/ 'flag is checked, so wipe internal sap table.'.
- ELSE.
- LOOP AT lt_datatab ASSIGNING <fl_row>.
- SPLIT <fl_row> AT ',' INTO
- ls_tempstructure-acc_num
- ls_tempstructure-name
- ls_tempstructure-surname
- ls_tempstructure-country
- ls_tempstructure-city
- ls_tempstructure-phone_number
- ls_tempstructure-mmr
- ls_tempstructure-winrate.
- APPEND ls_tempstructure TO lt_temptable.
- ENDLOOP.
- "MODIFY zcibiltable FROM TABLE lt_temptable.
- ENDIF. "check del
- ENDIF. "do upload
- IF p_map = 'X'. "do mapping
- DATA lv_country_error TYPE string VALUE ' COUNTRY '.
- DATA lv_phone_number_error TYPE string VALUE ' PHONE NUMBER '.
- DATA ls_zcibiltable TYPE zcibiltable1.
- DATA phone_number_length TYPE i.
- DATA lt_zcibiltable TYPE TABLE OF zcibiltable1.
- DATA lt_mapped_table TYPE zcibiltable1 OCCURS 0.
- DATA lc_permitted_symbols LENGTH 12 TYPE c VALUE ' 0123456789+'. "for phone number
- SELECT * FROM zcibiltable1
- INTO CORRESPONDING FIELDS OF TABLE lt_zcibiltable.
- LOOP AT lt_zcibiltable INTO ls_zcibiltable.
- CASE ls_zcibiltable-country.
- WHEN 'Latvia'.
- ls_zcibiltable-country = 'LV'.
- ls_zcibiltable-status = 0. "0 = no errors
- WHEN 'Russia'.
- ls_zcibiltable-country = 'RU'.
- ls_zcibiltable-status = 0.
- WHEN OTHERS.
- ls_zcibiltable-status = 1.
- CONCATENATE lv_country_error ls_zcibiltable-country
- INTO ls_zcibiltable-description.
- ENDCASE.
- **********************phone mapping************************************************
- phone_number_length = strlen( ls_zcibiltable-phone_number ).
- IF phone_number_length = 8.
- IF ls_zcibiltable-phone_number CO lc_permitted_symbols.
- ls_zcibiltable-status = 0. "0 = no errors
- ELSE.
- ls_zcibiltable-status = 1.
- CONCATENATE ls_zcibiltable-description lv_phone_number_error ls_zcibiltable-phone_number
- INTO ls_zcibiltable-description.
- ENDIF.
- ELSE.
- ls_zcibiltable-status = 1.
- CONCATENATE ls_zcibiltable-description lv_phone_number_error ls_zcibiltable-phone_number
- INTO ls_zcibiltable-description.
- ENDIF.
- **********************phone mapping************************************************
- APPEND ls_zcibiltable TO lt_mapped_table.
- CLEAR ls_zcibiltable.
- ENDLOOP.
- DELETE FROM zcibiltable.
- MODIFY zcibiltable1 FROM TABLE lt_mapped_table.
- ENDIF. "do mapping
- IF p_migr = 'X'. "do migration
- DATA lt_migration TYPE TABLE OF zcibiltable1.
- DATA lt_migration_new TYPE TABLE OF zcibiltable1.
- DATA lt_migr_part TYPE TABLE OF zcibiltable1.
- DATA lv_temp TYPE i.
- DATA lv_iter TYPE i VALUE 1.
- DATA lv_iter_2 TYPE i VALUE 1.
- DATA tsl TYPE timestampl.
- DATA lv_works TYPE i.
- DATA lv_task TYPE string VALUE '1'. "any taskname may be here
- DATA lv_task_nametepm TYPE i.
- DATA lv_task_nametepm_str TYPE string.
- DATA lv_free_wp TYPE i VALUE 2.
- DATA lv_finished_task_count TYPE i.
- DATA lv_dojob TYPE i.
- DATA: close_status(1) TYPE c.
- DATA wp_available TYPE i . "Number of dialog work processes
- "available for parallel processing
- "(free work processes)
- DATA wp_total TYPE i . "Total number of dialog work
- DATA w_sts TYPE timestamp.
- GET TIME STAMP FIELD w_sts.
- WRITE:/ 'date and time: ',w_sts TIME ZONE sy-zonlo.
- SELECT * UP TO p_mignum ROWS FROM zcibiltable1 INTO CORRESPONDING FIELDS OF TABLE lt_migration . "WHERE status EQ '0' "p_mignum
- CALL FUNCTION 'SPBT_INITIALIZE'
- EXPORTING
- group_name = 'parallel_generators'
- IMPORTING
- max_pbt_wps = wp_total
- free_pbt_wps = wp_available.
- IF p_mignum LT p_num2.
- IF wp_available GT 2.
- IF lt_migration IS NOT INITIAL.
- DATA lv_mod TYPE i.
- DATA lv_whole TYPE i.
- lv_mod = p_mignum MOD p_num2.
- lv_whole = p_mignum / p_num2.
- CASE lv_mod.
- WHEN 0.
- lv_works = lv_whole.
- WHEN 1 OR 2 OR 3 OR 4.
- ADD 1 TO lv_whole .
- lv_works = lv_whole.
- WHEN 5 OR 6 OR 7 OR 8 OR 9.
- lv_works = lv_whole.
- ENDCASE.
- LOOP AT lt_migration INTO ls_zcibiltable.
- APPEND ls_zcibiltable TO lt_migr_part.
- IF lv_iter = p_num2 OR lv_iter_2 = p_mignum.
- lv_dojob = 1.
- WHILE lv_dojob <> 0.
- lv_task_nametepm = lv_finished_task_count.
- WHILE lv_works <> lv_finished_task_count.
- CONCATENATE lv_task lv_task INTO lv_task .
- IF lv_free_wp <> 0.
- lv_dojob = 0.
- SUBTRACT 1 FROM lv_free_wp.
- CALL FUNCTION 'Z_RIH_PARALLEL3'
- STARTING NEW TASK lv_task
- DESTINATION IN GROUP 'parallel_generators'
- PERFORMING close_task ON END OF TASK
- TABLES
- it_tab = lt_migr_part.
- CLEAR lt_migr_part.
- lv_iter = 0.
- EXIT.
- ENDIF.
- ENDWHILE.
- ENDWHILE.
- ENDIF.
- ADD 1 TO lv_iter.
- ADD 1 TO lv_iter_2.
- ENDLOOP.
- ELSE.
- WRITE:/ ' migration table was empty. we cant continue migration.'.
- ENDIF.
- ELSE.
- WRITE:/ 'WP amount is less then 2'.
- ENDIF.
- ELSE.
- WRITE:/ 'First migration parameter cant be less then second'.
- ENDIF.
- WRITE:/ ' migration was done.'.
- ENDIF."do migration
- FORM close_task USING taskname.
- RECEIVE RESULTS FROM FUNCTION 'Z_RIH_PARALLEL3'
- TABLES
- it_tab = lt_migr_part.
- ADD 1 TO lv_free_wp.
- ADD 1 TO lv_finished_task_count.
- ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement