Znote 1786253
Znote 1786253
REPORT znote_1786253.
TYPE-POOLS: seox, seoc, seok, seex, bcwbn, ststc, trmtd, trexe, scua.
TYPES: t_switch_id TYPE char30, "sfw_switch_id does not exist in SAP_BASIS 640
t_bfunction TYPE char30, "sfw_bfunction does not exist in SAP_BASIS 640
BEGIN OF t_bf_sw, "sfw_bf_sw
switch_id TYPE t_switch_id,
version,
bfunction TYPE t_bfunction,
no_check,
END OF t_bf_sw,
BEGIN OF t_permission, client_pak(30), intf_name(30), err_sever(4), END OF
t_permission, "has to be in sync with structure permission
BEGIN OF
dd43v,typename(30),seckeyname(30),ddlanguage,seckeyunique,accessmode,kind,keydescri
ption(80),END OF dd43v.
*&---------------------------------------------------------------------*
*& Form bal_callback_ucomm
*&---------------------------------------------------------------------*
* called from ballog, e.g. during double click
*----------------------------------------------------------------------*
FORM bal_callback_ucomm CHANGING c_state TYPE bal_s_cbuc. "#EC CALLED
DATA: ls_msg TYPE bal_s_msg,
l_date(8),
ls_tadir TYPE adir_key.
CASE c_state-ucomm.
WHEN '%LONGTEXT' OR '&IC1'.
CALL FUNCTION 'BAL_LOG_MSG_READ'
EXPORTING
i_s_msg_handle = c_state-list_msgh
IMPORTING
e_s_msg = ls_msg
EXCEPTIONS
log_not_found = 1
msg_not_found = 2
OTHERS = 3.
IF ls_msg-msgid EQ 'DO' AND ls_msg-msgno EQ '626'.
"MESSAGE i626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
SPLIT ls_msg-msgv3 AT ':' INTO sy-lisel l_date.
SUBMIT radprotb WITH protname EQ ls_msg-msgv3 "#EC CI_SUBMIT
WITH date EQ l_date
* with TIME
* with USER
AND RETURN.
c_state-ucomm_exec = 'X'.
ELSEIF c_state-ucomm EQ '&IC1'.
ls_tadir = ls_msg-context-value.
CHECK ls_tadir-object IS NOT INITIAL.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ls_tadir-obj_name
object_type = ls_tadir-object
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
c_state-ucomm_exec = 'X'.
ENDIF.
ENDCASE.
ENDFORM. "bal_callback_ucomm
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
DEFINE bdc_field.
clear: ls_bdc.
ls_bdc-fnam = &1.
ls_bdc-fval = &2.
append ls_bdc to lt_bdc.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
DEFINE bdc_screen.
clear ls_bdc.
ls_bdc-program = &1.
ls_bdc-dynpro = &2.
ls_bdc-dynbegin = 'X'.
append ls_bdc to lt_bdc.
END-OF-DEFINITION.
*----------------------------------------------------------------------*
* CLASS lcl_wb DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_wb DEFINITION.
PUBLIC SECTION.
CLASS-METHODS init
IMPORTING
value(i_note) TYPE clike OPTIONAL "note which indicates that report
is not needed anymore
value(i_cinst) TYPE cwbcialeid OPTIONAL "correction instruction which
describes the validity of the report
EXCEPTIONS
stop_processing.
CLASS-METHODS get_object_text
IMPORTING
i_object TYPE e071-object "e.g. TABD
i_obj_name TYPE c OPTIONAL "for DOCU
RETURNING value(r_text) TYPE string.
CLASS-METHODS create_package
IMPORTING
i_devclass TYPE devclass
i_langu TYPE sylangu DEFAULT 'E'
i_ctext TYPE tdevc-ctext
i_dlvunit TYPE tdevc-dlvunit
i_parentcl TYPE tdevc-parentcl "super package
i_translayer TYPE tdevc-pdevclass "transport layer
i_comp_posid TYPE char24 "AKHKOMPO
i_project_id TYPE t_pak_projects-project_id OPTIONAL
i_tpclass TYPE tdevc-tpclass
i_mainpack TYPE tdevc-mainpack OPTIONAL
i_restricted TYPE tdevc-restricted OPTIONAL
i_korrflag TYPE tdevc-korrflag DEFAULT 'X'
i_srv_check TYPE tdevc-srv_check
EXCEPTIONS
package_not_created.
CLASS-METHODS create_message
IMPORTING
i_msgid TYPE msgid
i_msgno TYPE msgno
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_text TYPE natxt
i_selfdef TYPE doku_selfd DEFAULT 'X'.
CLASS-METHODS create_mess_docu
IMPORTING
i_msgid TYPE msgid
i_msgno TYPE msgno
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tline_tab.
CLASS-METHODS create_other_docu
IMPORTING
i_devclass TYPE devclass OPTIONAL "only needed for new objects with own
TADIR
i_docname TYPE thead-tdname "e.g. TXCDESK_PARAM, where TX
represents general text
i_typ TYPE dokil-typ DEFAULT 'E' "E or T
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tline_tab.
CLASS-METHODS create_program_text
IMPORTING
i_devclass TYPE devclass OPTIONAL "needed if report texts are created
before the program exists
i_progname TYPE progname
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_id TYPE textpool-id DEFAULT 'I' "I = Text element, S =
Selection Text, R = Title
i_key TYPE textpool-key "space for title
i_text TYPE textpool-entry
i_length TYPE textpool-length OPTIONAL. "can be defaulted from length
of text
CLASS-METHODS modify_stcs
IMPORTING
i_devclass TYPE devclass
i_langu TYPE sylangu DEFAULT 'E' "Default EN
value(is_hdr) TYPE any
it_hdt TYPE ANY TABLE
it_tsk TYPE ANY TABLE
it_att TYPE ANY TABLE OPTIONAL.
CLASS-METHODS execute_method
IMPORTING
i_method TYPE c. "AFTER_IMP or BEFORE_EXP
CLASS-METHODS add_to_transport
IMPORTING
i_object TYPE e071-object "TABD
i_obj_name TYPE c "flexible number of characters
i_devclass TYPE devclass OPTIONAL
i_langu TYPE sylangu OPTIONAL
EXCEPTIONS
error
simulation.
CLASS-METHODS log_message.
CLASS-METHODS display_log.
CLASS-METHODS set_context
IMPORTING i_object TYPE e071-object
i_obj_name TYPE c
i_obj_name2 TYPE c OPTIONAL
i_text TYPE c OPTIONAL
i_langu TYPE sylangu.
CLASS-METHODS activate
IMPORTING i_result_auth_check TYPE sysubrc OPTIONAL.
CLASS-METHODS mass_activation
IMPORTING
i_step TYPE i DEFAULT 1
i_inactive TYPE c OPTIONAL
i_ddmode TYPE ddmode DEFAULT 'O'
i_logname TYPE c
EXCEPTIONS
error.
ENDCLASS. "lcl_wb DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_dcm_to_po_bridge IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_wb IMPLEMENTATION.
METHOD init.
CLEAR gv_errors_occured.
"Main check: Last changed by SAP -> Report came via SP / Upgrade
"==> no execution anymore.
IF sy-cprog NE 'SAP_LOCAL_DOWNPORT_ASSISTANT'.
SELECT SINGLE prog FROM d010sinf INTO sy-lisel
WHERE prog EQ sy-repid
AND ( unam EQ 'SAP' OR cnam EQ 'SAP' ).
IF sy-subrc EQ 0.
MESSAGE w666(01) WITH 'The neccessary changes already came' 'via support
package.' 'Report execution not required anymore.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD display_log.
RAISE stop_processing.
ENDIF.
ENDIF.
IF testrun IS INITIAL.
MESSAGE i666(01) WITH 'Running in Update Mode' INTO sy-lisel. "#EC *
ELSE.
MESSAGE w666(01) WITH 'Running in Test Mode' INTO sy-lisel. "#EC *
ENDIF.
CALL METHOD log_message.
ENDMETHOD. "init
METHOD get_object_text.
IF lt_object_text IS INITIAL.
CALL FUNCTION 'TR_OBJECT_TABLE'
TABLES
wt_object_text = lt_object_text.
SORT lt_object_text BY object.
IF i_object EQ 'DOCU'.
READ TABLE lt_doktypes INTO ls_doktype BINARY SEARCH
WITH KEY domvalue_l = i_obj_name(2).
IF sy-subrc EQ 0.
CONCATENATE 'Documentation' ls_doktype-ddtext INTO r_text SEPARATED BY
space. "#EC NOTEXT
ELSE.
r_text = 'Documentation'. "#EC NOTEXT
ENDIF.
ELSEIF i_object IS NOT INITIAL.
READ TABLE lt_object_text INTO ls_object_text BINARY SEARCH
WITH KEY object = i_object. "ignore PGMID!
IF sy-subrc EQ 0.
r_text = ls_object_text-text.
ENDIF.
ENDIF.
ENDMETHOD. "get_object_text
METHOD create_package.
DATA: BEGIN OF ls_package_data,
devclass TYPE tdevc-devclass,
dlvunit TYPE tdevc-dlvunit,
parentcl TYPE tdevc-parentcl,
tpclass TYPE tdevc-tpclass,
pdevclass TYPE tdevc-pdevclass,
srv_check TYPE tdevc-srv_check,
mainpack TYPE tdevc-mainpack,
restricted TYPE tdevc-restricted,
korrflag TYPE tdevc-korrflag,
as4user TYPE tdevc-as4user,
masterlang TYPE tdevct-spras,
ctext TYPE tdevct-ctext,
comp_posid LIKE i_comp_posid,
project_guid TYPE t_pak_projects-project_guid,
END OF ls_package_data,
l_dref TYPE REF TO data,
ls_devclass LIKE LINE OF gr_devclass VALUE 'IEQ'.
FIELD-SYMBOLS: <ls_package_data> TYPE ANY.
ls_devclass-low = i_devclass.
COLLECT ls_devclass INTO gr_devclass.
IF ls_package_data-pdevclass IS INITIAL.
"initial transport layer only makes sense for local/home packages
IF ls_package_data-dlvunit NE 'HOME' AND
ls_package_data-dlvunit NE 'LOCAL'.
MESSAGE i666(01) WITH 'Could not determine transport layer.' 'Please copy
via generated report' 'or create package manually '. "#EC *
RAISE package_not_created.
ENDIF.
ENDIF.
ls_package_data-devclass = i_devclass.
ls_package_data-ctext = i_ctext.
ls_package_data-masterlang = i_langu.
ls_package_data-dlvunit = i_dlvunit.
ls_package_data-parentcl = i_parentcl.
ls_package_data-comp_posid = i_comp_posid.
ls_package_data-tpclass = i_tpclass.
ls_package_data-srv_check = i_srv_check.
ls_package_data-mainpack = i_mainpack.
ls_package_data-restricted = i_restricted.
ls_package_data-korrflag = i_korrflag.
ls_package_data-as4user = sy-uname.
ENDMETHOD. "create_package
METHOD activate.
IF testrun IS INITIAL.
"activate switches "online"
IF gr_switchname IS NOT INITIAL.
SELECT * FROM dwinactiv INTO TABLE lt_dwinactiv
WHERE obj_name IN gr_switchname.
IF lt_dwinactiv[] IS NOT INITIAL.
LOOP AT lt_dwinactiv ASSIGNING <ls_dwinactiv>
WHERE uname NE sy-uname
AND obj_name IN gr_switchname.
<ls_dwinactiv>-uname = sy-uname.
ENDLOOP.
INSERT dwinactiv FROM TABLE lt_dwinactiv ACCEPTING DUPLICATE KEYS.
ENDIF.
MESSAGE s357(scwn).
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
dictionary_only = 'X'
TABLES
OBJECTS = lt_dwinactiv
EXCEPTIONS
OTHERS = 5.
ENDIF.
IF sy-subrc EQ 0.
CALL FUNCTION 'DD_GET_INCLUDING_TABLES' "Get tables which are
EXPORTING "importing table TABNAME
tabname = <ls_dwinactiv>-obj_name(30)
TABLES
tabnames = lt_dd02v_inc.
CLEAR l_auth_subrc.
LOOP AT lt_dd02v_inc INTO ls_dd02v_inc.
l_obj_name = ls_dd02v_inc-tabname.
CALL FUNCTION 'RS_DD_CHECK_ACTIVATE'
EXPORTING
objtype = 'TABL'
objname = l_obj_name
* i_no_ui = 'X' "not in all sap_basis releases
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
l_auth_subrc = sy-subrc.
MESSAGE e666(01) WITH 'No authorization to activate database table'
<ls_dwinactiv>-obj_name '. Call transaction SU53 for details' INTO sy-lisel. "#EC *
CALL METHOD log_message.
EXIT.
ENDIF.
ENDLOOP.
sy-subrc = l_auth_subrc.
ENDIF.
IF sy-subrc EQ 0.
"DDIC always via RADMASG0
"move DDIC objects to separate worklist
APPEND <ls_dwinactiv> TO lt_dwinactiv_ddic.
DELETE lt_dwinactiv.
ELSE.
MESSAGE e666(01) WITH 'No authorization to activate' <ls_dwinactiv>-object
<ls_dwinactiv>-obj_name '. Call transaction SU53 for details' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CASE <ls_dwinactiv>-object.
WHEN 'DOMA'. DELETE gr_domname WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'DTEL'. DELETE gr_rollname WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'TABL'.
DELETE gr_tabname WHERE low EQ <ls_dwinactiv>-obj_name.
DELETE gr_indxtab WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'INDX'. DELETE gr_indxname WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'VIEW'. DELETE gr_viewname WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'ENQU'. DELETE gr_enqname WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'TTYP'. DELETE gr_ttypname WHERE low EQ <ls_dwinactiv>-obj_name.
WHEN 'SHLP'. DELETE gr_shlpname WHERE low EQ <ls_dwinactiv>-obj_name.
ENDCASE.
DELETE lt_dwinactiv.
ENDIF.
ENDLOOP.
CLEAR l_message.
IF sy-subrc EQ 0.
LOOP AT gr_dbtabname INTO ls_tabname WHERE low IS NOT INITIAL.
"make a test SELECT * FROM table UP TP 1 ROWS to see whether it is
really consistent
"go via RFC to have the chance to catch short dumps
"or GET_TABLE_KEYLIST_RFC
DATA: lt_options TYPE TABLE OF rfc_db_opt,
lt_fields TYPE TABLE OF rfc_db_fld,
lt_data TYPE TABLE OF tab512.
IF sy-subrc EQ 0.
MESSAGE s666(01) WITH 'DDIC activation successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
MESSAGE i626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
"e.g. no authorization for activation or conversion of dependent database
tables
"make sure that the objects appear as inactive; corresponding are removed
by DDIC activation phase 1 although phase 2 or 3 may fail.
MODIFY dwinactiv FROM TABLE lt_dwinactiv_ddic.
MESSAGE e626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
METHOD mass_activation.
AND RETURN.
ENDMETHOD. "mass_activation
METHOD execute_method.
ENDMETHOD. "execute_method
METHOD add_to_transport.
CLEAR sy-subrc.
CHECK gv_copy_translation IS INITIAL.
CHECK testrun IS INITIAL.
IF i_object NE s_object OR
i_obj_name NE s_obj_name.
s_object = i_object.
s_obj_name = i_obj_name.
CASE i_object.
WHEN 'SCP1'.
WHEN 'SCP2'.
"check if there is any BCSet client.
SELECT mandt FROM t000 INTO ls_t000 WHERE ccorigcont EQ 'X'. "AND
cccategory EQ 'C' <- sometimes not customized as C but T, e.g. E27
CONCATENATE l_bcset_clients ls_t000-mandt INTO l_bcset_clients
SEPARATED BY space.
ENDSELECT.
IF l_bcset_clients IS NOT INITIAL.
"check if current client is a BCSet client
IF l_bcset_clients NS sy-mandt.
MESSAGE e666(01) WITH 'BCSets can only be changed in one' 'of the
following clients:' l_bcset_clients INTO sy-lisel. "#EC *
CALL METHOD log_message.
RAISE error.
ENDIF.
ENDIF.
ENDCASE.
CASE i_object.
WHEN 'REPT' OR 'FUNC' OR 'CUAD' OR 'DOCU'.
l_object_class = i_object.
l_object_name = i_obj_name.
WHEN 'DOCV' OR 'DOCT' OR 'DSYS' OR 'STCS' OR 'MSAG'
OR 'IWPR' OR 'IWMO' OR 'IWSV' OR 'IWOM' OR 'IWSG' OR 'SICF' "SEGW
OR 'SFRN' OR 'CUS0' OR 'CUS1' OR 'CUS2' "IMG
OR 'OSOD'
OR 'SCP1' OR 'SCP2'. "logical transport object
l_object_class = i_object.
l_object_name = i_obj_name.
l_global_lock = 'X'.
l_extend = 'X'.
l_tadir_name = i_obj_name.
WHEN 'MESS'.
l_object_class = 'T100'.
l_object_name = i_obj_name.
WHEN 'CLAS' OR 'FUGR' OR 'PARA' OR 'VCLS' OR 'AUTH'.
l_object_class = i_object.
l_object_name = i_obj_name.
l_tadir_name = i_obj_name.
l_global_lock = 'X'.
WHEN 'DOMA' OR 'DTEL' OR 'TABL' OR 'VIEW' OR 'INDX' OR 'TTYP' OR 'SHLP' OR
'ENQU'.
l_object_class = 'DICT'.
CONCATENATE i_object i_obj_name INTO l_object_name.
l_tadir_name = i_obj_name.
WHEN 'DYNP'.
l_object_class = 'SCRP'.
l_object_name = i_obj_name.
WHEN OTHERS.
l_object_class = i_object.
l_object_name = i_obj_name.
ENDCASE.
IF sy-subrc EQ 0.
"collect objects with update
COLLECT ls_trkey INTO gt_trkey.
"correct master language if neccessary
IF l_tadir_name IS NOT INITIAL AND ls_tadir_old IS INITIAL.
IF i_langu CA 'ED'.
UPDATE tadir SET masterlang = i_langu
WHERE pgmid EQ 'R3TR'
AND object EQ i_object
AND obj_name EQ l_tadir_name
AND masterlang NE i_langu.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF s_subrc NE 0.
MESSAGE e666(01) WITH 'Could not add to transport request' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
RAISE error.
ENDIF.
ENDMETHOD. "add_to_transport
METHOD create_message.
ls_msg_class-low = i_msgid.
COLLECT ls_msg_class INTO gr_msg_class.
"-------------------------------------------
ls_bdcp-program = 'SAPLWBMESSAGES'.
ls_bdcp-dynpro = '0100'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.
* ls_bdc-fnam = 'BDC_CURSOR'.
* ls_bdc-fval = 'MSG_NUMMER'.
* APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'RSDAG-ARBGB'.
ls_bdc-fval = i_msgid.
APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'MSG_NUMMER'.
ls_bdc-fval = i_msgno.
APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'RSDAG-MSGFLAG'.
ls_bdc-fval = 'X'.
APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_EDIT'.
APPEND ls_bdc TO lt_bdc.
"-------------------------------------------
ls_bdcp-dynpro = '1000'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.
ls_bdc-fnam = 'BDC_SUBSCR'.
ls_bdc-fval = 'SAPLWBMESSAGES 0101SUB'.
APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'T100-TEXT(01)'.
ls_bdc-fval = i_text.
APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'LISTTAB-DOKU_FLAG(01)'.
IF i_selfdef IS INITIAL.
ls_bdc-fval = ' '.
ELSE.
ls_bdc-fval = 'X'.
ENDIF.
APPEND ls_bdc TO lt_bdc.
ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_SAVE'.
APPEND ls_bdc TO lt_bdc.
"-------------------------------------------
ls_bdcp-dynpro = '1000'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.
ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_BACK'.
APPEND ls_bdc TO lt_bdc.
"-------------------------------------------
ls_bdcp-dynpro = '0100'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.
ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_BACK'.
APPEND ls_bdc TO lt_bdc.
ls_opt-dismode = 'E'.
ls_opt-racommit = 'X'.
ls_opt-nobinpt = 'X'.
ls_opt-nobiend = 'X'.
"-------------------------------------------
CALL TRANSACTION 'SE91' USING lt_bdc OPTIONS FROM ls_opt.
ELSE.
"update translation only
ls_t100-arbgb = i_msgid.
ls_t100-msgnr = i_msgno.
ls_t100-sprsl = i_langu.
ls_t100-text = i_text.
MODIFY t100 FROM ls_t100. "no activation needed
ENDIF.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_translation = 'X'.
gv_repository_changed = 'X'.
ENDMETHOD. "create_message
METHOD create_mess_docu.
ls_head-tdobject = 'DOKU'.
CONCATENATE i_msgid i_msgno INTO ls_head-tdname.
ls_head-tdid = 'NA'. "Nachricht/Message
ls_head-tdspras = i_langu.
ls_head-tdform = 'S_DOCU_SHOW'.
ls_head-tdstyle = 'S_DOCUS1'.
IF et_lines IS SUPPLIED.
et_lines[] = lt_line[] = lt_line_old[].
RETURN.
ENDIF.
IF lt_line_old[] EQ lt_line.
REFRESH lt_line.
"no update necessary
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
IF testrun IS INITIAL.
ls_head-tdfdate = sy-datum.
ls_head-tdftime = sy-uzeit.
ls_head-tdfuser = sy-uname.
ls_head-tdldate = sy-datum.
ls_head-tdltime = sy-uzeit.
ls_head-tdluser = sy-uname.
ENDMETHOD. "create_mess_docu
METHOD create_other_docu.
ls_head-tdobject = 'DOKU'.
ls_head-tdname = i_docname+2.
ls_head-tdid = i_docname(2).
ls_head-tdspras = i_langu.
ls_head-tdform = 'S_DOCU_SHOW'.
ls_head-tdstyle = 'S_DOCUS1'.
IF et_lines IS SUPPLIED.
et_lines[] = lt_line[] = lt_line_old[].
RETURN.
ENDIF.
IF lt_line_old[] EQ lt_line.
"no update necessary
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
REFRESH lt_line.
RETURN.
ENDIF.
IF testrun IS INITIAL.
ls_head-tdfdate = sy-datum.
ls_head-tdftime = sy-uzeit.
ls_head-tdfuser = sy-uname.
ls_head-tdldate = sy-datum.
ls_head-tdltime = sy-uzeit.
ls_head-tdluser = sy-uname.
ENDMETHOD. "create_other_docu
METHOD create_program_text.
l_text = i_text.
IF i_id EQ 'S' AND i_text(8) IS NOT INITIAL AND i_text NE 'D .'.
"if selection text does note begin with 8 space -> insert them
SHIFT l_text LEFT DELETING LEADING space.
SHIFT l_text RIGHT BY 8 PLACES.
ENDIF.
ENDMETHOD. "create_program_text
TRY.
CREATE DATA ls_hdr_old TYPE (c_hdr_table).
ASSIGN ls_hdr_old->* TO <ls_hdr_old>.
CREATE DATA lt_hdt_old TYPE TABLE OF (c_hdt_table).
ASSIGN lt_hdt_old->* TO <lt_hdt_old>.
CREATE DATA lt_tsk_old TYPE TABLE OF (c_tsk_table).
ASSIGN lt_tsk_old->* TO <lt_tsk_old>.
ASSIGN it_hdt TO <lt_hdt_new>.
ASSIGN it_tsk TO <lt_tsk_new>.
CATCH cx_sy_create_data_error.
MESSAGE e666(01) WITH 'Object not supported;' 'SAP note 1589145 required'
INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDTRY.
TRY.
CREATE DATA lt_att_old TYPE TABLE OF (c_att_table).
ASSIGN lt_att_old->* TO <lt_att_old>.
ASSIGN it_tsk TO <lt_att_new>.
SELECT * FROM (c_att_table) INTO TABLE <lt_att_old>[] WHERE scenario_id =
<l_scenario_id>.
CATCH cx_sy_create_data_error.
* supported with note 1810570
ENDTRY.
ENDMETHOD. "modify_stcs
METHOD log_message.
IF ls_msg-msgty CA 'EA'.
gv_errors_occured = 'X'.
ENDIF.
ENDMETHOD. "log_message
METHOD display_log.
IF gv_log_handle IS INITIAL.
lr_filter-sign = 'I'.
lr_filter-option = 'EQ'.
lr_filter-low = c_bal_subobj.
APPEND lr_filter TO ls_filter-subobject.
IF 1 = 1.
"grid
CALL FUNCTION 'BAL_DSP_PROFILE_SINGLE_LOG_GET'
IMPORTING
e_s_display_profile = ls_profile
EXCEPTIONS
OTHERS = 0.
"Set profile
ls_profile-show_all = abap_on.
ls_profile-use_grid = abap_on.
ls_profile-tree_ontop = abap_on.
ls_profile-exp_level = 1.
ls_profile-mess_mark = abap_on.
ELSE.
"tree
CALL FUNCTION 'BAL_DSP_PROFILE_DETLEVEL_GET'
IMPORTING
e_s_display_profile = ls_profile
EXCEPTIONS
OTHERS = 0.
ENDIF.
ls_profile-clbk_ucbf-userexitp = sy-repid.
ls_profile-clbk_ucbf-userexitf = 'BAL_CALLBACK_UCOMM'.
* ls_profile-clbk_ucom-userexitp = sy-repid.
* ls_profile-clbk_ucom-userexitf = 'BAL_CALLBACK_UCOMM'.
* ls_profile-ext_push1-active = 'X'.
* ls_profile-ext_push1-def-text = 'DDIC'.
* ls_profile-ext_push1-def-icon_id = icon_history.
* ls_profile-ext_push1-def-icon_text = 'DDIC'.
* ls_profile-ext_push1-def-quickinfo = 'DDIC Activation log'.
ENDMETHOD. "display_log
METHOD set_context.
ls_key-i_object = i_object.
ls_key-i_obj_name = i_obj_name.
ls_key-i_obj_name2 = i_obj_name2.
ls_key-i_text = i_text.
ls_key-i_langu = i_langu.
IF ls_key EQ lss_key. "check last key
"avoid double message like "add field to table"
RETURN.
ELSE.
lss_key = ls_key.
ENDIF.
ls_context-object = i_object.
CONCATENATE i_obj_name i_obj_name2 INTO ls_context-obj_name.
ls_msg_defaults-log_handle = gv_log_handle.
ls_msg_defaults-context-value = ls_context.
ls_msg_defaults-context-tabname = c_bal_context.
IF ls_tadir IS INITIAL.
l_mode = 'Create'. "#EC NOTEXT
ELSE.
l_mode = 'Change'. "#EC NOTEXT
"check if object has been manually modified by customer.
SELECT COUNT( * ) FROM adiraccess WHERE pgmid EQ ls_tadir-pgmid
AND object EQ ls_tadir-object
AND obj_name EQ ls_tadir-obj_name.
IF sy-dbcnt NE 0.
MESSAGE w666(01) WITH ls_tadir-object ls_tadir-obj_name 'was manually
changed before.' 'Please adjust manually afterwards' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
ENDIF.
IF i_text IS INITIAL.
CALL METHOD get_object_text
EXPORTING
i_object = i_object
i_obj_name = i_obj_name
RECEIVING
r_text = l_text.
ENDMETHOD. "set_context
ENDCLASS. "lcl_wb IMPLEMENTATION
INITIALIZATION.
"Determine proposal for tranportation layer based on existing package
"SELECT SINGLE pdevclass FROM tdevc INTO trnlayer WHERE devclass EQ '....'.
DATA gv_systemtype TYPE sy-sysid.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'transport/systemtype'
ID 'VALUE' FIELD gv_systemtype.
START-OF-SELECTION.
PERFORM action.
*&---------------------------------------------------------------------*
FORM action.
DATA lv_subrc TYPE sysubrc.
lv_subrc = sy-subrc.
i_id = 'S'
i_key = 'P_JOB_TS'
i_length = '50 '
i_text = 'Job Mode based on Table Entry',
i_id = 'S'
i_key = 'P_PREP'
i_length = '50 '
i_text = ' Prepare Task Run'.
ENDIF.
ENDFORM. "action