Professional Documents
Culture Documents
Abap Create Bom Cs01 From SQL Data
Abap Create Bom Cs01 From SQL Data
Abap Create Bom Cs01 From SQL Data
url:
https://belsap.com/2021/06/abap-create-bom-cs01-from-sql-data/
METHOD get_boms_from_siito.
DATA:
exc_ref TYPE REF TO cx_root,
error_text TYPE string,
lt_bom_from_siito TYPE TABLE OF zhm_d_bom_fr_sit,
lv_date_import_osn TYPE string,
lv_date_import_from TYPE string,
lv_key_tbl TYPE int4,
ls_bom_from_siito LIKE LINE OF lt_bom_from_siito .
FIELD-SYMBOLS:
*Connect to database
TRY.
EXEC SQL.
connect TO 'SAP_AIS'
ENDEXEC.
IF sy-subrc <> 0.
MESSAGE 'Unable to connect to SAP_AIS' TYPE 'E' DISPLAY LIKE 'I'.
RETURN.
ENDIF.
error_text = exc_ref->get_text( ).
error_text = exc_ref->get_text( ).
DO.
CLEAR ls_bom_from_siito .
TRY.
EXEC SQL.
FETCH NEXT dbcur INTO :ls_bom_from_siito-KEY_TBL,
:ls_bom_from_siito-NZ_CH,
:lv_date_import_osn,
:ls_bom_from_siito-OZM_MAIN,
:ls_bom_from_siito-MAKTX,
:ls_bom_from_siito-MAKTX_FULL,
:ls_bom_from_siito-ZEINRKD,
:ls_bom_from_siito-MATNR_EXT,
:ls_bom_from_siito-IDNRK,
:ls_bom_from_siito-POSNR,
:ls_bom_from_siito-SORTF,
:ls_bom_from_siito-MENGE,
:ls_bom_from_siito-MEINS,
:lv_date_import_from,
:ls_bom_from_siito-NTGEW,
:ls_bom_from_siito-GEWEI,
:ls_bom_from_siito-LABOR,
:ls_bom_from_siito-MTART,
:ls_bom_from_siito-PRIZN_DOB,
:ls_bom_from_siito-PRIZN
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exc_ref.
error_text = exc_ref->get_text( ).
MESSAGE error_text TYPE 'I'.
ENDTRY.
IF sy-subrc <> 0.
EXEC SQL.
CLOSE dbcur
ENDEXEC.
EXIT.
ELSE.
TRANSLATE ls_bom_from_siito-meins TO UPPER CASE.
SELECT SINGLE t006~msehi
INTO ls_bom_from_siito-meins
FROM t006
INNER JOIN t006b
ON t006~msehi = t006b~msehi
WHERE mseh3 = ls_bom_from_siito-meins AND spras = 'R'.
zcl_zhm_app_bom=>create_bom_for_siito( ).
* EXEC SQL.
* CLOSE dbcur
* ENDEXEC.
ENDMETHOD.
METHOD create_bom_for_siito.
DATA:
lt_bom TYPE TABLE OF zhm_d_bom_fr_sit,
lt_bom_unique TYPE TABLE OF zhm_d_bom_fr_sit,
ls_istko TYPE stko_api01,
ls_o_stko TYPE stko_api02,
lv_data TYPE datuv_bi,
lv_change_no TYPE csap_mbom-aennr,
lt_o_stko TYPE TABLE OF stko_api02,
lt_stpo TYPE TABLE OF stpo_api03,
lt_stpo_read TYPE TABLE OF stpo_api02,
lv_aenr TYPE aennr,
iv_delete_flg TYPE char01,
lv_posnr_str TYPE char04,
lt_display TYPE TABLE OF stpo_api03,
ls_display LIKE LINE OF lt_display,
lt_stpo_read_api03 TYPE TABLE OF stpo_api02.
FIELD-SYMBOLS:
<fs_bom> LIKE LINE OF lt_bom,
<fs_bom_unique> LIKE LINE OF lt_bom,
<fs_stpo_read> LIKE LINE OF lt_stpo_read,
SELECT *
FROM zhm_d_bom_fr_sit
INTO CORRESPONDING FIELDS OF TABLE lt_bom.
lt_bom_unique[] = lt_bom[].
<fs_stpo>-item_categ = 'L'.
<fs_stpo>-component = <fs_bom>-idnrk.
<fs_stpo>-comp_qty = <fs_bom>-menge.
TRANSLATE <fs_stpo>-comp_qty USING '.,'.
SELECT SINGLE t006b~mseh3
INTO <fs_stpo>-comp_unit
FROM t006
INNER JOIN t006b
ON t006~msehi = t006b~msehi
WHERE t006~msehi = <fs_bom>-meins AND spras = 'R'.
<fs_stpo>-sortstring = '07'.
ENDLOOP.
lv_change_no = sy-datum(4).
lv_aenr = sy-datum(4).
IF sy-subrc = 0.
LOOP AT lt_stpo_read ASSIGNING <fs_stpo_read>.
READ
TABLE lt_stpo ASSIGNING <fs_stpo> WITH KEY component = <fs_stpo_
read>-component
item_no = <fs_stpo_read>-item_no
comp_qty = <fs_stpo_read>-comp_qty.
IF sy-subrc <> 0.
iv_delete_flg = 'X'.
ENDIF.
ENDLOOP.
IF iv_delete_flg = 'X'.
LOOP AT lt_stpo_read ASSIGNING <fs_stpo_read>.
delete_item( EXPORTING iv_matnr_ext = <fs_bom_unique>-
ozm_main
iv_werks = '1014'
iv_bom_usage = 'V'
is_stpo = <fs_stpo_read> ).
ENDLOOP.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
CLEAR: lt_tstp2[] ,
lt_tdep2_source[] .
ls_tstp2-fldelete := abap_true.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDMETHOD.