cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

/SCWM/ADGI Transfer EWM --> MM with RFUI

former_member183155
Active Contributor
0 Likes
4,591

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

Accepted Solutions (1)

Accepted Solutions (1)

former_member183155
Active Contributor
0 Likes

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

Answers (2)

Answers (2)

former_member543347
Active Participant
0 Likes

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.

former_member543347
Active Participant
0 Likes

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.

former_member183155
Active Contributor
0 Likes

Hi Lopez ;

It must be unrestricted stock type . Otherwords, i have to transfer with 311.

Brgds

M.Ozgur Unal