Z MSG Note 1723881 731 740
Z MSG Note 1723881 731 740
Z MSG Note 1723881 731 740
'AOBJ''CHDO''IWPR''IWMO''IWSV''SUCD''SUSC''SUSK''DIOB''DTRF''DROU''DTRC''BSVO''BSVI
''BSVV''SCP2''TOBJ''PCLA''...''DTMT''DTMU''DTMR''DTMS''PSCS''PMKS''PFCS''POCS''PCYS
''...''LODS''LODE''LOIE''LODC'.
"check method pilot_user
TYPE-POOLS: seox, seoc, seok, seex, bcwbn, ststc, trmtd, trexe, scua, trlog.
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
* t_sfw_switch TYPE sfw_switch,
* BEGIN OF t_sfw_switch, switch_id TYPE t_switch_id, version, author TYPE
as4user, createdon TYPE as4date, changedby TYPE as4user, changedon TYPE as4date,
* x_combi, x_ddic, timestamp TYPE timestamp, switch_nr
TYPE int2, END OF t_sfw_switch, "SFW_SWITCH
BEGIN OF t_bf_sw, switch_id TYPE t_switch_id, version, bfunction TYPE
t_bfunction, no_check, END OF t_bf_sw, "SFW_BF_SW
BEGIN OF t_sfw_package, switch_id TYPE t_switch_id, version, devclass TYPE
devclass, enhname(30), END OF t_sfw_package, "SFW_PACKAGE
BEGIN OF t_sfw_viewfield, viewname(30), fieldname(30), version,
switch_id(30), END OF t_sfw_viewfield,
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 t_ddldependency, ddlname(40), objectname(30), state, objecttype(4),
END OF t_ddldependency,
BEGIN OF t_hrdsys_docu, line_content(5), tdformat TYPE tdformat, tdline TYPE
tdline, END OF t_hrdsys_docu, "HRDSYS_DOCU_ITAB
t_molga TYPE char2, "MOLGA
t_otype TYPE char5, "HRDSYS_OTYPE
t_oname TYPE char20, "HRDSYS_ONAME
BEGIN OF
dd43v,typename(30),seckeyname(30),ddlanguage,seckeyunique,accessmode,kind,keydescri
ption(80),END OF dd43v,
BEGIN OF dd12fulltextinfo, full_text, langu_column(30), mime_type_col(30),
mime_type(127),langu_detection(200),fast_preprocess,fuzzy_search_indx,search_only,
update_mode(10),configuration,phrase_indx_ratio TYPE
numc3,text_analysis,token_separators(50),END OF dd12fulltextinfo.
INITIALIZATION.
if sy-repid ne myrepid.
select single devclass from tadir into mydevclass where pgmid eq 'R3TR' and
object eq 'PROG' and obj_name eq sy-repid.
endif.
TRANSLATE c_ddic_ref USING '_ '.
AT SELECTION-SCREEN OUTPUT.
IF sy-dynnr EQ selection_screen_1900.
CONCATENATE sy-repid '-' 'Note Implementation' INTO sy-lisel SEPARATED BY
space. "#EC * "1900
SET TITLEBAR 'POP' OF PROGRAM 'SAPLKKBL' WITH sy-lisel.
"1900
ENDIF.
*&---------------------------------------------------------------------*
*& Form bal_callback_ucomm
*&---------------------------------------------------------------------*
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 NOT ls_tadir-object IS 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.
*&---------------------------------------------------------------------*
*& Form prepare_table
*&---------------------------------------------------------------------*
FORM prepare_table USING i_tabname TYPE tabname
i_key_fields TYPE string
it_entries TYPE STANDARD TABLE
CHANGING e_no_update.
ENDFORM. "prepare_table
*----------------------------------------------------------------------*
* CLASS lcl_wb DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_wb DEFINITION.
PUBLIC SECTION.
CLASS-METHODS init
IMPORTING
value(i_note) TYPE c 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
RETURNING
value(r_return_code) TYPE sysubrc.
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_message
IMPORTING
i_msgid TYPE msgid
i_msgno TYPE msgno
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_text TYPE natxt
i_auth_check TYPE t100x-auth_check OPTIONAL
it_activity TYPE tt_activity OPTIONAL
i_selfdef TYPE doku_selfd DEFAULT 'X'.
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 "e.g. TABD
i_obj_name TYPE c "flexible number of characters
i_edtflag TYPE edtflag OPTIONAL "X = not editable via standard tools
i_devclass TYPE devclass OPTIONAL
i_langu TYPE sylangu OPTIONAL
EXPORTING
e_masterlang TYPE tadir-masterlang
EXCEPTIONS
error
simulation
language_not_installed.
CLASS-METHODS log_message.
CLASS-METHODS display_log
IMPORTING
i_db_search TYPE xfeld OPTIONAL "search logs on db
i_no_save TYPE xfeld OPTIONAL.
CLASS-METHODS save_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_no_message TYPE c OPTIONAL
i_langu TYPE sylangu.
CLASS-METHODS activate
IMPORTING i_result_auth_check TYPE sysubrc OPTIONAL.
PRIVATE SECTION.
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.
CLASS-METHODS language_installed
IMPORTING
i_langu TYPE sylangu
RETURNING value(r_installed) TYPE xfeld.
*----------------------------------------------------------------------*
* CLASS lcl_dcm_to_po_bridge IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_wb IMPLEMENTATION.
METHOD init.
SET LOCALE LANGUAGE 'E'. "most text/message are only in EN hence avoid
mixture
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.
ENDMETHOD. "get_object_text
METHOD activate.
DATA: lt_dwinactiv TYPE TABLE OF dwinactiv,
lt_dwinactiv_ddic TYPE TABLE OF dwinactiv,
lv_answer,
l_logname TYPE ddprh-protname,
ls_job TYPE tbtcjob,
lv_rc TYPE sysubrc,
l_dref TYPE REF TO data,
l_message TYPE sy-lisel,
ls_tabname LIKE LINE OF gr_tabname.
IF testrun IS INITIAL.
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' OR 'XINX'. 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.
CALL METHOD lcl_wb=>save_log. "save log makes sense here in case that
activation dumps (e.g. time out)
IF sy-subrc EQ 0.
MESSAGE s666(01) WITH 'DDIC activation successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD set_context
EXPORTING
i_langu = space
i_object = space
i_obj_name = 'Detailed Log'. "#EC *
ENDMETHOD. "activate
METHOD mass_activation.
IF i_step EQ 2.
"remove exclusions for step 2
DELETE gr_tabname WHERE sign EQ 'E'.
DELETE gr_viewname WHERE sign EQ 'E'.
ENDIF.
AND RETURN.
ENDMETHOD. "mass_activation
METHOD language_installed.
DATA: l_languages TYPE string.
CLEAR r_installed.
ENDMETHOD. "language_installed
METHOD execute_method.
IF sy-subrc NE 0.
CALL METHOD log_message.
ENDIF.
DELETE lt_trlog WHERE class EQ 'PU' AND number EQ '131'. "No objects requiring
post-import methods exist
"append messages from method execution log
LOOP AT lt_trlog INTO ls_trlog.
CONCATENATE '(' ls_trlog-class '~' ls_trlog-number ')' INTO sy-msgv4.
TRANSLATE sy-msgv4 USING '~ '.
MESSAGE i666(01) WITH ls_trlog-line(50) ls_trlog-line+50(50) ls_trlog-
line+100(31) sy-msgv4 INTO sy-lisel. "#EC *
sy-msgty = ls_trlog-severity.
CALL METHOD log_message.
ENDLOOP.
ENDMETHOD. "execute_method
METHOD add_to_transport.
CLEAR sy-subrc.
CHECK gv_copy_translation IS INITIAL.
IF i_object NE s_object OR
i_obj_name NE s_obj_name OR
testrun NE s_testrun.
s_object = i_object.
s_obj_name = i_obj_name.
s_testrun = testrun.
CLEAR s_msgty.
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 NOT l_bcset_clients IS 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.
s_msgty = 'E'.
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.
IF i_object EQ 'DOCU'.
l_extend = 'X'. "no SMODILOG for DOCU
ENDIF.
WHEN 'DOCV' OR 'DOCT' OR 'DSYS' OR 'STCS' OR 'MSAG' OR 'SOTR'
OR 'IWPR' OR 'IWMO' OR 'IWSV' OR 'IWOM' OR 'IWSG' OR 'SICF' "SEGW
OR 'SFRN' OR 'CUS0' OR 'CUS1' OR 'CUS2'. "IMG
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' OR 'TRAN' OR 'SUSO' OR
'PROG'.
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 'TABT' OR 'VIEW' OR 'INDX' OR 'XINX' 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.
SELECT SINGLE objectname FROM objh INTO sy-lisel
WHERE objectname EQ i_object
AND objecttype EQ 'L'.
IF sy-subrc EQ 0. "is a logical object
l_global_lock = 'X'.
l_extend = 'X'.
l_tadir_name = i_obj_name.
ENDIF.
ENDCASE.
IF testrun IS INITIAL.
e_masterlang = s_masterlang.
CASE s_msgty.
WHEN 'E'.
MESSAGE e666(01) WITH 'Could not add to transport request' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
RAISE error.
WHEN 'W'.
RAISE simulation.
ENDCASE.
ENDMETHOD. "add_to_transport
METHOD create_message.
ls_msg_class-low = i_msgid.
COLLECT ls_msg_class INTO gr_msg_class.
IF gv_abap_in_eclipse EQ 'X'.
MESSAGE e666(01) WITH 'Creation/Copy not possible in Eclipse.' 'Please use
SAPGUI.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"-------------------------------------------
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 FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = 'SE91'
EXCEPTIONS
ok = 0
not_ok = 2
OTHERS = 3.
IF sy-subrc NE 0.
CALL METHOD log_message.
ELSE.
CALL TRANSACTION 'SE91' USING lt_bdc OPTIONS FROM ls_opt. "#EC CI_CALLTA
ENDIF.
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.
IF i_auth_check EQ ls_t100x-auth_check OR i_auth_check IS NOT SUPPLIED.
ELSEIF i_auth_check IS INITIAL.
DELETE FROM t100x WHERE arbgb EQ i_msgid AND msgnr EQ i_msgno.
ELSE.
ls_t100x-arbgb = i_msgid.
ls_t100x-msgnr = i_msgno.
ls_t100x-auth_check = i_auth_check.
INSERT t100x FROM ls_t100x.
ENDIF.
IF it_activity NE lt_activity AND it_activity IS SUPPLIED.
DELETE FROM t100o WHERE arbgb EQ i_msgid AND msgnr EQ i_msgno.
LOOP AT it_activity INTO ls_t100o-activity.
ls_t100o-arbgb = i_msgid.
ls_t100o-msgnr = i_msgno.
INSERT t100o FROM ls_t100o.
ENDLOOP.
ENDIF.
ENDMETHOD. "create_message
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.
CHECK NOT i_db_search 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 = 'X'.
ls_profile-use_grid = 'X'.
ls_profile-tree_ontop = 'X'.
ls_profile-exp_level = 1.
ls_profile-mess_mark = 'X'.
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'.
CLEAR gv_log_handle.
ENDMETHOD. "display_log
METHOD save_log.
DATA: lt_log_handle TYPE bal_t_logh.
ENDMETHOD. "save_log
METHOD set_context.
"trace current object to be able to know what was processed in case a dump
occurs
CONCATENATE space i_object i_obj_name INTO l_text SEPARATED BY '|'. "fromsys
not possible
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 SEPARATED BY space.
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
*&---------------------------------------------------------------------*
*& Form main
*&---------------------------------------------------------------------*
FORM main.
IF showlogs IS INITIAL.
CLEAR gv_trkorr. "Transport popup shall come once
IF lcl_wb=>init( i_note = '' ) IS INITIAL. "<note which indicates that report
is not needed anymore>
IF NOT update IS INITIAL OR NOT testrun IS INITIAL.
PERFORM update.
CALL METHOD lcl_wb=>activate.
ENDIF.
IF NOT genview IS INITIAL OR NOT testrun IS INITIAL.
PERFORM genview.
ENDIF.
ENDIF.
ENDIF.
CALL METHOD lcl_wb=>display_log "one or all logs
EXPORTING
i_db_search = showlogs.
ENDDO. "1900
ENDFORM. "main
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
FORM update_23. " MESS S#315
DATA lt_activity TYPE tt_activity.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
ENDFORM.
FORM genview.
ENDFORM.
FORM update.
ENDFORM.
START-OF-SELECTION.
PERFORM main.