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)
