on ‎2018 Oct 31 1:32 PM
Hi all ,
There is no fuction in RFUI transfer HU EWM-->MM that's why we will develop program.
If you have any other idea, you can share us.
Brgds
M.Ozgur Unal
Request clarification before answering.
Hi all ,
You can benefit from simple code.
REPORT zewm_referanssiz_transfer.
TABLES : ZEWMS_REFERANSSIZ_TRANSFER.
INCLUDE zewm_referanssiz_transfer_data.
INCLUDE zewm_referanssiz_transfer_form.
**********************************************************
*&---------------------------------------------------------------------*
*& Include ZEWM_REFERANSSIZ TRANSFER
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_1100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_1100 OUTPUT.
SET PF-STATUS 'STANDART'.
SET TıTLEBAR 'STANDART_TıT'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_1100 INPUT.
CASE sy-ucomm.
WHEN 'B_SAVE'.
PERFORM transfer.
ENDCASE .
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1100_EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_1100_exit INPUT.
CASE sy-ucomm.
WHEN 'EXIT' OR 'B_BACK'.
LEAVE TO SCREEN 0 .
ENDCASE .
ENDMODULE.
FORM transfer .
DATA: lv_huident TYPE /scwm/s_lagp_mon_f4-huident,
lv_lgnum TYPE /scwm/lgnum,
lv_nwmloc TYPE /scwm/de_nwmloc,
lt_return TYPE bapiret2_tt,
ls_return TYPE bapiret2.
CALL FUNCTION 'ZEWM_MAL_CIKIS'
EXPORTING
iv_huident = zewms_referanssiz_transfer-huident
iv_lgnum = 'W001'
iv_nwmloc = zewms_referanssiz_transfer-nwmloc "'1000'
IMPORTING
it_return = lt_return.
IF lt_return IS NOT INITIAL .
CALL FUNCTION 'FINB_BAPIRET2_DISPLAY'
EXPORTING
it_message = lt_return.
ENDIF .
ENDFORM.
***************************************************************
FUNCTION zewm_mal_cikis.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_HUIDENT) TYPE /SCWM/S_LAGP_MON_F4-HUIDENT
*" VALUE(IV_LGNUM) TYPE /SCWM/LGNUM DEFAULT 'W001'
*" REFERENCE(IV_NWMLOC) TYPE /SCWM/DE_NWMLOC DEFAULT '1000'
*" EXPORTING
*" VALUE(IT_RETURN) TYPE BAPIRET2_TT
*"----------------------------------------------------------------------
DATA: mo_appl TYPE REF TO /scwm/cl_rgi_scrap_srvc,
mo_data TYPE REF TO data,
mv_structure TYPE /scwm/de_list_st,
mv_tabletype TYPE /scwm/de_list_tt,
mo_data_sel TYPE REF TO data,
mo_alv_table TYPE REF TO cl_salv_table,
go_splitter TYPE REF TO cl_gui_easy_splitter_container,
go_scrap TYPE REF TO /scwm/cl_rgi_scrap_srvc,
go_log TYPE REF TO /scwm/cl_log,
gt_data_hu TYPE /scwm/tt_scrap_hu,
gt_data_stock TYPE /scwm/tt_scrap_stock,
gt_data_sernr TYPE /scwm/tt_scrap_serid,
gv_cw_rel TYPE xfeld VALUE ' ',
gv_flg_suom TYPE xfeld VALUE ' ',
gv_full_qty_reason TYPE abap_bool VALUE abap_false,
" gv_lgnum TYPE /scwm/s_adgi_proc-lgnum,
gv_scrap_hu TYPE abap_bool VALUE abap_false.
DATA: lo_selections TYPE REF TO cl_salv_selections,
lo_erp_timbwa TYPE REF TO /scwm/cl_erp_timbwa,
lt_rows TYPE salv_t_row,
lv_selected TYPE int4,
ls_msg TYPE bapiret2,
lt_prot TYPE bapirettab,
ls_gmheader TYPE /scwm/s_gmheader,
lv_severity TYPE bapi_mtype,
lo_log_tmp TYPE REF TO /scwm/cl_log.
DATA: lt_hu_sel TYPE /scwm/tt_scrap_hu,
ls_hu_sel TYPE /scwm/s_scrap_hu,
lt_stock_sel TYPE /scwm/tt_scrap_stock,
ls_stock_sel TYPE /scwm/s_scrap_stock,
lt_sernr_sel TYPE /scwm/tt_scrap_serid,
ls_sernr_sel TYPE /scwm/s_scrap_serid,
lt_serid TYPE /scwm/tt_seri_key,
ls_serid TYPE /scwm/s_seri_key,
ls_serial TYPE /scwm/s_wmserial,
ls_matnr TYPE /scmb/mdl_matnr_str,
ls_matid TYPE /scmb/mdl_matid_str,
lv_matid TYPE /scwm/de_matid,
lv_quan TYPE int4,
lv_seri_unit TYPE meins,
" lv_reason LIKE p_reason,
lv_gmcode TYPE /scwm/de_gmcode,
lt_stock_sel_c TYPE /scwm/tt_scrap_stock,
lv_answer TYPE c,
lv_reason TYPE /scwm/s_adgi_proc-reason,
ls_return TYPE bapiret2.
FIELD-SYMBOLS: <ls_hu_sel> TYPE /scwm/s_scrap_hu,
<ls_data_hu> TYPE /scwm/s_scrap_hu,
<ls_stock_sel> TYPE /scwm/s_scrap_stock,
<ls_data_stock> TYPE /scwm/s_scrap_stock,
<ls_sernr_sel> TYPE /scwm/s_scrap_serid,
<ls_data_serid> TYPE /scwm/s_scrap_serid,
<lt_row> TYPE int4,
<ls_prot> TYPE bapiret2.
RANGES : r_hu FOR /scwm/s_lagp_mon_f4-huident.
FIELD-SYMBOLS: <lt_data> TYPE INDEX TABLE.
r_hu-low = iv_huident.
r_hu-sign = 'I'.
r_hu-option = 'EQ'.
APPEND r_hu .
* init
mv_structure = '/scwm/s_scrap_stock'.
" mv_tabletype = '/scwm/tt_scrap_stock'.
* get the containers of the splitter control
" lo_container_top = go_splitter->top_left_container.
CLEAR gt_data_stock.
CREATE OBJECT go_scrap
EXPORTING
iv_lgnum = iv_lgnum.
*lcl_scr_handler=>scr_create_top( ir_appl = go_scrap ).
*** Select data ***
CALL METHOD go_scrap->get_physical_stock " mo_appl
EXPORTING
* iv_lgtyp = p_lgtyp
* it_lgpla_r = so_lgpla[]
* it_matnr_r = so_matnr[]
* it_owner_r = so_owner[]
* it_entıtled_r = so_entıt[]
* it_charg_r = so_batch[]
* it_cat_r = so_cat[]
* iv_stockusage = p_stkuse
* iv_doccat = p_stdoct
* iv_docno = p_stdnoe
* iv_itmno = p_stditm
* it_serid_r = so_serid[]
it_huident_r = r_hu[]
* iv_hu_list =
IMPORTING
et_stock_mon = gt_data_stock.
IF gt_data_stock IS INITIAL .
CLEAR : ls_return.
ls_return-type = 'E'.
ls_return-id = '00'.
ls_return-number = '398' .
ls_return-log_msg_no = '398'.
ls_return-message_v1 = 'Tasima Biriminde stok bulunamadı !'.
APPEND ls_return TO it_return.
return.
ENDIF .
CALL METHOD go_scrap->scrap_handle
EXPORTING
it_hu_sel = lt_hu_sel
it_stock_sel = gt_data_stock "lt_stock_sel
it_serid_sel = lt_sernr_sel
iv_nwmloc = iv_nwmloc " EWM DEPOSU DEĞİL
iv_reason = 'NWLO'
iv_reason_wm = lv_reason "Hareket Nedeni
CHANGING
cs_gmheader = ls_gmheader.
gs_last_gmheader = ls_gmheader.
IF gs_last_gmheader-log IS BOUND.
TRY.
* write temp log
CALL METHOD go_scrap->write_log
CHANGING
co_log = gs_last_gmheader-log.
CATCH /scwm/cx_core .
* display message directly and no log
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
DISPLAY LIKE sy-msgty.
RETURN.
ENDTRY.
* get temp log
lo_log_tmp = gs_last_gmheader-log.
* save Appl-Log based on customizing
TRY.
CALL METHOD go_scrap->save_log
CHANGING
co_log = lo_log_tmp.
CATCH /scwm/cx_core .
* display message directly and no log
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
DISPLAY LIKE sy-msgty.
RETURN.
ENDTRY.
* get MSG-Type
CALL METHOD gs_last_gmheader-log->get_severity
RECEIVING
e_rc_severity = lv_severity.
IF lv_severity CA 'EAX'.
* get protocol / error handling for column scrap_quantıty.
CALL METHOD gs_last_gmheader-log->get_prot
RECEIVING
et_protocol = lt_prot.
CASE mv_structure.
" WHEN '/scwm/s_scrap_hu'.
* LOOP AT lt_prot ASSIGNING <ls_prot> WHERE type NE 'S'.
* READ TABLE lt_hu_sel INTO ls_hu_sel INDEX <ls_prot>-row.
* READ TABLE gt_data_hu ASSIGNING <ls_data_hu> WITH KEY huident = ls_hu_sel-huident.
* CLEAR <ls_data_hu>-scrap_quantıty.
* ENDLOOP.
WHEN '/scwm/s_scrap_stock'.
READ TABLE gt_data_stock ASSIGNING <ls_stock_sel> INDEX 1.
IF <ls_stock_sel>-scrap_quantıty > 0.
<ls_stock_sel>-scrap_quantıty = <ls_stock_sel>-scrap_quantıty + <ls_stock_sel>-quan.
ELSE.
<ls_stock_sel>-scrap_quantıty = <ls_stock_sel>-quan.
ENDIF.
<ls_stock_sel>-unit = <ls_stock_sel>-meins.
APPEND <ls_stock_sel> TO lt_stock_sel.
" IF sy-subrc = 0.
LOOP AT lt_prot ASSIGNING <ls_prot> WHERE type NE 'S'.
READ TABLE lt_stock_sel INTO ls_stock_sel INDEX <ls_prot>-row.
READ TABLE gt_data_stock ASSIGNING <ls_data_stock> INDEX 1.
* WITH KEY guid_parent = ls_stock_sel-guid_parent
* guid_stock = ls_stock_sel-guid_stock.
CLEAR <ls_data_stock>-scrap_quantıty.
ENDLOOP.
* WHEN '/scwm/s_scrap_serid'.
* LOOP AT lt_prot ASSIGNING <ls_prot> WHERE type NE 'S'.
* READ TABLE lt_sernr_sel INTO ls_sernr_sel INDEX <ls_prot>-row.
* READ TABLE gt_data_sernr ASSIGNING <ls_data_serid> WITH KEY serid = ls_sernr_sel-serid.
* CLEAR <ls_data_serid>-scrap_quantiy.
* ENDLOOP.
ENDCASE.
CALL METHOD gs_last_gmheader-log->get_last_message_complete
EXPORTING
iv_msg_type = 'S' "E
IMPORTING
ev_msg = ls_msg.
IF NOT ls_msg IS INITIAL.
* MESSAGE ID ls_msg-id TYPE ls_msg-type NUMBER ls_msg-number
* WITH ls_msg-message_v1 ls_msg-message_v2 ls_msg-message_v3
* ls_msg-message_v4.
APPEND ls_msg TO it_return.
* ls_return-type = 'S'.
* ls_return-id = '00'.
* ls_return-number = '398' .
* ls_return-log_msg_no = '398'.
* ls_return-message_v1 = 'Tasima Biriminde stok bulunamadı !'.
* APPEND ls_return TO it_return.
ENDIF.
* case of an error: display log directly
" PERFORM display_log.
ELSE.
* get last success('S') message and display
CLEAR ls_msg.
CALL METHOD gs_last_gmheader-log->get_last_message_complete
EXPORTING
iv_msg_type = 'S' "E
IMPORTING
ev_msg = ls_msg.
IF NOT ls_msg IS INITIAL.
* MESSAGE ID ls_msg-id TYPE ls_msg-type NUMBER ls_msg-number
* WITH ls_msg-message_v1 ls_msg-message_v2 ls_msg-message_v3
* ls_msg-message_v4.
APPEND ls_msg TO it_return.
* ls_return-type = 'S'.
* ls_return-id = '00'.
* ls_return-number = '398' .
* ls_return-log_msg_no = '398'.
* ls_return-message_v1 = 'Tasima Biriminde stok bulunamadı !'.
* APPEND ls_return TO it_return.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
FORM display_log .
DATA: ls_display_profile TYPE bal_s_prof,
lv_loghandle TYPE balloghndl, "#EC NEEDED
ls_msg TYPE bapiret2, "#EC NEEDED
lv_severity TYPE bapi_mtype. "#EC NEEDED
IF NOT gs_last_gmheader-log IS BOUND.
*** Exit, if no log must be displayed
RETURN.
ENDIF.
*** Get profile for popup application log
CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
IMPORTING
e_s_display_profile = ls_display_profile.
ls_display_profile-use_grid = 'X'.
TRY.
CALL METHOD gs_last_gmheader-log->display_log
EXPORTING
is_display_profile = ls_display_profile.
CATCH /scwm/cx_basics. "#EC NO_HANDLER
ENDTRY.
ENDFORM. " DISPLAY_LOG
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
In /SCWM/RGI_SCRAP you can select per stock type.
When moving from EWM to non-EWM storage location, EWM uses in standard 411 for own stock, 311 for consignment stock. Not sure about project stock or other stock usages. For us this worked always OK.
Of course the disadvantage is that if the posting is not possible (let's say that your goods have delivery reference or an open inspection document), users don't get an error immediately. So someone needs to monitor the stock on the "hot bin" and the corresponding job logs.
The big advantage is that you can work with standard code.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Mehmet,
Another option is just to define a bin "SCRAP", "MOVE-TO-MM", etc. and plan the report /SCWM/RGI_SCRAP as a background job. So if users post stock to that bin, it will be periodically posted to MM, scrapped, etc.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 14 | |
| 9 | |
| 8 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.