Code: Alles auswählen.
*- Datenbankprotokoll eröffnen
CALL FUNCTION 'CALO_INIT_API'
EXCEPTIONS
log_object_not_found = 1
log_sub_object_not_found = 2
other_error = 3
others = 4.
CALL FUNCTION 'CSAP_MAT_BOM_OPEN'
EXPORTING
MATERIAL = lv_matnr_merk
PLANT = ''
BOM_USAGE = '6'
ALTERNATIVE = '1'
VALID_FROM = lv_datum
CHANGE_NO = lv_aennr
* REVISION_LEVEL =
* FL_NO_CHANGE_DOC = ' '
IMPORTING
* O_STKO =
FL_WARNING = flg_warning
TABLES
T_STPO = tstp3
T_DEP_DATA = tdep_data
T_DEP_DESCR = tdep_descr
T_DEP_ORDER = tdep_order
T_DEP_SOURCE = tdep_source
T_DEP_DOC = tdep_doc
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
* CLEAR tstp3[].
tstp3-ITEM_CATEG = wa_t_stpo-ITEM_CATEG.
tstp3-item_no = wa_t_stpo-item_no.
tstp3-component = wa_t_stpo-component.
tstp3-comp_qty = wa_t_stpo-comp_qty.
tstp3-comp_unit = wa_t_stpo-comp_unit.
tstp3-item_text1 = wa_t_stpo-item_text1.
APPEND tstp3.
CLEAR tstko.
CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
EXPORTING
MATERIAL = lv_matnr_merk
PLANT = ''
BOM_USAGE = '6'
ALTERNATIVE = '1'
VALID_FROM = lv_datum
CHANGE_NO = lv_aennr
* REVISION_LEVEL =
I_STKO = tstko
* FL_NO_CHANGE_DOC = ' '
* FL_COMMIT_AND_WAIT = 'X'
FL_CAD = 'X'
* FL_BOM_CREATE = ' '
FL_NEW_ITEM = 'X'
* FL_COMPLETE = ' '
* FL_DEFAULT_VALUES = 'X'
* FL_IDENTIFY_BY_GUID = ' '
IMPORTING
FL_WARNING = flg_warning
* O_STKO =
TABLES
T_STPO = tstp3
T_DEP_DATA = tdep_data
T_DEP_DESCR = tdep_descr
T_DEP_ORDER = tdep_order
T_DEP_SOURCE = tdep_source
T_DEP_DOC = tdep_doc
* T_DOC_LINK =
* T_DMU_TMX =
* T_LTX_LINE =
* T_STPU =
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
CALL FUNCTION 'CSAP_MAT_BOM_CLOSE'
EXPORTING
FL_COMMIT_AND_WAIT = 'X'
IMPORTING
FL_WARNING = flg_warning
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Form maint_bom
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM maint_bom.
* für BOM_OPEN
DATA: BEGIN OF tstpo2 OCCURS 0.
INCLUDE STRUCTURE stpo_api02.
DATA: END OF tstpo2.
DATA ls_tstpo2 TYPE stpo_api02.
DATA lv_matnr TYPE matnr.
DATA lv_ptext(80).
DATA lv_txt(6).
DATA lv_cnt TYPE i.
CHECK NOT <p>-component IS INITIAL.
* Böse Falle !
DO 100 TIMES.
WAIT UP TO 1 SECONDS.
CALL FUNCTION 'CSAP_MAT_BOM_OPEN'
EXPORTING
material = <p>-component
plant = p_werk
bom_usage = p_stlan
valid_from = gv_heute
* change_no = <p>-aennr
fl_no_change_doc = 'X'
TABLES
t_stpo = tstpo2
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc = 0. " Test(ohne wait) erreicht 4-5 durchläufe !
EXIT.
ENDIF.
ENDDO.
IF sy-subrc = 0.
i = lines( it_bom ).
LOOP AT it_bom.
lv_cnt = sy-tabix.
CLEAR ls_tstpo2.
MOVE-CORRESPONDING it_bom TO ls_tstpo2.
* ls_tstpo2-item_categ = 'L'. "Mußeingabe
IF ls_tstpo2-bulk_mat = 'X' AND ls_tstpo2-item_categ = 'L'.
ls_tstpo2-rel_cost = space.
ls_tstpo2-rel_engin = space.
ls_tstpo2-rel_pmaint = space.
ls_tstpo2-rel_sales = space.
ls_tstpo2-rel_prod = 'X'.
ENDIF.
* CLEAR ls_tstpo2-BULK_MAT.
IF ls_tstpo2-item_categ = 'D'.
ls_tstpo2-document = ls_tstpo2-component.
CLEAR ls_tstpo2-component.
CLEAR ls_tstpo2-bulk_mat.
ls_tstpo2-doc_type = 'SEG'.
ENDIF.
CALL FUNCTION 'CSAP_BOM_ITEM_MAINTAIN'
EXPORTING
i_stpo = ls_tstpo2
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc <> 0.
IF ls_tstpo2-component IS INITIAL.
PERFORM write_log USING ls_tstpo2-document 'could not be saved'(009).
ELSE.
PERFORM write_log USING ls_tstpo2-component 'could not be saved'(009).
ENDIF.
rc = 1.
ENDIF.
* Fortschrittsanzeige
lv_ptext = 'bearbeite Material'.
CONCATENATE lv_ptext ls_tstpo2-component INTO lv_ptext
SEPARATED BY space.
WRITE lv_cnt TO lv_txt.
CONDENSE lv_txt NO-GAPS.
CONCATENATE lv_ptext '-' lv_txt 'von' INTO lv_ptext
SEPARATED BY space.
WRITE i TO lv_txt.
CONDENSE lv_txt NO-GAPS.
CONCATENATE lv_ptext lv_txt INTO lv_ptext
SEPARATED BY space.
CALL FUNCTION 'PROGRESS_INDICATOR'
EXPORTING
i_text = lv_ptext
i_processed = lv_cnt
i_total = i
i_output_immediately = 'X'.
ENDLOOP.
CALL FUNCTION 'CSAP_MAT_BOM_CLOSE'
EXCEPTIONS
error = 1
OTHERS = 2.
ELSE.
PERFORM write_log USING <p>-component 'could not be Opened'.
ENDIF.
ENDFORM. "maint_bom
Code: Alles auswählen.
CALL FUNCTION 'ECM_PROCESSOR_INIT'
EXPORTING
* topmatnr = wa_matnr-matnr
batchlauf = 'X'
batch_aeef = h_aeef
TABLES
parameter = l_t_param
EXCEPTIONS
exit_in_dynpro = 1.
CHECK sy-subrc = 0.
LOOP AT so_werks.
MOVE so_werks-low TO lv_werk.
ENDLOOP.