Network Creation & Activity CreationN21) Using BAPI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
************************************************************************
* Program : ZPS_NETWORK_ACTIVITY
* Author : King Of ABAP'r
* Created on : 2023
* Requested By : Function Consultant
* Transport-No : 1234567890
*----------------------------------------------------------------------*
* Description : Cutover Object
* Assumption :
* Called from :
* Called to : N/A
* Includes : N/A
* Logical DB : N/A
*----------------------------------------------------------------------*
REPORT zps_network_activity.
INCLUDE zps_network_activity_top.
INCLUDE zps_network_activity_sel.
INCLUDE zps_network_activity_f01.
START-OF-SELECTION.
* Get File Data
PERFORM get_file_data.
* Create Network
PERFORM create_network.
* Display Error/Success Log
PERFORM display_log.
*&---------------------------------------------------------------------*
*& Include ZNETWORK_ACTIVITY_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_final,
network_prof TYPE profidnzpl, " Network Profile
network_type TYPE ps_aufart, " Netwrok Type
plant TYPE werks_d, " Plant
mrp TYPE co_dispo, " MRP Controller
short_text TYPE auftext, " Short Text
start_date(10) TYPE c, "co_gstrp, " Start Date
finish_date(10) TYPE c, "co_gltrp, " End Date
project_definition(24) TYPE c, "ps_psp_pro, " Project definition
wbs_element(24) TYPE c, "ps_psp_pnr, " WBS Element
profit_ctr TYPE prctr, " Profit Center
priority TYPE co_aprio,
* respcostcenter TYPE aufkostv,
* plannergroup TYPE vagrp,
* changenumber TYPE aennr,
END OF ty_final.
TYPES:BEGIN OF ty_final1,
aufnr TYPE aufnr,
vornr TYPE vornr,
steus TYPE steus,
arbpl TYPE arbpl,
werks TYPE werks_d,
ltxa1 TYPE ltxa1,
dauno TYPE daunor,
daune TYPE daunore,
start_date(10) TYPE c,
finish_date(10) TYPE c,
prctr TYPE prctr,
priority TYPE co_aprio,
milestone TYPE milestone,
factory_calendar TYPE wfcid,
cost_elem TYPE kstar,
matl_group TYPE matkl,
pur_group TYPE ekgrp,
info_rec TYPE infnr,
vendor_no TYPE lifnr,
price TYPE preis,
price_unit TYPE peinh,
currency TYPE waers,
purch_org TYPE ekorg,
* aennr TYPE aennr,
* frdlb TYPE co_frdlb,
* losvg TYPE cx_losvg,
* losme TYPE meins,
END OF ty_final1.
DATA:l_data TYPE ty_final1,
lt_data TYPE TABLE OF ty_final1,
wa_final TYPE ty_final1,
it_final TYPE TABLE OF ty_final1.
DATA: gt_data TYPE TABLE OF ty_final,
gs_data TYPE ty_final,
ls_data TYPE ty_final.
CONSTANTS: lc_e TYPE char1 VALUE 'E',
lc_s TYPE char1 VALUE 'S'.
TYPES: BEGIN OF ty_alv,
* ebeln TYPE ebeln,
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 ZNETWORK_ACTIVITY_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_final,
network_prof TYPE profidnzpl, " Network Profile
network_type TYPE ps_aufart, " Netwrok Type
plant TYPE werks_d, " Plant
mrp TYPE co_dispo, " MRP Controller
short_text TYPE auftext, " Short Text
start_date(10) TYPE c, "co_gstrp, " Start Date
finish_date(10) TYPE c, "co_gltrp, " End Date
project_definition(24) TYPE c, "ps_psp_pro, " Project definition
wbs_element(24) TYPE c, "ps_psp_pnr, " WBS Element
profit_ctr TYPE prctr, " Profit Center
priority TYPE co_aprio,
* respcostcenter TYPE aufkostv,
* plannergroup TYPE vagrp,
* changenumber TYPE aennr,
END OF ty_final.
TYPES:BEGIN OF ty_final1,
aufnr TYPE aufnr,
vornr TYPE vornr,
steus TYPE steus,
arbpl TYPE arbpl,
werks TYPE werks_d,
ltxa1 TYPE ltxa1,
dauno TYPE daunor,
daune TYPE daunore,
start_date(10) TYPE c,
finish_date(10) TYPE c,
prctr TYPE prctr,
priority TYPE co_aprio,
milestone TYPE milestone,
factory_calendar TYPE wfcid,
cost_elem TYPE kstar,
matl_group TYPE matkl,
pur_group TYPE ekgrp,
info_rec TYPE infnr,
vendor_no TYPE lifnr,
price TYPE preis,
price_unit TYPE peinh,
currency TYPE waers,
purch_org TYPE ekorg,
* aennr TYPE aennr,
* frdlb TYPE co_frdlb,
* losvg TYPE cx_losvg,
* losme TYPE meins,
END OF ty_final1.
DATA:l_data TYPE ty_final1,
lt_data TYPE TABLE OF ty_final1,
wa_final TYPE ty_final1,
it_final TYPE TABLE OF ty_final1.
DATA: gt_data TYPE TABLE OF ty_final,
gs_data TYPE ty_final,
ls_data TYPE ty_final.
CONSTANTS: lc_e TYPE char1 VALUE 'E',
lc_s TYPE char1 VALUE 'S'.
TYPES: BEGIN OF ty_alv,
* ebeln TYPE ebeln,
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 ZNETWORK_ACTIVITY_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN:skip.
SELECTION-SCREEN:skip.
PARAMETERS:RB1 RADIOBUTTON GROUP RB,
RB2 RADIOBUTTON GROUP RB.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
PERFORM file_upload.
*&---------------------------------------------------------------------*
*& Include ZNETWORK_ACTIVITY_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
IF rb1 = 'X'.
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.
CASE sy-subrc.
WHEN 1.
MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDCASE.
ENDIF.
ELSEIF rb2 = 'X'.
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 = lt_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDCASE.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form creat_network
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM creat_network.
DATA:ls_return LIKE bapireturn1,
lt_return TYPE TABLE OF bapireturn1.
DATA: lt_method TYPE TABLE OF bapi_method_project,
ls_method TYPE bapi_method_project.
DATA: lt_network TYPE TABLE OF bapi_network,
ls_network TYPE bapi_network,
lt_network_up TYPE TABLE OF bapi_network_update,
ls_network_up TYPE bapi_network_update.
DATA: lv_network TYPE nw_aufnr.
DATA:ls_mess TYPE bapi_meth_message,
lt_mess TYPE TABLE OF bapi_meth_message.
DATA:ls_activity TYPE bapi_network_activity,
lt_activity TYPE TABLE OF bapi_network_activity,
ls_activity_update TYPE bapi_network_activity_up,
lt_activity_update TYPE TABLE OF bapi_network_activity_up.
DATA:ref_no(6) TYPE c,
l_objkey TYPE objidext.
IF rb1 = 'X'.
LOOP AT gt_data INTO gs_data.
CLEAR:ls_method,ls_network,ls_return,ls_network_up,ls_mess.
REFRESH:lt_method,lt_network,lt_network_up,lt_mess.
ls_data = gs_data.
ls_method-method = 'CREATE'.
ls_method-objectkey = '0000000'.
ls_method-objecttype = 'NETWORK'.
ls_method-refnumber = '000001'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_method-method = 'SAVE'.
ls_method-refnumber = '000000'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_network-network_type = ls_data-network_type."'PS01'.
ls_network-network = '0000000'.
ls_network-short_text = ls_data-short_text.
ls_network-plant = ls_data-plant.
ls_network-profit_ctr = ls_data-profit_ctr.
ls_network-wbs_element = ls_data-wbs_element.
IF ls_data-finish_date IS NOT INITIAL.
CONCATENATE ls_data-finish_date+6(4) ls_data-finish_date+3(2) ls_data-finish_date+0(2) INTO ls_network-finish_date.
ENDIF.
IF ls_data-start_date IS NOT INITIAL.
CONCATENATE ls_data-start_date+6(4) ls_data-start_date+3(2) ls_data-start_date+0(2) INTO ls_network-start_date.
ENDIF.
ls_network-mrp_controller = ls_data-mrp.
ls_network-priority = ls_data-priority.
ls_network-project_definition = ls_data-project_definition.
ls_network-profile = ls_data-network_prof."'ZTADLF1'.
* ls_network-respcostcenter = ls_data-respcostcenter.
* ls_network-plannergroup = ls_data-plannergroup.
* ls_network-changenumber = ls_data-changenumber.
APPEND ls_network TO lt_network.
CLEAR: ls_network.
ls_network_up-network_type = abap_true.
ls_network_up-short_text = abap_true.
ls_network_up-plant = abap_true.
ls_network_up-profit_ctr = abap_true.
ls_network_up-wbs_element = abap_true.
ls_network_up-finish_date = abap_true.
ls_network_up-start_date = abap_true.
ls_network_up-mrp_controller = abap_true.
ls_network_up-priority = abap_true.
ls_network_up-project_definition = abap_true.
ls_network_up-profile = abap_true.
* ls_network_up-respcostcenter = abap_true.
* ls_network_up-plannergroup = abap_true.
* ls_network_up-changenumber = abap_true.
APPEND ls_network_up TO lt_network_up.
CLEAR:ls_network_up.
CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
IMPORTING
return = ls_return
TABLES
i_method_project = lt_method
i_network = lt_network
i_network_update = lt_network_up
e_message_table = lt_mess.
READ TABLE lt_mess INTO ls_mess WITH KEY message_type = lc_e.
IF sy-subrc = 0.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_type.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_text.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
ENDIF.
ENDLOOP.
ELSEIF rb2 = 'X'.
REFRESH:it_final.
it_final[] = lt_data[].
DELETE ADJACENT DUPLICATES FROM lt_data COMPARING aufnr.
LOOP AT lt_data INTO l_data.
CLEAR:ref_no,ls_method,ls_activity,ls_return,ls_activity_update,ls_mess.
REFRESH:lt_method,lt_activity,lt_activity_update,lt_mess.
LOOP AT it_final INTO wa_final WHERE aufnr = l_data-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_final-aufnr
IMPORTING
output = wa_final-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_final-vornr
IMPORTING
output = wa_final-vornr.
ref_no = ref_no + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ref_no
IMPORTING
output = ref_no.
CLEAR:l_objkey.
CONCATENATE wa_final-aufnr wa_final-vornr INTO l_objkey.
ls_method-method = 'CREATE'.
ls_method-objectkey = l_objkey. "'0000000'.
ls_method-objecttype = 'NETWORKACTIVITY'.
ls_method-refnumber = ref_no. "'000001'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_activity-network = wa_final-aufnr.
ls_activity-activity = wa_final-vornr.
ls_activity-control_key = wa_final-steus.
ls_activity-work_cntr = wa_final-arbpl.
ls_activity-plant = wa_final-werks.
ls_activity-description = wa_final-ltxa1.
"""""""""""
ls_activity-priority = wa_final-priority .
ls_activity-milestone = wa_final-milestone.
ls_activity-factory_calendar = wa_final-factory_calendar.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_final-cost_elem
IMPORTING
output = wa_final-cost_elem.
ls_activity-cost_elem = wa_final-cost_elem.
ls_activity-matl_group = wa_final-matl_group.
ls_activity-pur_group = wa_final-pur_group.
ls_activity-info_rec = wa_final-info_rec.
ls_activity-vendor_no = wa_final-vendor_no.
ls_activity-price = wa_final-price.
ls_activity-price_unit = wa_final-price_unit.
ls_activity-currency = wa_final-currency.
ls_activity-purch_org = wa_final-purch_org .
* ls_activity-aennr = wa_final-aennr.
* ls_activity-frdlb = wa_final-frdlb.
* ls_activity-losvg = wa_final-losvg.
* ls_activity-losme = wa_final-losme .
"""""""""""
ls_activity-profit_ctr = wa_final-prctr.
IF wa_final-steus = 'PS01'.
ls_activity-duration_normal = wa_final-dauno.
ls_activity-duration_normal_unit = wa_final-daune.
IF wa_final-start_date IS NOT INITIAL.
CONCATENATE wa_final-start_date+6(4) wa_final-start_date+3(2) wa_final-start_date+0(2) INTO ls_activity-constraint_start_date.
ENDIF.
IF wa_final-finish_date IS NOT INITIAL.
CONCATENATE wa_final-finish_date+6(4) wa_final-finish_date+3(2) wa_final-finish_date+0(2) INTO ls_activity-constraint_finish_date.
ENDIF.
ls_activity-constraint_start_time = '000000'.
ls_activity-constraint_finish_time = '000000'.
ENDIF.
APPEND ls_activity TO lt_activity.
CLEAR:ls_activity.
ENDLOOP.
ls_method-method = 'SAVE'.
ls_method-refnumber = '000000'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_activity_update-network = abap_true.
ls_activity_update-activity = abap_true.
ls_activity_update-control_key = abap_true.
ls_activity_update-work_cntr = abap_true.
ls_activity_update-plant = abap_true.
ls_activity_update-description = abap_true.
ls_activity_update-profit_ctr = abap_true.
IF wa_final-steus = 'PS01'.
ls_activity_update-duration_normal = abap_true.
ls_activity_update-duration_normal_unit = abap_true.
ls_activity_update-constraint_start_date = abap_true.
ls_activity_update-constraint_finish_date = abap_true.
ls_activity_update-constraint_start_time = abap_true.
ls_activity_update-constraint_finish_time = abap_true.
ENDIF.
""""""""""""""""""""""
ls_activity_update-priority = abap_true.
ls_activity_update-milestone = abap_true.
ls_activity_update-factory_calendar = abap_true.
ls_activity_update-cost_elem = abap_true.
ls_activity_update-matl_group = abap_true.
ls_activity_update-pur_group = abap_true.
ls_activity_update-info_rec = abap_true.
ls_activity_update-vendor_no = abap_true.
ls_activity_update-price = abap_true.
ls_activity_update-price_unit = abap_true.
ls_activity_update-currency = abap_true.
ls_activity_update-purch_org = abap_true .
* ls_activity_update-aennr = abap_true.
* ls_activity_update-frdlb = abap_true.
* ls_activity_update-losvg = abap_true.
* ls_activity_update-losme = abap_true.
""""""""""""""""""""""
APPEND ls_activity_update TO lt_activity_update.
CLEAR:ls_activity_update.
CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
IMPORTING
return = ls_return
TABLES
i_method_project = lt_method
i_activity = lt_activity
i_activity_update = lt_activity_update
e_message_table = lt_mess.
READ TABLE lt_mess INTO ls_mess WITH KEY message_type = lc_e.
IF sy-subrc = 0.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_type.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_text.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDIF.
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 = '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
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 ZNETWORK_ACTIVITY_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
IF rb1 = 'X'.
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.
CASE sy-subrc.
WHEN 1.
MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDCASE.
ENDIF.
ELSEIF rb2 = 'X'.
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 = lt_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDCASE.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form creat_network
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM creat_network.
DATA:ls_return LIKE bapireturn1,
lt_return TYPE TABLE OF bapireturn1.
DATA: lt_method TYPE TABLE OF bapi_method_project,
ls_method TYPE bapi_method_project.
DATA: lt_network TYPE TABLE OF bapi_network,
ls_network TYPE bapi_network,
lt_network_up TYPE TABLE OF bapi_network_update,
ls_network_up TYPE bapi_network_update.
DATA: lv_network TYPE nw_aufnr.
DATA:ls_mess TYPE bapi_meth_message,
lt_mess TYPE TABLE OF bapi_meth_message.
DATA:ls_activity TYPE bapi_network_activity,
lt_activity TYPE TABLE OF bapi_network_activity,
ls_activity_update TYPE bapi_network_activity_up,
lt_activity_update TYPE TABLE OF bapi_network_activity_up.
DATA:ref_no(6) TYPE c,
l_objkey TYPE objidext.
IF rb1 = 'X'.
LOOP AT gt_data INTO gs_data.
CLEAR:ls_method,ls_network,ls_return,ls_network_up,ls_mess.
REFRESH:lt_method,lt_network,lt_network_up,lt_mess.
ls_data = gs_data.
ls_method-method = 'CREATE'.
ls_method-objectkey = '0000000'.
ls_method-objecttype = 'NETWORK'.
ls_method-refnumber = '000001'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_method-method = 'SAVE'.
ls_method-refnumber = '000000'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_network-network_type = ls_data-network_type."'PS01'.
ls_network-network = '0000000'.
ls_network-short_text = ls_data-short_text.
ls_network-plant = ls_data-plant.
ls_network-profit_ctr = ls_data-profit_ctr.
ls_network-wbs_element = ls_data-wbs_element.
IF ls_data-finish_date IS NOT INITIAL.
CONCATENATE ls_data-finish_date+6(4) ls_data-finish_date+3(2) ls_data-finish_date+0(2) INTO ls_network-finish_date.
ENDIF.
IF ls_data-start_date IS NOT INITIAL.
CONCATENATE ls_data-start_date+6(4) ls_data-start_date+3(2) ls_data-start_date+0(2) INTO ls_network-start_date.
ENDIF.
ls_network-mrp_controller = ls_data-mrp.
ls_network-priority = ls_data-priority.
ls_network-project_definition = ls_data-project_definition.
ls_network-profile = ls_data-network_prof."'ZTADLF1'.
* ls_network-respcostcenter = ls_data-respcostcenter.
* ls_network-plannergroup = ls_data-plannergroup.
* ls_network-changenumber = ls_data-changenumber.
APPEND ls_network TO lt_network.
CLEAR: ls_network.
ls_network_up-network_type = abap_true.
ls_network_up-short_text = abap_true.
ls_network_up-plant = abap_true.
ls_network_up-profit_ctr = abap_true.
ls_network_up-wbs_element = abap_true.
ls_network_up-finish_date = abap_true.
ls_network_up-start_date = abap_true.
ls_network_up-mrp_controller = abap_true.
ls_network_up-priority = abap_true.
ls_network_up-project_definition = abap_true.
ls_network_up-profile = abap_true.
* ls_network_up-respcostcenter = abap_true.
* ls_network_up-plannergroup = abap_true.
* ls_network_up-changenumber = abap_true.
APPEND ls_network_up TO lt_network_up.
CLEAR:ls_network_up.
CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
IMPORTING
return = ls_return
TABLES
i_method_project = lt_method
i_network = lt_network
i_network_update = lt_network_up
e_message_table = lt_mess.
READ TABLE lt_mess INTO ls_mess WITH KEY message_type = lc_e.
IF sy-subrc = 0.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_type.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_text.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
ENDIF.
ENDLOOP.
ELSEIF rb2 = 'X'.
REFRESH:it_final.
it_final[] = lt_data[].
DELETE ADJACENT DUPLICATES FROM lt_data COMPARING aufnr.
LOOP AT lt_data INTO l_data.
CLEAR:ref_no,ls_method,ls_activity,ls_return,ls_activity_update,ls_mess.
REFRESH:lt_method,lt_activity,lt_activity_update,lt_mess.
LOOP AT it_final INTO wa_final WHERE aufnr = l_data-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_final-aufnr
IMPORTING
output = wa_final-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_final-vornr
IMPORTING
output = wa_final-vornr.
ref_no = ref_no + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ref_no
IMPORTING
output = ref_no.
CLEAR:l_objkey.
CONCATENATE wa_final-aufnr wa_final-vornr INTO l_objkey.
ls_method-method = 'CREATE'.
ls_method-objectkey = l_objkey. "'0000000'.
ls_method-objecttype = 'NETWORKACTIVITY'.
ls_method-refnumber = ref_no. "'000001'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_activity-network = wa_final-aufnr.
ls_activity-activity = wa_final-vornr.
ls_activity-control_key = wa_final-steus.
ls_activity-work_cntr = wa_final-arbpl.
ls_activity-plant = wa_final-werks.
ls_activity-description = wa_final-ltxa1.
"""""""""""
ls_activity-priority = wa_final-priority .
ls_activity-milestone = wa_final-milestone.
ls_activity-factory_calendar = wa_final-factory_calendar.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_final-cost_elem
IMPORTING
output = wa_final-cost_elem.
ls_activity-cost_elem = wa_final-cost_elem.
ls_activity-matl_group = wa_final-matl_group.
ls_activity-pur_group = wa_final-pur_group.
ls_activity-info_rec = wa_final-info_rec.
ls_activity-vendor_no = wa_final-vendor_no.
ls_activity-price = wa_final-price.
ls_activity-price_unit = wa_final-price_unit.
ls_activity-currency = wa_final-currency.
ls_activity-purch_org = wa_final-purch_org .
* ls_activity-aennr = wa_final-aennr.
* ls_activity-frdlb = wa_final-frdlb.
* ls_activity-losvg = wa_final-losvg.
* ls_activity-losme = wa_final-losme .
"""""""""""
ls_activity-profit_ctr = wa_final-prctr.
IF wa_final-steus = 'PS01'.
ls_activity-duration_normal = wa_final-dauno.
ls_activity-duration_normal_unit = wa_final-daune.
IF wa_final-start_date IS NOT INITIAL.
CONCATENATE wa_final-start_date+6(4) wa_final-start_date+3(2) wa_final-start_date+0(2) INTO ls_activity-constraint_start_date.
ENDIF.
IF wa_final-finish_date IS NOT INITIAL.
CONCATENATE wa_final-finish_date+6(4) wa_final-finish_date+3(2) wa_final-finish_date+0(2) INTO ls_activity-constraint_finish_date.
ENDIF.
ls_activity-constraint_start_time = '000000'.
ls_activity-constraint_finish_time = '000000'.
ENDIF.
APPEND ls_activity TO lt_activity.
CLEAR:ls_activity.
ENDLOOP.
ls_method-method = 'SAVE'.
ls_method-refnumber = '000000'.
APPEND ls_method TO lt_method.
CLEAR: ls_method.
ls_activity_update-network = abap_true.
ls_activity_update-activity = abap_true.
ls_activity_update-control_key = abap_true.
ls_activity_update-work_cntr = abap_true.
ls_activity_update-plant = abap_true.
ls_activity_update-description = abap_true.
ls_activity_update-profit_ctr = abap_true.
IF wa_final-steus = 'PS01'.
ls_activity_update-duration_normal = abap_true.
ls_activity_update-duration_normal_unit = abap_true.
ls_activity_update-constraint_start_date = abap_true.
ls_activity_update-constraint_finish_date = abap_true.
ls_activity_update-constraint_start_time = abap_true.
ls_activity_update-constraint_finish_time = abap_true.
ENDIF.
""""""""""""""""""""""
ls_activity_update-priority = abap_true.
ls_activity_update-milestone = abap_true.
ls_activity_update-factory_calendar = abap_true.
ls_activity_update-cost_elem = abap_true.
ls_activity_update-matl_group = abap_true.
ls_activity_update-pur_group = abap_true.
ls_activity_update-info_rec = abap_true.
ls_activity_update-vendor_no = abap_true.
ls_activity_update-price = abap_true.
ls_activity_update-price_unit = abap_true.
ls_activity_update-currency = abap_true.
ls_activity_update-purch_org = abap_true .
* ls_activity_update-aennr = abap_true.
* ls_activity_update-frdlb = abap_true.
* ls_activity_update-losvg = abap_true.
* ls_activity_update-losme = abap_true.
""""""""""""""""""""""
APPEND ls_activity_update TO lt_activity_update.
CLEAR:ls_activity_update.
CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
IMPORTING
return = ls_return
TABLES
i_method_project = lt_method
i_activity = lt_activity
i_activity_update = lt_activity_update
e_message_table = lt_mess.
READ TABLE lt_mess INTO ls_mess WITH KEY message_type = lc_e.
IF sy-subrc = 0.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_type.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
LOOP AT lt_mess INTO ls_mess.
gs_alv-type = ls_mess-message_text.
gs_alv-message = ls_mess-message_text.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDIF.
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 = '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
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