Triggering IDOC using BTE when Material is changed in MM02 Transaction
...Previous
8.
Now we have created a Z
function module “ZSAMPLE_INTERFACE_00001250” where we can write our custom
code for triggering IDOC as followed :
FUNCTION zsample_interface_00001250.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_MARA_NEW) LIKE MARA STRUCTURE MARA OPTIONAL
*" VALUE(I_MARA_OLD) LIKE MARA STRUCTURE MARA OPTIONAL
*" VALUE(UPD_MARA) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MARC_NEW) LIKE MARC STRUCTURE MARC OPTIONAL
*" VALUE(I_MARC_OLD) LIKE MARC STRUCTURE MARC OPTIONAL
*" VALUE(UPD_MARC) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MARD_NEW) LIKE MARD STRUCTURE MARD OPTIONAL
*" VALUE(I_MARD_OLD) LIKE MARD STRUCTURE MARD OPTIONAL
*" VALUE(UPD_MARD) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MBEW_NEW) LIKE MBEW STRUCTURE MBEW OPTIONAL
*" VALUE(I_MBEW_OLD) LIKE MBEW STRUCTURE MBEW OPTIONAL
*" VALUE(UPD_MBEW) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MFHM_NEW) LIKE MFHM STRUCTURE MFHM OPTIONAL
*" VALUE(I_MFHM_OLD) LIKE MFHM STRUCTURE MFHM OPTIONAL
*" VALUE(UPD_MFHM) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MLGN_NEW) LIKE MLGN STRUCTURE MLGN OPTIONAL
*" VALUE(I_MLGN_OLD) LIKE MLGN STRUCTURE MLGN OPTIONAL
*" VALUE(UPD_MLGN) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MLGT_NEW) LIKE MLGT STRUCTURE MLGT OPTIONAL
*" VALUE(I_MLGT_OLD) LIKE MLGT STRUCTURE MLGT OPTIONAL
*" VALUE(UPD_MLGT) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MPGD_NEW) LIKE MPGD STRUCTURE MPGD OPTIONAL
*" VALUE(I_MPGD_OLD) LIKE MPGD STRUCTURE MPGD OPTIONAL
*" VALUE(UPD_MPGD) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MPOP_NEW) LIKE MPOP STRUCTURE MPOP OPTIONAL
*" VALUE(I_MPOP_OLD) LIKE MPOP STRUCTURE MPOP OPTIONAL
*" VALUE(UPD_MPOP) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(I_MVKE_NEW) LIKE MVKE STRUCTURE MVKE OPTIONAL
*" VALUE(I_MVKE_OLD) LIKE MVKE STRUCTURE MVKE OPTIONAL
*" VALUE(UPD_MVKE) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MAKT) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MARM) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MEAN) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MLAN) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_ICDTXT_MATERIAL) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_PROW) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_GESV) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_UNGV) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MAEX) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MAPE) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_MKAL) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(UPD_QMAT) LIKE CDPOS-CHNGIND OPTIONAL
*" VALUE(FL_UPD_TASK) TYPE XFELD OPTIONAL
*" TABLES
*" T_ICDTXT_MATERIAL STRUCTURE CDTXT OPTIONAL
*" T_MAKT_NEW STRUCTURE XDMAKT OPTIONAL
*" T_MAKT_OLD STRUCTURE XDMAKT OPTIONAL
*" T_MARM_NEW STRUCTURE XDMARM OPTIONAL
*" T_MARM_OLD STRUCTURE XDMARM OPTIONAL
*" T_MEAN_NEW STRUCTURE XDMEAN OPTIONAL
*" T_MEAN_OLD STRUCTURE XDMEAN OPTIONAL
*" T_MLAN_NEW STRUCTURE XDMLAN OPTIONAL
*" T_MLAN_OLD STRUCTURE XDMLAN OPTIONAL
*" T_MAEX_NEW STRUCTURE XDMAEX OPTIONAL
*" T_MAEX_OLD STRUCTURE XDMAEX OPTIONAL
*" T_MAPE_NEW STRUCTURE XDMAPE OPTIONAL
*" T_MAPE_OLD STRUCTURE XDMAPE OPTIONAL
*" T_MKAL_NEW STRUCTURE XDMKAL OPTIONAL
*" T_MKAL_OLD STRUCTURE XDMKAL OPTIONAL
*" T_PROW_NEW STRUCTURE XDPROW OPTIONAL
*" T_PROW_OLD STRUCTURE XDPROW OPTIONAL
*" T_QMAT_NEW STRUCTURE XDQMAT OPTIONAL
*" T_QMAT_OLD STRUCTURE XDQMAT OPTIONAL
*" T_GESV_NEW STRUCTURE XDGESV OPTIONAL
*" T_GESV_OLD STRUCTURE XDGESV OPTIONAL
*" T_UNGV_NEW STRUCTURE XDUNGV OPTIONAL
*" T_UNGV_OLD STRUCTURE XDUNGV OPTIONAL
*"----------------------------------------------------------------------
DATA : gt_idoc_data TYPE STANDARD TABLE OF edidd,
wa_idoc_data TYPE edidd,
wa_idoc_control LIKE edidc,
gt_comm_idocs TYPE STANDARD TABLE OF edidc.
DATA: wa_e1maram LIKE e1maram,
wa_e1maktm LIKE e1maktm,
wa_e1marcm LIKE e1marcm,
wa_e1mardm LIKE e1mardm,
wa_e1marmm LIKE e1marmm,
wa_e1mbewm LIKE e1mbewm,
wa_e1mvkem LIKE e1mvkem,
wa_e1mlanm LIKE e1mlanm.
*Filling IDOC Control records
wa_idoc_control-mestyp = 'MATMAS'.
wa_idoc_control-idoctp = 'MATMAS05'.
wa_idoc_control-rcvpor = 'SAPTEST'.
wa_idoc_control-rcvprt = 'LS'.
wa_idoc_control-rcvprn = 'SAPCLNT001'.
wa_idoc_data-segnam = 'E1MARAM'.
MOVE-CORRESPONDING i_mara_new TO wa_e1maram.
MOVE wa_e1maram TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MAKTM'.
MOVE-CORRESPONDING t_makt_new TO wa_e1maktm.
MOVE wa_e1maktm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MARCM'.
MOVE-CORRESPONDING i_marc_new TO wa_e1marcm.
MOVE wa_e1marcm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MARDM'.
MOVE-CORRESPONDING i_mard_new TO wa_e1mardm.
MOVE wa_e1mardm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MARMM'.
MOVE-CORRESPONDING t_marm_new TO wa_e1mardm.
MOVE wa_e1mardm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MBEWM'.
MOVE-CORRESPONDING i_mbew_new TO wa_e1mardm.
MOVE wa_e1mardm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MVKEM'.
MOVE-CORRESPONDING i_mvke_new TO wa_e1mvkem.
MOVE wa_e1mvkem TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MLANM'.
MOVE-CORRESPONDING i_mvke_new TO wa_e1mlanm.
MOVE wa_e1mlanm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
CLEAR wa_idoc_data.
wa_idoc_data-segnam = 'E1MLANM'.
MOVE-CORRESPONDING i_mvke_new TO wa_e1mlanm.
MOVE wa_e1mlanm TO wa_idoc_data-sdata.
APPEND wa_idoc_data TO gt_idoc_data.
*Generating IDOC
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = wa_idoc_control
* OBJ_TYPE = ''
* CHNUM = ''
TABLES
communication_idoc_control = gt_comm_idocs
master_idoc_data = gt_idoc_data
EXCEPTIONS
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
OTHERS = 5
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFUNCTION.
Now
we need to do some configuration to activate the BTE so that it will only
trigger when SAVE button would be pressed while changing the material in MM02.
Steps as follows:
9.
Go to FIBF transaction -> Settings -> P/S Modules ->
then select ….Of a customer.
The below screen will appear

Then SELECT new entries and add 1 row of information by
giving BTE event name (00001250), Product name (ZTEST), and the newly created Z
function module (ZSAMPLE_INTERFACE_00001250) where we have coded for triggering
IDOCs. SAVE the entry.
10.
Now go to FIBF transaction->Settings->Products-> Select
….Of a customer.

Then the below screen will come. Here create a new entry by giving Product
name (ZTEST), Short text, and Select the check box in activation column. Save
it.
Now
the scenario is completed. The BTE will trigger the IDOC when ever material is
changed in MM02 transaction by clicking SAVE button.
|