*&---------------------------------------------------------------------*
* Identification
* Technical Object(s) : ORTEC
* Title : Site Bin Seq Load
*
* Description: Load DC bin sequence for ORTEC
*
* Technical Consultant : Angie Benedicto
* Solutions Architect :
* Functional Consultant :
* Creation Date : 2018.04.12
* Project/Ticket : BREWS / Moved from Legacy ORTEC
*---------------------------------------------------------------------*
REPORT zsite_bin_seq_load.
DATA: exception TYPE REF TO cx_root,
msg TYPE string,
ortec_logon TYPE REF TO zdslogonrequestco_connection_o,
logon_input TYPE zdslogonrequestlogon_input,
logon_output TYPE zdslogonrequestlogon_output,
ortec_batch_job TYPE REF TO zbinseq_loadco_batch_job_admin,
batchjobinput TYPE zbinseq_loadrun_batch_job_inp2,
batchjoboutput TYPE zbinseq_loadrun_batch_job_outp,
jobparam TYPE zbinseq_loadjob_param_type,
globalvar TYPE zbinseq_loadrun_batch_job_inp1,
it_globalvar TYPE zbinseq_loadrun_batch_job__tab,
variable TYPE TABLE OF zbinseq_loadrun_batch_job_inpu,
variableinput TYPE zbinseq_loadrun_batch_job_inpu,
wa_variable TYPE zbinseq_loadrun_batch_job_inpu,
lt_return TYPE ztech_t_table_value,
lv_tablekey TYPE char100,
lv_lpn TYPE prx_logical_port_name,
lv_password TYPE char30,
lv_cmsauth TYPE char13.
CONSTANTS:
lc_table TYPE tabname VALUE 'ZLEO_SETTINGS',
lc_ortec_username TYPE ztech__table_key VALUE 'ORTEC_DS_USERNAME',
lc_ortec_password TYPE ztech__table_key VALUE 'ORTEC_DS_PASSWORD',
lc_ortec_cms_system TYPE ztech__table_key VALUE 'ORTEC_DS_CMS_SYSTEM',
lc_ortec_cms_auth TYPE ztech__table_key VALUE 'ORTEC_DS_CMS_AUTHENTICATION',
lc_ortec_lpn_dsjob TYPE ztech__table_key VALUE 'ORTEC_LOGICAL_PORTNAME_DS_JOB',
lc_ortec_lpn_dslogon TYPE ztech__table_key VALUE 'ORTEC_LOGICAL_PORTNAME_DS_LOGON',
lc_ortec_job_name TYPE ztech__table_key VALUE 'ORTEC_DS_JOB_NAME_BINSEQ_LOAD',
lc_ortec_repo_name TYPE ztech__table_key VALUE 'ORTEC_REPO_NAME',
lc_ortec_repo_name_case TYPE ztech__table_key VALUE 'ORTEC_REPO_LOWERCASE',
lc_ortec_sys_prof TYPE ztech__table_key VALUE 'ORTEC_SYSTEM_PROFILE',
lc_param_store TYPE ztech__table_key VALUE 'ORTEC_DS_BIN_SEQ_PARAM1',
lc_param_webservice TYPE ztech__table_key VALUE 'ORTEC_DS_BIN_SEQ_PARAM2',
lc_param_export TYPE ztech__table_key VALUE 'ORTEC_DS_BIN_SEQ_INPUT_EXP',
lc_param_import TYPE ztech__table_key VALUE 'ORTEC_DS_BIN_SEQ_INPUT_IMP'.
TABLES sscrfields.
DATA: BEGIN OF i_excl_tab OCCURS 0,
pfkey LIKE sy-pfkey.
DATA: END OF i_excl_tab.
DATA: wa_site TYPE t001w-werks.
SELECTION-SCREEN BEGIN OF BLOCK prompt WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) text.
PARAMETERS: site TYPE t001w-werks OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK prompt.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 5(10) exp USER-COMMAND loadtypeexp.
SELECTION-SCREEN PUSHBUTTON 20(10) imp USER-COMMAND loadtypeimp.
SELECTION-SCREEN END OF LINE.
AT SELECTION-SCREEN OUTPUT.
text = 'SITE: '.
PERFORM set_sel_screen_pf_status.
START-OF-SELECTION.
FORM set_sel_screen_pf_status.
DATA: l_pf_status LIKE sy-pfkey,
l_program LIKE sy-repid.
REFRESH i_excl_tab.
MOVE 'ONLI' TO i_excl_tab-pfkey.
APPEND i_excl_tab.
CLEAR i_excl_tab.
l_pf_status = '%_00'.
l_program = 'RSSYSTDB'.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = l_pf_status
p_program = l_program
TABLES
p_exclude = i_excl_tab.
ENDFORM.
INITIALIZATION.
exp = 'Export'.
imp = 'Import'.
AT SELECTION-SCREEN.
CLEAR wa_site.
SELECT werks INTO wa_site FROM t001w WHERE werks NOT IN ( SELECT dep_id FROM /lot/xd_dt_kun )
AND werks = site.
ENDSELECT.
IF wa_site IS INITIAL.
MESSAGE 'Site is not valid.' TYPE 'E'.
ENDIF.
CASE sscrfields.
WHEN 'LOADTYPEEXP'.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_param_export
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO variableinput-name INDEX 1.
ENDIF.
variableinput-content = 'Y'.
APPEND variableinput TO variable .
msg = 'Export '.
WHEN 'LOADTYPEIMP'.
DATA: answer.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Importing file into the site bin maintenance table'
text_question = 'Please make sure that the spreadsheet is closed. Click OK to import now.'
text_button_1 = 'OK'(002)
text_button_2 = 'Cancel'(003)
default_button = '2'
display_cancel_button = ''
* USERDEFINED_F1_HELP = ' '
start_column = 30
start_row = 6
* POPUP_TYPE =
IMPORTING
answer = answer
* TABLES
* PARAMETER =
EXCEPTIONS
text_not_found = 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.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_param_import
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO variableinput-name INDEX 1.
ENDIF.
IF answer = '1'.
variableinput-content = 'Y'.
APPEND variableinput TO variable .
msg = 'Import '.
ELSE.
sy-ucomm = ''.
ENDIF.
ENDCASE.
IF sy-ucomm EQ ''.
* disable enter button
ELSE.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_lpn_dslogon
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO lv_lpn INDEX 1.
ENDIF.
TRY.
CREATE OBJECT ortec_logon
EXPORTING
logical_port_name = lv_lpn.
CATCH cx_ai_system_fault INTO exception.
msg = exception->get_text( ).
ENDTRY.
TRY.
* instantiate the object reference
IF ortec_logon IS NOT BOUND.
CREATE OBJECT ortec_logon TYPE zdslogonrequestco_connection_o.
ENDIF.
CATCH cx_ai_system_fault INTO exception.
msg = exception->get_text( ).
ENDTRY.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_username
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO logon_input-username INDEX 1.
ENDIF.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_password
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO lv_password INDEX 1.
TRANSLATE lv_password TO LOWER CASE.
TRANSLATE lv_password+0(1) TO UPPER CASE.
logon_input-password = lv_password.
ENDIF.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_cms_system
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO logon_input-cms_system INDEX 1.
ENDIF.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_cms_auth
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO lv_cmsauth INDEX 1.
TRANSLATE lv_cmsauth TO LOWER CASE.
TRANSLATE lv_cmsauth+3(1) TO UPPER CASE.
logon_input-cms_authentication = lv_cmsauth.
ENDIF.
TRY.
CALL METHOD ortec_logon->logon
EXPORTING
input = logon_input
IMPORTING
output = logon_output.
CATCH cx_ai_system_fault INTO exception.
msg = exception->get_text( ).
ENDTRY.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_lpn_dsjob
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO lv_lpn INDEX 1.
ENDIF.
TRY.
CREATE OBJECT ortec_batch_job
EXPORTING
logical_port_name = lv_lpn.
CATCH cx_ai_system_fault INTO exception.
msg = exception->get_text( ).
ENDTRY.
DATA: ws_header TYPE REF TO if_wsprotocol_ws_header,
l_xstring TYPE xstring,
l_string TYPE string,
name TYPE string,
namespace TYPE string,
xml_document TYPE REF TO if_ixml_document,
xml_root TYPE REF TO if_ixml_element,
xml_element TYPE REF TO if_ixml_element,
xml_node TYPE REF TO if_ixml_node.
TRY.
CONCATENATE
'<soap:Header>'
'<localtypes:session xmlns:localtypes="http://www.businessobjects.com/DataServices/ServerX.xsd">'
'<SessionID>'logon_output-session_id'</SessionID>'
'</localtypes:session >'
'</soap:Header>' INTO l_string.
l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
CREATE OBJECT ortec_batch_job.
ws_header ?= ortec_batch_job->get_protocol('IF_WSPROTOCOL_WS_HEADER').
IF NOT l_string IS INITIAL.
CALL FUNCTION 'SDIXML_XML_TO_DOM'
EXPORTING
xml = l_xstring
IMPORTING
document = xml_document
EXCEPTIONS
invalid_input = 1
OTHERS = 2.
IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
xml_root = xml_document->get_root_element( ).
xml_element ?= xml_root->get_first_child( ).
WHILE NOT xml_element IS INITIAL.
name = xml_element->get_name( ).
namespace = xml_element->get_namespace_uri( ).
ws_header->set_request_header(
name = name
namespace = namespace
dom = xml_element ).
xml_element ?= xml_element->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
CATCH cx_ai_system_fault .
ENDTRY.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_job_name
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO batchjobinput-job_name INDEX 1.
ENDIF.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_repo_name
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO batchjobinput-repo_name INDEX 1.
ENDIF.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_ortec_sys_prof
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO jobparam-job_system_profile INDEX 1.
ENDIF.
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_param_store
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO variableinput-name INDEX 1.
ENDIF.
variableinput-content = site.
APPEND variableinput TO variable .
CALL METHOD zcl_tech_util=>read_by_partial_key
EXPORTING
iv_table = lc_table
iv_key = lc_param_webservice
RECEIVING
rt_values = lt_return.
" Read the return table from method
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO variableinput-name INDEX 1.
ENDIF.
variableinput-content = 'Y'.
APPEND variableinput TO variable .
LOOP AT variable INTO wa_variable.
APPEND wa_variable TO globalvar-variable.
ENDLOOP.
batchjobinput-job_parameters = jobparam.
batchjobinput-global_variables = globalvar.
TRY.
CALL METHOD ortec_batch_job->run_batch_job
EXPORTING
input = batchjobinput
IMPORTING
output = batchjoboutput.
CATCH cx_ai_system_fault INTO exception.
msg = exception->get_text( ).
ENDTRY.
IF batchjoboutput IS NOT INITIAL.
IF batchjoboutput-error_message NE ''.
CONCATENATE 'Problem occured while loading data. ' batchjoboutput-error_message INTO msg.
MESSAGE msg TYPE 'E'.
ELSE.
CONCATENATE msg ' Successful' INTO msg.
MESSAGE msg TYPE 'S'.
ENDIF.
ENDIF.
CLEAR site.
ENDIF.
No comments:
Post a Comment