Advertisement
Ahmed_Ait_Lahcen

IMP

May 18th, 2023
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 15.85 KB | None | 0 0
  1. *&**********************************************************************
  2. *OBJECT NAME           : ZSTP_R_UPLOAD_MAPPING_DATA_IMP                *
  3. *TITLE                 : Upload Mapping Data                           *
  4. *AUTHOR                : IBOUAZZA                                      *
  5. *DATE                  : 03/11/2022                                    *
  6. *DEVELOPMENT ID        : STP_R_114                                     *
  7. *CR/Rev-Trac           : CHG0034285/7025                               *
  8. *REQUESTED BY          : Gee Sin Khoo                                  *
  9. *TRANSPORT NO.         : SR4K902452                                    *
  10. *DESCRIPTION           : Upload Mapping Data                           *
  11. *                                                                      *
  12. *&*********************************************************************&
  13. *&                      CHANGE HISTORY LOG                             *
  14. *&---------------------------------------------------------------------*
  15. * CR/HPQC #|DATE(MM/DD/YY)|  DEVELOPER     | REQUESTOR   | TRANSPORT # *
  16. * DESCRIPTION                                                          *
  17. *&---------------------------------------------------------------------&
  18.  
  19. CLASS lcl_upload_map_data IMPLEMENTATION.
  20.  
  21.   METHOD read_file.
  22.  
  23.     DATA: lv_file TYPE rlgrap-filename,
  24.           lt_xcel TYPE TABLE OF alsmex_tabline,
  25.           ls_xcel TYPE alsmex_tabline.
  26.  
  27.     lv_file = p_file.
  28.  
  29.     CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  30.       EXPORTING
  31.         filename                = lv_file
  32.         i_begin_col             = '1'
  33.         i_begin_row             = '2'
  34.         i_end_col               = '7'
  35.         i_end_row               = '99999'
  36.       TABLES
  37.         intern                  = lt_xcel
  38.       EXCEPTIONS
  39.         inconsistent_parameters = 1
  40.         upload_ole              = 2
  41.         OTHERS                  = 3.
  42.  
  43.     IF p_r1 = 'X'.
  44.  
  45.       LOOP AT lt_xcel INTO ls_xcel.
  46.  
  47.         CASE
  48.         ls_xcel-col.
  49.           WHEN '0001'.
  50.             gs_table1-plant = ls_xcel-value.     "Plant
  51.             CONDENSE gs_table1-plant NO-GAPS.
  52.           WHEN '0002'.
  53.             gs_table1-str_loc = ls_xcel-value.   "Storage Location
  54.           WHEN '0003'.
  55.             gs_table1-mtr_type = ls_xcel-value.  "Material Type
  56.             CONDENSE gs_table1-mtr_type NO-GAPS.
  57.           WHEN '0004'.
  58.             gs_table1-inv_org = ls_xcel-value.   "Inventory Org.
  59.             REPLACE ALL OCCURRENCES OF ' ' IN gs_table1-inv_org WITH space.
  60.             CONDENSE gs_table1-inv_org NO-GAPS.
  61.         ENDCASE.
  62.  
  63.         AT END OF row.
  64.           APPEND gs_table1 TO gt_table1.
  65.           CLEAR : gs_table1.
  66.         ENDAT.
  67.  
  68.       ENDLOOP.
  69.  
  70.       CLEAR : lt_xcel, ls_xcel.
  71.  
  72.     ELSEIF p_r2 = 'X'.
  73.  
  74.       LOOP AT lt_xcel INTO ls_xcel.
  75.  
  76.         CASE
  77.         ls_xcel-col.
  78.           WHEN '0001'.
  79.             gs_table2-plant = ls_xcel-value.         "Plant
  80.           WHEN '0002'.
  81.             gs_table2-mtr_type = ls_xcel-value.      "Material Type
  82.           WHEN '0003'.
  83.             gs_table2-stock_cat = ls_xcel-value.     "Stock Category
  84.           WHEN '0004'.
  85.             gs_table2-spec_stock = ls_xcel-value.    "Special Stock
  86.           WHEN '0005'.
  87.             gs_table2-val_type = ls_xcel-value.      "Valuation Type
  88.           WHEN '0006'.
  89.             gs_table2-sub_inv = ls_xcel-value.       "Sub Inventory
  90.           WHEN '0007'.
  91.             gs_table2-lock_code = ls_xcel-value.     "Lock Code
  92.         ENDCASE.
  93.  
  94.         AT END OF row.
  95.           APPEND gs_table2 TO gt_table2.
  96.           CLEAR : gs_table2.
  97.         ENDAT.
  98.       ENDLOOP.
  99.  
  100.       CLEAR : lt_xcel, ls_xcel.
  101.  
  102.     ELSEIF p_r3 = 'X'.
  103.  
  104.       LOOP AT lt_xcel INTO ls_xcel.
  105.  
  106.         CASE
  107.         ls_xcel-col.
  108.           WHEN '0001'.
  109.             gs_table3-warehouse = ls_xcel-value.      "Warehouse
  110.           WHEN '0002'.
  111.             gs_table3-storage_bin = ls_xcel-value.    "Storage Bin
  112.           WHEN '0003'.
  113.             gs_table3-orc_locator = ls_xcel-value.    "Oracle Locators
  114.         ENDCASE.
  115.  
  116.         AT END OF row.
  117.           APPEND gs_table3 TO gt_table3.
  118.           CLEAR : gs_table3.
  119.         ENDAT.
  120.  
  121.       ENDLOOP.
  122.  
  123.       CLEAR : lt_xcel, ls_xcel.
  124.  
  125.     ELSEIF p_r4 = 'X'.
  126.  
  127.       LOOP AT lt_xcel INTO ls_xcel.
  128.  
  129.         CASE
  130.         ls_xcel-col.
  131.           WHEN '0001'.
  132.             gs_table4-inv_org = ls_xcel-value.          "Inventory Org.
  133.           WHEN '0002'.
  134.             gs_table4-company_code = ls_xcel-value.     "Company Code
  135.         ENDCASE.
  136.  
  137.         AT END OF row.
  138.           APPEND gs_table4 TO gt_table4.
  139.           CLEAR : gs_table4.
  140.         ENDAT.
  141.  
  142.       ENDLOOP.
  143.  
  144.       CLEAR : lt_xcel, ls_xcel.
  145.  
  146.     ELSEIF p_r5 = 'X'.
  147.  
  148.       LOOP AT lt_xcel INTO ls_xcel.
  149.  
  150.         CASE
  151.         ls_xcel-col.
  152.           WHEN '0001'.
  153.             CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
  154.               EXPORTING
  155.                 input          = ls_xcel-value
  156.                 language       = c_en
  157.               IMPORTING
  158.                 output         = gv_meins
  159.               EXCEPTIONS
  160.                 unit_not_found = 1
  161.                 OTHERS         = 2.
  162.             IF sy-subrc <> 0.
  163. * Implement suitable error handling here
  164.             ENDIF.
  165.  
  166.             gs_table5-meins = gv_meins.         "Base UOM
  167.  
  168.           WHEN '0002'.
  169.             gs_table5-uom_desc = ls_xcel-value.      "UOM Description
  170.           WHEN '0003'.
  171.             gs_table5-orc_uom = ls_xcel-value.       "Oracle UOM
  172.         ENDCASE.
  173.  
  174.         AT END OF row.
  175.           APPEND gs_table5 TO gt_table5.
  176.           CLEAR : gs_table5.
  177.         ENDAT.
  178.  
  179.       ENDLOOP.
  180.  
  181.       CLEAR : lt_xcel, ls_xcel.
  182.  
  183.     ELSEIF p_r6 = 'X'.
  184.  
  185.       LOOP AT lt_xcel INTO ls_xcel.
  186.  
  187.         CASE
  188.         ls_xcel-col.
  189.           WHEN '0001'.
  190.             CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  191.               EXPORTING
  192.                 input        = ls_xcel-value
  193.               IMPORTING
  194.                 output       = gv_matnr
  195.               EXCEPTIONS
  196.                 length_error = 1
  197.                 OTHERS       = 2.
  198.             IF sy-subrc <> 0.
  199. * Implement suitable error handling here
  200.             ENDIF.
  201.  
  202.             gs_table6-matnr = gv_matnr.        "Material Number
  203.  
  204.           WHEN '0002'.
  205.             gs_table6-maktx = ls_xcel-value.        "Material Description
  206.           WHEN '0003'.
  207.             gs_table6-umrez = ls_xcel-value.        "Numerator
  208.           WHEN '0004'.
  209.  
  210.             CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
  211.               EXPORTING
  212.                 input          = ls_xcel-value
  213.                 language       = c_en
  214.               IMPORTING
  215.                 output         = gv_meins
  216.               EXCEPTIONS
  217.                 unit_not_found = 1
  218.                 OTHERS         = 2.
  219.             IF sy-subrc <> 0.
  220. * Implement suitable error handling here
  221.             ENDIF.
  222.  
  223.             gs_table6-meins = gv_meins.             "Base UOM
  224.  
  225.           WHEN '0005'.
  226.             gs_table6-umren = ls_xcel-value.        "Denominator
  227.           WHEN '0006'.
  228.             gs_table6-meinh = ls_xcel-value.        "Alt UOM
  229.         ENDCASE.
  230.  
  231.         AT END OF row.
  232.           APPEND gs_table6 TO gt_table6.
  233.           CLEAR : gs_table6.
  234.         ENDAT.
  235.  
  236.       ENDLOOP.
  237.  
  238.       CLEAR : lt_xcel, ls_xcel.
  239.       ELSEIF p_r7 = 'X'.
  240.  
  241.       LOOP AT lt_xcel INTO ls_xcel.
  242.  
  243.         CASE
  244.         ls_xcel-col.
  245.           WHEN '0001'.
  246.             gs_table7-inv_org = ls_xcel-value.          "Inventory Org.
  247.           WHEN '0002'.
  248.             gs_table7-inv_des = ls_xcel-value.     "Company Code
  249.         ENDCASE.
  250.  
  251.         AT END OF row.
  252.           APPEND gs_table7 TO gt_table7.
  253.           CLEAR : gs_table7.
  254.         ENDAT.
  255.  
  256.       ENDLOOP.
  257.  
  258.       CLEAR : lt_xcel, ls_xcel.
  259.  
  260.     ENDIF.
  261.  
  262.   ENDMETHOD.
  263.  
  264.   METHOD get_data.
  265.  
  266.     IF p_r1 = 'X'.
  267.  
  268.       IF gt_table1 IS NOT INITIAL.
  269.  
  270.         SELECT
  271.           werks
  272.           FROM t001w
  273.           INTO TABLE @gt_t001w
  274.           FOR ALL ENTRIES IN @gt_table1
  275.           WHERE werks EQ @gt_table1-plant.
  276.  
  277.         IF sy-subrc IS INITIAL.
  278.           SORT gt_t001w BY werks.
  279.         ENDIF.
  280.  
  281.         SELECT
  282.           werks,
  283.           lgort
  284.           FROM t001l
  285.           INTO TABLE @gt_t001l
  286.           FOR ALL ENTRIES IN @gt_table1
  287.           WHERE lgort EQ @gt_table1-str_loc.            "#EC CI_GENBUFF
  288.  
  289.         IF sy-subrc IS INITIAL.
  290.           SORT gt_t001l BY lgort.
  291.         ENDIF.
  292.  
  293.         SELECT
  294.           mtart
  295.           FROM t134
  296.           INTO TABLE @gt_t134
  297.           FOR ALL ENTRIES IN @gt_table1
  298.           WHERE mtart EQ @gt_table1-mtr_type.
  299.  
  300.         IF sy-subrc IS INITIAL.
  301.           SORT gt_t134 BY mtart.
  302.         ENDIF.
  303.  
  304.       ENDIF.
  305.  
  306.     ELSEIF p_r2 = 'X'.
  307.  
  308.       IF gt_table2 IS NOT INITIAL.
  309.  
  310.         SELECT
  311.           werks
  312.           FROM t001w
  313.           INTO TABLE @gt_t001w
  314.           FOR ALL ENTRIES IN @gt_table2
  315.           WHERE werks EQ @gt_table2-plant.
  316.  
  317.         IF sy-subrc IS INITIAL.
  318.           SORT gt_t001w BY werks.
  319.         ENDIF.
  320.  
  321.         SELECT
  322.           mtart
  323.           FROM t134
  324.           INTO TABLE @gt_t134
  325.           FOR ALL ENTRIES IN @gt_table2
  326.           WHERE mtart EQ @gt_table2-mtr_type.
  327.  
  328.         IF sy-subrc IS INITIAL.
  329.           SORT gt_t134 BY mtart.
  330.         ENDIF.
  331.  
  332.       ENDIF.
  333.  
  334.     ELSEIF p_r3 = 'X'.
  335.  
  336.       IF gt_table3 IS NOT INITIAL.
  337.  
  338.         SELECT
  339.           lgnum
  340.           FROM t300
  341.           INTO TABLE @gt_t300
  342.           FOR ALL ENTRIES IN @gt_table3
  343.           WHERE lgnum EQ @gt_table3-warehouse.
  344.  
  345.         IF sy-subrc IS INITIAL.
  346.           SORT gt_t300 BY lgnum.
  347.         ENDIF.
  348.  
  349.       ENDIF.
  350.  
  351.     ELSEIF p_r5 = 'X'.
  352.  
  353.       IF gt_table5 IS NOT INITIAL.
  354.  
  355.         SELECT
  356.           spras,
  357.           msehi
  358.           FROM t006a
  359.           INTO TABLE @gt_t006a
  360.           FOR ALL ENTRIES IN @gt_table5
  361.           WHERE msehi EQ @gt_table5-meins.
  362.  
  363.         IF sy-subrc IS INITIAL.
  364.           SORT gt_t006a BY msehi.
  365.         ENDIF.
  366.  
  367.       ENDIF.
  368.  
  369.     ELSEIF p_r6 = 'X'.
  370.  
  371.       IF gt_table6 IS NOT INITIAL.
  372.  
  373.         SELECT
  374.           spras,
  375.           msehi
  376.           FROM t006a
  377.           INTO TABLE @gt_t006a
  378.           FOR ALL ENTRIES IN @gt_table6
  379.           WHERE msehi EQ @gt_table6-meins.
  380.  
  381.         IF sy-subrc IS INITIAL.
  382.           SORT gt_t006a BY msehi.
  383.         ENDIF.
  384.  
  385.         SELECT
  386.           matnr
  387.           FROM mara
  388.           INTO TABLE @gt_mara
  389.           FOR ALL ENTRIES IN @gt_table6
  390.           WHERE matnr EQ @gt_table6-matnr.
  391.  
  392.         IF sy-subrc IS INITIAL.
  393.           SORT gt_mara BY matnr.
  394.         ENDIF.
  395.  
  396.       ENDIF.
  397.  
  398.     ENDIF.
  399.  
  400.   ENDMETHOD.
  401.  
  402.   METHOD validate_data.
  403.  
  404.     IF p_r1 = 'X'.
  405.  
  406.       LOOP AT gt_table1 INTO gs_table1.
  407.  
  408.         CLEAR gv_check.
  409.  
  410.         DATA(lv_nbr) = sy-tabix + 1.
  411.  
  412.         READ TABLE gt_t001w INTO gs_t001w WITH KEY werks = gs_table1-plant BINARY SEARCH.
  413.         IF sy-subrc IS NOT INITIAL.
  414.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  415.           EXIT.
  416.         ENDIF.
  417.  
  418.         READ TABLE gt_t001l INTO gs_t001l WITH KEY lgort = gs_table1-str_loc BINARY SEARCH.
  419.         IF sy-subrc IS NOT INITIAL.
  420.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  421.           EXIT.
  422.         ENDIF.
  423.  
  424.         READ TABLE gt_t134 INTO gs_t134 WITH KEY mtart = gs_table1-mtr_type BINARY SEARCH.
  425.         IF sy-subrc IS NOT INITIAL.
  426.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  427.           EXIT.
  428.         ENDIF.
  429.  
  430.         gv_check = c_valid.
  431.  
  432.       ENDLOOP.
  433.  
  434.     ELSEIF p_r2 = 'X'.
  435.  
  436.       LOOP AT gt_table2 INTO gs_table2.
  437.  
  438.         CLEAR gv_check.
  439.  
  440.         lv_nbr = sy-tabix + 1.
  441.  
  442.         READ TABLE gt_t001w INTO gs_t001w WITH KEY werks = gs_table2-plant BINARY SEARCH.
  443.         IF sy-subrc IS NOT INITIAL.
  444.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  445.           EXIT.
  446.         ENDIF.
  447.  
  448.         READ TABLE gt_t134 INTO gs_t134 WITH KEY mtart = gs_table2-mtr_type BINARY SEARCH.
  449.         IF sy-subrc IS NOT INITIAL.
  450.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  451.           EXIT.
  452.         ENDIF.
  453.  
  454.         CALL FUNCTION 'DD_DOMVALUES_GET'
  455.           EXPORTING
  456.             domname        = 'BESTQ'
  457.           TABLES
  458.             dd07v_tab      = gt_dd07v
  459.           EXCEPTIONS
  460.             wrong_textflag = 1
  461.             OTHERS         = 2.
  462.  
  463.         IF sy-subrc <> 0.
  464. * Implement suitable error handling here
  465.         ENDIF.
  466.  
  467.         READ TABLE gt_dd07v INTO gs_dd07v WITH KEY domvalue_l = gs_table2-stock_cat.
  468.         IF sy-subrc IS NOT INITIAL.
  469.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  470.           EXIT.
  471.         ENDIF.
  472.  
  473.         gv_check = c_valid.
  474.  
  475.       ENDLOOP.
  476.  
  477.     ELSEIF p_r3 = 'X'.
  478.  
  479.       LOOP AT gt_table3 INTO gs_table3.
  480.  
  481.         CLEAR gv_check.
  482.  
  483.         lv_nbr = sy-tabix + 1.
  484.  
  485.         READ TABLE gt_t300 INTO gs_t300 WITH KEY lgnum = gs_table3-warehouse BINARY SEARCH.
  486.         IF sy-subrc IS NOT INITIAL.
  487.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  488.           EXIT.
  489.         ENDIF.
  490.  
  491.         gv_check = c_valid.
  492.  
  493.       ENDLOOP.
  494.  
  495.     ELSEIF p_r5 = 'X'.
  496.  
  497.       LOOP AT gt_table5 INTO gs_table5.
  498.  
  499.         CLEAR gv_check.
  500.  
  501.         lv_nbr = sy-tabix + 1.
  502.  
  503.         READ TABLE gt_t006a INTO gs_t006a WITH KEY msehi = gs_table5-meins BINARY SEARCH.
  504.         IF sy-subrc IS NOT INITIAL.
  505.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  506.           EXIT.
  507.         ENDIF.
  508.  
  509.         gv_check = c_valid.
  510.  
  511.       ENDLOOP.
  512.  
  513.     ELSEIF p_r6 = 'X'.
  514.  
  515.       LOOP AT gt_table6 INTO gs_table6.
  516.  
  517.         CLEAR gv_check.
  518.  
  519.         lv_nbr = sy-tabix + 1.
  520.  
  521.         READ TABLE gt_mara INTO gs_mara WITH KEY matnr = gs_table6-matnr BINARY SEARCH.
  522.         IF sy-subrc IS NOT INITIAL.
  523.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  524.           EXIT.
  525.         ENDIF.
  526.  
  527.         READ TABLE gt_t006a INTO gs_t006a WITH KEY msehi = gs_table6-meins BINARY SEARCH.
  528.         IF sy-subrc IS NOT INITIAL.
  529.           MESSAGE s079(zstp) WITH lv_nbr DISPLAY LIKE c_e.  "Invalid Entry at Line &
  530.           EXIT.
  531.         ENDIF.
  532.  
  533.         gv_check = c_valid.
  534.  
  535.       ENDLOOP.
  536.  
  537.  
  538.     ENDIF.
  539.  
  540.   ENDMETHOD.
  541.  
  542.   METHOD populate_table.
  543.  
  544.     DATA : lv_lines     TYPE i,
  545.            lv_current   TYPE i,
  546.            lv_lines_c   TYPE char10,
  547.            lv_current_c TYPE char10,
  548.            lv_perc      TYPE p DECIMALS 2,
  549.            lv_text      TYPE char50.
  550.  
  551.     IF p_r1 = 'X' AND gv_check = c_valid.
  552.  
  553.       DELETE FROM zstp_inv_org_map.
  554.       lv_lines = lines( gt_table1 ).
  555.       INSERT zstp_inv_org_map FROM TABLE gt_table1.
  556.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  557.  
  558.     ELSEIF p_r2 = 'X' AND gv_check = c_valid.
  559.  
  560.       DELETE FROM zstp_subinv_map.
  561.       INSERT zstp_subinv_map FROM TABLE gt_table2.
  562.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  563.  
  564.     ELSEIF p_r3 = 'X' AND gv_check = c_valid.
  565.  
  566.       DELETE FROM zstp_wms_loc_map. "#EC CI_NOWHERE
  567.       INSERT zstp_wms_loc_map FROM TABLE gt_table3.
  568.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  569.  
  570.     ELSEIF p_r4 = 'X'.
  571.  
  572.       DELETE FROM zstp_cocode_map.
  573.       INSERT zstp_cocode_map FROM TABLE gt_table4.
  574.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  575.  
  576.     ELSEIF p_r5 = 'X' AND gv_check = c_valid.
  577.  
  578.       DELETE FROM zstp_convsap_uom.
  579.       INSERT zstp_convsap_uom FROM TABLE gt_table5.
  580.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  581.  
  582.     ELSEIF p_r6 = 'X' AND gv_check = c_valid.
  583.  
  584.       DELETE FROM zstp_conv_factor.
  585.       INSERT zstp_conv_factor FROM TABLE gt_table6.
  586.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  587.  
  588.     ELSEIF p_r7 = 'X' .
  589.  
  590.       DELETE FROM ZSTP_INVORG_NAME.
  591.       INSERT ZSTP_INVORG_NAME FROM TABLE gt_table7.
  592.       MESSAGE s080(zstp).  "Data Uploaded Successfuly
  593.  
  594.     ENDIF.
  595.  
  596.   ENDMETHOD.
  597.  
  598.  
  599. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement