Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Report ZHM_MARD_STAGE_EXTEND
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- REPORT zhm_mard_stage_extend.
- TYPES: BEGIN OF t_mard,
- matnr TYPE matnr,
- werks TYPE werks_d,
- lgort TYPE lgort_d,
- END OF t_mard,
- tt_mard TYPE TABLE OF t_mard WITH EMPTY KEY,
- BEGIN OF t_lgort,
- werks TYPE werks_d,
- lgort TYPE lgort_d,
- END OF t_lgort,
- tt_lgort TYPE TABLE OF t_lgort WITH EMPTY KEY.
- TYPES: BEGIN OF t_logs.
- TYPES: matnr TYPE matnr,
- t_color TYPE lvc_t_scol.
- INCLUDE STRUCTURE bapireturn1.
- TYPES: END OF t_logs.
- DATA: gs_mard TYPE t_mard,
- gt_mard LIKE HASHED TABLE OF gs_mard WITH UNIQUE KEY matnr werks lgort,
- gt_lgort TYPE SORTED TABLE OF t_lgort WITH NON-UNIQUE KEY werks,
- gt_mara TYPE HASHED TABLE OF matnr WITH UNIQUE KEY table_line,
- gs_logs TYPE t_logs,
- gt_logs TYPE TABLE OF t_logs,
- gv_lines TYPE int4,
- lv_tabix TYPE int4 VALUE 0,
- ls_mara TYPE mara.
- DATA: o_alv TYPE REF TO cl_salv_table,
- lo_functions TYPE REF TO cl_salv_functions_list,
- lo_columns TYPE REF TO cl_salv_columns_table,
- lo_column TYPE REF TO cl_salv_column,
- lr_columns TYPE REF TO cl_salv_columns,
- lr_column TYPE REF TO cl_salv_column_table,
- lr_display TYPE REF TO cl_salv_display_settings,
- lo_layout TYPE REF TO cl_salv_layout,
- lf_variant TYPE slis_vari,
- ls_key TYPE salv_s_layout_key.
- SELECT-OPTIONS : s_mtart FOR ls_mara-mtart,
- s_matnr FOR gs_mard-matnr,
- s_werks FOR gs_mard-werks,
- s_lgort FOR gs_mard-lgort.
- INITIALIZATION.
- IF s_mtart[] IS INITIAL.
- s_mtart[] = VALUE #( ( option = 'EQ' sign = 'I' low = 'ZHAW' )
- ( option = 'EQ' sign = 'I' low = 'ZPRO' )
- ( option = 'EQ' sign = 'I' low = 'ZNHN' )
- ( option = 'EQ' sign = 'I' low = 'ZNHX' ) ).
- ENDIF.
- INCLUDE zhm_mard_stage_extend_f.
- START-OF-SELECTION.
- PERFORM get_data.
- LOOP AT gt_mard INTO gs_mard.
- AT NEW matnr.
- lv_tabix = lv_tabix + 1.
- PERFORM gui_indicator USING lv_tabix gs_mard-matnr.
- PERFORM process_line USING gs_mard-matnr.
- ENDAT.
- ENDLOOP.
- IF sy-subrc = 0.
- TRY.
- cl_salv_table=>factory(
- IMPORTING
- r_salv_table = o_alv
- CHANGING
- t_table = gt_logs ).
- CATCH cx_salv_msg.
- RETURN.
- ENDTRY.
- o_alv->set_screen_status(
- pfstatus = 'SALV_STANDARD'
- report = sy-repid
- set_functions = o_alv->c_functions_all ).
- lo_layout = o_alv->get_layout( ).
- lo_columns = o_alv->get_columns( ).
- lo_columns->set_color_column( 'T_COLOR' ).
- lo_columns->set_optimize('X').
- ls_key-report = sy-repid.
- lo_layout->set_key( ls_key ).
- lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
- lo_layout->set_default( abap_true ).
- o_alv->display( ).
- ENDIF.
- *----------------------------------------------------------------------*
- ***INCLUDE ZHM_MARD_STAGE_EXTEND_F.
- *----------------------------------------------------------------------*
- *&---------------------------------------------------------------------*
- *& Form GET_DATA
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM get_data .
- SELECT werks lgort
- FROM t001l
- INTO TABLE gt_lgort
- WHERE werks IN s_werks
- AND lgort IN s_lgort.
- SELECT matnr
- FROM mara
- INTO TABLE gt_mara
- WHERE mtart IN s_mtart
- AND matnr IN s_matnr.
- IF sy-subrc = 0.
- SELECT matnr werks lgort
- FROM mard
- INTO CORRESPONDING FIELDS OF TABLE gt_mard
- FOR ALL ENTRIES IN gt_mara
- WHERE matnr = gt_mara-table_line
- AND werks IN s_werks
- ORDER BY PRIMARY KEY.
- DESCRIBE TABLE gt_mara LINES gv_lines.
- ENDIF.
- ENDFORM.
- *&---------------------------------------------------------------------*
- *& Form PROCESS_LINE
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->P_GS_MARD_MATNR text
- *----------------------------------------------------------------------*
- FORM process_line USING iv_matnr TYPE matnr.
- DATA: ls_sto_loc TYPE bapie1mardrt,
- ls_sto_locx TYPE bapie1mardrtx,
- ls_mard_final TYPE mard,
- lt_sto_loc TYPE TABLE OF bapie1mardrt,
- lt_sto_locx TYPE TABLE OF bapie1mardrtx,
- ls_return TYPE bapireturn1,
- ls_mara_var TYPE mara,
- ls_headdata TYPE bapie1mathead.
- DATA: lt_mard TYPE SORTED TABLE OF t_mard WITH NON-UNIQUE KEY werks,
- ls_mard LIKE LINE OF lt_mard.
- DATA: lt_mard_mf TYPE mard_tab,
- lt_t001l_mf TYPE wrf_sit_tt001l.
- CLEAR: ls_headdata, lt_sto_loc, lt_sto_locx, ls_return.
- lt_mard = VALUE #( FOR wa IN gt_mard WHERE ( matnr = iv_matnr ) ( wa ) ).
- DATA(lt_lgort) = FILTER #( gt_lgort IN lt_mard WHERE werks = werks ).
- MOVE-CORRESPONDING lt_mard TO lt_mard_mf.
- MOVE-CORRESPONDING lt_lgort TO lt_t001l_mf.
- CALL FUNCTION 'ZHM_ART_EXTEND_LGORT'
- EXPORTING
- iv_matnr = iv_matnr
- it_mard = lt_mard_mf
- it_t001l = lt_t001l_mf
- IMPORTING
- es_return = ls_return.
- CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
- IF ls_return IS NOT INITIAL.
- CLEAR gs_logs.
- MOVE-CORRESPONDING ls_return TO gs_logs.
- gs_logs-matnr = iv_matnr.
- IF gs_logs-type = 'E'.
- gs_logs-t_color = VALUE #( ( color-col = col_negative color-int = 0 color-inv = 0 ) ).
- ENDIF.
- APPEND gs_logs TO gt_logs.
- ENDIF.
- ENDFORM.
- FORM gui_indicator USING iv_tabix TYPE int4 iv_matnr TYPE matnr.
- CHECK sy-batch IS INITIAL.
- DATA: lv_perc TYPE p,
- lv_text TYPE string.
- lv_perc = ( iv_tabix / gv_lines ) * 100.
- lv_text = |Przetwarzanie { iv_matnr ALPHA = OUT } { iv_tabix }/{ gv_lines }|.
- CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
- EXPORTING
- percentage = lv_perc
- text = lv_text.
- ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement