BOM Material Change (CS02)
*&---------------------------------------------------------------------*
*& Report ZPP_BOM_CHANGE_UPLOAD*&---------------------------------------------------------------------*
************************************************************************
* Program : ZPP_BOM_CHANGE_UPLOAD
* Author : King Of ABAP'r
* Created on : 2023
* Requested By : Functional Consultant
* Transport-No : 1234567890
*----------------------------------------------------------------------*
* Description : Cutover Object
* Assumption :
* Called from :
* Called to : N/A
* Includes : N/A
* Logical DB : N/A
*----------------------------------------------------------------------*
REPORT zpp_bom_change_upload.
INCLUDE zpp_bom_change_upload_top.
INCLUDE zpp_bom_change_upload_sel.
INCLUDE zpp_bom_change_upload_f01.
START-OF-SELECTION.
* Get File Data
PERFORM get_file_data.
* Change BOM
PERFORM bapi_change_bom.
* Display Error/Success Log
PERFORM display_log.
*&---------------------------------------------------------------------*
*& Include ZPP_BOM_CHANGE_UPLOAD_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_final,
matnr TYPE matnr,
plant TYPE werks_d,
bom_usage TYPE stlan,
alt_bom TYPE stalt,
chang_no TYPE aennr,
item_no TYPE sposn,
bom_comp TYPE idnrk,
comp_scrap TYPE kausf,
END OF ty_final.
DATA: gt_data TYPE TABLE OF ty_final.
TYPES: BEGIN OF ty_alv,
item_no TYPE sposn,
matnr TYPE matnr,
type TYPE bapi_mtype,
message TYPE bapi_msg,
END OF ty_alv.
DATA: gt_alv TYPE STANDARD TABLE OF ty_alv,
gs_alv TYPE ty_alv.
*& Include ZPP_BOM_CHANGE_UPLOAD_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_final,
matnr TYPE matnr,
plant TYPE werks_d,
bom_usage TYPE stlan,
alt_bom TYPE stalt,
chang_no TYPE aennr,
item_no TYPE sposn,
bom_comp TYPE idnrk,
comp_scrap TYPE kausf,
END OF ty_final.
DATA: gt_data TYPE TABLE OF ty_final.
TYPES: BEGIN OF ty_alv,
item_no TYPE sposn,
matnr TYPE matnr,
type TYPE bapi_mtype,
message TYPE bapi_msg,
END OF ty_alv.
DATA: gt_alv TYPE STANDARD TABLE OF ty_alv,
gs_alv TYPE ty_alv.
*&---------------------------------------------------------------------*
*& Include ZPP_BOM_CHANGE_UPLOAD_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
PERFORM file_upload.
*& Include ZPP_BOM_CHANGE_UPLOAD_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
PERFORM file_upload.
*&---------------------------------------------------------------------*
*& Include ZPP_BOM_CHANGE_UPLOAD_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM file_upload .
* F4 Functionality
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_file_data .
DATA: lt_raw TYPE truxs_t_text_data.
* Convert the XL file to Internal Table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = abap_true
i_tab_raw_data = lt_raw
i_filename = p_file
TABLES
i_tab_converted_data = gt_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'No File Data' TYPE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form bapi_change_bom
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM bapi_change_bom .
DATA:lt_stpo TYPE TABLE OF stpo_api03,
lt_stko TYPE TABLE OF stko_api02,
lt_stko_input TYPE TABLE OF stko_api01.
DATA:fl_warnign TYPE capiflag-flwarning.
LOOP AT gt_Data ASSIGNING FIELD-SYMBOL(<lfs_data>).
AT NEW matnr.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
material = <lfs_data>-matnr
plant = <lfs_data>-plant
bom_usage = <lfs_data>-bom_usage
alternative = <lfs_data>-alt_bom
change_no = <lfs_data>-chang_no
IMPORTING
fl_warning = fl_warnign
TABLES
t_stpo = lt_stpo
t_stko = lt_stko
EXCEPTIONS
error = 1
OTHERS = 2.
ENDAT.
IF sy-subrc = 0.
<lfs_data>-item_no = |{ <lfs_data>-item_no ALPHA = IN }|.
LOOP AT lt_stpo ASSIGNING FIELD-SYMBOL(<lfs_stpo>) WHERE item_no = <lfs_data>-item_no.
<lfs_stpo>-comp_scrap = <lfs_data>-comp_scrap.
ENDLOOP.
MOVE-CORRESPONDING lt_stko TO lt_stko_input.
READ TABLE lt_stko_input INTO DATA(ls_stko) INDEX 1.
CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
EXPORTING
material = <lfs_data>-matnr
plant = <lfs_data>-plant
bom_usage = <lfs_data>-bom_usage
alternative = <lfs_data>-alt_bom
change_no = <lfs_data>-chang_no
i_stko = ls_stko
fl_commit_and_wait = 'X'
fl_bom_create = 'X'
fl_new_item = 'X'
TABLES
t_stpo = lt_stpo
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc = 0.
COMMIT WORK.
gs_alv-item_no = <lfs_data>-item_no.
gs_alv-matnr = sy-msgv1.
gs_alv-type = sy-msgty.
gs_alv-message = 'BOM for material & changed' .
APPEND gs_Alv TO gt_Alv.
CLEAR: gs_Alv.
ELSE.
gs_alv-matnr = sy-msgv1.
gs_alv-type = sy-msgty.
gs_alv-message = 'BOM for material Not changed' .
APPEND gs_Alv TO gt_Alv.
CLEAR: gs_Alv.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_log
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_log .
TYPE-POOLS:
slis.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
DATA:
lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:
lv_program TYPE sy-repid.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ITEM_NO'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Item'.
ls_fieldcat-hotspot = abap_true.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Material Number'.
ls_fieldcat-hotspot = abap_true.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'TYPE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Status'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MESSAGE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Message'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_layout.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
lv_program = sy-repid.
* Display The Final Display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_program
is_layout = ls_layout
it_fieldcat = lt_fieldcat
* i_callback_user_command = 'USER_CMD'
TABLES
t_outtab = gt_alv
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.
*& Include ZPP_BOM_CHANGE_UPLOAD_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM file_upload .
* F4 Functionality
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_file_data .
DATA: lt_raw TYPE truxs_t_text_data.
* Convert the XL file to Internal Table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = abap_true
i_tab_raw_data = lt_raw
i_filename = p_file
TABLES
i_tab_converted_data = gt_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'No File Data' TYPE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form bapi_change_bom
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM bapi_change_bom .
DATA:lt_stpo TYPE TABLE OF stpo_api03,
lt_stko TYPE TABLE OF stko_api02,
lt_stko_input TYPE TABLE OF stko_api01.
DATA:fl_warnign TYPE capiflag-flwarning.
LOOP AT gt_Data ASSIGNING FIELD-SYMBOL(<lfs_data>).
AT NEW matnr.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
material = <lfs_data>-matnr
plant = <lfs_data>-plant
bom_usage = <lfs_data>-bom_usage
alternative = <lfs_data>-alt_bom
change_no = <lfs_data>-chang_no
IMPORTING
fl_warning = fl_warnign
TABLES
t_stpo = lt_stpo
t_stko = lt_stko
EXCEPTIONS
error = 1
OTHERS = 2.
ENDAT.
IF sy-subrc = 0.
<lfs_data>-item_no = |{ <lfs_data>-item_no ALPHA = IN }|.
LOOP AT lt_stpo ASSIGNING FIELD-SYMBOL(<lfs_stpo>) WHERE item_no = <lfs_data>-item_no.
<lfs_stpo>-comp_scrap = <lfs_data>-comp_scrap.
ENDLOOP.
MOVE-CORRESPONDING lt_stko TO lt_stko_input.
READ TABLE lt_stko_input INTO DATA(ls_stko) INDEX 1.
CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
EXPORTING
material = <lfs_data>-matnr
plant = <lfs_data>-plant
bom_usage = <lfs_data>-bom_usage
alternative = <lfs_data>-alt_bom
change_no = <lfs_data>-chang_no
i_stko = ls_stko
fl_commit_and_wait = 'X'
fl_bom_create = 'X'
fl_new_item = 'X'
TABLES
t_stpo = lt_stpo
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc = 0.
COMMIT WORK.
gs_alv-item_no = <lfs_data>-item_no.
gs_alv-matnr = sy-msgv1.
gs_alv-type = sy-msgty.
gs_alv-message = 'BOM for material & changed' .
APPEND gs_Alv TO gt_Alv.
CLEAR: gs_Alv.
ELSE.
gs_alv-matnr = sy-msgv1.
gs_alv-type = sy-msgty.
gs_alv-message = 'BOM for material Not changed' .
APPEND gs_Alv TO gt_Alv.
CLEAR: gs_Alv.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_log
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_log .
TYPE-POOLS:
slis.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
DATA:
lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:
lv_program TYPE sy-repid.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ITEM_NO'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Item'.
ls_fieldcat-hotspot = abap_true.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Material Number'.
ls_fieldcat-hotspot = abap_true.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'TYPE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Status'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MESSAGE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Message'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_layout.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
lv_program = sy-repid.
* Display The Final Display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_program
is_layout = ls_layout
it_fieldcat = lt_fieldcat
* i_callback_user_command = 'USER_CMD'
TABLES
t_outtab = gt_alv
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.
Comments
Post a Comment