Advertisement
Guest User

Untitled

a guest
Mar 13th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 10.02 KB | None | 0 0
  1. REPORT z_rih_test3.
  2.  
  3. DATA: lt_datatab     TYPE table_of_strings,
  4.       lv_file        TYPE string,
  5.       lt_data        TYPE TABLE OF text8192,
  6.       lv_config_data TYPE string,
  7.       lv_tablerow    TYPE string,
  8.       lt_temptable   TYPE TABLE OF zcivilians1 .
  9. DATA     ls_tempstructure TYPE zcivilians1 .
  10.  
  11.  
  12.  
  13. FIELD-SYMBOLS <fl_row> TYPE string.
  14. FIELD-SYMBOLS <fl_row2> TYPE zcivilians1.
  15. ********************************file upload declaration**************************************
  16. SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-103 NO INTERVALS.
  17. PARAMETERS p_upload TYPE c RADIOBUTTON GROUP radi  USER-COMMAND uc01. "upload
  18. PARAMETERS p_migr   TYPE c RADIOBUTTON GROUP radi DEFAULT 'X'. "migration
  19. PARAMETERS p_map    TYPE c RADIOBUTTON GROUP radi. "mapping
  20. SELECTION-SCREEN END OF BLOCK main.
  21.  
  22. SELECTION-SCREEN BEGIN OF BLOCK b1   WITH FRAME TITLE text-100 NO INTERVALS  .
  23. PARAMETERS  p_chkdel AS CHECKBOX DEFAULT ' ' MODIF ID aax USER-COMMAND uc01.
  24. PARAMETERS         p_file   TYPE rlgrap-filename MODIF ID aaa. "UPLOAD
  25. PARAMETERS       p_clear  TYPE c LENGTH 1 NO-DISPLAY .
  26. SELECTION-SCREEN END OF BLOCK b1.
  27.  
  28. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-101 NO INTERVALS . "migration
  29. PARAMETERS p_chkmig AS CHECKBOX DEFAULT ' ' MODIF ID ccc.
  30. PARAMETERS p_mignum(5) TYPE c  MODIF ID ccc OBLIGATORY DEFAULT '4'.
  31. PARAMETERS p_num2(5) TYPE c  MODIF ID ccc OBLIGATORY DEFAULT '2'.
  32. ******************************************************************************************************************************************
  33. SELECTION-SCREEN END OF BLOCK b2.
  34.  
  35. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-102 NO INTERVALS. "mapping
  36. PARAMETERS: p_chkmap AS CHECKBOX DEFAULT 'X' MODIF ID bbb.
  37. SELECTION-SCREEN END OF BLOCK b3.
  38.  
  39.  
  40. AT SELECTION-SCREEN OUTPUT.
  41.   LOOP AT SCREEN.
  42.     CASE screen-group1.
  43.       WHEN 'AAA'.
  44.         IF p_upload = 'X'.
  45.           IF p_chkdel = 'X'.
  46.             screen-input = '0'. "this will grey out upload field if 0
  47.             screen-invisible = '0'.
  48.             screen-required = '0'.
  49.             MODIFY SCREEN.
  50.           ELSE.
  51.             screen-input = '1'.
  52.             screen-invisible = '0'.
  53.             screen-required = '0'.
  54.             MODIFY SCREEN.
  55.           ENDIF.
  56.         ELSE.
  57.           screen-input = '0'.
  58.           screen-invisible = '1'.
  59.           screen-required = '0'.
  60.           MODIFY SCREEN.
  61.         ENDIF.
  62.       WHEN 'BBB'.
  63.         IF p_map = 'X'.
  64.           screen-input = '1'.
  65.           screen-invisible = '0'.
  66.           screen-required = '0'.
  67.           MODIFY SCREEN.
  68.         ELSE.
  69.           screen-input = '0'.
  70.           screen-invisible = '1'.
  71.           screen-required = '0'.
  72.           MODIFY SCREEN.
  73.         ENDIF.
  74.       WHEN 'CCC'.
  75.         IF p_migr = 'X'.
  76.           screen-input = '1'.
  77.           screen-invisible = '0'.
  78.           screen-required = '0'.
  79.           MODIFY SCREEN.
  80.         ELSE.
  81.           screen-input = '0'.
  82.           screen-invisible = '1'.
  83.           screen-required = '0'.
  84.           MODIFY SCREEN.
  85.         ENDIF.
  86.     ENDCASE.
  87.     IF screen-group1 = 'AAX'.
  88.       IF p_upload = 'X'.
  89.         screen-input = '1'.
  90.         screen-invisible = '0'.
  91.         screen-required = '0'.
  92.         MODIFY SCREEN.
  93.       ELSE.
  94.         screen-input = '0'.
  95.         screen-invisible = '1'.
  96.         screen-required = '0'.
  97.         MODIFY SCREEN.
  98.       ENDIF.
  99.     ENDIF.
  100.   ENDLOOP.
  101.  
  102.  
  103. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  104.   CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
  105.     CHANGING
  106.       file_name = p_file.
  107.  
  108.   lv_file = p_file.
  109.  
  110.   CALL METHOD cl_gui_frontend_services=>gui_upload
  111.     EXPORTING
  112.       filename = lv_file
  113.       filetype = 'ASC'
  114.     CHANGING
  115.       data_tab = lt_datatab "data from file goes here lv_datab
  116.     EXCEPTIONS
  117.       OTHERS   = 1.
  118.  
  119.  
  120. ******************************* body ***************************************
  121. START-OF-SELECTION.
  122.  
  123.  
  124.   IF p_upload = 'X'. "do upload
  125.     IF p_chkdel = 'X'. "check del
  126.       DELETE FROM zcibiltable .   "write:/ 'flag is checked, so wipe internal sap table.'.
  127.     ELSE.
  128.  
  129.  
  130.       LOOP AT lt_datatab ASSIGNING <fl_row>.
  131.  
  132.         SPLIT <fl_row> AT ',' INTO
  133.         ls_tempstructure-acc_num
  134.         ls_tempstructure-name
  135.         ls_tempstructure-surname
  136.         ls_tempstructure-country
  137.         ls_tempstructure-city
  138.         ls_tempstructure-phone_number
  139.         ls_tempstructure-mmr
  140.         ls_tempstructure-winrate.
  141.  
  142.         APPEND ls_tempstructure TO lt_temptable.
  143.  
  144.       ENDLOOP.
  145.  
  146.       "MODIFY zcibiltable FROM TABLE lt_temptable.
  147.  
  148.     ENDIF. "check del
  149.   ENDIF. "do upload
  150.  
  151.   IF p_map = 'X'. "do mapping
  152.  
  153.     DATA lv_country_error TYPE string VALUE ' COUNTRY '.
  154.     DATA lv_phone_number_error TYPE string VALUE ' PHONE NUMBER '.
  155.     DATA ls_zcibiltable TYPE zcibiltable1.
  156.     DATA phone_number_length TYPE i.
  157.     DATA lt_zcibiltable TYPE TABLE OF zcibiltable1.
  158.     DATA lt_mapped_table TYPE zcibiltable1 OCCURS 0.
  159.     DATA lc_permitted_symbols LENGTH 12 TYPE c VALUE ' 0123456789+'. "for phone number
  160.  
  161.     SELECT * FROM  zcibiltable1
  162.     INTO CORRESPONDING FIELDS OF TABLE  lt_zcibiltable.
  163.  
  164.  
  165.     LOOP AT lt_zcibiltable INTO ls_zcibiltable.
  166.  
  167.       CASE ls_zcibiltable-country.
  168.         WHEN 'Latvia'.
  169.           ls_zcibiltable-country  = 'LV'.
  170.           ls_zcibiltable-status = 0. "0 = no errors
  171.         WHEN 'Russia'.
  172.           ls_zcibiltable-country  = 'RU'.
  173.           ls_zcibiltable-status = 0.
  174.         WHEN OTHERS.
  175.           ls_zcibiltable-status = 1.
  176.           CONCATENATE lv_country_error ls_zcibiltable-country
  177.           INTO  ls_zcibiltable-description.
  178.       ENDCASE.
  179. **********************phone mapping************************************************
  180.       phone_number_length = strlen( ls_zcibiltable-phone_number ).
  181.       IF phone_number_length = 8.
  182.         IF ls_zcibiltable-phone_number CO lc_permitted_symbols.
  183.           ls_zcibiltable-status = 0. "0 = no errors
  184.  
  185.         ELSE.
  186.           ls_zcibiltable-status = 1.
  187.           CONCATENATE ls_zcibiltable-description lv_phone_number_error  ls_zcibiltable-phone_number
  188.          INTO  ls_zcibiltable-description.
  189.  
  190.         ENDIF.
  191.       ELSE.
  192.         ls_zcibiltable-status = 1.
  193.         CONCATENATE ls_zcibiltable-description lv_phone_number_error  ls_zcibiltable-phone_number
  194.        INTO  ls_zcibiltable-description.
  195.       ENDIF.
  196. **********************phone mapping************************************************
  197.  
  198.       APPEND ls_zcibiltable TO lt_mapped_table.
  199.       CLEAR ls_zcibiltable.
  200.     ENDLOOP.
  201.  
  202.     DELETE FROM zcibiltable.
  203.     MODIFY zcibiltable1 FROM TABLE lt_mapped_table.
  204.  
  205.  
  206.  
  207.   ENDIF. "do mapping
  208.  
  209.   IF p_migr = 'X'. "do migration
  210.  
  211.  
  212.  
  213.     DATA lt_migration TYPE TABLE OF zcibiltable1.
  214.     DATA lt_migration_new  TYPE TABLE OF  zcibiltable1.
  215.     DATA lt_migr_part TYPE TABLE OF zcibiltable1.
  216.     DATA lv_temp TYPE i.
  217.     DATA lv_iter TYPE i VALUE 1.
  218.     DATA lv_iter_2 TYPE i VALUE 1.
  219.     DATA tsl TYPE timestampl.
  220.     DATA lv_works TYPE i.
  221.     DATA lv_task TYPE string VALUE '1'. "any taskname may be here
  222.     DATA lv_task_nametepm TYPE i.
  223.     DATA lv_task_nametepm_str TYPE string.
  224.     DATA lv_free_wp TYPE i VALUE 2.
  225.     DATA lv_finished_task_count TYPE i.
  226.     DATA lv_dojob TYPE i.
  227.  
  228.     DATA: close_status(1) TYPE c.
  229.     DATA wp_available TYPE i  .    "Number of dialog work processes
  230.     "available for parallel processing
  231.     "(free work processes)
  232.     DATA  wp_total TYPE i     .     "Total number of dialog work
  233.  
  234.  
  235.     DATA w_sts TYPE timestamp.
  236.     GET TIME STAMP FIELD w_sts.
  237.     WRITE:/ 'date and time: ',w_sts TIME ZONE sy-zonlo.
  238.  
  239.     SELECT * UP TO p_mignum ROWS FROM  zcibiltable1 INTO CORRESPONDING FIELDS OF TABLE  lt_migration . "WHERE status EQ '0' "p_mignum
  240.  
  241.     CALL FUNCTION 'SPBT_INITIALIZE'
  242.       EXPORTING
  243.         group_name   = 'parallel_generators'
  244.       IMPORTING
  245.         max_pbt_wps  = wp_total
  246.         free_pbt_wps = wp_available.
  247.  
  248.     IF p_mignum LT p_num2.
  249.  
  250.       IF wp_available GT 2.
  251.  
  252.         IF lt_migration IS NOT INITIAL.
  253.  
  254.           DATA lv_mod TYPE i.
  255.           DATA lv_whole TYPE i.
  256.  
  257.  
  258.  
  259.           lv_mod = p_mignum MOD p_num2.
  260.           lv_whole = p_mignum / p_num2.
  261.  
  262.           CASE lv_mod.
  263.             WHEN 0.
  264.               lv_works = lv_whole.
  265.             WHEN 1 OR 2 OR 3 OR 4.
  266.               ADD 1 TO lv_whole .
  267.               lv_works = lv_whole.
  268.             WHEN 5 OR 6 OR 7 OR 8 OR 9.
  269.               lv_works = lv_whole.
  270.  
  271.           ENDCASE.
  272.  
  273.           LOOP AT lt_migration INTO ls_zcibiltable.
  274.             APPEND ls_zcibiltable TO lt_migr_part.
  275.             IF lv_iter = p_num2 OR lv_iter_2 = p_mignum.
  276.               lv_dojob = 1.
  277.               WHILE lv_dojob <> 0.
  278.                 lv_task_nametepm = lv_finished_task_count.
  279.                 WHILE lv_works <> lv_finished_task_count.
  280.  
  281.  
  282.                   CONCATENATE lv_task lv_task  INTO lv_task .
  283.  
  284.                   IF lv_free_wp <> 0.
  285.                     lv_dojob = 0.
  286.  
  287.                     SUBTRACT 1 FROM lv_free_wp.
  288.                     CALL FUNCTION 'Z_RIH_PARALLEL3'
  289.                       STARTING NEW TASK lv_task
  290.                       DESTINATION IN GROUP 'parallel_generators'
  291.                       PERFORMING close_task ON END OF TASK
  292.                       TABLES
  293.                         it_tab = lt_migr_part.
  294.  
  295.                     CLEAR lt_migr_part.
  296.                     lv_iter = 0.
  297.                     EXIT.
  298.                   ENDIF.
  299.  
  300.  
  301.                 ENDWHILE.
  302.               ENDWHILE.
  303.  
  304.  
  305.             ENDIF.
  306.  
  307.             ADD 1 TO lv_iter.
  308.             ADD 1 TO lv_iter_2.
  309.  
  310.           ENDLOOP.
  311.  
  312.         ELSE.
  313.           WRITE:/ ' migration table was empty. we cant continue migration.'.
  314.         ENDIF.
  315.       ELSE.
  316.         WRITE:/ 'WP amount is less then 2'.
  317.       ENDIF.
  318.     ELSE.
  319.       WRITE:/ 'First migration parameter cant be less then second'.
  320.     ENDIF.
  321.  
  322.  
  323.     WRITE:/ ' migration was done.'.
  324.   ENDIF."do migration
  325.  
  326.  
  327.  
  328.  
  329. FORM close_task USING taskname.
  330.  
  331.   RECEIVE RESULTS FROM FUNCTION 'Z_RIH_PARALLEL3'
  332.  TABLES
  333.                   it_tab = lt_migr_part.
  334.  
  335.   ADD 1 TO lv_free_wp.
  336.   ADD 1 TO lv_finished_task_count.
  337.  
  338.  
  339.  
  340.  
  341.  
  342. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement