Sei sulla pagina 1di 66

REPORT Z_MSG_NOTE_1723881_731_740.

* Generated by SAP_LOCAL_DOWNPORT_ASSISTANT Version 4.98 on 17.07.2015 with option


ALL

* The individual coding starts at 'FORM update_01.' ( line 2.432 )


* Review FORM update & FORM genview to see a complete list of changed objects

CONSTANTS: activation_mode VALUE '2', "1 = one step, 2 = two step


myrepid TYPE progname VALUE 'SAP_LOCAL_DOWNPORT_ASSISTANT',
step3_object TYPE sy-lisel VALUE 'Will be processed in step 3
(GENVIEW)', "#EC NOTEXT
sapbasis TYPE sy-saprl VALUE '731 ', "SAP_BASIS release for which the
report was generated; in lower releases it might get problems
approved_logical_objects TYPE string VALUE

'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.

TYPES: BEGIN OF t_pak_projects, mandt TYPE mandt, project_guid TYPE sysuuid_x,


project_id(24), short_text_en(40), short_text_de(40), inactive, fetch_date TYPE d,
END OF t_pak_projects.

TYPES: tt_dd05m TYPE TABLE OF dd05m,


tt_dd17v TYPE TABLE OF dd17v,
tt_dd26e TYPE TABLE OF dd26e,
tt_dd26v TYPE TABLE OF dd26v,
tt_dd27p TYPE TABLE OF dd27p,
tt_dd27v TYPE TABLE OF dd27v,
tt_dd28v TYPE TABLE OF dd28v,
tt_dd30v TYPE TABLE OF dd30v,
tt_dd30tv TYPE TABLE OF dd30tv,
tt_dd31v TYPE TABLE OF dd31v,
tt_dd32v TYPE TABLE OF dd32v,
tt_dd32p TYPE TABLE OF dd32p,
tt_dd33v TYPE TABLE OF dd33v,
tt_dd36m TYPE TABLE OF dd36m,
tt_dd42v TYPE TABLE OF dd42v,
tt_dd43v TYPE TABLE OF dd43v,
tt_e071k TYPE TABLE OF e071k,
tt_permission TYPE TABLE OF t_permission,
tt_hrdsys_docu TYPE TABLE OF t_hrdsys_docu,
tt_bfunction TYPE TABLE OF t_bfunction,
tt_activity TYPE TABLE OF t100o-activity,
tt_tline TYPE TABLE OF tline,
tt_tstca TYPE TABLE OF tstca,
tt_langu TYPE TABLE OF sylangu,
tt_sta TYPE TABLE OF rsmpe_stat,
tt_fun TYPE TABLE OF rsmpe_funt,
tt_men TYPE TABLE OF rsmpe_men,
tt_mtx TYPE TABLE OF rsmpe_mnlt,
tt_act TYPE TABLE OF rsmpe_act,
tt_but TYPE TABLE OF rsmpe_but,
tt_pfk TYPE TABLE OF rsmpe_pfk,
tt_set TYPE TABLE OF rsmpe_staf,
tt_doc TYPE TABLE OF rsmpe_atrt,
tt_tit TYPE TABLE OF rsmpe_titt,
tt_biv TYPE TABLE OF rsmpe_buts,
tt_dypara TYPE TABLE OF rpy_dypara,
tt_d022s TYPE TABLE OF d022s.

DATA: gr_devclass TYPE RANGE OF devclass,


gr_domname TYPE RANGE OF domname,
gr_rollname TYPE RANGE OF rollname,
gr_tabname TYPE RANGE OF tabname, "structures and database tables
gs_tabname LIKE LINE OF gr_tabname VALUE 'IEQ',
gr_dbtabname TYPE RANGE OF tabname, "all database tables
gr_dbviewname TYPE RANGE OF viewname, "all database views
gt_tabname TYPE TABLE OF tabname,
gr_fugrname TYPE RANGE OF rs38l_area,
gr_indexes TYPE RANGE OF trobj_name,
gr_indxtab TYPE RANGE OF tabname,
gr_indxname TYPE RANGE OF indexid,
gr_shlpname TYPE RANGE OF shlpname,
gr_enqname TYPE RANGE OF enqname,
gr_viewname TYPE RANGE OF viewname,
gr_ttypname TYPE RANGE OF ttypename,
gt_ttypname TYPE TABLE OF ttypename,
gr_guistatus TYPE RANGE OF progname,
gr_switchname TYPE RANGE OF t_switch_id,
gr_msg_class TYPE RANGE OF msgid,
gv_trkorr TYPE trkorr,
gt_trkey TYPE TABLE OF trkey,
gv_unit_test,
gv_translation,
gv_copy_translation,
gv_abap_in_eclipse,
gv_master_languages TYPE string, "texts in those languages are always
inserted, other languages only if they are installed
gt_skipped_languages TYPE TABLE OF sylangu,
gv_repository_changed,
gv_errors_occured,
gv_string TYPE string,
gv_uname TYPE syuname,
gv_log_handle TYPE balloghndl,
mydevclass TYPE devclass.

CONSTANTS: c_bal_object TYPE balobj_d VALUE 'SNOTE',


c_bal_subobj TYPE balsubobj VALUE space,
c_bal_context TYPE tabname VALUE 'ADIR_KEY',
c_include6 TYPE fieldname VALUE '.INCLU', ".INCLUDE or .INCLU--AP or
.INCLU-_BY
c_type_ref_to TYPE datatype_d VALUE 'REF',
c_memory_id(40) VALUE myrepid,
c_traceid TYPE memoryid VALUE '%/UDO/LAST_OBJECT',
c_logical_object VALUE 'L',
c_internal TYPE tadir-object VALUE 'ITAB'.

CONSTANTS: gc_report TYPE text15 VALUE 'Report', "#EC NOTEXT


gc_local LIKE gc_report VALUE 'Local', "#EC NOTEXT
gc_snote LIKE gc_report VALUE 'SNote', "#EC NOTEXT
gc_workaround LIKE gc_report VALUE 'Workaround', "#EC NOTEXT
gc_manual LIKE gc_report VALUE 'Manual Instr. ', "#EC NOTEXT
gc_bcset LIKE gc_report VALUE 'Manual/BC-Set', "#EC NOTEXT
gc_ignore LIKE gc_report VALUE '-', "#EC NOTEXT
gc_generate LIKE gc_report VALUE 'Generation', "#EC NOTEXT
gc_suppack LIKE gc_report VALUE 'Supp.Pack.', "#EC NOTEXT
gc_dest_init TYPE rfcdest VALUE 'MISSING INITIALIZATION'. "#EC NOTEXT

DATA: akb_get_tadir TYPE funcname VALUE 'AKB_GET_TADIR',


sadt_navigation TYPE memoryid VALUE 'SADT_NAVIGATION'.

CONSTANTS selection_screen_1900 TYPE sydynnr VALUE 1900. "dummy for navigation


SELECTION-SCREEN BEGIN OF SCREEN 1900. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(83) info0. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(83) info1. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(83) info2. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(83) info3. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(83) info4. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN SKIP 1. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(6) testrun1 FOR FIELD testrun. "1900
PARAMETERS testrun RADIOBUTTON GROUP exec. "1900
SELECTION-SCREEN COMMENT 12(83) testrun2 FOR FIELD testrun. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(6) update1 FOR FIELD update. "1900
PARAMETERS update RADIOBUTTON GROUP exec. "1900
SELECTION-SCREEN COMMENT 12(83) update2 FOR FIELD update. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 12(83) update3 FOR FIELD update. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
DATA: genview, genview1, genview2.
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN SKIP 1. "1900
SELECTION-SCREEN BEGIN OF LINE. "1900
SELECTION-SCREEN COMMENT 1(6) showlog1 FOR FIELD showlogs. "1900
PARAMETERS showlogs RADIOBUTTON GROUP exec. "1900
SELECTION-SCREEN COMMENT 12(83) showlog2 FOR FIELD showlogs. "1900
SELECTION-SCREEN END OF LINE. "1900
SELECTION-SCREEN END OF SCREEN 1900. "1900

DATA: c_ddic_ref TYPE textpool-entry VALUE 'D_______.'.

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 '_ '.

"Initialize texts for selection screen 1900 "#EC


NOTEXT "1900
info0 = 'Instructions:'. "#EC NOTEXT "1900
info1 = '- Execute the given steps one after the other.'. "#EC NOTEXT "1900
info2 = '- If an error occurs repeat the same step again until the error is
solved.'. "#EC NOTEXT "1900
info3 = '- It does not harm if a step is executed several times.'. "#EC NOTEXT
"1900
info4 = '- Nearlly all popups can be closed by pressing ENTER.'. "#EC NOTEXT
"1900

testrun1 = 'Step 1'. "#EC NOTEXT "1900


testrun2 = 'TESTRUN: Check prerequisites and show the list of objects without
updating them.'. "#EC NOTEXT "1900
update1 = 'Step 2'. "#EC NOTEXT "1900
update2 = 'UPDATE & ACTIVATE: Update the objects if needed and perform
activation.'. "#EC NOTEXT "1900
update3 = 'Hint: For activation chose ''online'' mode unless this fails with
time out.'. "#EC NOTEXT "1900
showlog1 = 'Info'. "#EC NOTEXT "1900
showlog2 = 'SHOWLOGS: Display logs of previous runs.'. "#EC NOTEXT
"1900

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.

DATA: lt_key_fields TYPE TABLE OF fieldname,


l_key_field TYPE fieldname,
l_where TYPE ddf4sqlstm,
lt_where TYPE TABLE OF ddf4sqlstm,
l_value LIKE l_where,
dref TYPE REF TO data.

FIELD-SYMBOLS: <lt_entries> TYPE STANDARD TABLE,


<ls_entry> TYPE any,
<l_field> TYPE any.

IF it_entries[] IS INITIAL. "entire deletion not supported


e_no_update = 'X'.
RETURN.
ENDIF.

READ TABLE it_entries[] INDEX 1 ASSIGNING <ls_entry>.

SPLIT i_key_fields AT space INTO TABLE lt_key_fields.


LOOP AT lt_key_fields INTO l_key_field.
ASSIGN COMPONENT l_key_field OF STRUCTURE <ls_entry> TO <l_field>.
IF <l_field> IS INITIAL.
MESSAGE a666(01) WITH 'Key field is initial:' i_tabname l_key_field. "#EC *
ENDIF.
l_value = <l_field>. CONDENSE l_value NO-GAPS. "convert to left-aligned
character
CONCATENATE l_where l_key_field '~EQ ''' l_value '''' INTO l_where. TRANSLATE
l_where USING '~ '.
APPEND l_where TO lt_where.
l_where = 'AND~'. "next line starts with AND
ENDLOOP.

CREATE DATA dref LIKE it_entries.


ASSIGN dref->* TO <lt_entries>.

SELECT * FROM (i_tabname) INTO TABLE <lt_entries> WHERE (lt_where) ORDER BY


PRIMARY KEY. "#EC CI_DYNTAB
IF it_entries[] EQ <lt_entries>[].
"MESSAGE s666(01) WITH 'No update neccessary' INTO sy-lisel. "#EC *
"CALL METHOD lcl_wb=>log_message.
e_no_update = 'X'.
RETURN.
ELSEIF NOT <lt_entries>[] IS INITIAL AND testrun IS INITIAL.
"remove all current entries before inserting the new ones
DELETE (i_tabname) FROM TABLE <lt_entries>. "#EC CI_DYNTAB. "#EC CI_DYNWHERE
ENDIF.

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.

ENDCLASS. "lcl_wb DEFINITION

*----------------------------------------------------------------------*
* CLASS lcl_dcm_to_po_bridge IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_wb IMPLEMENTATION.

METHOD init.

DATA: ls_balobj TYPE balobj.

CLEAR: gv_errors_occured, r_return_code.

SET LOCALE LANGUAGE 'E'. "most text/message are only in EN hence avoid
mixture

"copied from CL_ADT_GUI_EVENT_DISPATCHER=>IS_ADT_ENVIRONMENT( ).


GET PARAMETER ID sadt_navigation FIELD gv_abap_in_eclipse.

DATA: l_system_type TYPE df41s-parent_obj.


CALL FUNCTION 'RPY_CHECK_SYSTEM_TYPE_30'
IMPORTING
system_type = l_system_type.

IF sy-repid EQ myrepid OR l_system_type EQ 'SAP'.


CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = 'SCWB'
EXCEPTIONS
ok = 0
OTHERS = 1.
ELSE.
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = 'SNOTE'
EXCEPTIONS
ok = 0
OTHERS = 1.
ENDIF.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
gv_errors_occured = 'X'.
r_return_code = 1. RETURN.
ENDIF.

IF NOT showlogs IS INITIAL.


r_return_code = 2. RETURN.
ENDIF.

DATA: ls_log TYPE bal_s_log.


"prepare application log
ls_log-object = c_bal_object.
ls_log-subobject = c_bal_subobj.
ls_log-extnumber = sy-cprog.
ls_log-aldate = sy-datum.
ls_log-altime = sy-uzeit.
ls_log-aluser = sy-uname.
ls_log-alprog = sy-repid.
ls_log-altcode = sy-tcode.

SELECT SINGLE * FROM balobj INTO ls_balobj WHERE object EQ c_bal_object.


IF sy-subrc NE 0.
"create if missing
ls_balobj-object = c_bal_object.
INSERT balobj FROM ls_balobj.
ENDIF.

"create standard application log handle


IF gv_log_handle IS INITIAL. "will be refreshed in display_log
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = ls_log
IMPORTING
e_log_handle = gv_log_handle
EXCEPTIONS
log_header_inconsistent = 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.
ENDIF.
EXPORT gv_log_handle FROM gv_log_handle TO MEMORY ID c_memory_id.

CALL METHOD set_context


EXPORTING
i_langu = space
i_object = space
i_obj_name = space.
"Main check: Last changed by SAP -> Report came via SP / Upgrade
"==> no execution anymore.
IF sy-cprog NE myrepid.
SELECT SINGLE prog FROM d010sinf INTO sy-lisel
WHERE ( prog EQ sy-repid )
AND ( unam EQ 'SAP' OR "last changed by ...
unam EQ 'SAP*' OR
unam EQ space AND ( cnam EQ 'SAP' OR
cnam EQ 'SAP*' OR
cnam EQ space ) "created by ...
).
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.
r_return_code = 3. RETURN.
ENDIF.
ENDIF.

IF sy-cprog(1) EQ '!'. "Executing inactive version


MESSAGE w666(01) WITH 'Please activate this report' sy-repid 'first.' INTO
sy-lisel. "#EC *
CALL METHOD log_message.
r_return_code = 4. RETURN.
ENDIF.

IF sy-saprl < sapbasis.


MESSAGE w666(01) WITH 'This report was generated for SAP_BASIS' sapbasis 'but
current system has SAP_BASIS' sy-saprl INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.

IF NOT i_note IS INITIAL.


* that that note is not already implemented
* this must not be the note containing the generated report for DDIC but a
follow-up note with the coding using that new DDIC
DATA l_status TYPE c.
CALL FUNCTION 'SCWB_NOTE_IMPL_STATUS_SIMPLE'
EXPORTING
iv_numm = i_note
IMPORTING
ev_status = l_status
EXCEPTIONS
OTHERS = 1.
CASE l_status.
WHEN 'E'.
MESSAGE w666(01) WITH 'SAP Note' i_note 'completely implemented;' 'Report
execution not required anymore.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
r_return_code = 5. RETURN.
WHEN 'O'.
MESSAGE w666(01) WITH 'SAP Note' i_note 'is obsolete;' 'Report execution
not required anymore.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
r_return_code = 6. RETURN.
WHEN OTHERS. "okay
DATA: ls_note TYPE bcwbn_note.
DATA: l_valid TYPE bcwbn_bool.
ls_note-key-numm = i_note.
CALL FUNCTION 'SCWB_NOTE_READ'
EXPORTING
iv_read_corr_instructions = 'X'
CHANGING
cs_note = ls_note
EXCEPTIONS
note_not_found = 1
language_not_found = 2
unreadable_text_format = 3
corr_instruction_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE w666(01) WITH 'SAP Note' i_note 'cannot be read;' 'Cannot check
validity.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
l_valid = 'X'.
ENDIF.
*------
FIELD-SYMBOLS: <ls_corr> TYPE bcwbn_corr_instruction.
LOOP AT ls_note-corr_instructions ASSIGNING <ls_corr>.
IF NOT i_cinst IS INITIAL.
CHECK <ls_corr>-key-aleid = i_cinst.
ENDIF.
CALL FUNCTION 'SCWB_CINST_CHECK_VALID'
IMPORTING
ev_valid = l_valid
CHANGING
cs_corr_instruction = <ls_corr>
EXCEPTIONS
corr_inst_not_found = 1
inconsistent_delivery_data = 2
undefined = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT l_valid IS INITIAL.
EXIT.
ENDIF.
ENDLOOP.
IF l_valid IS INITIAL.
MESSAGE e666(01) WITH 'Manual changes cannot be applied;' 'Correction
instruction invalid' 'for current patch level' INTO sy-lisel. "#EC *
CALL METHOD log_message.
r_return_code = 7. RETURN.
ENDIF.
ENDCASE.
ENDIF.

IF NOT testrun IS INITIAL.


MESSAGE w666(01) WITH 'Running in Test Mode' INTO sy-lisel. "#EC *
CALL METHOD lcl_wb=>log_message.
ELSEIF NOT update IS INITIAL. "or UPDATE & GENVIEW
MESSAGE i666(01) WITH 'Running in Update Mode' INTO sy-lisel. "#EC *
CALL METHOD lcl_wb=>log_message.
ELSEIF NOT genview IS INITIAL. "only GENVIEW
MESSAGE i666(01) WITH 'Executing Step Generation' INTO sy-lisel. "#EC *
CALL METHOD lcl_wb=>log_message.
ENDIF.

"Switch on SNOTE & SCWB mode


CALL FUNCTION 'SCWG_TOOLFLAG_SET'.
TRY. CALL METHOD ('CL_CWB_RUNTIME')=>set_active. CATCH
cx_sy_dyn_call_illegal_class. ENDTRY. ">=SAPBASIS640

"Set goon for all regarding message TR015 if possible


DATA: BEGIN OF ls_tr015,
id TYPE symsgid VALUE 'TR',
ty TYPE symsgty,
no TYPE symsgno VALUE '015',
END OF ls_tr015.

PERFORM dummy IN PROGRAM saplstrd IF FOUND. "load function group STRD


FIELD-SYMBOLS: <gt_confirmed_messages> TYPE STANDARD TABLE.
ASSIGN ('(SAPLSTRD)GT_CONFIRMED_MESSAGES') TO <gt_confirmed_messages>.
IF sy-subrc EQ 0. "Note 1609940 applied in current system
READ TABLE <gt_confirmed_messages> TRANSPORTING NO FIELDS WITH KEY table_line
= ls_tr015.
IF sy-subrc NE 0.
APPEND ls_tr015 TO <gt_confirmed_messages>.
ENDIF.
ELSEIF l_system_type NE 'SAP'.
MESSAGE w666(01) WITH 'Implement note 1609940 if you want to avoid' 'messages
''Object can only be created' 'in SAP package (TR051)''' INTO sy-lisel. "#EC NOTEXT
CALL METHOD lcl_wb=>log_message.
ENDIF.

CALL METHOD add_to_transport "init static variables


EXPORTING
i_object = space
i_obj_name = space
EXCEPTIONS
OTHERS = 1.

ENDMETHOD. "init

METHOD get_object_text.

STATICS: lt_object_text TYPE TABLE OF ko100,


lt_doktypes TYPE TABLE OF dd07v.

DATA: ls_object_text TYPE ko100,


ls_doktype TYPE dd07v.

IF lt_object_text IS INITIAL.
CALL FUNCTION 'TR_OBJECT_TABLE'
TABLES
wt_object_text = lt_object_text.
SORT lt_object_text BY object.

CALL FUNCTION 'DDIF_DOMA_GET'


EXPORTING
name = 'DOK_ID'
langu = sy-langu
TABLES
dd07v_tab = lt_doktypes
EXCEPTIONS
OTHERS = 0.
SORT lt_doktypes BY domvalue_l.
ENDIF.

IF i_object EQ 'DOCU' AND i_obj_name CP 'FU*'.


SPLIT i_obj_name AT space INTO sy-lisel sy-lisel. "check if name containes
two words.
IF sy-lisel IS INITIAL.
r_text = 'Documentation Function Module'. "#EC NOTEXT
ELSE.
r_text = 'Documentation Function Module Parameter'. "#EC NOTEXT
ENDIF.
ELSEIF 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 EQ 'FUNH'.
r_text = 'Function Module Release Status'. "#EC NOTEXT
ELSEIF i_object EQ 'PROC'.
r_text = 'HDB Stored Procedure'. "#EC NOTEXT
ELSEIF i_object EQ 'ALVV'.
r_text = 'ALV Standard Variant'. "#EC NOTEXT
ELSEIF NOT i_object IS 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 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.

DATA: lr_object TYPE RANGE OF dwinactiv-object,


lr_objname TYPE RANGE OF dwinactiv-obj_name.

DATA: lt_ascii TYPE TABLE OF soli,


lt_list TYPE TABLE OF abaplist,
lt_textpool TYPE TABLE OF textpool,
ls_textpool TYPE textpool.

FIELD-SYMBOLS: <ls_dwinactiv> LIKE LINE OF lt_dwinactiv.

CALL METHOD set_context


EXPORTING
i_langu = space
i_object = space
i_obj_name = 'Activation'. "#EC *

IF testrun IS INITIAL.

"pre-check: no activation during SPDD phase TRINT_CHECK_LINCENSE_EXCEPTION


DATA: lt_upginfo TYPE TABLE OF uvers,
ls_upginfo TYPE uvers.
CALL FUNCTION 'UPG_GET_UPGRADE_INFO'
TABLES
tt_upginfo = lt_upginfo
EXCEPTIONS
OTHERS = 5.

SORT lt_upginfo BY enddate DESCENDING.


READ TABLE lt_upginfo INTO ls_upginfo INDEX 1.
IF ( ls_upginfo-putstatus = 'S' OR ls_upginfo-putstatus = 'U' ).
* no activation at all during downtime of system (SPDD)
MESSAGE w666(01) WITH 'No activation during SPDD.' 'Inactive versions have
been updated.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.

DATA: l_objname TYPE trobj_name.


"activate switches "online" (one by one to avoid popup)
DATA: ls_switchname LIKE LINE OF gr_switchname.
LOOP AT gr_switchname INTO ls_switchname.
l_objname = ls_switchname-low.
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
object = 'SFSW'
obj_name = l_objname
dictionary_only = 'X' "must be set for switches
activate_only_this_object = 'X'
object_saved = 'X'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0.
MESSAGE s199(sfw) WITH l_objname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDLOOP.
"activate GUI status "online" (one by one to avoid popup)
DATA: ls_guistatus LIKE LINE OF gr_guistatus.
LOOP AT gr_guistatus INTO ls_guistatus.
l_objname = ls_guistatus-low.
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
object = 'CUAD'
obj_name = l_objname
activate_only_this_object = 'X'
object_saved = 'X'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0.
MESSAGE s137(ec) WITH l_objname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDLOOP.

APPEND LINES OF gr_guistatus TO lr_objname. "non DDIC


APPEND LINES OF gr_domname TO lr_objname. "DDIC
APPEND LINES OF gr_rollname TO lr_objname. "DDIC
APPEND LINES OF gr_tabname TO lr_objname. "DDIC
APPEND LINES OF gr_shlpname TO lr_objname. "DDIC
APPEND LINES OF gr_viewname TO lr_objname. "DDIC
APPEND LINES OF gr_enqname TO lr_objname. "DDIC
APPEND LINES OF gr_ttypname TO lr_objname. "DDIC
APPEND LINES OF gr_indexes TO lr_objname. "DDIC

DELETE lr_objname WHERE sign EQ 'E'. "remove exclusions


IF NOT lr_objname[] IS INITIAL.
SELECT * FROM dwinactiv INTO TABLE lt_dwinactiv
WHERE object IN lr_object "EC Dummy
AND obj_name IN lr_objname.
IF gr_tabname[] IS NOT INITIAL.
"add partly active structures/tables
SELECT tabname AS obj_name FROM dd02l APPENDING CORRESPONDING FIELDS OF
TABLE lt_dwinactiv
WHERE tabname IN gr_tabname AND actflag EQ 'U'. "e.g. partly
active
LOOP AT lt_dwinactiv ASSIGNING <ls_dwinactiv> WHERE object IS INITIAL.
<ls_dwinactiv>-object = 'TABL'.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.

"add all relevant inactive objects also to current user's worklist


"gets relevant if a different user is doing the activation.
"entries for all users will be deleted if any user activates the object
LOOP AT lt_dwinactiv ASSIGNING <ls_dwinactiv> WHERE uname NE sy-uname.
<ls_dwinactiv>-uname = sy-uname.
ENDLOOP.
INSERT dwinactiv FROM TABLE lt_dwinactiv ACCEPTING DUPLICATE KEYS.

LOOP AT lt_dwinactiv ASSIGNING <ls_dwinactiv>


WHERE object EQ 'DOMA' OR
object EQ 'DTEL' OR
object EQ 'TABL' OR
object EQ 'INDX' OR
object EQ 'XINX' OR
object EQ 'VIEW' OR
object EQ 'ENQU' OR
object EQ 'TTYP' OR
object EQ 'SHLP'.
DATA: l_obj_name TYPE e071-obj_name.
l_obj_name = <ls_dwinactiv>-obj_name.

CALL FUNCTION 'RS_DD_CHECK_ACTIVATE'


EXPORTING
objtype = <ls_dwinactiv>-object
objname = l_obj_name
* i_no_ui = 'X' "not in all sap_basis releases
EXCEPTIONS
object_not_found = 0 "ignore invalid entries in DWINACTIV
OTHERS = 1.
"check dependent database tables similar to DD_TABL_ACT
"==> shall be part of RS_DD_CHECK_ACTIVATE of DD_TABL_ACT
DATA: lt_dd02v_inc TYPE TABLE OF dd02v,
ls_dd02v_inc TYPE dd02v,
l_auth_subrc TYPE sysubrc.

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.

IF lt_dwinactiv[] IS INITIAL AND lt_dwinactiv_ddic[] IS INITIAL AND


gv_repository_changed IS INITIAL.
IF testrun IS INITIAL.
MESSAGE i666(01) WITH 'No activation neccessary' '' '' ''. "#EC *
CALL METHOD log_message.
ELSEIF sy-cprog EQ myrepid.
MESSAGE i666(01) WITH 'Press button Back (F3) to leave the simulation.' ''
'' '' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
IF gv_translation EQ 'X' OR gv_copy_translation EQ 'X'.
MESSAGE i666(01) WITH 'Translation has been updated' '' '' '' INTO sy-
lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ELSEIF NOT gv_errors_occured IS INITIAL.
MESSAGE w666(01) WITH 'Activation was skipped because of errors' 'in previous
steps. Please try again.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSEIF NOT i_result_auth_check IS INITIAL.
MESSAGE e666(01) WITH 'No authorization to activate the DDIC changes.' 'Call
transaction SU53 for details' '' '' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE. "do the activation

IF NOT lt_dwinactiv[] IS INITIAL.


"1) activate non DDIC objects (e.g. CUAD) online
MESSAGE s357(scwn).
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
dictionary_only = ' '
* cwb_mode = 'X'
* UI_DECOUPLED = 'X' "as of SAPBASIS740
TABLES
objects = lt_dwinactiv
EXCEPTIONS
OTHERS = 5.
IF sy-subrc NE 0.
lv_answer = 'A'.
CALL METHOD log_message.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.

LOOP AT lt_dwinactiv_ddic ASSIGNING <ls_dwinactiv> WHERE object EQ 'TABL' AND


obj_name EQ 'DOKIL'.
MESSAGE w666(01) WITH 'Please use SE11 to activate Database Table'
<ls_dwinactiv>-obj_name INTO sy-lisel. "#EC *
MESSAGE w666(01) WITH 'Please use SE11 to activate' 'Technical Settings of
Database Table' <ls_dwinactiv>-obj_name INTO sy-lisel. "#EC *
CALL METHOD log_message.
DELETE gr_tabname WHERE low EQ <ls_dwinactiv>-obj_name.
DELETE gr_dbtabname WHERE low EQ <ls_dwinactiv>-obj_name.
DELETE lt_dwinactiv_ddic.
ENDLOOP.

IF NOT lt_dwinactiv_ddic[] IS INITIAL AND lv_answer NE 'A'.


IF NOT gv_unit_test IS INITIAL OR NOT genview IS INITIAL.
lv_answer = '1'. "force online activation
ELSE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Activation' "#EC NOTEXT
text_question = 'How do you want to activate DDIC?' "#EC
NOTEXT
text_button_1 = 'Online' "#EC NOTEXT
text_button_2 = 'Batch' "#EC NOTEXT
display_cancel_button = 'X'
IMPORTING
answer = lv_answer
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
CALL METHOD log_message.
ENDIF.
ENDIF.
ENDIF.

IF sy-repid(2) EQ '%_'. "Temp. Subroutine Pool


l_logname = 'UDO'.
ELSEIF sy-repid(1) EQ '/'.
SPLIT sy-repid AT '/' INTO l_logname l_logname l_logname. "remove namespace
ELSE.
l_logname = sy-repid.
ENDIF.
CONCATENATE l_logname sy-datum sy-uzeit INTO l_logname SEPARATED BY '_'.

IF lv_answer EQ '1'. "online


"2a) activate DDIC online
IF sy-repid(2) EQ '%_'. "Temp. Subroutine Pool
l_logname = 'UDO'.
ELSEIF sy-repid(1) EQ '/'.
SPLIT sy-repid AT '/' INTO l_logname l_logname l_logname. "remove
namespace
ELSE.
l_logname = sy-repid.
ENDIF.

CALL METHOD lcl_wb=>save_log. "save log makes sense here in case that
activation dumps (e.g. time out)

CONCATENATE l_logname ':' sy-datum ':' sy-uzeit INTO l_logname.

DATA: lt_ddxtt_before TYPE TABLE OF ddxtt,


lt_ddxtt_after TYPE TABLE OF ddxtt,
ls_ddxtt TYPE ddxtt.
SELECT * FROM ddxtt INTO CORRESPONDING FIELDS OF TABLE lt_ddxtt_before.
"#EC CI_NOWHERE "usually empty, if not want need ALL entries

IF activation_mode EQ '2'. "two step activation


CALL METHOD mass_activation "Step 1, only for two step activation
EXPORTING
i_step = 1
i_logname = space "no log, any error messages will appear in step 2
also
i_ddmode = 'T'
i_inactive = 'X'
EXCEPTIONS
error = 1.
ELSE.
CLEAR sy-subrc.
ENDIF.
IF sy-subrc EQ 0.
CALL METHOD mass_activation "Step 2, always
EXPORTING
i_step = 2
i_logname = l_logname
i_ddmode = 'O'
i_inactive = ' '
EXCEPTIONS
error = 1.
ENDIF.

DATA: l_act_subrc TYPE sy-subrc.


l_act_subrc = sy-subrc.

SELECT * FROM ddxtt INTO CORRESPONDING FIELDS OF TABLE lt_ddxtt_after. "#EC


CI_NOWHERE
LOOP AT lt_ddxtt_after INTO ls_ddxtt.
READ TABLE lt_ddxtt_before WITH KEY tabname = ls_ddxtt-tabname
modeflag = ls_ddxtt-modeflag
TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
"new entry in ddxtt
MESSAGE w666(01) WITH 'Unexpected entry in DDXTT:' ls_ddxtt-tabname
ls_ddxtt-modeflag INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDLOOP.
CLEAR l_message.
IF l_act_subrc EQ 0.
LOOP AT gr_dbtabname INTO ls_tabname WHERE NOT low IS INITIAL.
"check DB object
SUBMIT rutdbchk WITH tabname EQ ls_tabname-low "#EC CI_SUBMIT
WITH showlist EQ 'X'
EXPORTING LIST TO MEMORY
AND RETURN.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = lt_list
EXCEPTIONS
OTHERS = 0.

CALL FUNCTION 'LIST_TO_ASCI'


TABLES
listasci = lt_ascii
listobject = lt_list
EXCEPTIONS
OTHERS = 0.

SET LOCALE LANGUAGE ' '.


READ TEXTPOOL 'RUTDBCHK' INTO lt_textpool LANGUAGE sy-langu.
SET LOCALE LANGUAGE 'E'.
IF lt_textpool IS INITIAL.
READ TEXTPOOL 'RUTDBCHK' INTO lt_textpool.
ENDIF.

"expected messages: text-021 and text-023


LOOP AT lt_textpool INTO ls_textpool WHERE key EQ '021' OR key EQ '023'
.
LOOP AT lt_ascii TRANSPORTING NO FIELDS WHERE table_line CS
ls_textpool-entry.
EXIT.
ENDLOOP.
IF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Database object of table' ls_tabname-low 'is
inconsistent!' INTO l_message. "#EC *
CALL METHOD log_message.
ENDIF.
ENDLOOP.
ENDLOOP.

LOOP AT gr_dbviewname INTO ls_tabname WHERE NOT low IS INITIAL.


"check DB object
SUBMIT rddviewc WITH viewname EQ ls_tabname-low "#EC CI_SUBMIT
EXPORTING LIST TO MEMORY
AND RETURN.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = lt_list
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'LIST_TO_ASCI'
TABLES
listasci = lt_ascii
listobject = lt_list
EXCEPTIONS
OTHERS = 0.
"expected message:
MESSAGE s410(mc) INTO sy-lisel. "sy-lisel.
LOOP AT lt_ascii TRANSPORTING NO FIELDS WHERE table_line CS sy-lisel.
EXIT.
ENDLOOP.
IF sy-subrc NE 0. "success message not found
MESSAGE e666(01) WITH 'Database object of view' ls_tabname-low 'is
inconsistent!' INTO l_message. "#EC *
CALL METHOD log_message.
ENDIF.
ENDLOOP.

APPEND LINES OF gr_ttypname TO gr_tabname.


APPEND LINES OF gr_rollname TO gr_tabname.

LOOP AT gr_tabname INTO ls_tabname WHERE NOT low IS INITIAL.


TRY.
">=SAPBASIS640
CREATE DATA l_dref TYPE (ls_tabname-low).
CATCH cx_sy_create_data_error.
">=SAPBASIS640
MESSAGE e666(01) WITH 'Data Type' ls_tabname-low 'is inconsistent'
INTO l_message. "#EC * ">=SAPBASIS640
CALL METHOD log_message. ">=SAPBASIS640
ENDTRY.
">=SAPBASIS640
ENDLOOP.
IF l_message IS INITIAL.
CLEAR sy-subrc.
ELSE.
MESSAGE e666(01) WITH 'DDIC activation step 3 ended with errors.' INTO
sy-lisel. "#EC *
CALL METHOD log_message.
sy-subrc = 4.
ENDIF.
ENDIF.

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 *

MESSAGE i626(do) WITH 'Click this message to view' 'detailed activation


logs with name' l_logname INTO sy-lisel. "#EC *
CALL METHOD log_message.
"RADMASG0 does not remove DWINACTIV for XINX hence we cleanup here
DATA: ls_dwinactiv TYPE dwinactiv.
LOOP AT lt_dwinactiv_ddic INTO ls_dwinactiv WHERE object EQ 'XINX'.
DELETE FROM dwinactiv WHERE object EQ 'XINX' AND obj_name EQ
ls_dwinactiv-obj_name.
ENDLOOP.
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.
CALL METHOD set_context
EXPORTING
i_langu = space
i_object = space
i_obj_name = 'Detailed Log'. "#EC *
MESSAGE w626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.

ELSEIF lv_answer EQ '2' .


"2b) activate DDIC objects via batch job
ls_job-jobname = sy-repid.

CALL FUNCTION 'JOB_OPEN'


EXPORTING
jobname = ls_job-jobname
IMPORTING
jobcount = ls_job-jobcount
CHANGING
ret = lv_rc
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0 OR lv_rc NE 0.
MESSAGE e026(bt) WITH ls_job-jobname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
IF activation_mode EQ '2'.
SUBMIT radmasg0 WITH domname IN gr_domname "#EC CI_SUBMIT
WITH rollname IN gr_rollname
WITH tabname IN gr_tabname
WITH indxtab IN gr_indxtab
WITH indxname IN gr_indxname
WITH viewname IN gr_viewname
WITH ttypname IN gr_ttypname
WITH shlpname IN gr_shlpname
WITH logname EQ l_logname
WITH logshow EQ 'X' "show log in SPOOL

WITH ddmode EQ 'T'


WITH inactive EQ 'X'

VIA JOB ls_job-jobname


NUMBER ls_job-jobcount
AND RETURN.
ENDIF.
"remove exclusions for next step
DELETE gr_tabname WHERE sign EQ 'E'.
DELETE gr_viewname WHERE sign EQ 'E'.

SUBMIT radmasg0 WITH domname IN gr_domname "#EC CI_SUBMIT


WITH rollname IN gr_rollname
WITH tabname IN gr_tabname
WITH indxtab IN gr_indxtab
WITH indxname IN gr_indxname
WITH viewname IN gr_viewname
WITH ttypname IN gr_ttypname
WITH shlpname IN gr_shlpname
WITH logname EQ l_logname
WITH logshow EQ 'X' "show log in SPOOL

WITH ddmode EQ 'O'


WITH inactive EQ ' '

VIA JOB ls_job-jobname


NUMBER ls_job-jobcount
AND RETURN.

CALL FUNCTION 'JOB_CLOSE'


EXPORTING
jobcount = ls_job-jobcount
jobname = ls_job-jobname
strtimmed = 'X'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0.
MESSAGE s305(ut) WITH ls_job-jobname 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 *
MESSAGE w666(01) WITH 'Use Report RADPROTB to view' 'activation log'
l_logname 'after job has finished in transaction SMX.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
MESSAGE e026(bt) WITH ls_job-jobname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

DATA: l_langu TYPE langu.


LOOP AT gt_skipped_languages[] INTO l_langu.
SELECT SINGLE sptxt FROM t002t INTO sy-lisel WHERE spras EQ 'E' AND sprsl EQ
l_langu.
CONCATENATE '(' sy-lisel ')' INTO sy-lisel.
MESSAGE i666(01) WITH 'Language' l_langu sy-lisel 'is not installed and has
been skipped.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDLOOP.

CALL METHOD set_context


EXPORTING
i_langu = space
i_object = space
i_obj_name = 'Method Execution'. "#EC *

CALL METHOD lcl_wb=>execute_method "e.g. OSOD, SCP2


EXPORTING
i_method = trmtd_after_imp.

"Refresh some fields


SET PARAMETER ID 'EUK' FIELD space.
EXPORT current_devclass FROM space TO MEMORY ID 'EUK'.

ENDMETHOD. "activate

METHOD mass_activation.

CONSTANTS: lc_active VALUE 'A'.

DATA: lt_log TYPE TABLE OF trlog,


ls_log TYPE trlog.

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.

SUBMIT radmasg0 WITH domname IN gr_domname "#EC CI_SUBMIT


WITH rollname IN gr_rollname
WITH tabname IN gr_tabname
WITH indxtab IN gr_indxtab
WITH indxname IN gr_indxname
WITH viewname IN gr_viewname
WITH enquname IN gr_enqname
WITH ttypname IN gr_ttypname
WITH shlpname IN gr_shlpname
WITH logname EQ i_logname
WITH logshow EQ space

WITH inactive EQ i_inactive


WITH ddmode EQ i_ddmode

AND RETURN.

IMPORT act_rc TO sy-subrc FROM MEMORY ID 'ACRC'.

CHECK NOT i_logname IS INITIAL.

IF sy-subrc > 4. "4 is only warning


CHECK i_step NE 1. "messages of step 1 have to be ignored
MESSAGE e666(01) WITH 'DDIC activation step' i_step 'ended with errors:' INTO
sy-lisel. "#EC *
CALL METHOD log_message.
CALL FUNCTION 'TR_READ_LOG'
EXPORTING
iv_log_type = 'DB'
iv_logname_db = i_logname
TABLES
et_lines = lt_log
EXCEPTIONS
invalid_input = 1
access_error = 2
OTHERS = 3.
"append errors from activation log (idea for future: show all messages from
entire phase 004 and 005)
LOOP AT lt_log INTO ls_log WHERE severity EQ 'E' OR newsection EQ 'X'.
IF ls_log-newsection EQ 'X'.
IF ls_log-severity EQ 'E'. "error as first line in new section
sy-lisel = 'Activation'. "#EC NOTEXT
ELSE.
MESSAGE i666(01) WITH ls_log-line(50) ls_log-line+50(50) ls_log-
line+100 INTO sy-lisel. "#EC *
ENDIF.
CALL METHOD set_context
EXPORTING
i_langu = space
i_object = space
i_obj_name = sy-lisel.
ENDIF.
IF ls_log-severity EQ 'E'.
* MESSAGE e099(ut) WITH ls_log-line(50) ls_log-line+50(50) ls_log-line+100
INTO sy-lisel. "#EC *
MESSAGE e666(01) WITH ls_log-line(50) ls_log-line+50(50) ls_log-line+100
INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDLOOP.
RAISE error.
ENDIF.

ENDMETHOD. "mass_activation

METHOD language_installed.
DATA: l_languages TYPE string.

CLEAR r_installed.

IF i_langu IS INITIAL OR gv_master_languages CS i_langu.


r_installed = 'X'.
ELSE.
CALL FUNCTION 'SYSTEM_INSTALLED_LANGUAGES'
IMPORTING
languages = l_languages
EXCEPTIONS
sapgparam_error = 1
OTHERS = 2.
IF sy-subrc NE 0 OR l_languages CS i_langu.
r_installed = 'X'.
ELSE.
COLLECT i_langu INTO gt_skipped_languages.
ENDIF.
ENDIF.

ENDMETHOD. "language_installed

METHOD execute_method.

DATA: ls_e070 TYPE e070,


ls_e071 TYPE e071,
lt_e071 TYPE TABLE OF e071,
lt_e071k TYPE TABLE OF e071k,
ls_trkey TYPE trkey.
DATA: lt_result TYPE scts_cl_results. ">=SAPBASIS700
DATA: lt_client TYPE trexe_t_client.

DATA: lt_trlog TYPE TABLE OF trlog,


ls_trlog TYPE trlog,
lv_trkorr TYPE trkorr,
lv_file TYPE tstrf01-file.

FIELD-SYMBOLS: <ls_method_call> TYPE trmtd_method_call.

CHECK NOT i_method IS INITIAL.

"get AFTER_IMP method


SORT gt_trkey.
DELETE ADJACENT DUPLICATES FROM gt_trkey COMPARING obj_type obj_name.
LOOP AT gt_trkey INTO ls_trkey.
ls_e071-pgmid = 'R3TR'.
ls_e071-object = ls_trkey-obj_type.
ls_e071-obj_name = ls_trkey-obj_name.
APPEND ls_e071 TO lt_e071.
ENDLOOP.

CALL FUNCTION 'TRINT_FREE_MEMORY'.


CONCATENATE sy-sysid 'K' sy-datum '_' sy-uzeit INTO lv_trkorr.

CALL FUNCTION 'TR_INITIALIZE_LOG' "Build temporary log file like


DEV_20140415_142649.SNOTE
EXPORTING
acttype = '_'
* DIRTYPE = 'T'
sysname = 'SNOTE' "lv_sysname
trkorr = lv_trkorr
IMPORTING
file = lv_file
EXCEPTIONS
wrong_call = 1
OTHERS = 2.
ASSERT sy-subrc EQ 0.

* CALL FUNCTION 'APPEND_PROTOCOL'. "here error occurs depending on previous


statements

COMMIT WORK. "save what we have reached so far

DATA: trint_call_after_imp_method TYPE funcname VALUE


'TRINT_CALL_AFTER_IMP_METHOD'.
IF sy-saprl >= '700'.
APPEND sy-mandt TO lt_result.
">=SAPBASIS700
CALL FUNCTION trint_call_after_imp_method
EXPORTING
iv_trkorr = space
is_e070 = ls_e070
it_e071 = lt_e071[]
it_e071k = lt_e071k[]
iv_update_lockflag = '' "'X'
CHANGING
">=SAPBASIS700
it_client = lt_result
">=SAPBASIS700
EXCEPTIONS
error_message = 1.
ELSE.
APPEND sy-mandt TO lt_client.
CALL FUNCTION trint_call_after_imp_method
EXPORTING
iv_trkorr = space
is_e070 = ls_e070
it_e071 = lt_e071[]
it_e071k = lt_e071k[]
iv_update_lockflag = '' "'X'
it_client = lt_client
EXCEPTIONS
error_message = 1.
ENDIF.

IF sy-subrc NE 0.
CALL METHOD log_message.
ENDIF.

CALL FUNCTION 'TR_READ_LOG'


EXPORTING
iv_log_type = trlog_type_file
iv_logname_file = lv_file
TABLES
et_lines = lt_trlog
EXCEPTIONS
invalid_input = 1
access_error = 2
OTHERS = 3.

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.

CALL FUNCTION 'TR_DELETE_LOG'


EXPORTING
iv_log_type = 'FILE'
iv_logname_file = lv_file
EXCEPTIONS
OTHERS = 0.

ENDMETHOD. "execute_method

METHOD add_to_transport.

STATICS: s_object LIKE i_object,


s_obj_name TYPE string,
s_msgty TYPE symsgty,
s_testrun LIKE testrun VALUE '-',
s_masterlang TYPE tadir-masterlang.

DATA: l_tadir_name TYPE tadir-obj_name,


l_object_name TYPE string,
l_object_class TYPE string,
l_extend,
l_global_lock,
ls_trkey TYPE trkey,
ls_t000 TYPE t000,
l_bcset_clients TYPE string.

CLEAR sy-subrc.
CHECK gv_copy_translation IS INITIAL.

IF lcl_wb=>language_installed( i_langu ) IS INITIAL.


RAISE language_not_installed.
ENDIF.

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.

CHECK i_object NE space.

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.

"create TADIR entry in advance avoid popup


IF NOT l_tadir_name IS INITIAL.
DATA: ls_tadir_old TYPE tadir.
SELECT SINGLE * FROM tadir INTO ls_tadir_old
WHERE pgmid EQ 'R3TR'
AND object EQ i_object
AND obj_name EQ l_tadir_name.
s_masterlang = ls_tadir_old-masterlang.
IF sy-subrc NE 0. "V3.52
IF l_object_class EQ 'DICT' AND "V3.52
i_object NE 'INDX'. "V3.52
l_global_lock = 'X'. "similar to MSDXXBAS_FORMS 463 "V3.52
ENDIF. "V3.52
ELSEIF i_edtflag EQ 'X'. "iv_no_standard_editor
"temporary disable check of tadir-edtflag
UPDATE tadir SET edtflag = ' '
WHERE pgmid EQ 'R3TR'
AND object EQ i_object
AND obj_name EQ l_tadir_name.
ENDIF. "V3.52
IF i_langu CA gv_master_languages.
IF ls_tadir_old IS INITIAL.
"for new objects check whether it exists globally to determine correct
package
DATA: ls_gtadir TYPE gtadir.
CALL FUNCTION 'TR_GTADIR_QUERY'
EXPORTING
iv_pgmid = 'R3TR'
iv_object = i_object
iv_obj_name = l_tadir_name
IMPORTING
result = ls_gtadir
EXCEPTIONS
OTHERS = 01.
IF NOT ls_gtadir IS INITIAL AND testrun IS INITIAL.
CALL FUNCTION 'TRINT_TADIR_MODIFY'
EXPORTING
author = sy-uname
devclass = i_devclass "or from GTADIR
pgmid = 'R3TR'
object = i_object
obj_name = l_tadir_name
masterlang = i_langu "no masterlang in GTADIR
srcsystem = ls_gtadir-srcsystem
change_masterlang = 'X'
* EDTFLAG = '~'
* GENFLAG = '~'
force_mode = space
created_on = sy-datum ">=SAPBASIS702
check_date = sy-datum ">=SAPBASIS702
* CHECK_CFG = '~' ">=SAPBASIS702
EXCEPTIONS
object_exists_global = 1
object_exists_local = 2
object_has_no_tadir = 3
OTHERS = 4.
ENDIF.
ENDIF.

"set correct language and package on first call per object


"skip this for other languages than EN/DE.
CALL FUNCTION 'TR_TADIR_INTERFACE'
EXPORTING
* WI_DELETE_TADIR_ENTRY = ' '
wi_test_modus = testrun
wi_tadir_pgmid = 'R3TR'
wi_tadir_object = i_object
wi_tadir_obj_name = l_tadir_name
wi_tadir_devclass = i_devclass
wi_tadir_masterlang = i_langu
EXCEPTIONS
devclass_not_existing = 90
obj_specification_not_unique = 91
pgmid_object_not_allowed = 92
masterlanguage_not_specified = 93
devclass_not_specified = 94
tadir_entry_not_existing = 1
tadir_entry_ill_type = 2
no_systemname = 3
no_systemtype = 4
original_system_conflict = 5
object_reserved_for_devclass = 6
object_exists_global = 7
object_exists_local = 8
object_is_distributed = 9
no_authorization_to_delete = 11
simultanious_set_remove_repair = 13
order_missing = 14
no_modification_of_head_syst = 15
specify_owner_unique = 19
loc_priv_objs_no_repair = 20
gtadir_not_reached = 21
object_locked_for_order = 22
change_of_class_not_allowed = 23
no_change_from_sap_to_tmp = 24
OTHERS = 25.
IF sy-subrc EQ 90.
READ TABLE gr_devclass WITH KEY low = i_devclass TRANSPORTING NO
FIELDS.
IF sy-subrc NE 0 OR testrun IS INITIAL.
CALL METHOD lcl_wb=>log_message.
s_msgty = 'E'.
ENDIF.
ELSEIF sy-subrc GT 90.
CALL METHOD lcl_wb=>log_message.
s_msgty = 'E'.
ENDIF.
ENDIF.
IF NOT i_devclass IS INITIAL.
"set correct package in memory
EXPORT current_devclass FROM i_devclass TO MEMORY ID 'EUK'.
SET PARAMETER ID 'EUK' FIELD i_devclass.
ENDIF.
ENDIF.

IF testrun IS INITIAL.

CALL FUNCTION 'RS_CORR_INSERT' "and create TADIR-entry


EXPORTING
object = l_object_name
object_class = l_object_class
global_lock = l_global_lock
devclass = i_devclass
korrnum = gv_trkorr
master_language = i_langu
extend = l_extend
* SUPPRESS_DIALOG = 'X' "e.g. 'object can only be created in SAP
package'
* AUTHOR = ' '
* GENFLAG = ' '
* PROGRAM = ' '
* OBJECT_CLASS_SUPPORTS_MA = ' '
* MOD_LANGU = ' '
* ACTIVATION_CALL = ' '
IMPORTING
korrnum = gv_trkorr
* ORDERNUM =
* NEW_CORR_ENTRY =
* AUTHOR =
transport_key = ls_trkey
* NEW_EXTEND =
EXCEPTIONS
cancelled = 1
permission_failure = 2
unknown_objectclass = 3
OTHERS = 4.
IF sy-subrc NE 0.
s_msgty = 'E'.
ELSE.
"collect objects with update
COLLECT ls_trkey INTO gt_trkey.
"correct master language if neccessary
IF NOT l_tadir_name IS INITIAL AND ls_tadir_old IS INITIAL.
IF i_langu CA gv_master_languages.
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.
s_masterlang = i_langu.
ENDIF.
ENDIF.
"set/restore tadir-edtflag
IF i_edtflag EQ 'X'. "iv_no_standard_editor
"temporary disable check of tadir-edtflag
UPDATE tadir SET edtflag = 'X'
WHERE pgmid EQ 'R3TR'
AND object EQ i_object
AND obj_name EQ l_tadir_name.
ENDIF.
ENDIF.
ELSE.
CALL FUNCTION 'RS_CORR_CHECK'
EXPORTING
object = l_object_name
object_class = l_object_class
global_lock = l_global_lock
suppress_dialog = 'X' "e.g. 'object can only be created in SAP
package'
EXCEPTIONS
cancelled = 1
permission_failure = 2
unknown_objectclass = 3
OTHERS = 4.
IF sy-subrc NE 0.
CALL METHOD log_message.
s_msgty = 'E'.
ELSE.
s_msgty = 'W'.
ENDIF.
ENDIF.
ENDIF.

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.

DATA: lt_bdc TYPE TABLE OF bdcdata,


ls_bdc TYPE bdcdata,
ls_bdcp TYPE bdcdata,
ls_opt TYPE ctu_params.
DATA: ls_t100 TYPE t100,
ls_t100a TYPE t100a,
ls_t100u TYPE t100u,
ls_t100x TYPE t100x,
ls_t100o TYPE t100o,
lt_activity TYPE tt_activity,
l_obj_name TYPE dokil-object,
ls_msg_class LIKE LINE OF gr_msg_class VALUE 'IEQ'.

ls_msg_class-low = i_msgid.
COLLECT ls_msg_class INTO gr_msg_class.

CALL METHOD set_context


EXPORTING
i_langu = i_langu
i_object = 'MESS'
i_obj_name = i_msgid
i_obj_name2 = i_msgno.

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.

SELECT SINGLE * FROM t100a INTO ls_t100a


WHERE arbgb EQ i_msgid.
IF sy-subrc NE 0.
IF testrun IS INITIAL OR NOT i_msgid IN gr_msg_class.
MESSAGE e509(eu) WITH i_msgid INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
RETURN.
ENDIF.

SELECT SINGLE masterlang FROM tadir INTO ls_t100a-masterlang


WHERE pgmid EQ 'R3TR'
AND object EQ 'MSAG'
AND obj_name EQ i_msgid.

SELECT SINGLE * FROM t100 INTO ls_t100


WHERE sprsl EQ i_langu
AND arbgb EQ i_msgid
AND msgnr EQ i_msgno.

SELECT SINGLE * FROM t100u INTO ls_t100u


WHERE arbgb EQ i_msgid
AND msgnr EQ i_msgno.

SELECT SINGLE auth_check FROM t100x INTO CORRESPONDING FIELDS OF ls_t100x


WHERE arbgb EQ i_msgid
AND msgnr EQ i_msgno.

SELECT activity FROM t100o INTO TABLE lt_activity "#EC CI_GENBUFF


WHERE arbgb EQ i_msgid
AND msgnr EQ i_msgno.

IF i_text EQ ls_t100-text AND


i_auth_check EQ ls_t100x-auth_check AND
it_activity EQ lt_activity.
IF i_selfdef IS INITIAL AND ls_t100u-selfdef IS INITIAL OR
">=SAPBASIS640
NOT i_selfdef IS INITIAL AND NOT ls_t100u-selfdef IS INITIAL.
">=SAPBASIS640
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
">=SAPBASIS640
ENDIF.

CALL FUNCTION 'DOCU_OBJECT_NAME_CONCATENATE'


EXPORTING
docu_id = 'NA'
element = i_msgid
addition = i_msgno
IMPORTING
object = l_obj_name
EXCEPTIONS
OTHERS = 0.

CALL METHOD add_to_transport


EXPORTING
i_object = 'MESS'
i_obj_name = l_obj_name
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.

IF i_langu EQ ls_t100a-masterlang AND gv_copy_translation IS INITIAL.


"create or change message and write into transport request
"if sy-langu is different from master language SE91 will switch to master
lang

"-------------------------------------------
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.

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 log_message.

DATA: ls_msg TYPE bal_s_msg.

IF sy-msgno IS INITIAL OR sy-msgid IS INITIAL.


MESSAGE i666(01) WITH 'unknown error' INTO sy-lisel. "#EC *
ENDIF.
MOVE-CORRESPONDING syst TO ls_msg.

CALL FUNCTION 'BAL_LOG_MSG_ADD'


EXPORTING
i_log_handle = gv_log_handle
i_s_msg = ls_msg
EXCEPTIONS
OTHERS = 0.

IF ls_msg-msgty CA 'EA'.
gv_errors_occured = 'X'.
ENDIF.

ENDMETHOD. "log_message

METHOD display_log.

DATA: lt_log_handle TYPE bal_t_logh,


ls_profile TYPE bal_s_prof,
l_s_fcat TYPE bal_s_fcat,
lt_dfies TYPE TABLE OF dfies,
ls_dfies TYPE dfies.
DATA: lr_filter_client TYPE RANGE OF mandt,
ls_filter_client LIKE LINE OF lr_filter_client,
ls_filter TYPE bal_s_lfil,
lr_filter TYPE bal_s_extn, "range table
lr_extnumber TYPE bal_s_extn,
lt_log_header TYPE balhdr_t.

"Reset SNOTE & SCWB mode


CALL FUNCTION 'SCWG_TOOLFLAG_RESET'.
TRY. CALL METHOD ('CL_CWB_RUNTIME')=>set_finished. CATCH
cx_sy_dyn_call_illegal_class. ENDTRY. ">=SAPBASIS640

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'.

"if we come here the action (copy/read/generate/compare) has finshed without


dumps hence we reset the trace

IF gv_log_handle IS INITIAL.
CHECK NOT i_db_search IS INITIAL.

CLEAR: ls_filter, lr_extnumber.


*- Search only log file of this application
lr_filter-sign = 'I'.
lr_filter-option = 'EQ'.
lr_filter-low = c_bal_object.
APPEND lr_filter TO ls_filter-object.

lr_filter-sign = 'I'.
lr_filter-option = 'EQ'.
lr_filter-low = c_bal_subobj.
APPEND lr_filter TO ls_filter-subobject.

*- Search only log file of this change number


IF sy-repid NE myrepid.
lr_extnumber-low = sy-repid.
lr_extnumber-sign = 'I'.
lr_extnumber-option = 'EQ'.
APPEND lr_extnumber TO ls_filter-extnumber.
ls_filter_client-sign = 'I'.
ls_filter_client-option = 'EQ'.
ls_filter_client-low = sy-mandt.
APPEND ls_filter_client TO lr_filter_client.
ENDIF.

*-- Search for log files on the database


* CALL FUNCTION 'BAL_DB_SEARCH'
* EXPORTING
* i_client = sy-mandt
* i_s_log_filter = ls_filter
* IMPORTING
* e_t_log_header = lt_log_header
* EXCEPTIONS
* log_not_found = 1
* no_filter_criteria = 2
* OTHERS = 3.
* CALL FUNCTION 'APPL_LOG_DISPLAY'
* EXPORTING
* object = ' '
* object_attribute = 0
* subobject = ' '
* subobject_attribute = 0
* external_number = ' '
* external_number_attribute = 0
* title_list_screen = ' '
* title_selection_screen = ' '
* date_from = sy-datum "#EC DOM_EQUAL
* date_to = sy-datum "#EC DOM_EQUAL
* time_to = '235959' "#EC DOM_EQUAL
* external_number_display_length = 20
* i_variant_report = l_repid
* EXCEPTIONS
* no_authority = 01.

SELECT * FROM balhdr CLIENT SPECIFIED "#EC CI_CLIENT "all clients


INTO TABLE lt_log_header
WHERE mandant IN ( SELECT mandt FROM t000 ) "#EC CI_BUFFSUBQ
AND object IN ls_filter-object
AND subobject IN ls_filter-subobject
AND extnumber IN ls_filter-extnumber.
IF sy-subrc EQ 0.
*-- Load log files from database into memory
CALL FUNCTION 'BAL_DB_LOAD'
EXPORTING
i_t_log_header = lt_log_header
IMPORTING
e_t_log_handle = lt_log_handle
EXCEPTIONS
no_logs_specified = 1
log_not_found = 2
log_already_loaded = 3
OTHERS = 4.
ENDIF.
ELSE.
APPEND gv_log_handle TO lt_log_handle.
ENDIF.

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.

"add own fields to field cat


CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = c_bal_context
TABLES
dfies_tab = lt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE a666(01) WITH 'Error in DDIF_FIELDINFO_GET for table:' c_bal_context.
"#EC *
ENDIF.

LOOP AT lt_dfies INTO ls_dfies WHERE fieldname EQ 'OBJECT'


OR fieldname EQ 'OBJ_NAME'.
l_s_fcat-ref_table = c_bal_context.
l_s_fcat-ref_field = ls_dfies-fieldname.
l_s_fcat-outputlen = ls_dfies-outputlen + 1.
* l_s_fcat-col_pos = 100 + sy-tabix. "most rigth columns
APPEND l_s_fcat TO ls_profile-mess_fcat.
ENDLOOP.

"set parameters for saving layout.


ls_profile-disvariant-report = sy-repid.
ls_profile-disvariant-handle = 'LOG'.

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'.

IF NOT testrun IS INITIAL.


ls_profile-title = 'Simulation log'. "#EC *
ELSEIF NOT update IS INITIAL.
ls_profile-title = 'Change Log'. "#EC *
ELSEIF NOT genview IS INITIAL.
ls_profile-title = 'View Generation Log'. "#EC *
ELSEIF gv_log_handle IS INITIAL.
ls_profile-title = 'All Logs'. "#EC *
ELSE.
ls_profile-title = 'Problem Log'. "#EC *
ls_profile-start_row = 5.
ls_profile-start_col = 5.
ls_profile-end_row = 30.
ls_profile-end_col = 160.
* ls_profile-TREE_ONTOP = space.
ENDIF.
IF sy-repid EQ myrepid.
CONCATENATE 'UDO -' ls_profile-title INTO ls_profile-title SEPARATED BY
space. "#EC *
ELSE.
CONCATENATE sy-repid '-' ls_profile-title INTO ls_profile-title SEPARATED BY
space. "#EC *
ENDIF.

DATA: ls_statistics TYPE bal_s_scnt.


IF i_no_save IS INITIAL.
CALL METHOD lcl_wb=>save_log.
ls_statistics-msg_cnt_al = 1.
ELSE.
CALL FUNCTION 'BAL_LOG_HDR_READ'
EXPORTING
i_log_handle = gv_log_handle
IMPORTING
e_statistics = ls_statistics
EXCEPTIONS
log_not_found = 1
OTHERS = 2.
ENDIF.

IF ls_statistics-msg_cnt_al NE 0 AND gv_unit_test IS INITIAL AND sy-batch IS


INITIAL.
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_t_log_handle = lt_log_handle
i_s_display_profile = ls_profile
i_amodal = space
EXCEPTIONS
OTHERS = 0.
ENDIF.

IF NOT i_no_save IS INITIAL.


CALL FUNCTION 'BAL_LOG_REFRESH'
EXPORTING
i_log_handle = gv_log_handle
EXCEPTIONS
OTHERS = 1.
"reset context
CALL METHOD set_context( EXPORTING i_langu = space i_object = space
i_obj_name = space ).
ENDIF.

CLEAR gv_log_handle.

ENDMETHOD. "display_log

METHOD save_log.
DATA: lt_log_handle TYPE bal_t_logh.

APPEND gv_log_handle TO lt_log_handle.

CALL FUNCTION 'BAL_DB_SAVE'


EXPORTING
i_t_log_handle = lt_log_handle
EXCEPTIONS
OTHERS = 0.

ENDMETHOD. "save_log

METHOD set_context.

STATICS: BEGIN OF lss_key, "save last key


i_object TYPE e071-object,
i_obj_name TYPE adir_key-obj_name,
i_obj_name2 TYPE adir_key-obj_name,
i_text TYPE string,
i_langu TYPE sylangu,
END OF lss_key.

DATA: ls_msg_defaults TYPE bal_s_mdef,


ls_context TYPE adir_key,
l_text(70),
l_mode TYPE string,
ls_key LIKE lss_key.

DATA: ls_e071 TYPE e071,


ls_tadir TYPE tadir,
ls_tadir_key TYPE tadir.

CHECK NOT lcl_wb=>language_installed( i_langu ) IS INITIAL.


IF sy-repid NE myrepid.
CONCATENATE i_object i_obj_name INTO l_text SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = l_text.
ENDIF.

"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.

CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_SET'


EXPORTING
i_s_msg_defaults = ls_msg_defaults
EXCEPTIONS
OTHERS = 0.

IF NOT i_no_message IS INITIAL.


EXIT.
ENDIF.

"try to check if object exists


IF NOT i_object IS INITIAL AND NOT i_obj_name IS INITIAL.
ls_e071-pgmid = 'R3TR'.
ls_e071-object = i_object.
ls_e071-obj_name = i_obj_name.

CALL FUNCTION 'SCWB_GET_TADIR_REM'


EXPORTING
is_e071 = ls_e071
IMPORTING
es_tadir_key = ls_tadir_key
es_tadir = ls_tadir.
IF ls_tadir_key IS INITIAL.
ls_e071-pgmid = 'LIMU'.
CALL FUNCTION 'SCWB_GET_TADIR_REM'
EXPORTING
is_e071 = ls_e071
IMPORTING
es_tadir_key = ls_tadir_key
es_tadir = ls_tadir.
ENDIF.

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.

CONCATENATE l_mode l_text INTO l_text SEPARATED BY space.


ELSE.
l_text = i_text.
ENDIF.

IF NOT l_text IS INITIAL.


IF NOT i_langu IS INITIAL.
MESSAGE s666(01) WITH l_text '( language' i_langu ')' INTO l_text. "#EC
NOTEXT
ENDIF.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
i_msgty = 'I'
i_text = l_text
EXCEPTIONS
OTHERS = 0.
ENDIF.

ENDMETHOD. "set_context

ENDCLASS. "lcl_wb IMPLEMENTATION

*&---------------------------------------------------------------------*
*& Form main
*&---------------------------------------------------------------------*
FORM main.

TRANSLATE c_ddic_ref USING '_ '. "initialization


DO. "1900
CALL SELECTION-SCREEN selection_screen_1900. "1900
IF sy-subrc NE 0. "1900
EXIT. "DO "1900
ENDIF. "1900

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

FORM update_01. " MESS 5@076


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = '5@'
i_msgno = '076'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Geben Sie einen änderbaren Customizing-Auftrag an.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = '5@'
i_msgno = '076'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Specify a changeable customizing request.'.

ENDFORM.

FORM update_02. " MESS 5@314


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = '5@'
i_msgno = '314'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Abmischen der Berechtigungsdaten von Rolle & erforderlich'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = '5@'
i_msgno = '314'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Merging authorization data of role & required'.

ENDFORM.

FORM update_03. " MESS S#014


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '014'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Fehler in der Sperrverwaltung/Sperrtabellenüberlauf'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '014'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Error in lock management/lock table overflow'.

ENDFORM.

FORM update_04. " MESS S#093


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '093'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Änderung mandantenabhängiger Customizing-Objekte nicht
erlaubt'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '093'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Changes of client specific customizing objects not allowed'.

ENDFORM.

FORM update_05. " MESS S#095


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '095'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Transport mandantenabhängiger Customizing-Objekte nicht
erlaubt'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '095'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Transport of client specific customizing objects not
allowed'.

ENDFORM.

FORM update_06. " MESS S#097


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '097'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = '3'
i_text = 'Automatische Aufzeichnung mandantenabhängiger Customizing-
Objekte'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '097'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Automatic recording of client specific customizing objects'.
ENDFORM.

FORM update_07. " MESS S#126


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '126'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Rolle & wurde nicht angelegt.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '126'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The role & was not created.'.

ENDFORM.

FORM update_08. " MESS S#134


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '134'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Zuordnung von Paket & unzulässig'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '134'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Assignment of package & forbidden'.

ENDFORM.

FORM update_09. " MESS S#135


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '135'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Paketzuordnung der Rolle & ist ungültig.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '135'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The package assignment of role & is invalid.'.

ENDFORM.

FORM update_10. " MESS S#245


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '245'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Einige Rollen sind bereits auf verschiedenen Aufträgen
aufgezeichnet:'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '245'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Some roles have already been recorded on different
requests:'.

ENDFORM.

FORM update_11. " MESS S#253


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '253'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Rollenpflege per Profilparameter & (Transaktion RZ11)
deaktiviert'.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'S#'
i_msgno = '253'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Role maintenance deactivated via profile parameter &
(transaction RZ11)'.

ENDFORM.

FORM update_12. " MESS S#254


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '254'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Rolle & wurde bereits auf mehreren Aufträgen aufgezeichnet.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '254'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Role & was already recorded on several requests.'.

ENDFORM.

FORM update_13. " MESS S#257


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '257'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die vererbende Rolle &2 von &1 steht bereits auf mehreren
Aufträgen.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '257'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The imparting role &2 of &1 was already recorded on several
requests.'.

ENDFORM.

FORM update_14. " MESS S#258


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '258'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Auftragskonflikt innerhalb der Vererbungshierarchie der Rolle
&'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '258'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Request conflict within inheritance hierarchy of role &'.

ENDFORM.

FORM update_15. " MESS S#267


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '267'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Rolle &1 wurde bereits auf Auftrag &2 aufgezeichnet.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '267'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Role &1 was already recorded on request &2.'.

ENDFORM.

FORM update_16. " MESS S#268


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '268'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = '3'
i_text = 'Aufzeichnung der Rolle & nicht möglich'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '268'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Recording of role & not possible'.

ENDFORM.

FORM update_17. " MESS S#276


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '276'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Keine vollständige Rollenaufzeichnung'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '276'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Incomplete role recording'.

ENDFORM.

FORM update_18. " MESS S#277


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '277'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die vererbende Rolle &2 von &1 steht bereits auf Auftrag
&3.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '277'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The imparting role &2 of &1 was already recorded on request
&3.'.

ENDFORM.

FORM update_19. " MESS S#280


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '280'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Aufzeichnung einer Rolle auf mehreren Aufträgen ist nicht
möglich.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '280'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Recording a role on several requests is not possible.'.

ENDFORM.

FORM update_20. " MESS S#282


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '282'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Auftrag/Aufgabe & kann nicht verwendet werden.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '282'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Request/task & cannot be used.'.

ENDFORM.

FORM update_21. " MESS S#284


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '284'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Keine Aufzeichnung der Sammelrolle &1 wegen enthaltener
Einzelrollen'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '282'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Request/task & cannot be used.'.

ENDFORM.

FORM update_22. " MESS S#286


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '286'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die vererbende Rolle & enthält keine Berechtigungsdaten.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '286'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The imparting role & contains no authorization data.'.

ENDFORM.
FORM update_23. " MESS S#315
DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '315'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die abgeleitete Rolle &1 von &2 steht bereits auf Auftrag
&3.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '315'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The derived role &1 of &2 was already recorded on request
&3.'.

ENDFORM.

FORM update_24. " MESS S#317


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '317'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Aufzeichnung der Hierarchie von &1 nicht möglich wegen
Originalrolle &2'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '317'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Recording of hierarchy of &1 not possible due to original
role &2'.

ENDFORM.

FORM update_25. " MESS S#322


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '322'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Keine Aufzeichnung optionaler Bestandteile für Rolle &:'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '322'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'No recording of optional components for role &:'.

ENDFORM.

FORM update_26. " MESS S#327


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '327'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'SCC4-Einstellung blockiert Aufzeichnung neuer
Vererbungshierarchien.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '327'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'SCC4 setting avoids recording of new inheritance
hierarchies.'.

ENDFORM.

FORM update_27. " MESS S#357


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '357'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Sammelrolle & hat wegen Einzelrollenzuordnungen
Abhängigkeiten zu:'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '357'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Due to single role assignments collective role & is dependent
on:'.

ENDFORM.

FORM update_28. " MESS S#367


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '367'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Änderung von Benutzerzuordnungen in ZBV-Tochtersystemen nicht
möglich'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '367'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Change of user assignments not possible in CUA client
systems'.

ENDFORM.

FORM update_29. " MESS S#368


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '368'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Einzelrolle & ist von folgenden Sammelrollen abhängig:'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '368'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Single role & is dependent on these collective roles:'.

ENDFORM.

FORM update_30. " MESS S#388


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '388'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = '3'
i_text = 'Das Release des Quellsystems der Uploaddatei ist älter als
6.20.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '388'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'The release of the source system of upload is older than
6.20.'.

ENDFORM.

FORM update_31. " MESS S#392


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '392'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Uploaddatei enthält keine gültige Rollendefinition.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '392'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The upload contains no valid role definition.'.
ENDFORM.

FORM update_32. " MESS S#417


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '417'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Fehlende Berechtigungen zum Ableiten aus Originalrolle &'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '417'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'No authorization to derive from original role &'.

ENDFORM.

FORM update_33. " MESS S#438


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '438'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Der Typ der vererbenden Rolle &2 zu &1 ist unbestimmt
(Hinweis 1723881).'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '438'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The type of the imparting role &2 of &1 is undefined (note
1723881).'.

ENDFORM.

FORM update_34. " MESS S#439


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '439'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Keine Berechtigung zum Transport der vererbenden Rolle &2 zu
&1.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '439'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'No authorization for transporting the imparting role &2 of
&1.'.

ENDFORM.

FORM update_35. " MESS S#463


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '463'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Sammelrollen und SAP-Standardrollen als vererbende Rollen
unzulässig'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '463'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Collective roles and SAP standard roles forbidden as
imparting roles'.

ENDFORM.

FORM update_36. " MESS S#470


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '470'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Abgeleitete und vererbende Rolle dürfen nicht identisch
sein.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '470'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Derived and imparting role must not be identical.'.

ENDFORM.

FORM update_37. " MESS S#475


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '475'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die internen Attribute einer SAP-Rolle müssen vollständig
gepflegt sein.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '475'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'The internal attributes of an SAP role must be completely
maintained.'.

ENDFORM.

FORM update_38. " MESS S#478


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '478'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Mindestens ein der Rolle &1 im System &2 zugeordneter
Benutzer gesperrt'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '478'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'At least one user assigned to role &1 locked in system &2'.

ENDFORM.

FORM update_39. " MESS S#518


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '518'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Probleme beim Löschen der Benutzerzuordnungen zu Rolle &1 im
System &2'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '518'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Issues when deleting user assignments of role &1 in system
&2'.

ENDFORM.

FORM update_40. " MESS S#535


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '535'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Aufzeichnung der Personalisierungsdaten für Rolle &
fehlgeschlagen'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '535'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Recording of personalization data for role & failed'.

ENDFORM.

FORM update_41. " MESS S#550


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '550'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = '3'
i_text = 'Keine Aufzeichnung der Rolle &1 auf Auftrag &2'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '550'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'No recording of role &1 on request &2'.

ENDFORM.

FORM update_42. " MESS S#551


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '551'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = '&1&2&3&4'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '551'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = '&1&2&3&4'.

ENDFORM.

FORM update_43. " MESS S#553


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '553'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'System &2: Sperrproblem für Rolle &1 wegen Bearbeitung oder
Sperrtabelle'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '553'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'System &2: enqueue problem for role &1 due to editing or
enqueue table'.

ENDFORM.

FORM update_44. " MESS S#595


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '595'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Die Einzelrollen in Sammelrolle & können nicht aufgezeichnet
werden.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '595'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Single roles inside collective role & cannot be recorded.'.

ENDFORM.

FORM update_45. " MESS S#618


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '618'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = '3'
i_text = 'Textpflege nur in der Originalsprache &1 der Rolle &2
möglich'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '618'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Text maintenance possible in original language &1 of role &2
only'.

ENDFORM.

FORM update_46. " MESS S#681


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '681'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = '3'
i_text = 'Berechtigungen und Profile der abgeleiteten Rollen wurden
angepasst.'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '681'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Authorizations and profile of the derived roles were
adjusted.'.

ENDFORM.

FORM update_47. " MESS S#719


DATA lt_activity TYPE tt_activity.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '719'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'D'
i_selfdef = ''
i_text = 'Keine Berechtigung zum Einfügen und Entfernen von Services'.

CALL METHOD lcl_wb=>create_message "#EC *


EXPORTING
i_msgid = 'S#'
i_msgno = '719'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'No authorization for inserting and removing services'.

ENDFORM.

FORM genview.

ENDFORM.

FORM update.

gv_master_languages = 'D'. "#EC NOTEXT

PERFORM update_01. " MESS 5@076


PERFORM update_02. " MESS 5@314
PERFORM update_03. " MESS S#014
PERFORM update_04. " MESS S#093
PERFORM update_05. " MESS S#095
PERFORM update_06. " MESS S#097
PERFORM update_07. " MESS S#126
PERFORM update_08. " MESS S#134
PERFORM update_09. " MESS S#135
PERFORM update_10. " MESS S#245
PERFORM update_11. " MESS S#253
PERFORM update_12. " MESS S#254
PERFORM update_13. " MESS S#257
PERFORM update_14. " MESS S#258
PERFORM update_15. " MESS S#267
PERFORM update_16. " MESS S#268
PERFORM update_17. " MESS S#276
PERFORM update_18. " MESS S#277
PERFORM update_19. " MESS S#280
PERFORM update_20. " MESS S#282
PERFORM update_21. " MESS S#284
PERFORM update_22. " MESS S#286
PERFORM update_23. " MESS S#315
PERFORM update_24. " MESS S#317
PERFORM update_25. " MESS S#322
PERFORM update_26. " MESS S#327
PERFORM update_27. " MESS S#357
PERFORM update_28. " MESS S#367
PERFORM update_29. " MESS S#368
PERFORM update_30. " MESS S#388
PERFORM update_31. " MESS S#392
PERFORM update_32. " MESS S#417
PERFORM update_33. " MESS S#438
PERFORM update_34. " MESS S#439
PERFORM update_35. " MESS S#463
PERFORM update_36. " MESS S#470
PERFORM update_37. " MESS S#475
PERFORM update_38. " MESS S#478
PERFORM update_39. " MESS S#518
PERFORM update_40. " MESS S#535
PERFORM update_41. " MESS S#550
PERFORM update_42. " MESS S#551
PERFORM update_43. " MESS S#553
PERFORM update_44. " MESS S#595
PERFORM update_45. " MESS S#618
PERFORM update_46. " MESS S#681
PERFORM update_47. " MESS S#719

ENDFORM.

START-OF-SELECTION.
PERFORM main.

Potrebbero piacerti anche