Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 6.63 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report ZHM_MARD_STAGE_EXTEND
  3. *&---------------------------------------------------------------------*
  4. *&
  5. *&---------------------------------------------------------------------*
  6. REPORT zhm_mard_stage_extend.
  7.  
  8. TYPES: BEGIN OF t_mard,
  9.          matnr TYPE matnr,
  10.          werks TYPE werks_d,
  11.          lgort TYPE lgort_d,
  12.        END OF t_mard,
  13.        tt_mard TYPE TABLE OF t_mard WITH EMPTY KEY,
  14.        BEGIN OF t_lgort,
  15.          werks TYPE werks_d,
  16.          lgort TYPE lgort_d,
  17.        END OF t_lgort,
  18.        tt_lgort TYPE TABLE OF t_lgort WITH EMPTY KEY.
  19.  
  20. TYPES: BEGIN OF t_logs.
  21. TYPES: matnr   TYPE matnr,
  22.        t_color TYPE lvc_t_scol.
  23.     INCLUDE STRUCTURE bapireturn1.
  24. TYPES: END OF t_logs.
  25.  
  26. DATA: gs_mard  TYPE t_mard,
  27.       gt_mard  LIKE HASHED TABLE OF gs_mard WITH UNIQUE KEY matnr werks lgort,
  28.       gt_lgort TYPE SORTED TABLE OF t_lgort WITH NON-UNIQUE KEY werks,
  29.       gt_mara  TYPE HASHED TABLE OF matnr WITH UNIQUE KEY table_line,
  30.       gs_logs  TYPE t_logs,
  31.       gt_logs  TYPE TABLE OF t_logs,
  32.       gv_lines TYPE int4,
  33.       lv_tabix TYPE int4 VALUE 0,
  34.       ls_mara  TYPE mara.
  35.  
  36. DATA: o_alv        TYPE REF TO cl_salv_table,
  37.       lo_functions TYPE REF TO cl_salv_functions_list,
  38.       lo_columns   TYPE REF TO cl_salv_columns_table,
  39.       lo_column    TYPE REF TO cl_salv_column,
  40.  
  41.       lr_columns   TYPE REF TO cl_salv_columns,
  42.       lr_column    TYPE REF TO cl_salv_column_table,
  43.  
  44.       lr_display   TYPE REF TO cl_salv_display_settings,
  45.  
  46.       lo_layout    TYPE REF TO cl_salv_layout,
  47.       lf_variant   TYPE slis_vari,
  48.       ls_key       TYPE salv_s_layout_key.
  49.  
  50. SELECT-OPTIONS : s_mtart     FOR ls_mara-mtart,
  51.                  s_matnr     FOR gs_mard-matnr,
  52.                  s_werks     FOR gs_mard-werks,
  53.                  s_lgort     FOR gs_mard-lgort.
  54.  
  55. INITIALIZATION.
  56.   IF s_mtart[] IS INITIAL.
  57.     s_mtart[] = VALUE #( ( option = 'EQ' sign = 'I' low = 'ZHAW' )
  58.                          ( option = 'EQ' sign = 'I' low = 'ZPRO' )
  59.                          ( option = 'EQ' sign = 'I' low = 'ZNHN' )
  60.                          ( option = 'EQ' sign = 'I' low = 'ZNHX' ) ).
  61.   ENDIF.
  62.  
  63.   INCLUDE zhm_mard_stage_extend_f.
  64.  
  65. START-OF-SELECTION.
  66.  
  67.   PERFORM get_data.
  68.  
  69.   LOOP AT gt_mard INTO gs_mard.
  70.  
  71.     AT NEW matnr.
  72.  
  73.       lv_tabix = lv_tabix + 1.
  74.  
  75.       PERFORM gui_indicator USING lv_tabix gs_mard-matnr.
  76.       PERFORM process_line USING gs_mard-matnr.
  77.  
  78.     ENDAT.
  79.  
  80.   ENDLOOP.
  81.   IF sy-subrc = 0.
  82.  
  83.     TRY.
  84.         cl_salv_table=>factory(
  85.           IMPORTING
  86.             r_salv_table = o_alv
  87.           CHANGING
  88.             t_table      = gt_logs ).
  89.       CATCH cx_salv_msg.
  90.         RETURN.
  91.     ENDTRY.
  92.  
  93.     o_alv->set_screen_status(
  94.                               pfstatus      = 'SALV_STANDARD'
  95.                               report        = sy-repid
  96.                               set_functions = o_alv->c_functions_all ).
  97.  
  98.     lo_layout = o_alv->get_layout( ).
  99.     lo_columns = o_alv->get_columns( ).
  100.     lo_columns->set_color_column( 'T_COLOR' ).
  101.     lo_columns->set_optimize('X').
  102.     ls_key-report = sy-repid.
  103.  
  104.     lo_layout->set_key( ls_key ).
  105.     lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
  106.     lo_layout->set_default( abap_true ).
  107.  
  108.     o_alv->display( ).
  109.  
  110.   ENDIF.
  111.  
  112. *----------------------------------------------------------------------*
  113. ***INCLUDE ZHM_MARD_STAGE_EXTEND_F.
  114. *----------------------------------------------------------------------*
  115. *&---------------------------------------------------------------------*
  116. *&      Form  GET_DATA
  117. *&---------------------------------------------------------------------*
  118. *       text
  119. *----------------------------------------------------------------------*
  120. *  -->  p1        text
  121. *  <--  p2        text
  122. *----------------------------------------------------------------------*
  123. FORM get_data .
  124.  
  125.   SELECT werks lgort
  126.     FROM t001l
  127.     INTO TABLE gt_lgort
  128.     WHERE werks IN s_werks
  129.       AND lgort IN s_lgort.
  130.  
  131.   SELECT matnr
  132.     FROM mara
  133.     INTO TABLE gt_mara
  134.     WHERE mtart IN s_mtart
  135.       AND matnr IN s_matnr.
  136.   IF sy-subrc = 0.
  137.  
  138.     SELECT matnr werks lgort
  139.       FROM mard
  140.       INTO CORRESPONDING FIELDS OF TABLE gt_mard
  141.       FOR ALL ENTRIES IN gt_mara
  142.       WHERE matnr = gt_mara-table_line
  143.         AND werks IN s_werks
  144.       ORDER BY PRIMARY KEY.
  145.  
  146.     DESCRIBE TABLE gt_mara LINES gv_lines.
  147.  
  148.   ENDIF.
  149.  
  150.  
  151.  
  152.  
  153.  
  154. ENDFORM.
  155. *&---------------------------------------------------------------------*
  156. *&      Form  PROCESS_LINE
  157. *&---------------------------------------------------------------------*
  158. *       text
  159. *----------------------------------------------------------------------*
  160. *      -->P_GS_MARD_MATNR  text
  161. *----------------------------------------------------------------------*
  162. FORM process_line  USING iv_matnr TYPE matnr.
  163.  
  164.   DATA: ls_sto_loc    TYPE bapie1mardrt,
  165.         ls_sto_locx   TYPE bapie1mardrtx,
  166.         ls_mard_final TYPE mard,
  167.         lt_sto_loc    TYPE TABLE OF bapie1mardrt,
  168.         lt_sto_locx   TYPE TABLE OF bapie1mardrtx,
  169.         ls_return     TYPE bapireturn1,
  170.         ls_mara_var   TYPE mara,
  171.         ls_headdata   TYPE bapie1mathead.
  172.  
  173.   DATA: lt_mard TYPE SORTED TABLE OF t_mard WITH NON-UNIQUE KEY werks,
  174.         ls_mard LIKE LINE OF lt_mard.
  175.  
  176.   DATA: lt_mard_mf  TYPE mard_tab,
  177.         lt_t001l_mf TYPE wrf_sit_tt001l.
  178.  
  179.   CLEAR:  ls_headdata, lt_sto_loc, lt_sto_locx, ls_return.
  180.  
  181.   lt_mard = VALUE #( FOR wa IN gt_mard WHERE ( matnr = iv_matnr ) ( wa ) ).
  182.   DATA(lt_lgort) = FILTER #( gt_lgort IN lt_mard WHERE werks = werks ).
  183.  
  184.   MOVE-CORRESPONDING lt_mard  TO lt_mard_mf.
  185.   MOVE-CORRESPONDING lt_lgort TO lt_t001l_mf.
  186.  
  187.   CALL FUNCTION 'ZHM_ART_EXTEND_LGORT'
  188.     EXPORTING
  189.       iv_matnr  = iv_matnr
  190.       it_mard   = lt_mard_mf
  191.       it_t001l  = lt_t001l_mf
  192.     IMPORTING
  193.       es_return = ls_return.
  194.  
  195.   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  196.  
  197.   IF ls_return IS NOT INITIAL.
  198.  
  199.     CLEAR gs_logs.
  200.     MOVE-CORRESPONDING ls_return TO gs_logs.
  201.     gs_logs-matnr = iv_matnr.
  202.  
  203.     IF gs_logs-type = 'E'.
  204.       gs_logs-t_color = VALUE #( ( color-col = col_negative color-int = 0 color-inv =  0 ) ).
  205.     ENDIF.
  206.  
  207.     APPEND gs_logs TO gt_logs.
  208.  
  209.   ENDIF.
  210.  
  211. ENDFORM.
  212.  
  213. FORM gui_indicator USING iv_tabix TYPE int4 iv_matnr TYPE matnr.
  214.  
  215.   CHECK sy-batch IS INITIAL.
  216.  
  217.   DATA: lv_perc TYPE p,
  218.         lv_text TYPE string.
  219.  
  220.   lv_perc = ( iv_tabix / gv_lines ) * 100.
  221.   lv_text = |Przetwarzanie { iv_matnr ALPHA = OUT } { iv_tabix }/{ gv_lines }|.
  222.  
  223.   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
  224.     EXPORTING
  225.       percentage = lv_perc
  226.       text       = lv_text.
  227.  
  228.  
  229. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement