Sample Code Using BDC :
Complete Code :
Report Z_SD_CRT_COM .
TABLES: MARA,ZTB_BOM_UPL_LOG.
TYPE-POOLS : slis,icon,vimty,abap,truxs.
INCLUDE <icon>.
INCLUDE <symbol>.
*----------------------------------------------------------------------*
* data definition
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: BEGIN OF IT_MESSTAB OCCURS 0 .
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: L_MSTRING(480) TYPE C.
DATA: END OF IT_MESSTAB.
DATA: E_GROUP_OPENED.
* message texts
TABLES: T100.
TYPES : BEGIN OF TY_MM01,
MATNR(018),
IDNRK(018),
MENGE(015),
DATUVC(012),
ALTBOM TYPE CSAP_MBOM-STLAL, "(20),
* ALTEBOM(2),
DATUV TYPE SY-DATUM,
MAKTX(45),
POSNR(6),
MEINS(7),
STLNR TYPE MAST-STLNR,
WERKS TYPE WERKS,
STLAN TYPE STLAN,
STLAL TYPE STLAL,
GRP(1) TYPE N,
MSGV1(15),
ERROR(100),
MSGE(480),
TRF_LIGHT(1),
EXIST(1),
STATUS(60),
END OF TY_MM01.
TYPES : BEGIN OF TY_MAT,
MATNR TYPE MAST-MATNR,
WERKS TYPE MAST-WERKS,
STLAN TYPE MAST-STLAN,
STLNR TYPE MAST-STLNR,
STLAL TYPE MAST-STLAL,
ANDAT TYPE MAST-ANDAT,
STLKN TYPE STPO-STLKN,
DATUV TYPE STPO-DATUV,
IDNRK TYPE STPO-IDNRK,
POSNR TYPE STPO-POSNR,
MEINS TYPE STPO-MEINS,
MENGE(2) TYPE P DECIMALS 0, " TYPE STPO-MENGE,
AENNR TYPE AENR-AENNR,
MAKTX TYPE MAKT-MAKTX,
DATUVC(012),
END OF TY_MAT.
TYPES : BEGIN OF TY_BOM,
STLNR TYPE STKO-STLNR,
STLAL TYPE STKO-STLAL,
MATNR TYPE MAST-MATNR,
DATUV TYPE STPO-DATUV,
END OF TY_BOM.
DATA: BEGIN OF T_STPO OCCURS 0,
MATNR LIKE MAST-MATNR,
WERKS LIKE MAST-WERKS,
STLAN LIKE MAST-STLAN,
STLNR LIKE STPO-STLNR,
IDNRK LIKE STPO-IDNRK,
POSNR LIKE STPO-POSNR,
AENNR LIKE STPO-AENNR,
BULK(1) TYPE C,
MMBULK LIKE MARC-SCHGT,
VALID_FROM LIKE STKO_API02-VALID_FROM,
ERROR(220) TYPE C,
END OF T_STPO.
DATA : IT_MM01 TYPE TABLE OF TY_MM01,
WA_MM01 TYPE TY_MM01,
IT_MMS1 TYPE TABLE OF TY_MM01,
WA_MMS1 TYPE TY_MM01,
IT_MMX1 TYPE TABLE OF TY_MM01,
WA_MMX1 TYPE TY_MM01,
IT_MMX2 TYPE TABLE OF TY_MM01,
WA_MMX2 TYPE TY_MM01.
DATA : IT_MM11 TYPE TABLE OF TY_MM01,
WA_MM11 TYPE TY_MM01.
DATA : IT_MMC1 TYPE TABLE OF TY_MM01,
WA_MMC1 TYPE TY_MM01.
DATA : IT_MMC2 TYPE TABLE OF TY_MM01,
WA_MMC2 TYPE TY_MM01.
DATA : IT_MM02 TYPE TABLE OF TY_MM01,
WA_MM02 TYPE TY_MM01.
DATA : IT_MM03 TYPE TABLE OF TY_MM01,
WA_MM03 TYPE TY_MM01.
DATA : IT_MM04 TYPE TABLE OF TY_MM01,
WA_MM04 TYPE TY_MM01.
DATA : IT_MMC4 TYPE TABLE OF TY_MM01,
WA_MMC4 TYPE TY_MM01.
DATA : IT_MMXX TYPE TABLE OF TY_MM01,
WA_MMXX TYPE TY_MM01.
DATA :IT_MAT TYPE TABLE OF TY_MAT,
WA_MAT TYPE TY_MAT.
DATA :IT_BOM TYPE TABLE OF TY_BOM,
WA_BOM TYPE TY_BOM.
DATA : LV_FNAME TYPE STRING,
TABLE_N TYPE I.
DATA: t_fldcat TYPE slis_t_fieldcat_alv,
s_fldcat TYPE slis_fieldcat_alv,
t_sort TYPE slis_t_sortinfo_alv," WITH HEADER LINE,
t_fldcat2 TYPE slis_t_fieldcat_alv,
s_fldcat2 TYPE slis_fieldcat_alv,
t_sort2 TYPE slis_t_sortinfo_alv," WITH HEADER LINE,
wa_sortinfo TYPE slis_sortinfo_alv,
x_layout TYPE slis_layout_alv,
y_layout TYPE slis_layout_alv,
gd_layout TYPE lvc_s_layo,
x_print TYPE slis_print_alv,
x_variant TYPE disvariant,
d_repid TYPE sy-repid,
ct_type(2) ,
f_fldcat2 type slis_t_fieldcat_alv with header line,
g_layout type slis_layout_alv,
gs_fieldcatalog TYPE lvc_s_fcat OCCURS 0,
gv_fcat LIKE LINE OF gs_fieldcatalog,
gus_fieldcatalog TYPE lvc_s_fcat OCCURS 0.
DATA:
t_stpo_read like STPO_API02 occurs 0 with header line,
t_stpo_data like STPO_API02 occurs 0 with header line,
t_stpo_update like STPO_API03 occurs 0 with header line,
i_stko LIKE stko_api01," OCCURS 0 WITH HEADER LINE,
T_STKO LIKE STKO_API02 OCCURS 0 WITH HEADER LINE,
wrk_date like CSAP_MBOM-DATUV.
DATA: IDX(2),
FNAM(20).
DATA : rs_selfield TYPE slis_selfield.
DATA: OK_CODE LIKE sy-ucomm,
save_ok like sy-ucomm,
g_container TYPE scrfname VALUE 'ZCTRUSER',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gs_layout TYPE lvc_s_layo,
g_max type i value 100.
DATA: it_folder LIKE STANDARD TABLE OF sdokpath,
it_file LIKE STANDARD TABLE OF sdokpath,
it_fol_fil LIKE STANDARD TABLE OF sdokpath,
wa_fol_fil LIKE sdokpath,
file_count TYPE i,
dir_count TYPE i.
DATA : CNTR_NO(4) TYPE N,
LINE_NO(4) TYPE N.
DATA : vf_start_col TYPE i, "start column
vf_start_row TYPE i, "start row
vf_end_col TYPE i, "maximum column
vf_end_row TYPE i, "maximum row
p_text(20).
DATA: itabb TYPE STANDARD TABLE OF kcde_cells WITH HEADER LINE,
vf_index TYPE i.
DATA: tab type table of itab,
wa_tab like itab.
* Check In Uplad File Have Same Component dan Date
DATA : DG_MATNR TYPE MATNR,
DG_DATUV TYPE DATUV,
DG_IDNRK TYPE IDNRK.
FIELD-SYMBOLS: <fs>.
DATA: DG_DATUVF TYPE SY-DATUM,
DG_DATUVL TYPE SY-DATUM.
SELECTION-SCREEN BEGIN OF BLOCK SEL1 WITH FRAME TITLE TEXT-003.
PARAMETERS : RB_UP RADIOBUTTON GROUP RB_1 DEFAULT 'X' USER-COMMAND ucom.
PARAMETERS : P_FNAME TYPE IBIPPARMS-PATH .
SELECTION-SCREEN SKIP 1.
PARAMETERS : RB_TMP RADIOBUTTON GROUP RB_1.
PARAMETER : pdirp TYPE pfeflnamel DEFAULT 'D:\',
p_psavep TYPE string DEFAULT 'Material Template.XLS'.
SELECTION-SCREEN SKIP 1.
PARAMETERS : RB_DWN RADIOBUTTON GROUP RB_1.
SELECTION-SCREEN END OF BLOCK SEL1.
AT SELECTION-SCREEN OUTPUT.
PERFORM MODIFY_SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
DATA: PATH LIKE RLGRAP-FILENAME.
PATH = 'D:\'.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = SPACE
DEF_PATH = PATH
* MASK = ',.xls , .xlsx.'
* MASK = ', .txt , .txt.'
MODE = 'O'
TITLE = 'PC-File-Selection'
IMPORTING
FILENAME = p_fname
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pdirp.
DATA: fname TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Directory'
CHANGING
selected_folder = fname
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
pdirp = fname.
INITIALIZATION.
PERFORM BINT.
START-OF-SELECTION.
IF RB_TMP = 'X'.
SUBMIT Z_DID_SD_COM_TMP WITH p_pdirp EQ pdirp
WITH psavep EQ p_psavep
AND RETURN.
STOP.
ENDIF.
IF RB_DWN = 'X'.
SUBMIT Z_DID_SD_DWN_COM WITH p_pdirp EQ pdirp
WITH psavep = 'BOM Master.XLS' via SELECTION-SCREEN
AND RETURN.
STOP.
ENDIF.
* SPLIT data Form Excel
vf_start_col = '1'.
vf_start_row = '2'.
vf_end_col = '60'.
vf_end_row = '10000'.
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' " Function to download data
" from excel
EXPORTING
filename = p_fname
i_begin_col = vf_start_col
i_begin_row = vf_start_row
i_end_col = vf_end_col
i_end_row = vf_end_row
TABLES
intern = itabb "B09
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i454(0) WITH 'File not found'.
ENDIF.
CLEAR: itabb .
SORT itabb BY row col.
LOOP AT itabb.
MOVE : itabb-col TO vf_index.
ASSIGN COMPONENT vf_index OF STRUCTURE WA_MM01 TO <fs>.
MOVE : itabb-value TO <fs>.
AT END OF row.
APPEND WA_MM01 to IT_MM01.
CLEAR WA_MM01.
ENDAT.
ENDLOOP.
table_n = 0.
DESCRIBE TABLE IT_MM01 LINES table_n.
IF table_n EQ 0.
MESSAGE I208(00) WITH 'Different File Type'.
STOP.
ENDIF.
LOOP AT IT_MM01 INTO WA_MM01.
TRANSLATE WA_MM01-MATNR TO UPPER CASE.
TRANSLATE WA_MM01-IDNRK TO UPPER CASE.
SELECT SINGLE STLNR FROM MAST INTO WA_MM01-STLNR
WHERE MATNR EQ WA_MM01-MATNR.
IF SY-SUBRC EQ 0.
IF WA_MM01-ALTBOM IS INITIAL.
WA_MM01-EXIST = 'N'.
WA_MM01-STATUS = 'New BOM-Component Material'.
WA_MM01-TRF_LIGHT = '2'.
ENDIF.
ELSE. "IF SY-SUBRC NE 0.
WA_MM01-EXIST = 'N'.
WA_MM01-STATUS = 'New BOM-Component Material'.
WA_MM01-TRF_LIGHT = '2'.
ENDIF.
SELECT SINGLE MATNR FROM MARA INTO MARA-MATNR
WHERE MATNR EQ WA_MM01-MATNR
AND MTART EQ 'ZBOM'
AND MEINS EQ 'SET'.
IF SY-SUBRC NE 0.
WA_MM01-EXIST = 'F'.
WA_MM01-STATUS = 'Not BOM Material'.
ENDIF.
CLEAR MARA.
SELECT SINGLE MAKTX FROM MAKT INTO WA_MM01-MAKTX
WHERE MATNR EQ WA_MM01-IDNRK.
SELECT SINGLE MEINS FROM MARA INTO WA_MM01-MEINS
WHERE MATNR EQ WA_MM01-IDNRK.
IF SY-SUBRC NE 0.
IF WA_MM01-EXIST IS NOT INITIAL.
WA_MM01-EXIST = 'F'.
WA_MM01-STATUS = 'Bom or Material Does not Exist'.
ELSE.
WA_MM01-EXIST = 'F'.
WA_MM01-STATUS = 'Material Does not Exist'.
ENDIF.
ENDIF.
REPLACE ALL OCCURRENCES OF '.' IN WA_MM01-DATUVC WITH SPACE.
CONCATENATE WA_MM01-DATUVC+4(4) WA_MM01-DATUVC+2(2) WA_MM01-DATUVC(2) INTO WA_MM01-DATUV.
IF WA_MM01-DATUV LT SY-DATUM.
IF WA_MM01-EXIST IS NOT INITIAL.
WA_MM01-EXIST = 'F'.
CONCATENATE WA_MM01-STATUS 'Valid From Can not Back Date' INTO WA_MM01-STATUS SEPARATED BY ','.
ELSE.
WA_MM01-EXIST = 'F'.
WA_MM01-STATUS = 'Valid From Can not Back Date'.
ENDIF.
ENDIF.
CONCATENATE '0' WA_MM01-ALTBOM INTO WA_MM01-ALTBOM.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
DATA: ALTEBOOM(2).
* Compare BOM have Component or Not .
SORT IT_MAT BY MATNR.
SORT IT_MM01 BY MATNR. .
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST EQ SPACE.
CLEAR ALTEBOOM.
AT NEW MATNR.
READ TABLE IT_MM01 INTO WA_MM01 INDEX SY-TABIX.
WA_MM01-WERKS = '1000'.
WA_MM01-STLAN = '5'.
ALTEBOOM = WA_MM01-ALTBOM.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
MATERIAL = WA_MM01-MATNR
PLANT = WA_MM01-WERKS
BOM_USAGE = WA_MM01-STLAN
ALTERNATIVE = ALTEBOOM
VALID_TO = '31.12.9999'
TABLES
T_STPO = T_STPO_READ
T_STKO = T_STKO
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF T_STPO_READ[] IS NOT INITIAL.
LOOP AT T_STPO_READ.
MOVE-CORRESPONDING T_STPO_READ TO T_STPO_DATA.
APPEND T_STPO_DATA.
CLEAR: T_STPO_DATA,T_STPO_READ.
ENDLOOP.
ENDIF.
ENDAT.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
SELECT * FROM STKO INTO CORRESPONDING FIELDS OF TABLE IT_BOM
FOR ALL ENTRIES IN T_STPO_DATA
WHERE STLNR EQ T_STPO_DATA-BOM_NO.
SORT IT_BOM BY STLNR STLAL DESCENDING.
DELETE ADJACENT DUPLICATES FROM IT_BOM COMPARING STLNR.
IF T_STPO_DATA[] IS NOT INITIAL.
CLEAR T_STPO_DATA.
SORT IT_MM01 BY STLNR MATNR IDNRK.
SORT T_STPO_DATA BY BOM_NO COMPONENT.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST EQ SPACE.
READ TABLE T_STPO_DATA WITH KEY BOM_NO = WA_MM01-STLNR
COMPONENT = WA_MM01-IDNRK BINARY SEARCH.
IF SY-SUBRC EQ 0.
IF WA_MM01-IDNRK = T_STPO_DATA-COMPONENT.
WA_MM01-EXIST = 'D'.
WA_MM01-STATUS = 'Already Exist, Will be deleted'.
WA_MM01-TRF_LIGHT = '2'.
MOVE-CORRESPONDING WA_MM01 TO WA_MM04.
APPEND WA_MM04 TO IT_MM04.
ENDIF.
ELSE.
IF WA_MM01-DATUV LT SY-DATUM.
WA_MM01-EXIST = 'F'.
WA_MM01-STATUS = 'Valid From Cannot Back Date'.
WA_MM01-MSGE = 'Fail To Process'.
WA_MM01-TRF_LIGHT = '1'.
ELSE.
WA_MM01-STATUS = 'Add BOM-Component Material'.
WA_MM01-EXIST = 'C'. "Change to Add
WA_MM01-TRF_LIGHT = '2'.
MOVE-CORRESPONDING WA_MM01 TO WA_MM02.
APPEND WA_MM02 TO IT_MM02.
ENDIF.
ENDIF.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
ENDIF.
* Collect For Status Fail
SORT IT_MM01 BY STATUS MATNR IDNRK.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST = 'F'.
WA_MM01-MSGE = 'Fail To Process'.
WA_MM01-TRF_LIGHT = '1'.
WA_MM01-STATUS = 'Can Not Process'.
MOVE-CORRESPONDING WA_MM01 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
***************
SORT IT_MM01 BY MATNR POSNR EXIST IDNRK.
*Processing data
PERFORM FIRST_VIEW_DATA.
*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE 'N' " 'N' "'A' "CTUMODE
UPDATE 'L' "'L' "'S' "CUPDATE
MESSAGES INTO MESSTAB.
LOOP AT MESSTAB.
MESSAGE ID MESSTAB-MSGID
TYPE MESSTAB-MSGTYP
NUMBER MESSTAB-MSGNR
INTO L_MSTRING
WITH MESSTAB-MSGV1
MESSTAB-MSGV2
MESSTAB-MSGV3
MESSTAB-MSGV4.
IT_MESSTAB-MSGTYP = MESSTAB-MSGTYP.
IT_MESSTAB-MSGV1 = MESSTAB-MSGV1.
IT_MESSTAB-MSGV2 = MESSTAB-MSGV2.
IF MESSTAB-MSGV2 IS NOT INITIAL.
IT_MESSTAB-MSGV1 = MESSTAB-MSGV2.
ENDIF.
IT_MESSTAB-MSGV3 = MESSTAB-MSGV3.
IT_MESSTAB-MSGV4 = MESSTAB-MSGV4.
IT_MESSTAB-L_MSTRING = L_MSTRING.
APPEND IT_MESSTAB .
ENDLOOP.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> SPACE. "NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form BINT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BINT .
DEFINE f_fldcat.
clear s_fldcat.
s_fldcat-fieldname = &1.
s_fldcat-decimals_out = &2.
s_fldcat-seltext_l = &3.
s_fldcat-outputlen = &4.
s_fldcat-just = &5.
s_fldcat-no_out = &6.
s_fldcat-datatype = &7.
s_fldcat-qfieldname = &8.
s_fldcat-no_zero = &9.
append s_fldcat to t_fldcat.
END-OF-DEFINITION.
DEFINE f_fldcat2.
clear s_fldcat2.
s_fldcat2-fieldname = &1.
s_fldcat2-decimals_out = &2.
s_fldcat2-seltext_l = &3.
s_fldcat2-outputlen = &4.
s_fldcat2-just = &5.
s_fldcat2-no_out = &6.
s_fldcat2-datatype = &7.
s_fldcat2-qfieldname = &8.
s_fldcat2-no_zero = &9.
append s_fldcat2 to t_fldcat2.
END-OF-DEFINITION.
ENDFORM. " BINT
*&---------------------------------------------------------------------*
*& Form MODIFY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_DATA.
REFRESH IT_MAT.
SELECT MAST~MATNR MAST~WERKS MAST~STLAN MAST~STLNR MAST~STLAL MAST~ANDAT
STPO~STLKN STPO~DATUV IDNRK STPO~POSNR STPO~MEINS STPO~MENGE
MAKT~MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_MAT
FROM MAST
INNER JOIN STPO AS STPO ON STPO~STLNR = MAST~STLNR
INNER JOIN MAKT AS MAKT ON MAKT~MATNR = STPO~IDNRK
FOR ALL ENTRIES IN IT_MMC1
WHERE MAST~MATNR EQ IT_MMC1-MATNR
AND STPO~IDNRK EQ IT_MMC1-IDNRK.
IF IT_MAT IS NOT INITIAL.
SORT IT_MAT BY MATNR IDNRK.
SORT IT_MMC1 BY MATNR IDNRK.
LOOP AT IT_MMC1 INTO WA_MMC1 WHERE EXIST = 'N'.
READ TABLE IT_MAT INTO WA_MAT WITH KEY MATNR = WA_MMC1-MATNR
IDNRK = WA_MMC1-IDNRK BINARY SEARCH.
IF SY-SUBRC EQ 0.
WA_MMC1-MSGE = 'Bom Component Create'.
WA_MMC1-POSNR = WA_MAT-POSNR.
WA_MMC1-MEINS = WA_MAT-MEINS.
WA_MMC1-MAKTX = WA_MAT-MAKTX.
WA_MMC1-DATUV = WA_MAT-DATUV.
WA_MMC1-TRF_LIGHT = '3'. "Green
ENDIF.
MODIFY IT_MMC1 FROM WA_MMC1.
MOVE-CORRESPONDING WA_MMC1 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
ENDIF.
ENDFORM. " MODIFY_DATA
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT .
* * * * 1 2 3 4 5 6 7 8 9
f_fldcat2 'MATNR' '' 'Material Bom' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'POSNR' '' 'LIne Item' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'IDNRK' '' 'Material Component' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'MAKTX' '' 'Material Description' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'MENGE' '' 'Quantity' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'MEINS' '' 'Base Unit of Measure' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'DATUV' '' 'Valid From' '' 'L' '' 'DATS' '' '' .
f_fldcat2 'MSGE' '' 'Status' '' 'L' '' 'CHAR' '' ''.
CLEAR S_FLDCAT2.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT .
y_layout-colwidth_optimize = 'X'.
y_layout-info_fieldname = 'LINE_COLOR'.
y_layout-def_status = 'X'.
y_layout-lights_fieldname = 'TRF_LIGHT'.
y_layout-lights_tabname = 'I_LIGHTS'.
ENDFORM. " L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY .
d_repid = sy-repid.
Call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = d_repid
i_callback_pf_status_set = 'STATUS_SET'
i_callback_user_command = 'USR_CMD'
it_fieldcat = t_fldcat2[]
it_sort = t_sort2[]
is_layout = y_layout
* i_default = 'X'
i_save = 'U'
* is_variant = x_variant
* it_event_exit = t_event_exit[]
* is_print = x_print
TABLES
t_outtab = IT_MMXX[]
EXCEPTIONS
program_error = 1
others = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY
*&---------------------------------------------------------------------*
*& Form f_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM STATUS_SET USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZALV'.
ENDFORM. "f_status_set
*&---------------------------------------------------------------------*
*& Form MODIFY_MM02
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_MM02 .
REFRESH IT_MAT.
IF IT_MMC2 IS NOT INITIAL.
SELECT MAST~MATNR MAST~WERKS MAST~STLAN MAST~STLNR MAST~STLAL MAST~ANDAT
STPO~STLKN STPO~DATUV IDNRK STPO~POSNR STPO~MEINS STPO~MENGE
MAKT~MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_MAT
FROM MAST
INNER JOIN STPO AS STPO ON STPO~STLNR = MAST~STLNR
INNER JOIN MAKT AS MAKT ON MAKT~MATNR = STPO~IDNRK
FOR ALL ENTRIES IN IT_MMC2
WHERE MAST~MATNR EQ IT_MMC2-MATNR
AND STPO~IDNRK EQ IT_MMC2-IDNRK.
ENDIF.
IF IT_MAT IS NOT INITIAL.
SORT IT_MAT BY MATNR IDNRK.
SORT IT_MMC2 BY MATNR IDNRK.
LOOP AT IT_MMC2 INTO WA_MMC2.
READ TABLE IT_MAT INTO WA_MAT WITH KEY MATNR = WA_MMC2-MATNR
IDNRK = WA_MMC2-IDNRK BINARY SEARCH.
IF SY-SUBRC EQ 0.
WA_MMC2-MSGE = 'Add Bom Component Success'.
WA_MMC2-POSNR = WA_MAT-POSNR.
WA_MMC2-MEINS = WA_MAT-MEINS.
WA_MMC2-MAKTX = WA_MAT-MAKTX.
WA_MMC2-DATUV = WA_MAT-DATUV.
WA_MMC2-TRF_LIGHT = '3'. "Green
ELSE.
WA_MMC2-MSGE = 'Bom Component Fail Change'.
WA_MMC2-TRF_LIGHT = '1'.
ENDIF.
MODIFY IT_MMC2 FROM WA_MMC2.
MOVE-CORRESPONDING WA_MMC2 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
ENDIF.
LOOP AT IT_MM03 INTO WA_MM03 WHERE EXIST EQ 'F'.
WA_MM03-MSGE = 'Bom Component Fail Change'.
WA_MM03-TRF_LIGHT = '1'.
MODIFY IT_MM03 FROM WA_MM03.
MOVE-CORRESPONDING WA_MM03 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
ENDFORM. " MODIFY_MM02
*&---------------------------------------------------------------------*
*& Form PROS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROS_DATA.
* Add with New Bom and New Component
IF IT_MM01[] IS NOT INITIAL.
* Delete Component are Change
DELETE IT_MM01 WHERE EXIST = 'C' OR EXIST = 'F'.
* Check New Component one Bom Have Different Valid From Make to Valid From
CLEAR DG_DATUV.
SORT IT_MM01 BY MATNR DATUV.
LOOP AT IT_MM01 INTO WA_MM01.
AT NEW MATNR.
READ TABLE IT_MM01 INTO WA_MM01 INDEX SY-TABIX.
DG_DATUV = WA_MM01-DATUV.
ENDAT.
WA_MM01-DATUV = DG_DATUV.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
REFRESH IT_MMC1.
IT_MMC1 = IT_MM01.
SORT IT_MM01 BY MATNR.
DELETE ADJACENT DUPLICATES FROM IT_MM01 COMPARING MATNR DATUV.
SORT IT_MM01 BY MATNR.
SORT IT_MMC1 BY MATNR IDNRK.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST = 'N'.
perform bdc_dynpro using 'SAPLCSDI' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RC29N-DATUV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RC29N-MATNR'
WA_MM01-MATNR.
perform bdc_field using 'RC29N-WERKS'
'1000'.
perform bdc_field using 'RC29N-STLAN'
'5'.
perform bdc_field using 'RC29N-DATUV'
WA_MM01-DATUVC.
perform bdc_dynpro using 'SAPLCSDI' '0110'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RC29K-BMENG'
* WA_MM01-STLAL.
'1'.
perform bdc_field using 'RC29K-STLST'
'1'.
perform bdc_field using 'BDC_CURSOR'
'RC29K-EXSTL'.
perform bdc_dynpro using 'SAPLCSDI' '0111'.
perform bdc_field using 'BDC_CURSOR'
'RC29K-LABOR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
MOVE 1 TO IDX.
CLEAR: WA_MMC1.
SORT IT_MMC1 BY MATNR IDNRK.
LOOP AT IT_MMC1 INTO WA_MMC1 WHERE MATNR = WA_MM01-MATNR.
perform bdc_dynpro using 'SAPLCSDI' '0140'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-IDNRK(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
CONCATENATE 'RC29P-IDNRK('IDX')' INTO FNAM.
perform bdc_field using FNAM
WA_MMC1-IDNRK.
CONCATENATE 'RC29P-MENGE('IDX')' INTO FNAM.
perform bdc_field using FNAM
WA_MMC1-MENGE.
CONCATENATE 'RC29P-POSTP('IDX')' INTO FNAM.
perform bdc_field using FNAM
'L'.
perform bdc_dynpro using 'SAPLCSDI' '0130'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLCSDI' '0131'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
IDX = IDX + 1.
ENDLOOP.
perform bdc_dynpro using 'SAPLCSDI' '0140'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-POSNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=FCBU'.
perform bdc_transaction using 'CS01'.
ENDLOOP.
ENDIF.
* Add Component with Exist Component
IF IT_MM02[] IS NOT INITIAL.
REFRESH IT_MM03.
IT_MM03 = IT_MM02.
SORT IT_MM02 BY MATNR IDNRK EXIST.
REFRESH: IT_MMC2.
IT_MMC2 = IT_MM02.
SORT IT_MM02 BY MATNR.
DELETE ADJACENT DUPLICATES FROM IT_MM02 COMPARING MATNR.
SORT IT_MM02 BY MATNR.
SORT IT_MMC2 BY MATNR DATUV IDNRK.
LOOP AT IT_MM02 INTO WA_MM02 WHERE EXIST = 'C'.
perform bdc_dynpro using 'SAPLCSDI' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RC29N-DATUV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RC29N-MATNR'
WA_MM02-MATNR.
perform bdc_field using 'RC29N-WERKS'
'1000'.
perform bdc_field using 'RC29N-STLAN'
'5'.
perform bdc_field using 'RC29N-DATUV'
WA_MM02-DATUVC.
perform bdc_field using 'RC29N-STLAL'
WA_MM02-ALTBOM.
perform bdc_dynpro using 'SAPLCSDI' '0150'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-POSNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=FCNP'.
MOVE 2 TO IDX.
CLEAR: WA_MMC2.
SORT IT_MMC2 BY MATNR IDNRK.
LOOP AT IT_MMC2 INTO WA_MMC2 WHERE MATNR = WA_MM02-MATNR.
perform bdc_dynpro using 'SAPLCSDI' '0140'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-IDNRK(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
CONCATENATE 'RC29P-IDNRK('IDX')' INTO FNAM.
perform bdc_field using FNAM
WA_MMC2-IDNRK.
CONCATENATE 'RC29P-MENGE('IDX')' INTO FNAM.
perform bdc_field using FNAM
WA_MMC2-MENGE.
CONCATENATE 'RC29P-POSTP('IDX')' INTO FNAM.
perform bdc_field using FNAM
'L'.
perform bdc_dynpro using 'SAPLCSDI' '0130'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLCSDI' '0131'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
IDX = IDX + 1.
ENDLOOP.
perform bdc_dynpro using 'SAPLCSDI' '0140'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-POSNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=FCBU'.
perform bdc_transaction using 'CS02'.
ENDLOOP.
ENDIF.
* ****************************************
* Delete Component
IF IT_MM04[] IS NOT INITIAL.
REFRESH IT_MM03.
IT_MM03 = IT_MM04.
SORT IT_MM04 BY MATNR IDNRK EXIST.
REFRESH: IT_MMC4.
IT_MMC4 = IT_MM04.
SORT IT_MM04 BY MATNR.
DELETE ADJACENT DUPLICATES FROM IT_MM04 COMPARING MATNR.
SORT IT_MM04 BY MATNR.
SORT IT_MMC4 BY MATNR DATUV IDNRK.
LOOP AT IT_MM04 INTO WA_MM04 WHERE EXIST = 'D'.
perform bdc_dynpro using 'SAPLCSDI' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RC29N-DATUV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RC29N-MATNR'
WA_MM04-MATNR.
perform bdc_field using 'RC29N-WERKS'
'1000'.
perform bdc_field using 'RC29N-STLAN'
'5'.
perform bdc_field using 'RC29N-DATUV'
WA_MM04-DATUVC.
perform bdc_field using 'RC29N-STLAL'
WA_MM04-ALTBOM.
CLEAR: WA_MMC4.
SORT IT_MMC4 BY MATNR IDNRK.
LOOP AT IT_MMC4 INTO WA_MMC4 WHERE MATNR = WA_MM04-MATNR.
perform bdc_dynpro using 'SAPLCSDI' '0150'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-POSNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=SETP'.
perform bdc_dynpro using 'SAPLCSDI' '0708'.
perform bdc_field using 'BDC_OKCODE'
'=CLWI'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-SELID'.
perform bdc_field using 'RC29P-SELID'
WA_MMC4-IDNRK. "'BRC1C62'.
perform bdc_dynpro using 'SAPLCSDI' '0150'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-AUSKZ(01)'.
perform bdc_field using 'RC29P-AUSKZ(01)'
'X'.
perform bdc_field using 'BDC_OKCODE'
'=FCDL'.
ENDLOOP.
perform bdc_dynpro using 'SAPLCSDI' '0150'.
perform bdc_field using 'BDC_CURSOR'
'RC29P-POSNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=FCBU'.
perform bdc_transaction using 'CS02'.
ENDLOOP.
ENDIF.
* ******************************************
MESSAGE ' ' TYPE 'S'.
* Process Data
IF IT_MM01[] IS NOT INITIAL.
PERFORM Modify_data.
ENDIF.
IF IT_MM02[] IS NOT INITIAL.
PERFORM MODIFY_MM02.
ENDIF.
IF IT_MM04[] IS NOT INITIAL.
PERFORM MODIFY_MM03.
ENDIF.
*Check Create or Update, Success or Not
LOOP AT IT_MMXX INTO WA_MMXX.
SELECT SINGLE MATNR
FROM MARA INTO MARA-MATNR
WHERE MATNR EQ WA_MMXX-MATNR.
IF SY-SUBRC NE 0.
WA_MMXX-TRF_LIGHT = '1'.
ENDIF.
MODIFY IT_MMXX FROM WA_MMXX.
ENDLOOP.
SORT IT_MMXX BY MATNR POSNR IDNRK.
* Save to table
PERFORM SAVE_TABLE.
ENDFORM. " PROS_DATA
*&---------------------------------------------------------------------*
*& Form END_VIEW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM END_VIEW_DATA . "Sini
rs_selfield-refresh = abap_true.
PERFORM build_fieldcat.
PERFORM l_build_layout.
PERFORM display.
ENDFORM. " END_VIEW_DATA
*&---------------------------------------------------------------------*
*& Form FIRST_VIEW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FIRST_VIEW_DATA .
PERFORM build_fieldcat_ist.
PERFORM l_build_layout_ist.
PERFORM display_ist.
ENDFORM. " FIRST_VIEW_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_IST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_IST.
d_repid = sy-repid.
Call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = d_repid
i_callback_pf_status_set = 'STAT_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = t_fldcat[]
it_sort = t_sort[]
is_layout = x_layout
i_default = ''
i_save = ''
TABLES
t_outtab = IT_MM01[]
EXCEPTIONS
program_error = 1
others = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_IST
*&---------------------------------------------------------------------*
*& Form L_BUILD_LAYOUT_IST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT_IST .
x_layout-colwidth_optimize = 'X'.
x_layout-info_fieldname = 'LINE_COLOR'.
x_layout-def_status = 'X'.
x_layout-lights_fieldname = 'TRF_LIGHT'.
x_layout-lights_tabname = 'I_LIGHTS'.
ENDFORM. " L_BUILD_LAYOUT_IST
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT_IST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT_IST.
f_fldcat 'MATNR' '' 'Material Bom' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'IDNRK' '' 'Material Component' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'MENGE' '' 'Quantity' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'DATUV' '' 'Valid From' '' 'L' '' 'DATS' '' '' .
f_fldcat 'ALTBOM' '' 'Alternative Bom' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'STATUS' '' 'Status' '' 'L' '' 'CHAR' '' ''.
CLEAR S_FLDCAT.
ENDFORM. " BUILD_FIELDCAT_IST
*&---------------------------------------------------------------------*
*& Form f_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM stat_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZALV2'.
ENDFORM. "stat_set
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING p_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&PRO'.
PERFORM PROS_DATA.
PERFORM END_VIEW_DATA.
WHEN '&BACK'.
LEAVE TO SCREEN 0.
WHEN '&EXIT'.
LEAVE TO SCREEN 0.
WHEN '&CNCL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USR_CMD USING p_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&BACK'.
SUBMIT Z_DID_SD_CRT_COM via SELECTION-SCREEN.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN .
LOOP AT SCREEN.
IF RB_UP = 'X' .
IF screen-name = 'PDIRP' OR screen-name = 'P_PSAVEP'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
CLEAR : PDIRP,P_PSAVEP.
ELSEIF RB_TMP = 'X' .
IF screen-name = 'P_FNAME'.
screen-input = '0'.
P_PSAVEP = 'BOM-COMP Master.xls'.
MODIFY SCREEN.
ENDIF.
CLEAR: P_FNAME.
ELSEIF RB_DWN = 'X'.
IF screen-name = 'P_FNAME' OR screen-name = 'PDIRP' OR screen-name = 'P_PSAVEP'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ELSE.
IF screen-name = 'PDIRP' OR screen-name = 'P_PSAVEP'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
CLEAR: PDIRP,P_PSAVEP.
ENDIF.
ENDLOOP.
ENDFORM. " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*& Form SAVE_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE_TABLE .
SELECT MAX( CNTRL ) FROM ZTB_BOM_UPL_LOG INTO CNTR_NO.
LINE_NO = 1.
LINE_NO = LINE_NO + CNTR_NO.
LOOP AT IT_MMXX INTO WA_MMXX WHERE TRF_LIGHT NE '1'.
ZTB_BOM_UPL_LOG-MATNR = WA_MMXX-MATNR.
ZTB_BOM_UPL_LOG-CNTRL = LINE_NO.
ZTB_BOM_UPL_LOG-IDNRK = WA_MMXX-IDNRK.
ZTB_BOM_UPL_LOG-MENGE = WA_MMXX-MENGE.
ZTB_BOM_UPL_LOG-MEINS = WA_MMXX-MEINS.
ZTB_BOM_UPL_LOG-DATUV = WA_MMXX-DATUV.
ZTB_BOM_UPL_LOG-USNAM = SY-UNAME.
ZTB_BOM_UPL_LOG-CPUDT = SY-DATUM.
LINE_NO = LINE_NO + 1.
INSERT ZTB_BOM_UPL_LOG.
ENDLOOP.
ENDFORM. " SAVE_TABLE
*&---------------------------------------------------------------------*
*& Form MODIFY_MM03
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_MM03 .
REFRESH IT_MAT.
IF IT_MMC4 IS NOT INITIAL.
SELECT MAST~MATNR MAST~WERKS MAST~STLAN MAST~STLNR MAST~STLAL MAST~ANDAT
STPO~STLKN STPO~DATUV IDNRK STPO~POSNR STPO~MEINS STPO~MENGE
MAKT~MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_MAT
FROM MAST
INNER JOIN STPO AS STPO ON STPO~STLNR = MAST~STLNR
INNER JOIN MAKT AS MAKT ON MAKT~MATNR = STPO~IDNRK
FOR ALL ENTRIES IN IT_MMC4
WHERE MAST~MATNR EQ IT_MMC4-MATNR
AND STPO~IDNRK EQ IT_MMC4-IDNRK
AND MAST~STLAL EQ IT_MMC4-ALTBOM.
ENDIF.
SORT IT_MMC4 BY MATNR IDNRK.
LOOP AT IT_MMC4 INTO WA_MMC4.
WA_MMC4-MSGE = 'Delete Bom Component Completed'.
WA_MMC4-TRF_LIGHT = '3'. "Green
MODIFY IT_MMC4 FROM WA_MMC4.
MOVE-CORRESPONDING WA_MMC4 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
ENDFORM. " MODIFY_MM03
Subscribe to:
Post Comments (Atom)
Visitor
Code Syntax Try...Endtry
Code : Report Try. Parameters NUMBER type I . data RESULT type P decimals 2 . data OREF type ref to CX_ROOT . data TEXT typ...
-
refresh it_pr . select ebkn ~ banfn ebkn ~ bnfpo ebkn ~ sakto ebkn ~ aufnr * AFVC~LTXA1 * ...
-
data : it_status type table of jstat , wa_status type jstat . *Teco Complete refresh lt_methods . clear ls_methods ...
-
Sample Code Report ZTEST. tables : mseg . type-pools : slis , icon , vimty , abap , truxs . data : begin of it_mseg occurs...
No comments:
Post a Comment