Trigger MATMAS IDoc using BTE Function: this is a sample ABAP Program to generate a MATMAS IDoc for a Material Change using BTE event when a SAP Material is saved in MM02 / MM01.
Trigger MATMAS IDoc using BTE Function ABAP
First Step is to generate IDoc Control Record : EDIDC
The Second Step is to generate IDOC Data Table : EDIDD
The last step is to call the?MASTER_IDOC_DISTRIBUTE to generate the IDoc
This sample ABAP function code is a little particular to generate MATMAS IDoc using BTE Function ABAP. This is a enhanced copy of the standard Function SAMPLE_INTERFACE_00001250.
Find more resource about the?Most important Idocs Tcodes and Idocs Tables?and also .
FUNCTION ZMATMAS_INTERFACE_00001250.
  " Trigger MATMAS IDoc using BTE Function 
  " Copy of SAMPLE_INTERFACE_00001250 
  DATA : gt_idoc_data TYPE STANDARD TABLE OF edidd,
         ls_idoc_data TYPE edidd,
         ls_idoc_control LIKE edidc,
         gt_comm_idocs TYPE STANDARD TABLE OF edidc.
  DATA: ls_e1maram LIKE e1maram,
        ls_e1maktm LIKE e1maktm,
        ls_e1marcm LIKE e1marcm,
        ls_e1mardm LIKE e1mardm,
        ls_e1marmm LIKE e1marmm,
        ls_e1mbewm LIKE e1mbewm,
        ls_e1mvkem LIKE e1mvkem,
        ls_e1mlanm LIKE e1mlanm.
  
  DATA: ls_marm_new LIKE LINE OF LT_MARW_NEW,
		ls_MAKT_new LIKE LINE OF LT_MAKT_NEW.
		
  
  "-----------------------------------------------"
  " Fill IDOC Control 
  "-----------------------------------------------"
  ls_idoc_control-mestyp = 'MATMAS'.
  ls_idoc_control-idoctp = 'MATMAS05'.
  ls_idoc_control-rcvpor = 'REC_PORT'. " Fill the receiver Port 
  ls_idoc_control-rcvprt = 'LS'.
  ls_idoc_control-rcvprn = 'RECEIVER'. " Fill the receiver system
The second step is to fill some Data into MATMAS Idoc such
- E1MARAM : MARA
- E1MAKTM : MAKT : Material Description Table
- E1MARCM : MARC : Material Plant Data
- E1MARDM : MARD : Material Storage Location Data
- E1MARMM : MARM : Material Alternative Unit Table
- E1MLANM : MLAN : Tax Classification for Material
"-----------------------------------------------" "Filling IDOC Data Table "-----------------------------------------------" " E1MARAM : MARA CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MARAM'. MOVE-CORRESPONDING i_mara_new TO ls_e1maram. MOVE ls_e1maram TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. " E1MAKTM : MAKT : Material Description Table CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MAKTM'. MOVE-CORRESPONDING t_makt_new TO ls_e1maktm. MOVE ls_e1maktm TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. " E1MARCM : MARC : Material Plant Data CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MARCM'. MOVE-CORRESPONDING i_marc_new TO ls_e1marcm. MOVE ls_e1marcm TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. " E1MARDM : MARD : Material Storage Location Data CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MARDM'. MOVE-CORRESPONDING i_mard_new TO ls_e1mardm. MOVE ls_e1mardm TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. " E1MARMM : MARM : Material Alternative Unit Table LOOP AT t_marm_new into ls_marm_new. CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MARMM'. MOVE-CORRESPONDING t_marm_new TO ls_e1mardm. MOVE ls_e1mardm TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. ENDLOOP. " E1MBEWM : MBEW : Material Valuation Table CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MBEWM'. MOVE-CORRESPONDING i_mbew_new TO ls_e1mardm. MOVE ls_e1mardm TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. " E1MVKEM : MVKE : Sales Data for Material Data CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MVKEM'. MOVE-CORRESPONDING i_mvke_new TO ls_e1mvkem. MOVE ls_e1mvkem TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data. " E1MLANM : MLAN : Tax Classification for Material CLEAR ls_idoc_data. ls_idoc_data-segnam = 'E1MLANM'. MOVE-CORRESPONDING i_MLAN_new TO ls_e1mlanm. MOVE ls_e1mlanm TO ls_idoc_data-sdata. APPEND ls_idoc_data TO gt_idoc_data.
The Last step is to generate the IDoc as following using MASTER_IDOC_DISTRIBUTE BAPI
  
  "-----------------------------------------------"
  " Generate MATMAS IDoc 
  "-----------------------------------------------"
  " Trigger MATMAS IDoc using BTE Function
  CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
    EXPORTING
      master_idoc_control                  = ls_idoc_control
    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.  
Here it is the Idoc MATMAS should be created when a material is Saved ( if the ALE configuration is already set-up)

 
                     
                    