Sie sind auf Seite 1von 215

*&---------------------------------------------------------------------*

*& Report ZNOTE_2173829


*&
*&---------------------------------------------------------------------*
*& 2016-06-30 delivery
*&
*&---------------------------------------------------------------------*

REPORT ZNOTE_2173829.

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


myrepid TYPE progname VALUE 'SAP_LOCAL_DOWNPORT_ASSISTANT',
sapbasis TYPE sy-saprl VALUE '700 ', "SAP_BASIS release for which the
report was generated; in lower releases it might get problems
approved_logical_objects TYPE string VALUE ''.

TYPE-POOLS: seox, seoc, seok, seex, bcwbn, ststc, trmtd, trexe, scua, trlog.

TYPES: BEGIN OF
dd43v,typename(30),seckeyname(30),ddlanguage,seckeyunique,accessmode,kind,keydescri
ption(80),END OF dd43v,
BEGIN OF dd12fulltextinfo, full_text(1), 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(1),token_separators(50),END OF dd12fulltextinfo.

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

TYPES: BEGIN OF ty_dd02l_new,


is_gtt,
END OF ty_dd02l_new.

DATA: gr_devclass TYPE RANGE OF devclass,


gr_domname TYPE RANGE OF domname WITH HEADER LINE,
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 WITH HEADER LINE,
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_msg_class TYPE RANGE OF msgid,
gv_trkorr TYPE trkorr,
gt_trkey TYPE TABLE OF trkey,
gv_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_langu TYPE sylangu,
gv_log_handle TYPE balloghndl,
gv_progname_rept TYPE progname,
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_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

CONSTANTS: BEGIN OF gc_dok,


data_element TYPE dok_id VALUE 'DE',
dtel_suppl TYPE dok_id VALUE 'DZ',
independent TYPE dok_id VALUE 'DT',
message TYPE dok_id VALUE 'NA',
function TYPE dok_id VALUE 'FU',
class TYPE dok_id VALUE 'CL',
class_method TYPE dok_id VALUE 'CO',
class_attrib TYPE dok_id VALUE 'CA',
class_event TYPE dok_id VALUE 'CE',
class_type TYPE dok_id VALUE 'CT',
interface TYPE dok_id VALUE 'IF',
intf_method TYPE dok_id VALUE 'IO',
intf_attrib TYPE dok_id VALUE 'IA',
intf_event TYPE dok_id VALUE 'IE',
intf_type TYPE dok_id VALUE 'IT',
release_note TYPE dok_id VALUE 'IN',
general_text TYPE dok_id VALUE 'TX',
hyper_text TYPE dok_id VALUE 'HY', "DSYS
auth_object TYPE dok_id VALUE 'UO',
extension_index TYPE dok_id VALUE 'XI',
hrdsys TYPE dok_id VALUE 'HR', "only used in UDO
END OF gc_dok.

DATA: akb_get_tadir TYPE funcname VALUE 'AKB_GET_TADIR', "#EC NOTEXT


sadt_navigation TYPE memoryid VALUE 'SADT_NAVIGATION'. "#EC NOTEXT
DATA: g_docking TYPE REF TO cl_gui_docking_container,
g_html_viewer TYPE REF TO object.

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(6) testrun1 FOR FIELD testrun. "1900
PARAMETERS testrun RADIOBUTTON GROUP exec. "#EC * "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. "#EC * "1900
SELECTION-SCREEN COMMENT 12(83) update2 FOR FIELD update. "1900
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. "#EC * "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


testrun1 = 'Step 1'. "#EC NOTEXT "1900
testrun2 = 'Test Run'. "#EC NOTEXT "1900
update1 = 'Step 2'. "#EC NOTEXT "1900
update2 = 'Update & Activate'. "#EC NOTEXT "1900
showlog1 = 'Info'. "#EC NOTEXT "1900
showlog2 = 'Show Logs'. "#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
PERFORM show_instruction.
ENDIF.

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
OTHERS = 0.
IF ls_msg-msgid EQ 'DO' AND ls_msg-msgno EQ '626'.
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
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.
DEFINE bdc_field.
clear: ls_bdc.
ls_bdc-fnam = &1.
ls_bdc-fval = &2.
append ls_bdc to lt_bdc.
END-OF-DEFINITION.
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 USING i_tabname TYPE tabname


i_key_fields TYPE string
it_entries TYPE STANDARD TABLE
CHANGING e_no_update TYPE c.
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 "#EC CI_DYNWHERE
IF it_entries[] EQ <lt_entries>[].
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

FORM show_instruction.
DATA: l_ratio TYPE i.
l_ratio = 100 - ( 30 * 100 / sy-scols ).
IF g_docking IS INITIAL.
CREATE OBJECT g_docking
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_right
ratio = l_ratio
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
CREATE OBJECT g_html_viewer TYPE ('CL_GUI_HTML_VIEWER')
EXPORTING
parent = g_docking
EXCEPTIONS
cntl_error = 1
cntl_install_error = 2
dp_install_error = 3
dp_error = 4.
IF sy-subrc NE 0.
* Fehlerbehandlung
ENDIF.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2.
IF sy-subrc NE 0.
* Fehlerbehandlung
ENDIF.
ENDIF.
DATA: lt_html TYPE STANDARD TABLE OF abaptxt255, l_url(255).
APPEND '<html><body>'
TO lt_html. "#EC NOTEXT "1900
APPEND '<br><br>'
TO lt_html. "#EC NOTEXT "1900
APPEND '<h3>Instructions:</h3>'
TO lt_html. "#EC NOTEXT "1900
APPEND '<ul>'
TO lt_html. "#EC NOTEXT "1900
APPEND '<li>Execute the given steps one after the other.</li>'
TO lt_html. "#EC NOTEXT "1900
APPEND '<li>If an error occurs repeat the same step again until the error is
solved.</li>' TO lt_html. "#EC NOTEXT "1900
APPEND '<li>It does not harm if a step is executed several times.</li>'
TO lt_html. "#EC NOTEXT "1900
APPEND '<li>Nearlly all popups can be closed by pressing ENTER.</li>'
TO lt_html. "#EC NOTEXT "1900
APPEND '</ul>'
TO lt_html. "#EC NOTEXT "1900
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 NE 0. "Note 1609940 not applied in current system
APPEND '<h3>Hint:</h3>' TO lt_html. "#EC NOTEXT "1900
APPEND 'Implement note 1609940 if you want to avoid messages ''Object can only
be created in SAP package'' (TR015)<br>' TO lt_html. "#EC NOTEXT
ENDIF.
APPEND '</ul>'
TO lt_html. "#EC NOTEXT "1900
DATA: but_sim(60), but_upd(60), but_gen(60), but_log(60).
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_simulate
text = 'Simulation' "#EC NOTEXT
IMPORTING
result = but_sim.
APPEND '<h3>Test Run:</h3>'
TO lt_html. "#EC NOTEXT "1900
APPEND 'You perform the test run to check the prerequisites and display the list
of objects to be updated.<br>' TO lt_html. "#EC NOTEXT "1900
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_change
text = 'Update' "#EC NOTEXT
IMPORTING
result = but_upd.
APPEND '<h3>Update & Activate:</h3>'
TO lt_html. "#EC NOTEXT "1900
APPEND 'You perform this step to update the objects and then to activate
them.<br>' TO lt_html. "#EC NOTEXT "1900
APPEND 'We recommend using the "online" mode to activate the objects. Only if
this activation times out, use the "batch" mode.<br>' TO lt_html. "#EC NOTEXT
"1900
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_protocol
text = 'Logs' "#EC NOTEXT
IMPORTING
result = but_log.
APPEND '<h3>Show Logs:</h3>'
TO lt_html. "#EC NOTEXT "1900
APPEND 'You can perform this step to display the logs of the previous steps.<br>'
TO lt_html. "#EC NOTEXT "1900
APPEND 'The first message of each log shows whether this belongs to a simulation,
update or generation.<br>' TO lt_html. "#EC NOTEXT "1900
APPEND 'Only the most recent log of each step is relevant. You can ignore errors
in older logs.<br>' TO lt_html. "#EC NOTEXT "1900
APPEND 'This step is optional.' TO lt_html. "#EC NOTEXT "1900
APPEND '</body></html>' TO lt_html. "#EC NOTEXT "1900
CALL METHOD g_html_viewer->('LOAD_DATA')
EXPORTING
type = 'text'
subtype = 'html'
IMPORTING
assigned_url = l_url
CHANGING
data_table = lt_html
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
CALL METHOD g_html_viewer->('SHOW_URL')
EXPORTING
url = l_url
EXCEPTIONS
cntl_error = 1.
ENDFORM. "show_docking_control

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_doma
IMPORTING
i_domname TYPE domname
i_datatype TYPE dd01v-datatype OPTIONAL
i_leng TYPE dd01v-leng OPTIONAL
i_outputlen TYPE dd01v-outputlen OPTIONAL
i_convexit TYPE dd01v-convexit OPTIONAL
i_function_group TYPE rs38l-area OPTIONAL "only needed for conversion
exit
i_decimals TYPE dd01v-decimals OPTIONAL
i_signflag TYPE dd01v-signflag OPTIONAL
i_lowercase TYPE dd01v-lowercase OPTIONAL
i_entitytab TYPE dd01v-entitytab OPTIONAL
i_appendname TYPE domname OPTIONAL "appendname not known in all releases
i_devclass TYPE devclass
i_langu TYPE sylangu OPTIONAL
i_ddtext TYPE ddtext OPTIONAL
i_domvalue TYPE dd07v-domvalue_l OPTIONAL
i_domvalue_h TYPE dd07v-domvalue_h OPTIONAL "only for intervals
i_valpos TYPE dd07v-valpos OPTIONAL
i_valtext TYPE dd07v-ddtext OPTIONAL.
CLASS-METHODS create_dtel
IMPORTING
i_rollname TYPE rollname
i_domname TYPE domname
i_datatype TYPE dd04v-domname OPTIONAL "only needed if domain is
initial
i_decimals TYPE dd04v-decimals OPTIONAL "only needed if rollname is
initial
i_leng TYPE dd04v-leng OPTIONAL "only needed if domain is
initial
i_devclass TYPE devclass
i_logflag TYPE logflag DEFAULT 'X'
i_memoryid TYPE dd04v-memoryid OPTIONAL
i_headlen TYPE dd04v-headlen OPTIONAL "defaulted with fieldlen
i_scrlen1 TYPE dd04v-scrlen1 DEFAULT 10
i_scrlen2 TYPE dd04v-scrlen2 DEFAULT 15
i_scrlen3 TYPE dd04v-scrlen3 DEFAULT 20
i_langu TYPE sylangu
i_ddtext TYPE ddtext
i_reptext TYPE reptext OPTIONAL
i_scrtext_m TYPE scrtext_m
i_scrtext_l TYPE scrtext_l
i_scrtext_s TYPE scrtext_s
i_shlpname TYPE shlpname OPTIONAL
i_shlpfield TYPE shlpfield OPTIONAL
i_refkind TYPE dd04l-refkind OPTIONAL
i_reftype TYPE dd04l-reftype OPTIONAL
i_proxytype TYPE ddproxyty OPTIONAL
i_deffdname TYPE deffdname OPTIONAL.
CLASS-METHODS create_table_type "create or change table without sorting
IMPORTING
i_typename TYPE dd40v-typename
i_rowtype TYPE dd40v-rowtype
i_ttypkind TYPE dd40v-ttypkind OPTIONAL
i_range_ctyp TYPE dd40v-range_ctyp OPTIONAL
i_accessmode TYPE dd40v-accessmode DEFAULT 'T'
i_keydef TYPE dd40v-keydef DEFAULT 'D'
i_keykind TYPE dd40v-keykind DEFAULT 'N'
i_generic TYPE dd40v-generic OPTIONAL
i_rowkind TYPE dd40v-rowkind DEFAULT 'S' "Default: Structure as line
type
i_datatype TYPE dd40v-datatype DEFAULT 'STRU'
i_leng TYPE dd40v-leng OPTIONAL "only for direct type entry
i_decimals TYPE dd40v-decimals OPTIONAL "only for direct type entry
i_proxytype TYPE ddproxyty OPTIONAL
it_dd43v TYPE tt_dd43v OPTIONAL "only needed for secondary index
it_dd42v TYPE tt_dd42v OPTIONAL "only needed for sorted tables
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_devclass TYPE devclass OPTIONAL "only needed for new table type
i_ddtext TYPE ddtext OPTIONAL. "only needed for new table type
CLASS-METHODS create_table "or structure or append or database table
IMPORTING
i_tabname TYPE tabname
i_devclass TYPE devclass
i_edtflag TYPE edtflag OPTIONAL
i_exclass TYPE num1 OPTIONAL "dd02v-exclass
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_ddtext TYPE ddtext OPTIONAL "can be taken from tabname
i_authclass TYPE dd02v-authclass DEFAULT '00'
i_mainflag TYPE dd02v-mainflag OPTIONAL
i_tabclass TYPE tabclass DEFAULT 'INTTAB'
i_sqltab TYPE sqlappdtab OPTIONAL
i_proxytype TYPE ddproxyty OPTIONAL
i_contflag TYPE contflag DEFAULT 'C' "only needed for db
tables
i_buffered TYPE dd02v-buffered OPTIONAL "only needed for db
tables
i_tabkat TYPE dd09v-tabkat DEFAULT '0' "only needed for db
tables
i_tabart TYPE dd09v-tabart DEFAULT 'APPL2' "only needed for db
tables
i_bufallow TYPE dd09v-bufallow DEFAULT 'N' "only needed for db
tables
i_pufferung TYPE dd09v-pufferung OPTIONAL "only needed for db
tables
i_schfeldanz TYPE dd09v-schfeldanz OPTIONAL "only needed for db
tables
i_speichpuff TYPE dd09v-speichpuff OPTIONAL "only needed for db
tables
i_uebersetz TYPE dd09v-uebersetz OPTIONAL "only needed for db
tables
i_roworcolst TYPE char1 DEFAULT space "space = column store
i_is_gtt TYPE char1 DEFAULT space "global temp table
i_javaonly TYPE xfeld OPTIONAL "dd09v-javaonly "only needed for db
tables
i_protokoll TYPE dd09v-protokoll OPTIONAL. "only needed for db
tables
CLASS-METHODS add_field_to_table
IMPORTING
i_tabname TYPE tabname
i_fieldname TYPE fieldname
i_remove TYPE xfeld OPTIONAL "X => remove that field instead of Add
i_keyflag TYPE keyflag DEFAULT space
i_anonymous TYPE xfeld OPTIONAL "dd03p-anonymous
i_rollname TYPE rollname OPTIONAL "data element, structure,
table_type, include/append name
i_edtflag TYPE edtflag OPTIONAL
i_datatype TYPE dd03p-datatype OPTIONAL "only needed if rollname is
initial
i_decimals TYPE dd03p-decimals OPTIONAL "only needed if rollname is
initial
i_leng TYPE dd03p-leng OPTIONAL "only needed if rollname is
initial
i_langu TYPE dd03p-ddlanguage OPTIONAL "only needed if rollname is
initial
i_ddtext TYPE dd03p-ddtext OPTIONAL "only needed if rollname is
initial
i_reftable TYPE dd03p-reftable OPTIONAL
i_reffield TYPE dd03p-reffield OPTIONAL
i_notnull TYPE dd03p-notnull OPTIONAL
i_languflag TYPE xfeld OPTIONAL "DDLANGUFLG
i_groupname TYPE ddgroup OPTIONAL
is_dd08v TYPE dd08v OPTIONAL "foreign key relationship
it_dd05m TYPE tt_dd05m OPTIONAL "foreign key relationship fields
i_context TYPE string OPTIONAL. "name of previous field or
include, blank->append
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 create_dtel_docu
IMPORTING
i_devclass TYPE devclass OPTIONAL
i_rollname TYPE rollname
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_dokstate TYPE dokil-dokstate DEFAULT 'A'
i_selfdef TYPE dokil-selfdef OPTIONAL
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tt_tline.
CLASS-METHODS create_mess_docu
IMPORTING
i_devclass TYPE devclass OPTIONAL
i_msgid TYPE msgid
i_msgno TYPE msgno
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_dokstate TYPE dokil-dokstate DEFAULT 'A'
i_selfdef TYPE dokil-selfdef OPTIONAL
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tt_tline.
CLASS-METHODS create_other_docu
IMPORTING
i_devclass TYPE devclass OPTIONAL "only needed for new objects with own
TADIR
i_docname TYPE thead-tdname "e.g. TXCDESK_PARAM, where TX
represents general text
i_typ TYPE dokil-typ DEFAULT 'E' "E or T
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_dokstate TYPE dokil-dokstate DEFAULT 'A'
i_selfdef TYPE dokil-selfdef OPTIONAL
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tt_tline.
CLASS-METHODS create_program_text
IMPORTING
i_devclass TYPE devclass OPTIONAL "needed if report texts are created
before the program exists
i_progname TYPE progname
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_id TYPE textpool-id DEFAULT 'I' "I = Text element, S =
Selection Text, R = Title
i_key TYPE textpool-key "space for title
i_text TYPE textpool-entry DEFAULT c_ddic_ref
i_length TYPE textpool-length OPTIONAL. "can be defaulted from length
of text
CLASS-METHODS create_user_interface
IMPORTING
i_progname TYPE program
i_devclass TYPE devclass OPTIONAL
value(is_adm) TYPE rsmpe_adm OPTIONAL "shall be passed!
it_sta TYPE tt_sta
it_men TYPE tt_men
it_act TYPE tt_act
it_but TYPE tt_but
it_pfk TYPE tt_pfk
it_biv TYPE tt_biv
it_set TYPE tt_set
i_langu TYPE sylangu DEFAULT 'E'
it_fun TYPE tt_fun
it_mtx TYPE tt_mtx
it_doc TYPE tt_doc
it_tit TYPE tt_tit.
CLASS-METHODS create_transformation "XSLT
IMPORTING
i_transformation TYPE cxsltdesc
i_devclass TYPE devclass
i_langu TYPE sylangu DEFAULT 'E'
i_text TYPE o2descr OPTIONAL
i_line TYPE string OPTIONAL. "all lines get collected until
i_line is <<--->>.
CLASS-METHODS create_logical_object
IMPORTING
i_object TYPE e071-object
i_obj_name TYPE c
i_devclass TYPE devclass OPTIONAL
i_langu TYPE sylangu DEFAULT 'E'
i_masterlang TYPE masterlang DEFAULT 'E'
EXCEPTIONS
error.
CLASS-METHODS execute_method
IMPORTING
i_method TYPE c. "AFTER_IMP or BEFORE_EXP
CLASS-METHODS create_table_entries
IMPORTING
i_tabname TYPE tabname
i_langu TYPE sylangu OPTIONAL
it_entries TYPE STANDARD TABLE OPTIONAL
i_logical_object TYPE tadir-object OPTIONAL
CHANGING
c_deliver TYPE text15 OPTIONAL
c_clidep TYPE dd02l-clidep OPTIONAL
c_contflag TYPE dd02l-contflag OPTIONAL.
CLASS-METHODS add_to_transport
IMPORTING
i_object TYPE e071-object "e.g. TABD
i_obj_name TYPE c "flexible number of characters
i_tabkey TYPE e071k-tabkey OPTIONAL "only for TABU
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 register_inactive_object
IMPORTING
i_objtype TYPE e071-object
i_treetype TYPE e071-object OPTIONAL "space = do not update tree,
optionally different type in tree, e.g. TABL vs. CDS
i_objname TYPE c.
CLASS-METHODS log_message
IMPORTING i_object TYPE e071-object OPTIONAL
i_obj_name TYPE c OPTIONAL.
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_msgty TYPE symsgty DEFAULT 'I'
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, gv_progname_rept.
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 INTO sy-lisel. "#EC *
CALL METHOD log_message.
r_return_code = 3.
RETURN.
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
"Does not work if customer use user SAP to implement notes....
"==> 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 ) ).
IF sy-subrc EQ 0.
"If customer used user SAP to apply that report they have to comment out
the following 4 lines:
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 = 0.
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 INTO sy-lisel.
"#EC *
CALL METHOD log_message.
r_return_code = 7. RETURN.
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
MESSAGE i666(01) WITH 'Running in Update Mode' 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. "#EC NO_HANDLER
ENDTRY.
"Set goon for all regarding message TR015 if possible
DATA: BEGIN OF ls_msg,
id TYPE symsgid VALUE 'TR',
ty TYPE symsgty,
no TYPE symsgno VALUE '015',
END OF ls_msg.
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
ls_msg-no = 015. "TR015
READ TABLE <gt_confirmed_messages> TRANSPORTING NO FIELDS WITH KEY table_line
= ls_msg.
IF sy-subrc NE 0.
APPEND ls_msg TO <gt_confirmed_messages>.
ENDIF.
ls_msg-no = 693. "TR693
READ TABLE <gt_confirmed_messages> TRANSPORTING NO FIELDS WITH KEY table_line
= ls_msg.
IF sy-subrc NE 0.
APPEND ls_msg 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 (TR015)''' 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.
CHECK NOT i_object IS INITIAL.
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.
CASE i_object.
WHEN 'DOCU'.
IF 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.
ELSE.
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.
ENDIF.
WHEN 'FUNH'.
r_text = 'Function Module Release Status'. "#EC NOTEXT
WHEN 'PROC'.
r_text = 'HDB Stored Procedure'. "#EC NOTEXT
WHEN 'ALVV'.
r_text = 'ALV Standard Variant'. "#EC NOTEXT
WHEN OTHERS.
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.
ENDCASE.
ENDMETHOD. "get_object_text

METHOD create_doma.
DATA: ls_dd01v TYPE dd01v,
lt_dd07v TYPE TABLE OF dd07v,
ls_dd07v TYPE dd07v,
l_update,
ls_domname LIKE LINE OF gr_domname VALUE 'IEQ'.
FIELD-SYMBOLS: <l_appendname> TYPE c,
<ls_dd07v> LIKE LINE OF lt_dd07v.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'DOMA'
i_obj_name = i_domname.
ls_domname-low = i_domname.
COLLECT ls_domname INTO gr_domname.
CALL FUNCTION 'DDIF_DOMA_GET'
EXPORTING
name = i_domname
langu = i_langu "reads all values, returns value without
language/text if text does not exist in i_langu
state = 'M' "newest version (e.g. inactive)
IMPORTING
dd01v_wa = ls_dd01v
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
OTHERS = 0.
IF ls_dd01v IS INITIAL OR
ls_dd01v-ddtext NE i_ddtext OR
ls_dd01v-domname NE i_domname OR
ls_dd01v-datatype NE i_datatype OR
ls_dd01v-leng NE i_leng OR
i_outputlen NE 0 AND i_outputlen NE ls_dd01v-outputlen OR
i_outputlen EQ 0 AND i_leng NE ls_dd01v-outputlen OR
ls_dd01v-convexit NE i_convexit OR
ls_dd01v-decimals NE i_decimals OR
ls_dd01v-lowercase NE i_lowercase OR
ls_dd01v-signflag NE i_signflag OR
ls_dd01v-entitytab NE i_entitytab.
l_update = 'X'.
ENDIF.
ls_dd01v-domname = i_domname.
ls_dd01v-datatype = i_datatype.
ls_dd01v-leng = i_leng.
IF i_outputlen IS INITIAL.
ls_dd01v-outputlen = i_leng.
ELSE.
ls_dd01v-outputlen = i_outputlen.
ENDIF.
ls_dd01v-convexit = i_convexit.
ASSIGN ('LS_DD01V-APPENDNAME') TO <l_appendname>.
IF sy-subrc EQ 0.
<l_appendname> = i_appendname.
ENDIF.
ls_dd01v-ddlanguage = i_langu.
ls_dd01v-ddtext = i_ddtext.
ls_dd01v-domname = i_domname.
ls_dd01v-datatype = i_datatype.
ls_dd01v-leng = i_leng.
ls_dd01v-outputlen = i_outputlen.
ls_dd01v-convexit = i_convexit.
ls_dd01v-decimals = i_decimals.
ls_dd01v-lowercase = i_lowercase.
ls_dd01v-signflag = i_signflag.
ls_dd01v-entitytab = i_entitytab.
IF i_domvalue IS SUPPLIED. "INITIAL value shall be possible fix value
READ TABLE lt_dd07v ASSIGNING <ls_dd07v> WITH KEY domvalue_l = i_domvalue.
IF sy-subrc EQ 0 AND <ls_dd07v>-valpos NE i_valpos.
DELETE lt_dd07v INDEX sy-tabix. "remove value from wrong position.
LOOP AT lt_dd07v ASSIGNING <ls_dd07v>.
<ls_dd07v>-valpos = sy-tabix.
ENDLOOP.
sy-subrc = 1. "trigger insertion of value at correct position
ENDIF.
IF sy-subrc EQ 0.
"value exists -> compare text and high value
IF <ls_dd07v>-ddtext NE i_valtext OR
<ls_dd07v>-domvalue_h NE i_domvalue_h.
<ls_dd07v>-ddlanguage = i_langu.
<ls_dd07v>-ddtext = i_valtext.
<ls_dd07v>-domvalue_h = i_domvalue_h.
l_update = 'X'.
ENDIF.
ELSE.
"value does not exist -> insert
READ TABLE lt_dd07v TRANSPORTING NO FIELDS WITH KEY valpos = i_valpos.
IF sy-subrc EQ 0.
"insert new value and increase valpos of exiting entries
LOOP AT lt_dd07v ASSIGNING <ls_dd07v> WHERE valpos GE i_valpos.
ADD 1 TO <ls_dd07v>-valpos.
ENDLOOP.
ENDIF.
CLEAR ls_dd07v.
ls_dd07v-domname = i_domname.
ls_dd07v-domvalue_l = i_domvalue.
ls_dd07v-domvalue_h = i_domvalue_h.
IF i_valpos IS INITIAL.
DESCRIBE TABLE lt_dd07v.
ls_dd07v-valpos = sy-tfill + 1.
ELSE.
ls_dd07v-valpos = i_valpos.
ENDIF.
ls_dd07v-ddlanguage = i_langu.
ls_dd07v-ddtext = i_valtext.
APPEND ls_dd07v TO lt_dd07v.
SORT lt_dd07v BY valpos.
l_update = 'X'.
ENDIF.
IF NOT lt_dd07v[] IS INITIAL.
ls_dd01v-valexi = 'X'.
ENDIF.
ENDIF.
IF l_update IS INITIAL.
IF i_domvalue IS SUPPLIED.
MESSAGE i666(01) WITH 'No update necessary for fix value' i_domvalue INTO
sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
RETURN.
ENDIF.
DATA: l_funcname TYPE funcname,
l_text TYPE tftit-stext,
l_namespace TYPE rs38l-namespace,
l_area TYPE tlibg-area.
DATA: lt_import TYPE TABLE OF rsimp,
ls_import TYPE rsimp,
lt_export TYPE TABLE OF rsexp,
ls_export TYPE rsexp,
lt_source TYPE TABLE OF rssource.
IF NOT i_convexit IS INITIAL.
"check if function group exist
CALL FUNCTION 'RPY_EXISTENCE_CHECK_FUGR'
EXPORTING
name = i_function_group
EXCEPTIONS
not_exist = 1
OTHERS = 2.
IF sy-subrc NE 0 AND NOT i_function_group IN gr_fugrname.
MESSAGE e666(01) WITH 'Function group' i_function_group 'does not exist.'
INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"check if function modules exist
DO 2 TIMES.
IF sy-index EQ 1.
CONCATENATE 'CONVERSION_EXIT_' i_convexit '_INPUT' INTO l_funcname. "#EC
NOTEXT
APPEND 'INPUT' TO lt_import. "#EC NOTEXT
APPEND 'OUTPUT' TO lt_export. "#EC NOTEXT
APPEND 'MOVE input TO output.' TO lt_source. "#EC NOTEXT
ELSE.
CONCATENATE 'CONVERSION_EXIT_' i_convexit '_OUTPUT' INTO l_funcname. "#EC
NOTEXT
ENDIF.
CALL FUNCTION 'FUNCTION_EXISTS'
EXPORTING
funcname = l_funcname
EXCEPTIONS
function_not_exist = 1
OTHERS = 0.
IF sy-subrc EQ 1.
"create empty function module on the fly
IF NOT testrun IS INITIAL.
MESSAGE s666(01) WITH 'Conversion exit function module' l_funcname
'will be created.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CONTINUE.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_object = 'FUNC'
i_obj_name = l_funcname
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0.
l_text = l_funcname.
IF i_function_group+1 CA '/'.
ADD 2 TO sy-fdpos.
l_namespace = i_function_group(sy-fdpos).
l_area = i_function_group+sy-fdpos.
ELSE.
l_area = i_function_group.
ENDIF.
CALL FUNCTION 'RS_FUNCTIONMODULE_INSERT'
EXPORTING
funcname = l_funcname
function_pool = l_area
namespace = l_namespace
short_text = l_text
suppress_corr_check = ' '
suppress_language_check = 'X'
authority_check = 'X'
suppress_upgrade_check = 'X'
TABLES
import_parameter = lt_import
export_parameter = lt_export
source = lt_source
EXCEPTIONS
OTHERS = 1.
ENDIF.
IF sy-subrc EQ 0.
MESSAGE s666(01) WITH 'Search help exit function module' l_funcname
'has been created.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
CALL METHOD log_message.
RETURN.
ENDIF.
ENDIF.
ENDDO.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_object = 'DOMA'
i_obj_name = i_domname
i_devclass = i_devclass
i_langu = i_langu
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
"align redundant field DOMMASTER with TADIR-MASTERLANG
SELECT SINGLE masterlang FROM tadir INTO ls_dd01v-dommaster
WHERE pgmid EQ 'R3TR'
AND object EQ 'DOMA'
AND obj_name EQ i_domname.
CALL FUNCTION 'DDIF_DOMA_PUT'
EXPORTING
name = i_domname
dd01v_wa = ls_dd01v
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
doma_not_found = 1
name_inconsistent = 2
doma_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE e108(do) WITH i_domname INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD register_inactive_object
EXPORTING
i_objtype = 'DOMA'
i_objname = i_domname.
ENDMETHOD. "create_doma

METHOD create_dtel.
DATA: ls_dd04v TYPE dd04v,
l_gotstate,
ls_rollname LIKE LINE OF gr_domname VALUE 'IEQ'.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'DTEL'
i_obj_name = i_rollname.
ls_rollname-low = i_rollname.
COLLECT ls_rollname INTO gr_rollname.
CALL FUNCTION 'DDIF_DTEL_GET'
EXPORTING
name = i_rollname
langu = i_langu
state = 'M' "newest version (e.g. inactive)
IMPORTING
dd04v_wa = ls_dd04v
gotstate = l_gotstate
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0 AND
ls_dd04v-rollname EQ i_rollname AND
ls_dd04v-ddlanguage EQ i_langu AND
ls_dd04v-memoryid EQ i_memoryid AND
ls_dd04v-logflag EQ i_logflag AND
ls_dd04v-headlen EQ i_headlen AND
ls_dd04v-scrlen1 EQ i_scrlen1 AND
ls_dd04v-scrlen2 EQ i_scrlen2 AND
ls_dd04v-scrlen3 EQ i_scrlen3 AND
ls_dd04v-ddtext EQ i_ddtext AND
ls_dd04v-reptext EQ i_reptext AND
ls_dd04v-scrtext_m EQ i_scrtext_m AND
ls_dd04v-scrtext_l EQ i_scrtext_l AND
ls_dd04v-scrtext_s EQ i_scrtext_s AND
ls_dd04v-shlpname EQ i_shlpname AND
ls_dd04v-shlpfield EQ i_shlpfield AND
ls_dd04v-deffdname EQ i_deffdname AND
ls_dd04v-proxytype EQ i_proxytype AND
( ls_dd04v-domname NE space AND ls_dd04v-datatype NE 'REF' OR
ls_dd04v-refkind EQ i_refkind AND ls_dd04v-reftype EQ i_reftype ) AND

( i_domname NE space AND ls_dd04v-domname EQ i_domname


OR
i_domname EQ space AND ls_dd04v-datatype EQ i_datatype AND
ls_dd04v-decimals EQ i_decimals AND
ls_dd04v-leng EQ i_leng ).
"data element already exists with that properties
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"check whether domain exists
IF NOT i_domname IS INITIAL AND i_datatype NE 'REF'.
READ TABLE gr_domname TRANSPORTING NO FIELDS WITH KEY low = i_domname.
IF sy-subrc NE 0.
SELECT SINGLE domname FROM dd01l INTO sy-lisel WHERE domname EQ i_domname.
ENDIF.
IF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Domain' i_domname 'does not exist' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
IF testrun IS INITIAL.
RETURN.
ENDIF.
ENDIF.
ENDIF.
ls_dd04v-ddlanguage = i_langu.
ls_dd04v-ddtext = i_ddtext.
ls_dd04v-scrtext_s = i_scrtext_s.
ls_dd04v-scrlen1 = i_scrlen1.
ls_dd04v-scrtext_m = i_scrtext_m.
ls_dd04v-scrlen2 = i_scrlen2.
ls_dd04v-scrtext_l = i_scrtext_l.
ls_dd04v-scrlen3 = i_scrlen3.
IF NOT i_reptext IS INITIAL.
ls_dd04v-reptext = i_reptext.
IF i_headlen IS INITIAL.
ls_dd04v-headlen = strlen( i_reptext ).
ELSE.
ls_dd04v-headlen = i_headlen.
ENDIF.
ENDIF.
ls_dd04v-rollname = i_rollname.
ls_dd04v-domname = i_domname.
IF ls_dd04v-domname IS INITIAL.
ls_dd04v-datatype = i_datatype.
ls_dd04v-decimals = i_decimals.
ls_dd04v-leng = i_leng.
ENDIF.
ls_dd04v-shlpname = i_shlpname.
ls_dd04v-shlpfield = i_shlpfield.
ls_dd04v-deffdname = i_deffdname.
ls_dd04v-logflag = i_logflag.
ls_dd04v-memoryid = i_memoryid.
ls_dd04v-refkind = i_refkind.
ls_dd04v-reftype = i_reftype.
ls_dd04v-proxytype = i_proxytype.
CALL METHOD add_to_transport
EXPORTING
i_object = 'DTEL'
i_obj_name = i_rollname
i_devclass = i_devclass
i_langu = i_langu "masterlanguage (only relevant during first call)
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
"align redundant field DTELMASTER with TADIR-MASTERLANG
SELECT SINGLE masterlang FROM tadir INTO ls_dd04v-dtelmaster
WHERE pgmid EQ 'R3TR'
AND object EQ 'DTEL'
AND obj_name EQ i_rollname.
CALL FUNCTION 'DDIF_DTEL_PUT'
EXPORTING
name = i_rollname
dd04v_wa = ls_dd04v
EXCEPTIONS
dtel_not_found = 1
name_inconsistent = 2
dtel_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc NE 0.
CALL METHOD log_message.
RETURN.
ELSE.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
CALL METHOD register_inactive_object
EXPORTING
i_objtype = 'DTEL'
i_objname = i_rollname.
ENDMETHOD. "create_dtel

METHOD create_table_type.
DATA: ls_dd40v TYPE dd40v,
lt_dd42v TYPE tt_dd42v,
lt_dd43v TYPE tt_dd43v,
ls_ttypname LIKE LINE OF gr_ttypname VALUE 'IEQ'.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'TTYP'
i_obj_name = i_typename.
ls_ttypname-low = i_typename.
COLLECT ls_ttypname INTO gr_ttypname.
CALL FUNCTION 'DDIF_TTYP_GET'
EXPORTING
name = i_typename
state = 'M'
langu = i_langu "with text
IMPORTING
dd40v_wa = ls_dd40v
TABLES
dd42v_tab = lt_dd42v
* dd43v_tab = lt_dd43v
EXCEPTIONS
illegal_input = 1
OTHERS = 2.
IF sy-subrc EQ 0 AND "exists
( ls_dd40v-ddtext = i_ddtext OR i_ddtext IS INITIAL ) AND
ls_dd40v-rowtype = i_rowtype AND
ls_dd40v-datatype = i_datatype AND
( ls_dd40v-leng = i_leng OR i_leng IS INITIAL ) AND
( ls_dd40v-decimals = i_decimals OR i_decimals IS INITIAL ) AND
ls_dd40v-rowkind = i_rowkind AND
ls_dd40v-accessmode = i_accessmode AND
ls_dd40v-keydef = i_keydef AND
ls_dd40v-keykind = i_keykind AND
ls_dd40v-generic = i_generic AND
ls_dd40v-proxytype = i_proxytype AND
lt_dd43v = it_dd43v AND
lt_dd42v = it_dd42v.
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"basic consistency checks
IF i_rowkind EQ 'S'. "structure
READ TABLE gt_tabname TRANSPORTING NO FIELDS WITH KEY table_line = i_rowtype.
"new structure
IF sy-subrc NE 0.
SELECT SINGLE tabname FROM dd02l INTO sy-lisel WHERE tabname EQ i_rowtype.
"existing structure
ENDIF.
IF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Structure' i_rowtype 'does not exist' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ENDIF.
"now create/update
ls_dd40v-typename = i_typename.
ls_dd40v-rowtype = i_rowtype.
ls_dd40v-rowkind = i_rowkind.
ls_dd40v-ttypkind = i_ttypkind.
ls_dd40v-range_ctyp = i_range_ctyp.
ls_dd40v-datatype = i_datatype.
ls_dd40v-leng = i_leng.
ls_dd40v-decimals = i_decimals.
ls_dd40v-accessmode = i_accessmode.
ls_dd40v-keydef = i_keydef.
ls_dd40v-keykind = i_keykind.
ls_dd40v-proxytype = i_proxytype.
ls_dd40v-generic = i_generic.
IF NOT i_ddtext IS INITIAL.
ls_dd40v-ddtext = i_ddtext.
ls_dd40v-ddlanguage = i_langu.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_object = 'TTYP'
i_langu = i_langu
i_obj_name = i_typename
i_devclass = i_devclass
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
CALL FUNCTION 'DDIF_TTYP_PUT'
EXPORTING
name = i_typename
dd40v_wa = ls_dd40v
TABLES
dd42v_tab = it_dd42v
* dd43v_tab = it_dd43v
EXCEPTIONS
ttyp_not_found = 1
name_inconsistent = 2
ttyp_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc NE 0.
CALL METHOD log_message.
RETURN.
ELSE.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
CALL METHOD register_inactive_object
EXPORTING
i_objtype = 'TTYP'
i_objname = i_typename.
ENDMETHOD. "create_table_type

METHOD create_table.
DATA: ls_dd02v TYPE dd02v,
ls_dd09l TYPE dd09l,
lt_dd03p TYPE TABLE OF dd03p,
lt_dd05m TYPE TABLE OF dd05m,
lt_dd08v TYPE TABLE OF dd08v,
lt_dd12v TYPE TABLE OF dd12v,
lt_dd17v TYPE TABLE OF dd17v,
lt_dd35v TYPE TABLE OF dd35v,
lt_dd36m TYPE TABLE OF dd36m,
l_treetype TYPE trobjtype,
l_technical_setting_changed,
ls_tabname LIKE LINE OF gr_tabname VALUE 'IEQ'.
DATA: BEGIN OF ls_dd09l_new, "field available release dependent
javaonly,
roworcolst,
END OF ls_dd09l_new.
DATA: BEGIN OF ls_dd02v_new,
is_gtt,
END OF ls_dd02v_new.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'TABD'
i_obj_name = i_tabname.
ls_tabname-low = i_tabname.
COLLECT ls_tabname INTO gr_tabname.
CALL FUNCTION 'DDIF_TABL_GET'
EXPORTING
name = i_tabname
state = 'M' "newest version (e.g. inactive)
langu = i_langu
IMPORTING
* GOTSTATE = GOTSTATE
dd02v_wa = ls_dd02v
dd09l_wa = ls_dd09l
TABLES
dd03p_tab = lt_dd03p
dd05m_tab = lt_dd05m
dd08v_tab = lt_dd08v
dd12v_tab = lt_dd12v
dd17v_tab = lt_dd17v
dd35v_tab = lt_dd35v
dd36m_tab = lt_dd36m
EXCEPTIONS
OTHERS = 0.
"handling of fields which do no exist in all releases:
ls_dd09l_new-roworcolst = i_roworcolst. "default: make equal to avoid
unneccessary update
ls_dd09l_new-javaonly = i_javaonly. "default: make equal to avoid
unneccessary update
MOVE-CORRESPONDING ls_dd09l TO ls_dd09l_new. "overwrite default with actual
value if exists
ls_dd02v_new-is_gtt = i_is_gtt.
MOVE-CORRESPONDING ls_dd02v TO ls_dd02v_new. "overwrite default with actual
value if exists

IF ls_dd02v-tabclass EQ 'INTTAB'.
l_technical_setting_changed = space. "structures do not have technical
settings
ELSEIF ls_dd02v-contflag EQ i_contflag AND
ls_dd02v-buffered EQ i_buffered AND
ls_dd09l-tabkat EQ i_tabkat AND
ls_dd09l-tabart EQ i_tabart AND
ls_dd09l-pufferung EQ i_pufferung AND
ls_dd09l-bufallow EQ i_bufallow AND
ls_dd09l-schfeldanz EQ i_schfeldanz AND
ls_dd09l-protokoll EQ i_protokoll AND
ls_dd09l-uebersetz EQ i_uebersetz AND
ls_dd09l_new-javaonly EQ i_javaonly AND
( ls_dd09l_new-roworcolst EQ i_roworcolst OR i_roworcolst IS INITIAL ) AND
( ls_dd02v_new-is_gtt EQ i_is_gtt OR i_is_gtt IS INITIAL ) AND
ls_dd09l-speichpuff EQ i_speichpuff. "do not check javaonly field
l_technical_setting_changed = space.
ELSE.
l_technical_setting_changed = 'X'.
ENDIF.
IF ls_dd02v-tabname NE space AND "existing.
ls_dd02v-ddtext EQ i_ddtext AND
ls_dd02v-exclass EQ i_exclass AND
ls_dd02v-proxytype EQ i_proxytype AND
ls_dd02v-tabclass EQ i_tabclass AND
ls_dd02v-authclass EQ i_authclass AND
ls_dd02v-mainflag EQ i_mainflag AND
ls_dd02v-sqltab EQ i_sqltab AND
l_technical_setting_changed IS INITIAL.
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"new table
ls_dd02v-tabname = i_tabname.
ls_dd02v-ddlanguage = i_langu.
ls_dd02v-exclass = i_exclass.
ls_dd02v-proxytype = i_proxytype.
ls_dd02v-tabclass = i_tabclass.
ls_dd02v-authclass = i_authclass.
ls_dd02v-mainflag = i_mainflag.
ls_dd02v-sqltab = i_sqltab.
IF i_ddtext IS INITIAL.
ls_dd02v-ddtext = i_tabname.
ELSE.
ls_dd02v-ddtext = i_ddtext.
ENDIF.
IF ls_dd02v-tabclass EQ 'CLUSTER' OR "only for real database tables
ls_dd02v-tabclass EQ 'POOL' OR
ls_dd02v-tabclass EQ 'TRANSP'.
ls_dd02v-contflag = i_contflag.
ls_dd02v-buffered = i_buffered.
ls_dd09l-tabname = i_tabname.
ls_dd09l-tabkat = i_tabkat.
ls_dd09l-tabart = i_tabart.
ls_dd09l-pufferung = i_pufferung.
ls_dd09l-bufallow = i_bufallow.
ls_dd09l-schfeldanz = i_schfeldanz.
ls_dd09l-protokoll = i_protokoll.
ls_dd09l-uebersetz = i_uebersetz.
ls_dd09l-speichpuff = i_speichpuff.
ls_dd09l_new-javaonly = i_javaonly.
ls_dd09l_new-roworcolst = i_roworcolst.
MOVE-CORRESPONDING ls_dd09l_new TO ls_dd09l.
ls_dd02v_new-is_gtt = i_is_gtt.
MOVE-CORRESPONDING ls_dd02v_new TO ls_dd02v.
l_treetype = 'TABL'.
ELSE.
l_treetype = 'CDS'.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_object = 'TABL'
i_langu = i_langu
i_obj_name = i_tabname
i_devclass = i_devclass
i_edtflag = i_edtflag
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
IF l_technical_setting_changed EQ 'X'.
CALL METHOD add_to_transport
EXPORTING
i_object = 'TABT'
i_langu = i_langu
i_obj_name = i_tabname
i_devclass = i_devclass
i_edtflag = i_edtflag
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
ENDIF.
"update redundant field masterlang with TADIR value
SELECT SINGLE masterlang FROM tadir INTO ls_dd02v-masterlang
WHERE pgmid EQ 'R3TR'
AND object EQ 'TABL'
AND obj_name EQ i_tabname.
CALL FUNCTION 'DDIF_TABL_PUT'
EXPORTING
name = i_tabname
dd02v_wa = ls_dd02v
dd09l_wa = ls_dd09l
TABLES
dd03p_tab = lt_dd03p
dd05m_tab = lt_dd05m
dd08v_tab = lt_dd08v
dd35v_tab = lt_dd35v
dd36m_tab = lt_dd36m
EXCEPTIONS
tabl_not_found = 1
name_inconsistent = 2
tabl_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
CALL METHOD log_message.
RETURN.
ENDIF.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD register_inactive_object
EXPORTING
i_objtype = 'TABL'
i_treetype = l_treetype
i_objname = i_tabname.
ENDMETHOD. "create_table
METHOD add_field_to_table.
DATA: ls_dd02v TYPE dd02v,
ls_dd09l TYPE dd09l,
lt_dd03p TYPE TABLE OF dd03p,
ls_dd05m TYPE dd05m,
lt_dd05m TYPE TABLE OF dd05m,
ls_dd08v TYPE dd08v,
lt_dd08v TYPE TABLE OF dd08v,
lt_dd12v TYPE TABLE OF dd12v,
lt_dd17v TYPE TABLE OF dd17v,
lt_dd35v TYPE TABLE OF dd35v,
lt_dd36m TYPE TABLE OF dd36m,
l_tabix TYPE sytabix,
l_state TYPE ddgotstate,
l_include TYPE fieldname,
l_type TYPE rollname,
ls_tabname LIKE LINE OF gr_tabname VALUE 'IEQ'.
FIELD-SYMBOLS: <ls_dd03p> TYPE dd03p.
IF i_remove IS INITIAL.
sy-lisel = 'Add field(s) to table'. "#EC NOTEXT
ELSE.
sy-lisel = 'Remove field(s) from table'. "#EC NOTEXT
ENDIF.
CALL METHOD set_context
EXPORTING
i_langu = space
i_text = sy-lisel
i_object = 'TABD'
i_obj_name = i_tabname.
ls_tabname-low = i_tabname.
COLLECT ls_tabname INTO gr_tabname.
CALL FUNCTION 'DDIF_TABL_GET'
EXPORTING
name = i_tabname
state = 'M' "newest version (e.g. inactive)
IMPORTING
dd02v_wa = ls_dd02v
dd09l_wa = ls_dd09l
TABLES
dd03p_tab = lt_dd03p
dd05m_tab = lt_dd05m
dd08v_tab = lt_dd08v
dd12v_tab = lt_dd12v
dd17v_tab = lt_dd17v
dd35v_tab = lt_dd35v
dd36m_tab = lt_dd36m
EXCEPTIONS
illegal_input = 1
OTHERS = 2.
IF sy-subrc NE 0 OR ls_dd02v-tabname IS INITIAL. "not existing.
READ TABLE gr_tabname TRANSPORTING NO FIELDS WITH KEY low = i_tabname.
IF testrun IS INITIAL OR i_remove EQ 'X' OR sy-subrc NE 0. "'i_tabname NOT IN
gr_tabname' does not work since there might be database tables with sign = 'E'
MESSAGE e666(01) WITH 'Error while reading table' i_tabname INTO sy-lisel.
"#EC *
CALL METHOD log_message.
ENDIF.
RETURN.
ENDIF.
CASE ls_dd02v-tabclass.
WHEN 'CLUSTER' OR 'POOL' OR 'TRANSP'.
COLLECT ls_tabname INTO gr_dbtabname.

CALL FUNCTION 'DDIF_TABL_GET'


EXPORTING
name = i_tabname
state = 'A'
IMPORTING
gotstate = l_state
EXCEPTIONS
OTHERS = 0.
IF l_state EQ 'A'.
ls_tabname-sign = 'E'. "exclude from activation step 1
COLLECT ls_tabname INTO gr_tabname.
ENDIF.
IF ls_dd09l IS INITIAL. "technical settings are missing -> will give error
in RS_DD_CHECK_ACTIVATE
MESSAGE e173(e2) INTO sy-lisel WITH 'TABL' i_tabname. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ENDCASE.
IF i_remove IS INITIAL.
"check length of fieldname.
DATA: ls_saac TYPE saanorm,
l_rclist TYPE char10.
ls_saac-saa_length = 'X'.
CALL FUNCTION 'DD_TABL_CHK_SAANORM'
EXPORTING
name = i_fieldname
saac = ls_saac
objecttype = 'TBFD' "table field
subtype = ls_dd02v-tabclass
IMPORTING
rclist = l_rclist.
IF NOT l_rclist IS INITIAL.
MESSAGE e102(ad) WITH i_fieldname INTO sy-lisel.
CALL METHOD log_message.
MESSAGE w666(01) WITH 'Please refer to note 1680583.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"check whether data element respectivly included/appended/referenced
structure exists
IF i_rollname NE space AND i_rollname NE 'DATA' AND i_rollname NE 'OBJECT'.
"type ref to DATA/OBJECT is always allowed
READ TABLE gr_rollname TRANSPORTING NO FIELDS WITH KEY low = i_rollname.
"new data element
IF sy-subrc NE 0.
READ TABLE gt_tabname TRANSPORTING NO FIELDS WITH KEY table_line =
i_rollname. "new structure
ENDIF.
IF sy-subrc NE 0.
READ TABLE gt_ttypname TRANSPORTING NO FIELDS WITH KEY table_line =
i_rollname. "new table type
ENDIF.
IF sy-subrc NE 0.
SELECT SINGLE rollname FROM dd04l INTO sy-lisel WHERE rollname EQ
i_rollname. "#EC CI_GENBUFF
ENDIF.
IF sy-subrc NE 0.
SELECT SINGLE tabname FROM dd03l INTO sy-lisel WHERE tabname EQ
i_rollname. "existing structure
ENDIF.
IF sy-subrc NE 0.
SELECT SINGLE typename FROM dd40l INTO sy-lisel WHERE typename EQ
i_rollname. "existing table_type
ENDIF.
IF sy-subrc NE 0.
SELECT SINGLE clsname FROM seoclass INTO sy-lisel WHERE clsname EQ
i_rollname. "existing class
ENDIF.
IF sy-subrc NE 0.
IF i_rollname(3) EQ 'CL_'. "probably a class
MESSAGE w666(01) WITH 'Class' i_rollname 'does not exist (yet)' INTO
sy-lisel. "#EC *
CALL METHOD log_message.
ELSEIF i_fieldname(6) EQ c_include6 AND ( i_rollname(3) EQ 'CI_' OR
i_rollname(3) EQ 'SI_' ).
"Customer/industry include
ELSE.
MESSAGE e666(01) WITH 'Data Element or Structure' i_rollname 'does not
exist' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ENDIF.
ENDIF.
"Find field to insert/change
IF i_fieldname(6) EQ c_include6.
READ TABLE lt_dd03p ASSIGNING <ls_dd03p>
WITH KEY fieldname = i_fieldname
precfield = i_rollname.
IF sy-subrc EQ 0 AND <ls_dd03p>-groupname = i_groupname.
MESSAGE i666(01) WITH 'Include ' i_rollname 'already part of table'
i_tabname INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ELSE.
READ TABLE lt_dd03p ASSIGNING <ls_dd03p>
WITH KEY fieldname = i_fieldname depth = 0.
IF sy-subrc EQ 0.
"extract foreign key relation ship for current field
DATA: lt_dd05m_h TYPE tt_dd05m,
it_dd05m_h TYPE tt_dd05m.

it_dd05m_h[] = it_dd05m[]. "one field


lt_dd05m_h[] = lt_dd05m[].
DELETE lt_dd05m_h WHERE fieldname NE i_fieldname. "now also one field
CLEAR ls_dd05m.
MODIFY lt_dd05m_h FROM ls_dd05m TRANSPORTING domname datatype leng WHERE
NOT fieldname IS INITIAL.
MODIFY it_dd05m_h FROM ls_dd05m TRANSPORTING domname datatype leng WHERE
NOT fieldname IS INITIAL.
CLEAR ls_dd08v.
READ TABLE lt_dd08v INTO ls_dd08v WITH KEY fieldname = i_fieldname.
"Check if fields already has data element
DATA anonymous TYPE xfeld.
FIELD-SYMBOLS <anonymous> TYPE ANY.
ASSIGN COMPONENT 'ANONYMOUS' OF STRUCTURE <ls_dd03p> TO <anonymous>.
IF sy-subrc <> 0.
anonymous = i_anonymous.
ASSIGN anonymous TO <anonymous>.
ENDIF.
IF "i_context EQ l_context AND "not yet supported
i_rollname EQ <ls_dd03p>-rollname AND
( i_datatype EQ <ls_dd03p>-datatype OR i_datatype IS INITIAL ) AND
( i_decimals EQ <ls_dd03p>-decimals OR i_decimals IS INITIAL ) AND
( i_leng EQ <ls_dd03p>-leng OR i_leng IS INITIAL ) AND
i_keyflag EQ <ls_dd03p>-keyflag AND
i_languflag EQ <ls_dd03p>-languflag AND
i_notnull EQ <ls_dd03p>-notnull AND
i_reftable EQ <ls_dd03p>-reftable AND
i_reffield EQ <ls_dd03p>-reffield AND
i_anonymous EQ <anonymous> AND
i_groupname EQ <ls_dd03p>-groupname AND
* i_reftype EQ <ls_dd03p>-reftype AND
( i_datatype NE c_type_ref_to OR <ls_dd03p>-reftype NE space ) AND
it_dd05m_h[] EQ lt_dd05m_h[] AND
is_dd08v EQ ls_dd08v.
"field already exists with correct data element, langu and foreign key
IF i_datatype NE c_type_ref_to OR <ls_dd03p>-reftype NE space.
MESSAGE i666(01) WITH 'No update neccessary for field' i_fieldname
INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ELSE.
MESSAGE i666(01) WITH 'Properties of field' i_fieldname 'will be
changed' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
ENDIF.
IF NOT <ls_dd03p> IS ASSIGNED. "new field
"Find context (one field is enough since fieldname is unique)
IF i_context EQ i_tabname.
l_tabix = 1. "table name as context -> insert at the very beginning
ELSEIF NOT i_context IS INITIAL.
SPLIT i_context AT space INTO l_include l_type.
IF NOT l_type IS INITIAL. ".include XYZ or .inclu-abc XYZ
READ TABLE lt_dd03p TRANSPORTING NO FIELDS "include name as context
WITH KEY fieldname = l_include
precfield = l_type.
ELSE.
READ TABLE lt_dd03p TRANSPORTING NO FIELDS
WITH KEY fieldname = i_context.
IF sy-subrc NE 0.
READ TABLE lt_dd03p TRANSPORTING NO FIELDS "include name as context
(before version 4.25)
WITH KEY precfield = i_context.
ENDIF.
ENDIF.
IF sy-subrc NE 0 AND NOT lt_dd03p[] IS INITIAL.
READ TABLE gr_tabname TRANSPORTING NO FIELDS WITH KEY low = i_tabname.
IF testrun IS INITIAL OR sy-subrc NE 0. "'i_tabname NOT IN gr_tabname'
does not work since there might be database tables with sign = 'E'
MESSAGE e666(01) WITH 'Context' i_context 'not found for field'
i_fieldname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
"missing context may be created during update hence give success
message in testrun
IF i_fieldname(6) EQ c_include6.
MESSAGE i666(01) WITH i_fieldname+1 i_rollname 'will be added' INTO
sy-lisel. "#EC *
ELSE.
MESSAGE i666(01) WITH 'Field' i_fieldname 'will be added' INTO sy-
lisel. "#EC *
ENDIF.
CALL METHOD log_message.
ENDIF.
RETURN.
ENDIF.
"insert new field after context
l_tabix = sy-tabix + 1.
ELSE.
"no context -> insert field at end
DESCRIBE TABLE lt_dd03p LINES sy-tfill.
l_tabix = sy-tfill + 1.
ENDIF.
INSERT INITIAL LINE INTO lt_dd03p INDEX l_tabix. READ TABLE lt_dd03p INDEX
l_tabix ASSIGNING <ls_dd03p>. "46C
ENDIF.
<ls_dd03p>-tabname = i_tabname.
<ls_dd03p>-fieldname = i_fieldname.
<ls_dd03p>-groupname = i_groupname.
<ls_dd03p>-languflag = i_languflag.
IF <anonymous> IS ASSIGNED.
<anonymous> = i_anonymous.
ENDIF.
<ls_dd03p>-notnull = i_notnull.
<ls_dd03p>-keyflag = i_keyflag.
<ls_dd03p>-reftable = i_reftable.
<ls_dd03p>-reffield = i_reffield.
"initialize all attributes before populating them depending in use case
CLEAR: <ls_dd03p>-rollname,
<ls_dd03p>-datatype,
<ls_dd03p>-decimals,
<ls_dd03p>-leng,
<ls_dd03p>-ddtext,
<ls_dd03p>-ddlanguage,
<ls_dd03p>-precfield,
<ls_dd03p>-comptype.
IF i_fieldname(6) EQ c_include6.
<ls_dd03p>-precfield = i_rollname.
<ls_dd03p>-comptype = 'S'.
ELSEIF i_rollname IS INITIAL.
<ls_dd03p>-datatype = i_datatype.
<ls_dd03p>-decimals = i_decimals.
<ls_dd03p>-leng = i_leng.
IF i_ddtext NE space.
<ls_dd03p>-ddtext = i_ddtext.
<ls_dd03p>-ddlanguage = i_langu.
ENDIF.
ELSE.
<ls_dd03p>-rollname = i_rollname.
IF i_datatype EQ c_type_ref_to.
<ls_dd03p>-datatype = i_datatype.
<ls_dd03p>-comptype = 'R'.
ENDIF.
ENDIF.
LOOP AT lt_dd03p ASSIGNING <ls_dd03p> FROM l_tabix.
<ls_dd03p>-position = sy-tabix.
ENDLOOP.
"field will be added
IF i_fieldname(6) EQ c_include6.
MESSAGE i666(01) WITH i_fieldname+1 i_rollname 'will be added' INTO sy-
lisel. "#EC *
ELSE.
MESSAGE i666(01) WITH 'Field' i_fieldname 'will be added' INTO sy-lisel.
"#EC *
ENDIF.
CALL METHOD log_message.
DELETE lt_dd08v WHERE fieldname EQ i_fieldname.
DELETE lt_dd05m WHERE fieldname EQ i_fieldname.
LOOP AT it_dd05m INTO ls_dd05m WHERE NOT checktable IS INITIAL
AND NOT checkfield IS INITIAL.
APPEND ls_dd05m TO lt_dd05m.
ENDLOOP.
IF NOT is_dd08v IS INITIAL.
APPEND is_dd08v TO lt_dd08v.
ENDIF.
ELSEIF i_remove EQ 'X'.
IF i_fieldname(6) EQ c_include6.
DELETE lt_dd03p WHERE fieldname EQ i_fieldname AND precfield EQ i_rollname.
IF sy-subrc EQ 0.
MESSAGE i666(01) WITH i_fieldname+1 i_rollname 'will be removed' INTO sy-
lisel. "#EC *
CALL METHOD log_message.
ELSE.
MESSAGE s666(01) WITH 'No update neccessary for' i_fieldname+1 i_rollname
INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ELSE.
DELETE lt_dd03p WHERE fieldname EQ i_fieldname.
IF sy-subrc EQ 0.
MESSAGE i666(01) WITH 'Field' i_fieldname 'will be removed' INTO sy-
lisel. "#EC *
CALL METHOD log_message.
ELSE.
MESSAGE s666(01) WITH 'No update neccessary for field' i_fieldname INTO
sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ENDIF.
DELETE lt_dd05m WHERE fieldname EQ i_fieldname.
DELETE lt_dd08v WHERE fieldname EQ i_fieldname.
DELETE lt_dd35v WHERE fieldname EQ i_fieldname.
DELETE lt_dd36m WHERE fieldname EQ i_fieldname.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_object = 'TABL'
i_obj_name = i_tabname
i_edtflag = i_edtflag
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
CALL FUNCTION 'DDIF_TABL_PUT'
EXPORTING
name = i_tabname
dd02v_wa = ls_dd02v
dd09l_wa = ls_dd09l
TABLES
dd03p_tab = lt_dd03p
dd05m_tab = lt_dd05m
dd08v_tab = lt_dd08v
dd35v_tab = lt_dd35v
dd36m_tab = lt_dd36m
EXCEPTIONS
tabl_not_found = 1
name_inconsistent = 2
tabl_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
CALL METHOD log_message.
RETURN.
ENDIF.
CALL METHOD register_inactive_object
EXPORTING
i_objtype = 'TABL'
i_objname = i_tabname.
ENDMETHOD. "add_field_to_table

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 = 0.
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 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.
DATA: lt_dd02v_inc TYPE TABLE OF dd02v,
ls_dd02v_inc TYPE dd02v,
l_auth_subrc TYPE sysubrc.
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.
IF sy-subrc EQ 0.
"check dependent database tables similar to DD_TABL_ACT
"==> shall be part of RS_DD_CHECK_ACTIVATE of DD_TABL_ACT
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 '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.
IF sy-cprog EQ myrepid.
MESSAGE i666(01) WITH 'No activation neccessary' '' '' '' INTO sy-lisel.
"#EC *
ELSE.
MESSAGE i666(01) WITH 'No activation neccessary' '' '' ''. "#EC *
ENDIF.
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'.
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 a666(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 = ' '
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'.
lv_answer = '1'.
* 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.
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
DATA: lt_swotice TYPE TABLE OF swotice.
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.
IF NOT lt_swotice[] IS INITIAL.
INSERT swotice FROM TABLE lt_swotice.
ENDIF.
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 LANGUAGE 'D'. "masterlang
of RUTDBCHK
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.
CREATE DATA l_dref TYPE (ls_tabname-low).
CATCH cx_sy_create_data_error.
MESSAGE e666(01) WITH 'Data Type' ls_tabname-low 'is inconsistent'
INTO l_message. "#EC *
CALL METHOD log_message.
ENDTRY.
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
OTHERS = 0.
"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 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 create_logical_object.
DATA: lt_e071k TYPE TABLE OF e071k,
ls_e071k TYPE e071k,
lt_e071 TYPE TABLE OF e071,
ls_e071 TYPE e071,
lt_keys TYPE tr_keys,
dref TYPE REF TO data.
FIELD-SYMBOLS: <lt_table> TYPE STANDARD TABLE.
CALL METHOD set_context
EXPORTING
i_langu = space
i_object = i_object
i_obj_name = i_obj_name.
CALL METHOD lcl_wb=>add_to_transport
EXPORTING
i_object = i_object
i_obj_name = i_obj_name
i_devclass = i_devclass
i_langu = i_langu
EXCEPTIONS
simulation = 0
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
CHECK approved_logical_objects CS i_object.
IF testrun IS INITIAL.
CASE i_object.
WHEN 'IWPR'.
DATA: enqueue_/iwbep/e_sbdm_pr TYPE funcname VALUE
'ENQUEUE_/IWBEP/E_SBDM_PR',
lv_project(30), lv_user TYPE syuname.
lv_project = i_obj_name.
CALL FUNCTION enqueue_/iwbep/e_sbdm_pr
EXPORTING
mode_/iwbep/i_sbd_pr = 'X'
project = lv_project
_scope = '3'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
WHEN 'SUCD'.
DATA: enqueue_e_sacf TYPE funcname VALUE 'ENQUEUE_E_SACF',
lv_scen_name(40). "scen_name.
lv_scen_name = i_obj_name.
CALL FUNCTION enqueue_e_sacf
EXPORTING
mode_tobj_chk_ctrl_dh = 'E'
name = lv_scen_name
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
WHEN OTHERS.
CLEAR sy-subrc.
ENDCASE.
IF sy-subrc NE 0.
lv_user = sy-msgv1.
MESSAGE e666(01) WITH i_object i_obj_name 'is locked by user' lv_user INTO
sy-lisel. "#EC *
CALL METHOD log_message.
RAISE error.
ENDIF.
ENDIF.
ls_e071-object = i_object.
ls_e071-obj_name = i_obj_name.
CALL FUNCTION 'RESOLVE_LOGICAL_OBJECT'
EXPORTING
e071_entry = ls_e071
iv_languages = i_langu
TABLES
e071k_tab = lt_e071k
e071_tab = lt_e071
EXCEPTIONS
OTHERS = 0.
LOOP AT lt_e071k INTO ls_e071k.
AT NEW objname.
CLEAR lt_keys[].
ENDAT.
APPEND ls_e071k TO lt_keys.
AT END OF objname. "only once per table
"for other than masterlang only language dependent tables
IF i_langu NE i_masterlang.
SELECT SINGLE tobj_name FROM objsl INTO sy-lisel "fully buffered
WHERE objectname EQ i_object "e.g. CUS0
AND objecttype EQ c_logical_object
AND tobj_name EQ ls_e071k-objname "TABNAME
AND ( tobjkey LIKE '%/L/%' OR tobjkey LIKE '%/L' ).
CHECK sy-subrc EQ 0.
ENDIF.
DATA: l_whitelist TYPE string.
SELECT SINGLE tabname FROM objs INTO l_whitelist
WHERE objectname EQ i_object
AND objecttype EQ c_logical_object
AND tabname EQ ls_e071k-objname.
IF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Cannot update table' ls_e071k-objname INTO sy-
lisel. "#EC *
CALL METHOD log_message.
CONTINUE.
ENDIF.
CREATE DATA dref TYPE STANDARD TABLE OF (ls_e071k-objname) WITH DEFAULT
KEY.
ASSIGN dref->* TO <lt_table>.
PERFORM get_table_key IN PROGRAM saplsrtt
TABLES <lt_table> lt_keys
USING ls_e071k-objname space sy-mandt space space
CHANGING sy-dbcnt. "#EC *
CHECK sy-dbcnt NE 0.
IF testrun IS INITIAL.
TRY.
CALL METHOD cl_abap_dyn_prg=>check_whitelist_str "1487337
EXPORTING
val = ls_e071k-objname
whitelist = l_whitelist
RECEIVING
val_str = ls_e071k-objname.
CATCH cx_abap_not_in_whitelist.
RETURN. "will never happen
ENDTRY.
DELETE (ls_e071k-objname) FROM TABLE <lt_table>. "#EC CI_DYNTAB.
gv_repository_changed = 'X'.
ENDIF.
ENDAT.
ENDLOOP.
ENDMETHOD. "create_logical_object

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.
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.
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.
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.
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
it_client = lt_result
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
OTHERS = 0.
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 *
IF ls_trlog-class EQ 'SCPR' AND ( ls_trlog-number EQ 707 OR ls_trlog-number
EQ 871 ).
ls_trlog-severity = 'W'. "increase severity for some messages
ENDIF.
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 create_table_entries.
CONSTANTS lc_approved_system_table TYPE tabname VALUE 'APPROVED_SYSTEM_TABLE'.
DATA: lt_ko200 TYPE TABLE OF ko200,
ls_ko200 TYPE ko200,
lt_e071k TYPE TABLE OF e071k,
ls_e071k TYPE e071k.
DATA: l_keylen TYPE sy-fleng,
ls_x030l TYPE x030l,
l_no_update,
l_object TYPE tadir-object,
l_approved_system_table.
FIELD-SYMBOLS: <ls_entry> TYPE any.
DATA: dref TYPE REF TO data.
IF i_logical_object IS INITIAL AND NOT it_entries[] IS INITIAL.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'TABU'
i_obj_name = i_tabname.
ENDIF.
IF i_logical_object EQ 'X'. "used in older version
SELECT SINGLE objectname INTO l_object FROM objs WHERE tabname EQ i_tabname
AND objecttype EQ 'L'.
ELSEIF i_logical_object IS NOT INITIAL.
l_object = i_logical_object.
ENDIF.
"Currently only a bunch of tables is supported:
" - client independent
" - system tables (S / E / W) and customizing of type G
" - key fields of data type char/numc
"--- basic checks
DATA: ls_dd02v TYPE dd02v,
lt_dd03p TYPE TABLE OF dd03p,
l_rfcdest TYPE rfcdest.
CALL FUNCTION 'DD_TABL_GET' DESTINATION l_rfcdest
EXPORTING
langu = space
tabl_name = i_tabname
IMPORTING
dd02v_wa_a = ls_dd02v
TABLES
dd03p_tab_n = lt_dd03p
EXCEPTIONS
system_failure = 98 MESSAGE sy-lisel
communication_failure = 99 MESSAGE sy-lisel
access_failure = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Error reading table' i_tabname INTO sy-lisel. "#EC *
RETURN.
ENDIF.
IF ls_dd02v IS INITIAL.
CALL METHOD lcl_wb=>set_context( i_object = 'TABU' i_obj_name = i_tabname
i_langu = space i_no_message = 'X' ).
MESSAGE w666(01) WITH 'Table' i_tabname 'does not exist (yet).' INTO sy-
lisel. "#EC *
CALL METHOD lcl_wb=>log_message.
CALL METHOD lcl_wb=>set_context( i_object = space i_obj_name = space i_langu
= space ).
ENDIF.
c_clidep = ls_dd02v-clidep.
c_contflag = ls_dd02v-contflag.
IF NOT ls_dd02v-clidep IS INITIAL.
IF i_logical_object EQ 'LODS' OR "approved_logical_objects
i_logical_object EQ 'LODE' OR
i_logical_object EQ 'LOIE' OR
i_logical_object EQ 'LODC' OR
i_logical_object EQ 'PCYS' OR
i_tabname(14) EQ '/FSPD/TCDIR_CA' OR
i_tabname(5) EQ 'APB_L' OR "LPDS??
i_tabname(12) EQ 'TBCA_PAY_GA_' OR
i_tabname(12) EQ 'TBCA_PAY_GA_' OR
i_tabname CP 'SMMW*PARAM*'.
"approved client dependent table
ELSE.
"do not allow update
IF NOT it_entries[] IS INITIAL. "not during initial call
MESSAGE e666(01) WITH 'Skipping table ' i_tabname 'because it is client
dependent.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
EXIT.
ENDIF.
ENDIF.
CASE ls_dd02v-contflag.
WHEN 'S' OR 'E' OR 'W'. "W for SCP2
"later: MODIFY (i_tabname) FROM TABLE it_entries.
WHEN 'G'.
"later: INSERT (i_tabname) FROM TABLE it_entries ACCEPTING DUPLICATE KEYS.
WHEN OTHERS. "'W' OR 'L' OR 'A' OR 'C'.
IF NOT it_entries[] IS INITIAL. "not during initial call
MESSAGE e666(01) WITH 'Skipping table ' i_tabname 'because of delivery
class' ls_dd02v-contflag INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
EXIT.
ENDCASE.
"dynamic check for simple client independent system tables
IF ls_dd02v-clidep IS INITIAL AND ls_dd02v-contflag CA 'SE'.
LOOP AT lt_dd03p TRANSPORTING NO FIELDS WHERE ( datatype NE 'CHAR' AND
datatype NE 'NUMC' AND
datatype NE 'LANG' AND
datatype NE 'DATS' AND
datatype(3) NE 'INT' )
OR ( datatype(3) EQ 'INT' AND
keyflag IS NOT INITIAL )
OR ( outputlen > 200 ).
EXIT.
ENDLOOP.
IF sy-subrc NE 0.
l_approved_system_table = 'X'.
ENDIF.
ENDIF.
CASE i_tabname.
"------- transported as TABU, update via MODIFY -> no deletions supported
WHEN 'TVIMF' OR "view
events
'TRESC' OR "reserved
namespace
'T100S' OR 'T100SA' OR "variable
messages
'BALOBJ' OR 'BALOBJT' OR 'BALSUB' OR 'BALSUBT' OR "CDAT
APPL_LOG Application log defintion (SLG0)
'TZFB' OR 'TZFBT' OR
'CRMCHKMSG' OR 'CRMCHKMSGT' OR
"Checkman/ATC customizing
'TC33' OR 'TC34' OR 'T354B' OR "Status
handling
'RSECACHK' OR
'TCLO'. "VDAT V_CLO Class
System
WHEN 'TOBJ' OR 'TOBJVOR' OR 'TOBJVORFLG' OR 'TOBJVORDAT'.
"SUSO
PERFORM prepare_table USING i_tabname 'OBJCT' it_entries CHANGING
l_no_update.
WHEN 'TACTZ'.
"SUSO
PERFORM prepare_table USING i_tabname 'BROBJ' it_entries CHANGING
l_no_update.
WHEN 'TOBJT'.
"SUSO text
PERFORM prepare_table USING i_tabname 'OBJECT LANGU' it_entries CHANGING
l_no_update.

WHEN 'STC_SCN_HDR' OR 'STC_SCN_TASKS' OR 'STC_SCN_ATTR'.


"STCS
PERFORM prepare_table USING i_tabname 'SCENARIO_ID' it_entries CHANGING
l_no_update.
WHEN 'STC_SCN_HDR_T'.
"STCS text
PERFORM prepare_table USING i_tabname 'SCENARIO_ID LANGU' it_entries
CHANGING l_no_update.
WHEN 'TDDAT' OR 'TVDIR'.
"generated via execution of SE54 -> no need to insert and no need to
transport
c_deliver = gc_generate.
RETURN.
WHEN OTHERS.
IF NOT l_object IS INITIAL AND ( approved_logical_objects CS l_object ) .
"approved logical transport objects
"existing entries deleted during create_logical_object
ELSEIF l_approved_system_table EQ 'X'.
"no deletions, only update of existing entries and insert
ELSE.
"objects which might have to be described as manual step or BCSet
CONCATENATE gc_bcset '?' INTO c_deliver.
MESSAGE e666(01) WITH 'Delivering entries for table' i_tabname 'is not
approved yet' INTO sy-lisel. "#EC *
IF NOT it_entries[] IS INITIAL.
CALL METHOD log_message.
ENDIF.
RETURN.
ENDIF.
ENDCASE.
IF c_deliver NE gc_suppack. "do not change from suppack to something else,
e.g. TNODEIMG
c_deliver = gc_report.
ENDIF.
IF i_logical_object IS INITIAL.
"transported via R3TR TABU with keys in E071K
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname = i_tabname
IMPORTING
x030l_wa = ls_x030l
EXCEPTIONS
OTHERS = 0.
l_keylen = ls_x030l-keylen / ls_x030l-unicodelg.
CLEAR ls_ko200.
ls_ko200-pgmid = 'R3TR'.
ls_ko200-object = 'TABU'.
ls_ko200-objfunc = 'K'.
ls_ko200-obj_name = i_tabname.
APPEND ls_ko200 TO lt_ko200.
CLEAR ls_e071k.
ls_e071k-pgmid = ls_ko200-pgmid.
ls_e071k-objname = ls_ko200-obj_name.
ls_e071k-object = ls_ko200-object.
ls_e071k-mastertype = ls_ko200-object.
ls_e071k-mastername = ls_ko200-obj_name.
LOOP AT it_entries ASSIGNING <ls_entry>.
ls_e071k-tabkey = <ls_entry>(l_keylen).
IF l_keylen <= 120. "entire key does fit into E071K-TABKEY (CHAR 120)
ELSEIF i_tabname EQ 'EDIFCT'.
IF ls_e071k-tabkey+91 CA '_'.
ADD 91 TO sy-fdpos.
ls_e071k-tabkey+sy-fdpos = '*'.
ELSE.
ls_e071k-tabkey+119 = '*'.
ENDIF.
ELSE.
MESSAGE e666(01) WITH 'Delivering entries for table' i_tabname 'is not
approved yet' INTO sy-lisel. "#EC *
c_deliver = gc_manual.
RETURN.
ENDIF.
APPEND ls_e071k TO lt_e071k.
ENDLOOP.
ENDIF.
CHECK NOT it_entries[] IS INITIAL AND l_no_update IS INITIAL.
IF testrun IS INITIAL.
IF i_logical_object IS INITIAL.
CALL FUNCTION 'TR_OBJECTS_CHECK'
* EXPORTING
* iv_no_show_option = 'X'
TABLES
wt_ko200 = lt_ko200
* WT_E071K =
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
DATA: l_trkorr LIKE gv_trkorr.
CALL FUNCTION 'TR_OBJECTS_INSERT'
EXPORTING
wi_order = gv_trkorr
* iv_no_show_option = 'X'
IMPORTING
we_order = l_trkorr
TABLES
wt_ko200 = lt_ko200
wt_e071k = lt_e071k
* TT_TADIR =
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
IF l_trkorr IS INITIAL.
MESSAGE w666(01) WITH 'Changes cannot be recorded in a transport
request.' 'You may have to logon to a different client.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CLEAR sy-subrc. "go on without error code
ELSE.
gv_trkorr = l_trkorr.
ENDIF.
ENDIF.
ENDIF.
IF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Could not be added to transport request.' INTO sy-
lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ENDIF.
CASE ls_dd02v-contflag.
WHEN 'S' OR 'E' OR 'W'.
MODIFY (i_tabname) FROM TABLE it_entries. "#EC CI_DYNTAB
WHEN 'G'.
INSERT (i_tabname) FROM TABLE it_entries ACCEPTING DUPLICATE KEYS. "#EC
CI_DYNTAB
WHEN OTHERS.
"should never happen because of "basic checks"
MESSAGE a666(01) WITH 'Table' i_tabname 'cannot be processed'. "#EC *
ENDCASE.
MESSAGE i666(01) WITH sy-dbcnt 'entries were inserted into table' i_tabname
INTO sy-lisel. "#EC *
ELSE.
DESCRIBE TABLE it_entries.
MESSAGE i666(01) WITH sy-tfill 'entries will be inserted into table'
i_tabname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDMETHOD. "create_table_entries

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_tadir_object LIKE i_object,
l_new_devclass TYPE devclass,
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.
IF lcl_wb=>language_installed( i_langu ) IS INITIAL.
RAISE language_not_installed.
ENDIF.
IF i_object EQ 'TABU'.
DATA: lt_ko200 TYPE TABLE OF ko200, ls_ko200 TYPE ko200,
lt_e071k TYPE TABLE OF e071k, ls_e071k TYPE e071k.
ls_ko200-pgmid = ls_e071k-pgmid = 'R3TR'.
ls_ko200-object = ls_e071k-object = ls_e071k-mastertype = 'TABU'.
ls_ko200-obj_name = ls_e071k-objname = ls_e071k-mastername = i_obj_name.
ls_ko200-objfunc = 'K'.
ls_e071k-tabkey = i_tabkey.
APPEND ls_ko200 TO lt_ko200.
APPEND ls_e071k TO lt_e071k.
CALL FUNCTION 'TR_OBJECTS_CHECK'
TABLES
wt_ko200 = lt_ko200
* WT_E071K =
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
CALL FUNCTION 'TR_OBJECTS_INSERT'
EXPORTING
wi_order = gv_trkorr
IMPORTING
we_order = gv_trkorr
TABLES
wt_ko200 = lt_ko200
wt_e071k = lt_e071k
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
OTHERS = 3.
ENDIF.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
RETURN.
ELSEIF 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 '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.
IF i_object NE 'INDX'. "correct name will be determined by
SCWB_GET_TADIR_REM
l_tadir_name = i_obj_name.
ENDIF.
WHEN 'DYNP'.
l_object_class = 'SCRP'.
l_object_name = i_obj_name.
WHEN 'TABU'.
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.
"determine TADIR key and check for old TADIR entry
DATA: ls_e071 TYPE e071,
ls_tadir_key TYPE tadir,
ls_tadir_old TYPE tadir.
ls_e071-pgmid = 'LIMU'.
ls_e071-object = i_object.
ls_e071-obj_name = i_obj_name.
CALL FUNCTION 'SCWB_GET_TADIR_REM' "determines main object if i_object is a
part object, e.g REPT->PROG
EXPORTING
is_e071 = ls_e071
IMPORTING
es_tadir = ls_tadir_old
es_tadir_key = ls_tadir_key.
IF ls_tadir_key IS INITIAL.
ls_e071-pgmid = 'R3TR'.
CALL FUNCTION 'SCWB_GET_TADIR_REM'
EXPORTING
is_e071 = ls_e071
IMPORTING
es_tadir = ls_tadir_old
es_tadir_key = ls_tadir_key.
ENDIF.
IF ls_tadir_old-devclass IS INITIAL.
l_new_devclass = i_devclass.
ELSE.
l_new_devclass = ls_tadir_old-devclass.
ENDIF.
"create TADIR entry in advance avoid popup
IF NOT ls_tadir_key-obj_name IS INITIAL. "only if a name could be
determined, e.g. does not work for LIMU DOCU FU... if function group does not exist
yet
ASSERT l_tadir_name IS INITIAL OR ls_tadir_key-obj_name EQ l_tadir_name.
"compatibility check
s_masterlang = ls_tadir_old-masterlang.
IF ls_tadir_old IS INITIAL. "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 ls_tadir_key-pgmid
AND object EQ ls_tadir_key-object
AND obj_name EQ ls_tadir_key-obj_name.
l_extend = 'X'. "no SMODILOG because object can't be reset to standard
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 = ls_tadir_key-pgmid
iv_object = ls_tadir_key-object
iv_obj_name = ls_tadir_key-obj_name
IMPORTING
result = ls_gtadir
EXCEPTIONS
OTHERS = 0.
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 = ls_tadir_key-pgmid
object = ls_tadir_key-object
obj_name = ls_tadir_key-obj_name
masterlang = i_langu "no masterlang in GTADIR
srcsystem = ls_gtadir-srcsystem
change_masterlang = 'X'
* EDTFLAG = '~'
* GENFLAG = '~'
force_mode = space
EXCEPTIONS
OTHERS = 0.
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 = ls_tadir_key-pgmid
wi_tadir_object = ls_tadir_key-object
wi_tadir_obj_name = ls_tadir_key-obj_name
wi_tadir_devclass = l_new_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.
DATA: l_suppress_dialog.
IF i_devclass EQ '$TMP'. "perform all checks but suppress some popups
l_suppress_dialog = 'X'. "e.g. 'object can only be created in SAP
package' 'system setting does not allow....'
ENDIF.
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 = l_suppress_dialog "currently only set for local
objects
IMPORTING
korrnum = gv_trkorr
transport_key = ls_trkey
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 ls_tadir_key IS INITIAL AND ls_tadir_old-masterlang IS INITIAL.
IF i_langu CA gv_master_languages.
IF ls_e071-pgmid EQ 'R3TR'.
UPDATE tadir SET masterlang = i_langu
WHERE pgmid EQ ls_tadir_key-pgmid
AND object EQ ls_tadir_key-object
AND obj_name EQ ls_tadir_key-obj_name
AND masterlang NE i_langu.
ELSE. "creation of LIMU where no TADIR existed before
* UPDATE tadir SET masterlang = space "clear language and let
SCWB/SNOTE set the correct language
DELETE FROM tadir
WHERE pgmid EQ ls_tadir_key-pgmid
AND object EQ ls_tadir_key-object
AND obj_name EQ ls_tadir_key-obj_name.
ENDIF.
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 ls_tadir_key-pgmid
AND object EQ ls_tadir_key-object
AND obj_name EQ ls_tadir_key-obj_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 register_inactive_object.
DATA: l_obj_name TYPE e071-obj_name.
l_obj_name = i_objname.
CALL FUNCTION 'RS_INSERT_INTO_WORKING_AREA'
EXPORTING
object = i_objtype
obj_name = l_obj_name
EXCEPTIONS
OTHERS = 0.
IF i_treetype IS SUPPLIED.
CHECK i_treetype NE space.
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
EXPORTING
type = i_treetype
object = l_obj_name.
ELSE.
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
EXPORTING
type = i_objtype
object = l_obj_name.
ENDIF.
ENDMETHOD. "register_inactive_object

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 "#EC CI_SGLSELECT
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
NOT i_selfdef IS INITIAL AND NOT ls_t100u-selfdef IS INITIAL.
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
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.
"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 = '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 create_mess_docu.
DATA: l_docname TYPE thead-tdname.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'MESS'
i_obj_name = i_msgid
i_obj_name2 = i_msgno
i_text = 'Message Longtext'. "#EC NOTEXT
CONCATENATE 'NA' i_msgid i_msgno INTO l_docname.
IF et_lines IS SUPPLIED.
CALL METHOD lcl_wb=>create_other_docu
EXPORTING
i_devclass = i_devclass
i_docname = l_docname
i_langu = i_langu
i_dokstate = i_dokstate
i_selfdef = i_selfdef
i_line = i_line
IMPORTING
et_lines = et_lines.
ELSE.
CALL METHOD lcl_wb=>create_other_docu
EXPORTING
i_devclass = i_devclass
i_docname = l_docname
i_langu = i_langu
i_dokstate = i_dokstate
i_selfdef = i_selfdef
i_line = i_line.
ENDIF.
ENDMETHOD. "create_mess_docu

METHOD create_dtel_docu.
DATA: l_docname TYPE thead-tdname.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'DTEL'
i_obj_name = i_rollname
i_text = 'Data Element Longtext'. "#EC NOTEXT
CONCATENATE 'DE' i_rollname INTO l_docname.
IF et_lines IS SUPPLIED.
CALL METHOD lcl_wb=>create_other_docu
EXPORTING
i_devclass = i_devclass
i_docname = l_docname
i_langu = i_langu
i_dokstate = i_dokstate
i_selfdef = i_selfdef
i_line = i_line
IMPORTING
et_lines = et_lines.
ELSE.
CALL METHOD lcl_wb=>create_other_docu
EXPORTING
i_devclass = i_devclass
i_docname = l_docname
i_langu = i_langu
i_dokstate = i_dokstate
i_selfdef = i_selfdef
i_line = i_line.
ENDIF.
ENDMETHOD. "create_dtel_docu

METHOD create_other_docu.
STATICS: lt_line TYPE TABLE OF tline.
DATA: ls_head TYPE thead,
lt_line_old LIKE lt_line,
ls_line TYPE tline,
ls_tadir TYPE tadir,
lt_e071k TYPE TABLE OF e071k,
ls_ko200 TYPE ko200,
lv_masterlang TYPE tadir-masterlang,
l_dokstate TYPE dokstate,
lv_no_masterlang.
DATA: lt_sfreln TYPE TABLE OF sfreln,
lt_sfreim TYPE TABLE OF sfreim,
lt_sfreac TYPE TABLE OF sfreac,
lt_sfrecou TYPE TABLE OF sfrecou.
IF NOT i_line IS INITIAL.
"collect docu lines
ls_line = i_line.
SHIFT ls_line-tdline LEFT.
APPEND ls_line TO lt_line.
ELSEIF i_selfdef IS NOT INITIAL.
"self explanatory
CALL METHOD lcl_wb=>set_context
EXPORTING
i_langu = i_langu
i_object = 'DOCU'
i_obj_name = i_docname(2)
i_obj_name2 = i_docname+2
i_text = 'Documentation Status'. "#EC NOTEXT
IF testrun IS INITIAL.
CALL FUNCTION 'DOCU_SELFDEF_WRITE' "#EC *'
EXPORTING
object_id = i_docname(2)
object_name = i_docname+2(60) "FM expects CHAR60
selfdef = space "1st: deletion of DOKIL to avoid popup
in second step
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'DOCU_SELFDEF_WRITE' "#EC *'
EXPORTING
object_id = i_docname(2)
object_name = i_docname+2(60) "FM expects CHAR60
selfdef = i_selfdef "2nd: update DOKIL without popup "delete
docu?"
EXCEPTIONS
OTHERS = 0.
ENDIF.
ELSE.
"final call -> write DOCU
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'DOCU'
i_obj_name = i_docname(2)
i_obj_name2 = i_docname+2.
ls_head-tdobject = 'DOKU'.
ls_head-tdname = i_docname+2.
ls_head-tdid = i_docname(2).
ls_head-tdspras = i_langu.
ls_head-tdform = 'S_DOCU_SHOW'.
ls_head-tdstyle = 'S_DOCUS1'.
CALL FUNCTION 'DOCU_GET'
EXPORTING
id = ls_head-tdid(2)
object = ls_head-tdname(60)
langu = ls_head-tdspras
IMPORTING
dokstate = l_dokstate
TABLES
line = lt_line_old
EXCEPTIONS
OTHERS = 0.
IF et_lines IS SUPPLIED.
et_lines[] = lt_line[] = lt_line_old[].
RETURN.
ENDIF.
IF lt_line_old[] EQ lt_line AND l_dokstate EQ 'A'.
"no update necessary
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.

REFRESH lt_line.
RETURN.
ENDIF.
CALL FUNCTION 'DOCU_TR_OBJECT_CHECK'
EXPORTING
object_id = ls_head-tdid(2)
object_name = ls_head-tdname(60)
TABLES
wt_e071k = lt_e071k
CHANGING
corr_entry = ls_ko200.
CALL METHOD add_to_transport "and create TADIR entry
EXPORTING
i_langu = i_langu
i_devclass = i_devclass
i_object = ls_ko200-object
i_obj_name = ls_ko200-obj_name
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0.
"determine current master language of docu object, may differ from master
language in TADIR
"CALL FUNCTION 'DOCU_GET_MASTERLANG' does not consider or return SELFDEF
hence we read by our own
DATA: ls_dokil TYPE dokil.
SELECT SINGLE * FROM dokil INTO ls_dokil WHERE id EQ ls_head-tdid "#EC
CI_GENBUFF "#EC CI_BYPASS
AND object EQ ls_head-tdname
AND typ EQ i_typ
AND masterlang EQ 'X'.
IF sy-subrc EQ 0 AND ls_dokil-selfdef IS INITIAL AND i_langu NE ls_dokil-
langu .
* "no master lang so far, take current language as master
lv_no_masterlang = 'X'. "language of selfdef entries usually is DE,
switch to a different master language is allowed
ENDIF.
"create new version
DATA l_dokversion TYPE dokhl-dokversion.
SELECT MAX( dokversion ) FROM dokhl INTO l_dokversion "#EC *
WHERE id = ls_head-tdid(2)
AND object = ls_head-tdname
AND langu = ls_head-tdspras.
ADD 1 TO l_dokversion.
ls_head-tdfdate = sy-datum.
ls_head-tdftime = sy-uzeit.
ls_head-tdfuser = sy-uname.
ls_head-tdldate = sy-datum.
ls_head-tdltime = sy-uzeit.
ls_head-tdluser = sy-uname.
IF ls_head-tdid EQ 'IN'. "Release note / oder DOCV
IF 1 = 0.
"Nachlesen der Releasenote-Attribute
"und umformen in zus�tzliche Zeilen in lt_line
"vergleiche Aufruf von DOCU_UPDATE, wenn man in der SE61 ein IN RELN
pflegt.
PERFORM index_descriptors IN PROGRAM saplsdoc. "#EC *
ENDIF.
"read current attributes
SELECT * FROM sfreln INTO TABLE lt_sfreln WHERE txtkey = i_docname+6.
"#EC CI_GENBUFF "#EC CI_BUFFJOIN "#EC CI_SGLSELECT
SELECT * FROM sfreim INTO TABLE lt_sfreim WHERE rel_cla EQ 'RELN' AND
rel_obj EQ i_docname+6. "#EC CI_GENBUFF "#EC CI_BUFFJOIN
SELECT * FROM sfreac INTO TABLE lt_sfreac WHERE rel_cla EQ 'RELN' AND
rel_obj EQ i_docname+6. "#EC CI_GENBUFF "#EC CI_BUFFJOIN
SELECT * FROM sfrecou INTO TABLE lt_sfrecou WHERE rel_cla EQ 'RELN' AND
rel_obj EQ i_docname+6. "#EC CI_GENBUFF "#EC CI_BUFFJOIN
ENDIF.
CALL FUNCTION 'DOCU_UPDATE' "this initializes attributes
EXPORTING
* ACTCLASS = ' '
head = ls_head
no_masterlang = lv_no_masterlang
state = i_dokstate
typ = i_typ
version = l_dokversion
TABLES
line = lt_line.
IF ls_head-tdid EQ 'IN'.
"restore those attributes which have been deleted bei DOCU_UPDATE
INSERT sfreln FROM TABLE lt_sfreln ACCEPTING DUPLICATE KEYS.
INSERT sfreim FROM TABLE lt_sfreim ACCEPTING DUPLICATE KEYS.
INSERT sfreac FROM TABLE lt_sfreac ACCEPTING DUPLICATE KEYS.
INSERT sfrecou FROM TABLE lt_sfrecou ACCEPTING DUPLICATE KEYS.
ENDIF.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
gv_translation = 'X'.
REFRESH lt_line.
ENDIF.
ENDMETHOD. "create_other_docu

METHOD create_program_text.
DATA: lt_textpool TYPE TABLE OF textpool,
lt_source TYPE TABLE OF abapsource,
l_text LIKE i_text.
FIELD-SYMBOLS: <ls_textpool> TYPE textpool.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'REPT'
i_obj_name = i_progname.
CALL FUNCTION 'RPY_PROGRAM_READ'
EXPORTING
language = i_langu
program_name = i_progname
with_includelist = space
only_texts = 'X'
read_latest_version = 'X'
with_lowercase = 'X'
TABLES
textelements = lt_textpool
source = lt_source "dummy for 46C
EXCEPTIONS
cancelled = 1
not_found = 2
permission_error = 3
OTHERS = 4.
IF sy-subrc EQ 2.
READ TEXTPOOL i_progname INTO lt_textpool LANGUAGE i_langu.
ELSEIF sy-subrc NE 0.
MESSAGE e666(01) WITH 'Error while reading program text' 'of program'
i_progname INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
l_text = i_text.
IF i_id EQ 'S' AND i_text(8) NE space AND i_text NE c_ddic_ref.
"if selection text does note begin with 8 space -> insert them
SHIFT l_text LEFT DELETING LEADING space.
SHIFT l_text RIGHT BY 8 PLACES.
ENDIF.
READ TABLE lt_textpool ASSIGNING <ls_textpool>
WITH KEY id = i_id
key = i_key.
IF sy-subrc EQ 0. "already exists
IF l_text EQ <ls_textpool>-entry AND
i_length EQ <ls_textpool>-length.
MESSAGE i666(01) WITH 'No update necessary for program text' i_key INTO sy-
lisel. "#EC *
CALL METHOD log_message.
RETURN. "nothing to do
ELSE.
"update extsing entry
<ls_textpool>-entry = l_text.
sy-fleng = strlen( l_text ).
IF i_length IS INITIAL OR i_length LT sy-fleng.
<ls_textpool>-length = strlen( l_text ).
ELSE.
<ls_textpool>-length = i_length.
ENDIF.
ENDIF.
ELSE.
"add new entry
* APPEND INITIAL LINE TO lt_textpool ASSIGNING <ls_textpool>.
APPEND INITIAL LINE TO lt_textpool. READ TABLE lt_textpool INDEX sy-tabix
ASSIGNING <ls_textpool>. "46C
<ls_textpool>-id = i_id.
<ls_textpool>-key = i_key.
<ls_textpool>-entry = l_text.
IF i_length IS INITIAL.
<ls_textpool>-length = strlen( l_text ).
ELSE.
<ls_textpool>-length = i_length.
ENDIF.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_devclass = i_devclass
i_langu = i_langu
i_object = 'REPT'
i_obj_name = i_progname
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
INSERT TEXTPOOL i_progname FROM lt_textpool LANGUAGE i_langu.
MESSAGE i666(01) WITH 'Update successful for program text' i_key INTO sy-lisel.
"#EC *
CALL METHOD log_message.
ENDMETHOD. "create_program_text

METHOD create_user_interface.
DATA: ls_adm TYPE rsmpe_adm,
lt_sta TYPE TABLE OF rsmpe_stat,
lt_fun TYPE TABLE OF rsmpe_funt,
lt_men TYPE TABLE OF rsmpe_men,
lt_mtx TYPE TABLE OF rsmpe_mnlt,
lt_act TYPE TABLE OF rsmpe_act,
lt_but TYPE TABLE OF rsmpe_but,
lt_pfk TYPE TABLE OF rsmpe_pfk,
lt_set TYPE TABLE OF rsmpe_staf,
lt_doc TYPE TABLE OF rsmpe_atrt,
lt_tit TYPE TABLE OF rsmpe_titt,
lt_biv TYPE TABLE OF rsmpe_buts,
lt_ctx TYPE TABLE OF rsmpe_ctx,
lt_texts TYPE TABLE OF rsmptexts,
l_state,
ls_tr_key TYPE trkey,
ls_guistatus LIKE LINE OF gr_guistatus VALUE 'IEQ'.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'CUAD'
i_obj_name = i_progname.
ls_guistatus-low = i_progname.
COLLECT ls_guistatus INTO gr_guistatus.
l_state = 'I'.
DO 2 TIMES.
CALL FUNCTION 'RS_CUA_INTERNAL_FETCH'
EXPORTING
program = i_progname
language = i_langu
state = l_state "1. inactive, 2. active
IMPORTING
adm = ls_adm
TABLES
sta = lt_sta
fun = lt_fun
men = lt_men
mtx = lt_mtx
act = lt_act
but = lt_but
pfk = lt_pfk
set = lt_set
doc = lt_doc
tit = lt_tit
biv = lt_biv
EXCEPTIONS
not_found = 1
OTHERS = 99.
IF sy-subrc EQ 0 AND NOT lt_sta[] IS INITIAL.
EXIT. "DO.
ENDIF.
l_state = 'A'.
ENDDO.
IF is_adm-actcode IS INITIAL AND it_act[] IS NOT INITIAL OR "not passed by
caller
is_adm-mencode IS INITIAL AND it_men[] IS NOT INITIAL OR
is_adm-pfkcode IS INITIAL AND it_pfk[] IS NOT INITIAL.
DATA: ls_men TYPE rsmpe_men,
ls_act TYPE rsmpe_act,
ls_pfk TYPE rsmpe_pfk.
"determine consistent values on the fly based on input tables
CLEAR: ls_act, ls_men, ls_pfk.
LOOP AT it_act[] INTO ls_act WHERE code+6(14) IS INITIAL OR code(6) CO
'0123456789'.
CHECK ls_act-code GT is_adm-actcode.
is_adm-actcode = ls_act-code.
ENDLOOP.
LOOP AT it_men[] INTO ls_men WHERE code+6(14) IS INITIAL OR code(6) CO
'0123456789'.
CHECK ls_men-code GT is_adm-actcode.
is_adm-actcode = ls_men-code.
ENDLOOP.
LOOP AT it_pfk[] INTO ls_pfk WHERE code+6(14) IS INITIAL OR code(6) CO
'0123456789'.
CHECK ls_pfk-code GT is_adm-actcode.
is_adm-actcode = ls_pfk-code.
ENDLOOP.
is_adm-mod_langu = ls_adm-mod_langu. "keep current MOD_LANGU
ENDIF.
IF ls_adm EQ is_adm AND
lt_sta EQ it_sta AND
lt_fun EQ it_fun AND
lt_men EQ it_men AND
lt_mtx EQ it_mtx AND
lt_act EQ it_act AND
lt_but EQ it_but AND
lt_pfk EQ it_pfk AND
lt_set EQ it_set AND
lt_doc EQ it_doc AND
lt_tit EQ it_tit AND
lt_biv EQ it_biv.
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
"determine transport key
DATA: ls_e071 TYPE e071, ls_tadir TYPE tadir.
ls_tr_key-sub_type = 'CUAD'.
ls_tr_key-sub_name = i_progname.
ls_e071-pgmid = 'LIMU'.
ls_e071-object = 'CUAD'.
ls_e071-obj_name = i_progname.
CALL FUNCTION 'SCWB_GET_TADIR_REM'
EXPORTING
is_e071 = ls_e071
IMPORTING
es_tadir_key = ls_tadir.
ls_tr_key-obj_type = ls_tadir-object.
ls_tr_key-obj_name = ls_tadir-obj_name.
"check if program exists
SELECT SINGLE name FROM trdir INTO sy-lisel WHERE name = i_progname.
IF sy-subrc NE 0.
MESSAGE i666(01) WITH 'GUI Definition can not be created yet.' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
MESSAGE w666(01) WITH 'Please execute this report again when' ls_tr_key-
obj_type ls_tr_key-obj_name 'has been created.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
CALL METHOD add_to_transport
EXPORTING
i_object = 'CUAD'
i_obj_name = i_progname
i_devclass = i_devclass
i_langu = i_langu
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
"determine current maintenance language (in case that status did exist before)
DATA: l_masterlang LIKE i_langu.
"EUDB-SPRSL is always D, EUDB-LANGU seems to be master language
SELECT SINGLE langu FROM eudb INTO l_masterlang "#EC CI_GENBUFF
WHERE ( relid EQ scua_c_relid_inactive OR
relid EQ scua_c_relid_active )
AND ( name EQ i_progname ).
IF sy-subrc NE 0.
l_masterlang = ls_tadir-masterlang.
ENDIF.
IF l_masterlang IS INITIAL.
l_masterlang = i_langu.
ENDIF.
IF i_langu = l_masterlang. "do only use for masterlanguage!
CALL FUNCTION 'RS_CUA_INTERNAL_WRITE'
EXPORTING
program = i_progname
language = i_langu
tr_key = ls_tr_key
adm = is_adm
state = 'I' "I = inactive A = activ
TABLES
sta = it_sta
fun = it_fun
men = it_men
mtx = it_mtx
act = it_act
but = it_but
pfk = it_pfk
set = it_set
doc = it_doc
tit = it_tit
biv = it_biv
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc NE 0.
CALL METHOD log_message.
RETURN.
ELSE.
CALL FUNCTION 'RS_CUA_INTERNAL_GENERATE'
EXPORTING
program = i_progname
EXCEPTIONS
OTHERS = 0.

MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *


CALL METHOD log_message.
ENDIF.
ELSE.
PERFORM edittab_to_sourcetab IN PROGRAM saplsmpi "#EC ENHOK
TABLES it_fun it_mtx it_sta it_tit it_doc
lt_fun "#EC ENHOK
lt_mtx lt_sta lt_ctx lt_tit lt_doc "dummy
lt_texts
USING i_progname i_langu.

"translation must not be stored in inactive version


DELETE FROM rsmptextsi WHERE progname EQ i_progname
AND sprsl EQ i_langu.
"fill active version instead
DELETE FROM rsmptexts WHERE progname EQ i_progname
AND sprsl EQ i_langu.

INSERT rsmptexts FROM TABLE lt_texts ACCEPTING DUPLICATE KEYS.


IF NOT lt_texts IS INITIAL.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
ENDMETHOD. "create_user_interface

METHOD create_transformation.
DATA: lr_xslt TYPE REF TO cl_o2_api_xsltdesc.
DATA: ls_xsltattr TYPE o2xsltattr.
DATA: ls_gotstate TYPE ddgotstate.
DATA: lv_par TYPE string.
DATA: l_masterlang TYPE masterlang.
STATICS: lv_src TYPE string,
lv_update_message.
DATA: lt_error_list TYPE o2xslterrt,
ls_error_list TYPE LINE OF o2xslterrt,
l_error_save.
CALL METHOD set_context
EXPORTING
i_no_message = update "no message during step update
i_langu = i_langu
i_object = 'XSLT'
i_obj_name = i_transformation.
l_error_save = gv_errors_occured. "save global status since it shall not be
influenced
CLEAR gv_errors_occured.
IF i_line NP '<<--->>*'. "marker for end of source code
IF i_line CP '<<...>>*'. "marker for line break
CONCATENATE lv_src i_line+7 INTO lv_src.
ELSE.
CONCATENATE lv_src cl_abap_char_utilities=>cr_lf i_line INTO lv_src.
ENDIF.
ELSE.
"finished creating code -> remove very first lv_src cr_lf
SHIFT lv_src LEFT BY 2 PLACES.
"determine masterlang for new/changed object
SELECT SINGLE masterlang FROM tadir INTO l_masterlang WHERE pgmid EQ 'R3TR'
AND object EQ 'XSLT' AND obj_name EQ i_transformation.
IF sy-subrc NE 0.
l_masterlang = i_langu.
ENDIF.
* check if NEW required DDIC objects are active to avoid STEP3 phase
IF update IS NOT INITIAL.
IF i_transformation = 'STC_TM_SESSION_EXTXML_2_HTML'.
CALL FUNCTION 'DDIF_DTEL_GET'
EXPORTING
name = 'STC_SESSION_FINALIZED_DESCR'
langu = 'E'
state = 'A' "active version
IMPORTING
gotstate = ls_gotstate
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0 OR ls_gotstate IS INITIAL.
MESSAGE e666(01) WITH 'Data element ' 'STC_SESSION_FINALIZED_DESCR' '
not active' INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_errors_occured = 'X'.
ENDIF.
DATA lt_dd03p TYPE STANDARD TABLE OF dd03p.
CALL FUNCTION 'DDIF_TABL_GET'
EXPORTING
name = 'STCTM_S_LOG'
state = 'A' "active
langu = 'E'
TABLES
dd03p_tab = lt_dd03p
EXCEPTIONS
OTHERS = 0.
READ TABLE lt_dd03p WITH KEY fieldname = 'SRC_OBJECT' TRANSPORTING NO
FIELDS.
IF sy-subrc <> 0.
MESSAGE e666(01) WITH 'Field SRC_OBJECT missing in structure
STCTM_S_LOG' INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_errors_occured = 'X'.
ENDIF.
READ TABLE lt_dd03p WITH KEY fieldname = 'SRC_LINE' TRANSPORTING NO
FIELDS.
IF sy-subrc <> 0.
MESSAGE e666(01) WITH 'Field SRC_OBJECT missing in structure SRC_LINE'
INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_errors_occured = 'X'.
ENDIF.
ELSEIF i_transformation = 'STC_TM_SESSION_EXTXML_2_SLA'.
CALL FUNCTION 'DDIF_DTEL_GET'
EXPORTING
name = 'STC_SESSION_FINALIZED_DESCR'
langu = 'E'
state = 'A' "active version
IMPORTING
gotstate = ls_gotstate
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0 OR ls_gotstate IS INITIAL.
MESSAGE e666(01) WITH 'Data element ' 'STC_SESSION_FINALIZED_DESCR' '
not active' INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_errors_occured = 'X'.
ENDIF.
CALL FUNCTION 'DDIF_DTEL_GET'
EXPORTING
name = 'STC_TASK_SEMANTIC_ID'
langu = 'E'
state = 'A' "active version
IMPORTING
gotstate = ls_gotstate
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0 OR ls_gotstate IS INITIAL.
MESSAGE e666(01) WITH 'Data element ' 'STC_TASK_SEMANTIC_ID' ' not
active' INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_errors_occured = 'X'.
ENDIF.
ENDIF.
ENDIF.
DATA: lv_temporary.
DO 2 TIMES.
ls_xsltattr-xsltdesc = i_transformation.
ls_xsltattr-devclass = i_devclass.
ls_xsltattr-langu = i_langu.
ls_xsltattr-descript = i_text.
CASE sy-index.
WHEN 1.
"first LOOP with temporary object
TRANSLATE ls_xsltattr-xsltdesc USING ' _'. "make a similar which does
not exist yet
ls_xsltattr-devclass = '$TMP'.
lv_temporary = 'X'.
WHEN 2.
CHECK gv_errors_occured IS INITIAL.
CHECK testrun IS INITIAL.
lv_temporary = space.
CALL METHOD add_to_transport
EXPORTING
i_object = 'XSLT'
i_obj_name = i_transformation
i_devclass = i_devclass
i_langu = i_langu
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
ENDCASE.
"delete transformation if already there.
DATA: l_name TYPE cxsltdesc.
l_name = ls_xsltattr-xsltdesc.
CALL METHOD cl_o2_api_xsltdesc=>load
EXPORTING
p_xslt_desc = l_name "inactive version
p_desired_state = 'I'
IMPORTING
p_obj = lr_xslt
EXCEPTIONS
not_existing = 1
OTHERS = 5.
IF sy-subrc NE 0.
CALL METHOD cl_o2_api_xsltdesc=>load
EXPORTING
p_xslt_desc = l_name "active version
IMPORTING
p_obj = lr_xslt
EXCEPTIONS
not_existing = 1
OTHERS = 5.
ENDIF.
IF sy-subrc EQ 0.
CALL METHOD lr_xslt->set_changeable
EXPORTING
p_changeable = 'X'
EXCEPTIONS
OTHERS = 0.
CALL METHOD lr_xslt->delete
EXCEPTIONS
OTHERS = 0.
CALL METHOD lr_xslt->save
EXPORTING
i_suppress_corr_insert = lv_temporary
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
INTO sy-lisel.
CALL METHOD log_message.
ENDIF.
ENDIF.
"create the transformation
CALL METHOD cl_o2_api_xsltdesc=>create_new_from_string
EXPORTING
p_source = lv_src
p_attr = ls_xsltattr
p_gen_flag = ' '
IMPORTING
p_obj = lr_xslt
EXCEPTIONS
object_already_existing = 1
action_cancelled = 2
error_occured = 3
not_authorized = 4
undefined_name = 5
OTHERS = 6.
IF sy-subrc NE 0.
IF sy-subrc EQ 3.
MESSAGE e666(01) WITH 'Error during creation of' i_transformation INTO
sy-lisel. "#EC *
ELSE.
MESSAGE e666(01) WITH 'Transformation' i_transformation 'is locked by
another user' INTO sy-lisel. "#EC *
ENDIF.
CALL METHOD log_message.
ENDIF.
IF gv_errors_occured IS INITIAL.
"activate the transformation
CALL METHOD lr_xslt->activate "and save if neccessary
EXPORTING
i_suppress_corr_insert = lv_temporary
IMPORTING
e_error_list = lt_error_list
EXCEPTIONS
syntax_errors = 1
storage_error = 2
generate_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
LOOP AT lt_error_list INTO ls_error_list. "remark: LS_ERROR_LIST_TYPE
contains 1,2,3 rather than E,W
sy-fleng = strlen( i_transformation ). "#EC *
REPLACE ls_xsltattr-xsltdesc WITH i_transformation(sy-fleng) INTO
ls_error_list-text.
sy-msgv1 = ls_error_list-text. SHIFT ls_error_list-text LEFT BY 50
PLACES.
sy-msgv2 = ls_error_list-text. SHIFT ls_error_list-text LEFT BY 50
PLACES.
sy-msgv3 = ls_error_list-text. SHIFT ls_error_list-text LEFT BY 50
PLACES.
sy-msgv4 = ls_error_list-text.
MESSAGE e666(01) WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO sy-
lisel. "#EC *
CALL METHOD log_message.
ENDLOOP.
ENDIF.
ENDIF.
IF gv_errors_occured IS INITIAL.
IF lv_temporary EQ 'X'.
IF update IS NOT INITIAL.
MESSAGE s666(01) WITH 'Creation of' i_transformation 'successful'
INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
MESSAGE s666(01) WITH 'Check of' i_transformation 'successful' INTO
sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
ELSE.
IF NOT testrun IS INITIAL.
MESSAGE e666(01) WITH 'This problem may disappear after' 'successful
DDIC activation in update mode' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
MESSAGE e666(01) WITH 'Could not activate' i_transformation INTO sy-
lisel. "#EC *
CALL METHOD log_message.
MESSAGE e666(01) WITH 'Run update mode once more' 'to create and
activate the XSLT' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ENDIF.
MESSAGE s666(01). "#EC *
IF NOT lr_xslt IS INITIAL.
IF NOT lv_temporary IS INITIAL.
"remove temporary object
CALL METHOD lr_xslt->save
EXPORTING
i_suppress_corr_insert = lv_temporary
EXCEPTIONS
OTHERS = 1.
CALL METHOD lr_xslt->delete
EXCEPTIONS
OTHERS = 1.
CALL METHOD lr_xslt->save
EXPORTING
i_suppress_corr_insert = lv_temporary
EXCEPTIONS
OTHERS = 1.
ELSE.
gv_repository_changed = 'X'.
ENDIF.
"reset lock
CALL METHOD lr_xslt->set_changeable
EXPORTING
p_changeable = ' '
EXCEPTIONS
OTHERS = 0.
ENDIF.
ENDDO.
"set correct master language
UPDATE tadir SET masterlang = l_masterlang WHERE pgmid EQ 'R3TR' AND object
EQ 'XSLT' AND obj_name EQ i_transformation.
CLEAR lv_src. "this clear will always be reached
ENDIF.
gv_errors_occured = l_error_save.
ENDMETHOD. "create_transformation

METHOD log_message.
DATA: ls_msg TYPE bal_s_msg,
ls_key TYPE adir_key.
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.
IF i_object IS NOT INITIAL.
ls_key-object = i_object.
ls_key-obj_name = i_obj_name.
ls_msg-context-value = ls_key.
ls_msg-context-tabname = c_bal_context.
ENDIF.
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. "#EC NO_HANDLER
ENDTRY.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'.
"if we come here the action (copy/read/generate/compare) has finshed without
dumps hence we reset the trace
"-------- build profile
IF 1 = 1.
"grid
CALL FUNCTION 'BAL_DSP_PROFILE_STANDARD_GET'
IMPORTING
e_s_display_profile = ls_profile
EXCEPTIONS
OTHERS = 0.
"Set profile
ls_profile-use_grid = 'X'.
ls_profile-tree_ontop = 'X'.
ls_profile-mess_mark = 'X'.
ls_profile-exp_level = 1.
ls_profile-show_all = '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'.
IF NOT testrun IS INITIAL.
ls_profile-title = 'Simulation log'. "#EC *
ELSEIF NOT update IS INITIAL.
ls_profile-title = 'Change Log'. "#EC *
ELSEIF gv_log_handle IS INITIAL.
ls_profile-title = 'All Logs'. "#EC *
CLEAR ls_profile-exp_level.
CLEAR ls_profile-show_all.
ls_profile-tree_ontop = 'X'.
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.
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.
"-------- find relevant logs
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.
IF sy-repid EQ myrepid.
"--------- Search only log files of UDO itself
CALL FUNCTION 'APPL_LOG_DISPLAY'
EXPORTING
object = c_bal_object
object_attribute = 0
subobject = c_bal_subobj
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_s_display_profile = ls_profile
i_variant_report = sy-repid
EXCEPTIONS
no_authority = 0.
RETURN.
ENDIF.
"--------- Search for log files of generated reports (also valid for copy)
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.
SELECT * FROM balhdr CLIENT SPECIFIED "#EC CI_CLIENT "option for all
clients
INTO TABLE lt_log_header
WHERE mandant IN lr_filter_client "#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
OTHERS = 0.
ENDIF.
ELSE.
APPEND gv_log_handle TO lt_log_handle.
ENDIF.
"-------- display the logs
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
OTHERS = 0.
ENDIF.
IF ls_statistics-msg_cnt_al NE 0 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 = 0.
"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_msgty
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 = '2173829' ) IS INITIAL. "<note which indicates that
report is not needed anymore>
IF NOT update IS INITIAL OR NOT testrun IS INITIAL.
PERFORM update_beforeact.
CALL METHOD lcl_wb=>activate.
PERFORM update_afteract.
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. " DOMD STC_EXEC_ACTIVITY


CALL METHOD lcl_wb=>create_doma "#EC *
EXPORTING
i_domname = 'STC_EXEC_ACTIVITY'
i_devclass = 'STC_TM'
i_datatype = 'CHAR'
i_langu = 'E'
i_ddtext = 'Execution Activity'
i_leng = '000010':
i_domvalue = 'TM_PREP'
i_valpos = '0001'
i_valtext = 'Preparation',
"#EC NOTEXT
i_domvalue = 'TM_POST'
i_valpos = '0002'
i_valtext = 'Post processing',
"#EC NOTEXT
i_domvalue = 'TM_CHECK'
i_valpos = '0003'
i_valtext = 'Consistency check',
"#EC NOTEXT
i_domvalue = 'TM_PROG'
i_valpos = '0004'
i_valtext = 'Operation in progress',
"#EC NOTEXT
i_domvalue = 'T_CHECK'
i_valpos = '0005'
i_valtext = 'Check',
"#EC NOTEXT
i_domvalue = 'T_EXEC'
i_valpos = '0006'
i_valtext = 'Execution',
"#EC NOTEXT
i_domvalue = 'U_MANU'
i_valpos = '0007'
i_valtext = 'Confirmation of manual steps',
"#EC NOTEXT
i_domvalue = 'U_SKIP'
i_valpos = '0008'
i_valtext = 'Task skipped',
"#EC NOTEXT
i_domvalue = 'U_UNSKIP'
i_valpos = '0009'
i_valtext = 'Task set in scope',
"#EC NOTEXT
i_domvalue = 'U_KILL'
i_valpos = '0010'
i_valtext = 'Stop signal send',
"#EC NOTEXT
i_domvalue = 'U_CONFIG'
i_valpos = '0011'
i_valtext = 'Configuration changed',
"#EC NOTEXT
i_domvalue = 'U_FINAL'
i_valpos = '0012'
i_valtext = 'Finalization',
"#EC NOTEXT
i_domvalue = 'SC_CONFIG'
i_valpos = '0013'
i_valtext = 'Start configuration loaded'
"#EC NOTEXT
.
ENDFORM.

FORM update_02. " DOMD STC_EXEC_PERIOD


CALL METHOD lcl_wb=>create_doma "#EC *
EXPORTING
i_domname = 'STC_EXEC_PERIOD'
i_devclass = 'STC_TM'
i_datatype = 'CHAR'
i_langu = 'E'
i_ddtext = 'Execution Period'
i_leng = '000001':
i_domvalue = 'C'
i_valpos = '0002'
i_valtext = 'Checkrun',
"#EC NOTEXT
i_domvalue = 'E'
i_valpos = '0003'
i_valtext = 'Execution',
"#EC NOTEXT
i_domvalue = 'M'
i_valpos = '0004'
i_valtext = 'Maintenance'
"#EC NOTEXT
.
ENDFORM.

FORM update_03. " DTED STC_EXEC_ACTIVITY


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_EXEC_ACTIVITY'
i_devclass = 'STC_TM'
i_domname = 'STC_EXEC_ACTIVITY'
i_logflag = ''
i_headlen = '10'
i_scrlen1 = '10'
i_scrlen2 = '15'
i_scrlen3 = '20'
i_langu = 'E'
i_ddtext = 'Execution Activity'
i_reptext = 'Act.'
i_scrtext_s = 'Act.'
i_scrtext_m = 'Activity'
i_scrtext_l = 'Execution Activity'.
ENDFORM.

FORM update_04. " DOCU DESTC_EXEC_ACTIVITY


CALL METHOD lcl_wb=>create_dtel_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_rollname = 'STC_EXEC_ACTIVITY'
i_langu = 'E'
i_line =:'U1 &DEFINITION&',
"#EC NOTEXT
'AS Activity in task processing',
"#EC NOTEXT
'U1 &USE&',
"#EC NOTEXT
'AS Valid activities:',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'B1 Task activities:',
"#EC NOTEXT
'AL @38@ Check activities (performed by task during check
run)', "#EC NOTEXT
'AL @15@ Execution activities (performed by task during
execution)', "#EC NOTEXT
'AS',
"#EC NOTEXT
'B1 Task manager activities:',
"#EC NOTEXT
'AL @OW@ Start configuration loaded',
"#EC NOTEXT
'AL @B8@ Preparation activities (performed by task manager
before executing', "#EC NOTEXT
' a task activity)',
"#EC NOTEXT
'AL @B9@ Post processing activities (performed by task manager
after', "#EC NOTEXT
' executing a task activity)',
"#EC NOTEXT
'AL @03@ Consistency check (task manager detects
inconsistencies during or', "#EC NOTEXT
' after task list run processing)',
"#EC NOTEXT
'AL @9Y@ Operation is in progress (temporary message; will
disapear when', "#EC NOTEXT
' operation is finished)',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'B1 User activities:',
"#EC NOTEXT
'AL @A0@ Confirmation of manual steps',
"#EC NOTEXT
'AL @43@ Task skipped',
"#EC NOTEXT
'AL @R7@ Task set in scope',
"#EC NOTEXT
'AL @0J@ Configuration changed',
"#EC NOTEXT
'AL @3U@ Stop signal send',
"#EC NOTEXT
'AL @L3@ Finalization',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &DEPENDENCIES&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &EXAMPLE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_05. " DTED STC_EXEC_ACTIVITY_DESCR


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_EXEC_ACTIVITY_DESCR'
i_devclass = 'STC_TM'
i_domname = 'DDTEXT'
i_logflag = ''
i_headlen = '10'
i_scrlen1 = '10'
i_scrlen2 = '15'
i_scrlen3 = '20'
i_langu = 'E'
i_ddtext = 'Execution Activity Description'
i_reptext = 'Act.'
i_scrtext_s = 'Act.'
i_scrtext_m = 'Activity'
i_scrtext_l = 'Execution Activity'.
ENDFORM.

FORM update_06. " DOCU DESTC_EXEC_ACTIVITY_DESCR


CALL METHOD lcl_wb=>create_dtel_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_rollname = 'STC_EXEC_ACTIVITY_DESCR'
i_langu = 'E'
i_line =:'/: INCLUDE STC_EXEC_ACTIVITY OBJECT DOKU ID DE',
"#EC NOTEXT
'*',
"#EC NOTEXT
space.
ENDFORM.

FORM update_07. " DTED STC_EXEC_PERIOD


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_EXEC_PERIOD'
i_devclass = 'STC_TM'
i_domname = 'STC_EXEC_PERIOD'
i_logflag = ''
i_headlen = '10'
i_scrlen1 = '10'
i_scrlen2 = '20'
i_scrlen3 = '30'
i_langu = 'E'
i_ddtext = 'Execution Period'
i_reptext = 'Period'
i_scrtext_s = 'Period'
i_scrtext_m = 'Exec. Period'
i_scrtext_l = 'Execution Period'.
ENDFORM.

FORM update_08. " DTED STC_EXEC_PERIOD_DESCR


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_EXEC_PERIOD_DESCR'
i_devclass = 'STC_TM'
i_domname = 'DDTEXT'
i_logflag = ''
i_headlen = '10'
i_scrlen1 = '10'
i_scrlen2 = '20'
i_scrlen3 = '30'
i_langu = 'E'
i_ddtext = 'Execution Period Description'
i_reptext = 'Period'
i_scrtext_s = 'Period'
i_scrtext_m = 'Exec. Period'
i_scrtext_l = 'Execution Period'.
ENDFORM.

FORM update_09. " DOCU DESTC_EXEC_PERIOD_DESCR


CALL METHOD lcl_wb=>create_dtel_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_rollname = 'STC_EXEC_PERIOD_DESCR'
i_langu = 'E'
i_line =:'/: INCLUDE STC_EXEC_PERIOD OBJECT DOKU ID DE',
"#EC NOTEXT
space.
ENDFORM.

FORM update_10. " DTED STC_SESSION_FINALIZED_DESCR


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_SESSION_FINALIZED_DESCR'
i_devclass = 'STC_TM'
i_domname = 'DDTEXT'
i_logflag = ''
i_headlen = '10'
i_scrlen1 = '10'
i_scrlen2 = '15'
i_scrlen3 = '30'
i_langu = 'E'
i_ddtext = 'Task List Run Finalized Description'
i_reptext = 'Finalized'
i_scrtext_s = 'Final'
i_scrtext_m = 'Finalized'
i_scrtext_l = 'Task List Run Finalized'.
ENDFORM.

FORM update_11. " DTED STC_TASK_SEMANTIC_DESCR


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_TASK_SEMANTIC_DESCR'
i_devclass = 'STC_TASK'
i_domname = 'TEXT100'
i_logflag = ''
i_headlen = '15'
i_scrlen1 = '10'
i_scrlen2 = '15'
i_scrlen3 = '30'
i_langu = 'E'
i_ddtext = 'Task Semantic Description'
i_reptext = 'Semantic'
i_scrtext_s = 'Semantic'
i_scrtext_m = 'Semantic Descr.'
i_scrtext_l = 'Task Semantic Description'.
ENDFORM.

FORM update_12. " DTED STC_TASK_SEMANTIC_ID


CALL METHOD lcl_wb=>create_dtel "#EC *
EXPORTING
i_rollname = 'STC_TASK_SEMANTIC_ID'
i_devclass = 'STC_TASK'
i_domname = ''
i_datatype = 'CHAR'
i_decimals = '000000'
i_leng = '000072'
i_reftype = ''
i_refkind = ''
i_logflag = ''
i_headlen = '15'
i_scrlen1 = '10'
i_scrlen2 = '15'
i_scrlen3 = '30'
i_langu = 'E'
i_ddtext = 'Task Semantic Identifier'
i_reptext = 'Semantic'
i_scrtext_s = 'Semantic'
i_scrtext_m = 'Semantic'
i_scrtext_l = 'Task Semantic Identifier'.
ENDFORM.

FORM update_13. " TABD STCTM_S_LOG


DATA: lt_dd36 TYPE TABLE OF dd36m, ls_dd36 TYPE dd36m,
lt_dd05m TYPE TABLE OF dd05m, ls_dd05m TYPE dd05m,
ls_dd08v TYPE dd08v.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_LOG'
i_fieldname = 'PERIOD_DESCR'
i_rollname = 'STC_EXEC_PERIOD_DESCR'
i_context = 'PERIOD'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_LOG'
i_fieldname = 'ACTIVITY'
i_rollname = 'STC_EXEC_ACTIVITY'
i_context = 'PERIOD_DESCR'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_LOG'
i_fieldname = 'ACTIVITY_DESCR'
i_rollname = 'STC_EXEC_ACTIVITY_DESCR'
i_context = 'ACTIVITY'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_LOG'
i_fieldname = 'SRC_OBJECT'
i_rollname = 'SEU_OBJKEY'
i_context = 'ACTIVITY_DESCR'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_LOG'
i_fieldname = 'SRC_LINE'
i_rollname = 'INT4'
i_context = 'SRC_OBJECT'.
ENDFORM.

FORM update_14. " TABD STCTM_S_SESSION


DATA: lt_dd36 TYPE TABLE OF dd36m, ls_dd36 TYPE dd36m,
lt_dd05m TYPE TABLE OF dd05m, ls_dd05m TYPE dd05m,
ls_dd08v TYPE dd08v.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_SESSION'
i_fieldname = 'FINALIZED_DESCR'
i_rollname = 'STC_SESSION_FINALIZED_DESCR'
i_context = 'FINALIZED'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_SESSION'
i_fieldname = 'CREATED_BY'
i_rollname = 'CRUSER'
i_context = 'FINALIZED_DESCR'.
ENDFORM.

FORM update_15. " TABD STCTM_S_TASK


DATA: lt_dd36 TYPE TABLE OF dd36m, ls_dd36 TYPE dd36m,
lt_dd05m TYPE TABLE OF dd05m, ls_dd05m TYPE dd05m,
ls_dd08v TYPE dd08v.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_TASK'
i_fieldname = 'SEMANTIC_ID'
i_rollname = 'STC_TASK_SEMANTIC_ID'
i_context = 'LNR'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTM_S_TASK'
i_fieldname = 'DESCRIPTION'
i_rollname = 'STC_TASK_DESCR'
i_context = 'SEMANTIC_ID'.
ENDFORM.

FORM update_16. " TABD STCTT_S_DIFFERENT_PARAMETERS


DATA: lt_dd36 TYPE TABLE OF dd36m, ls_dd36 TYPE dd36m,
lt_dd05m TYPE TABLE OF dd05m, ls_dd05m TYPE dd05m,
ls_dd08v TYPE dd08v.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTT_S_DIFFERENT_PARAMETERS'
i_fieldname = '_CHAR255'
i_datatype = 'CHAR'
i_decimals = '000000'
i_leng = '000255'
i_ddtext = 'Characters, 255-char. (C)'
i_langu = 'E'
i_context = '_CHAR10'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTT_S_DIFFERENT_PARAMETERS'
i_fieldname = '_CHAR1024'
i_datatype = 'CHAR'
i_decimals = '000000'
i_leng = '001024'
i_ddtext = 'Characters, 1024-char. (C)'
i_langu = 'E'
i_context = '_CHAR255'.
IF sy-saprl >= '750'. "supported with SAP_BASIS 7.50
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STCTT_S_DIFFERENT_PARAMETERS'
i_fieldname = '_INT8'
i_datatype = 'INT8'
i_decimals = '000000'
i_leng = '000019'
i_ddtext = '8-byte integer (8)'
i_langu = 'E'
i_context = '_INT4'.
ENDIF.
ENDFORM.

FORM update_17. " TABD STC_RS_TASK_ID


DATA: lt_dd36 TYPE TABLE OF dd36m, ls_dd36 TYPE dd36m,
lt_dd05m TYPE TABLE OF dd05m, ls_dd05m TYPE dd05m,
ls_dd08v TYPE dd08v.
CALL METHOD lcl_wb=>create_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_ID'
i_devclass = 'STC_TASK'
i_exclass = '1'
i_authclass = '00'
i_langu = 'E'
i_ddtext = 'Range Structure for Task ID'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_ID'
i_fieldname = 'SIGN'
i_rollname = 'TVARV_SIGN'
i_context = 'STC_RS_TASK_ID'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_ID'
i_fieldname = 'OPTION'
i_rollname = 'TVARV_OPTI'
i_context = 'SIGN'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_ID'
i_fieldname = 'LOW'
i_rollname = 'STC_TASK_ID'
i_context = 'OPTION'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_ID'
i_fieldname = 'HIGH'
i_rollname = 'STC_TASK_ID'
i_context = 'LOW'.
ENDFORM.

FORM update_18. " TABD STC_RS_TASK_TYPE


DATA: lt_dd36 TYPE TABLE OF dd36m, ls_dd36 TYPE dd36m,
lt_dd05m TYPE TABLE OF dd05m, ls_dd05m TYPE dd05m,
ls_dd08v TYPE dd08v.
CALL METHOD lcl_wb=>create_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_TYPE'
i_devclass = 'STC_TASK'
i_exclass = '1'
i_authclass = '00'
i_langu = 'E'
i_ddtext = 'Range Structure for Task Type'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_TYPE'
i_fieldname = 'SIGN'
i_rollname = 'TVARV_SIGN'
i_context = 'STC_RS_TASK_TYPE'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_TYPE'
i_fieldname = 'OPTION'
i_rollname = 'TVARV_OPTI'
i_context = 'SIGN'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_TYPE'
i_fieldname = 'LOW'
i_rollname = 'STC_TASK_TYPE'
i_context = 'OPTION'.
CLEAR: ls_dd08v, lt_dd05m.
CALL METHOD lcl_wb=>add_field_to_table "#EC *
EXPORTING
i_tabname = 'STC_RS_TASK_TYPE'
i_fieldname = 'HIGH'
i_rollname = 'STC_TASK_TYPE'
i_context = 'LOW'.
ENDFORM.

FORM update_19. " TTYD STC_RT_TASK_ID


DATA: ls_dd42v TYPE dd42v, lt_dd42v TYPE TABLE OF dd42v.
CLEAR lt_dd42v.
CALL METHOD lcl_wb=>create_table_type "#EC *
EXPORTING
i_typename = 'STC_RT_TASK_ID'
i_devclass = 'STC_TASK'
i_langu = 'E'
i_ddtext = 'Range table for Task ID'
i_rowtype = 'STC_RS_TASK_ID'
i_accessmode = 'T'
i_keydef = 'D'
i_keykind = 'N'
it_dd42v = lt_dd42v.
ENDFORM.

FORM update_20. " TTYD STC_RT_TASK_TYPE


DATA: ls_dd42v TYPE dd42v, lt_dd42v TYPE TABLE OF dd42v.
CLEAR lt_dd42v.
CALL METHOD lcl_wb=>create_table_type "#EC *
EXPORTING
i_typename = 'STC_RT_TASK_TYPE'
i_devclass = 'STC_TASK'
i_langu = 'E'
i_ddtext = 'Range table for Task Type'
i_rowtype = 'STC_RS_TASK_TYPE'
i_accessmode = 'T'
i_keydef = 'D'
i_keykind = 'N'
it_dd42v = lt_dd42v.
ENDFORM.

FORM update_21. " DOCU CLCL_STCTM_DUMMY_TASK


CALL METHOD lcl_wb=>create_other_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_docname = 'CLCL_STCTM_DUMMY_TASK'
i_langu = 'E'
i_line =:'U1 &PURPOSE&',
"#EC NOTEXT
'AS This task is a placeholder for a real task which cannot be
used. Reasons', "#EC NOTEXT
' for this might be:',
"#EC NOTEXT
'B1 The task does not exist in the system.',
"#EC NOTEXT
'B1 The task coding contains syntax errors and causes a short
dump when', "#EC NOTEXT
' used.',
"#EC NOTEXT
'U1 &DEPENDENCIES&',
"#EC NOTEXT
'U1 &MAINTENANCE&',
"#EC NOTEXT
'U1 &CHECK&',
"#EC NOTEXT
'U1 &REALIZE&',
"#EC NOTEXT
'AS This task is not executable.',
"#EC NOTEXT
'U3 Manual Activity',
"#EC NOTEXT
'AS In the SAP Support Portal, search for the class name and
check for', "#EC NOTEXT
' documentation.',
"#EC NOTEXT
'U1 &EXAMPLE&',
"#EC NOTEXT
space.
ENDFORM.

FORM update_22. " REPT CL_STCTM_LOG_DISPLAY==========CP


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'CL_STCTM_LOG_DISPLAY==========CP'
i_devclass = 'STC_TM'
i_langu = 'E':
i_id = 'I'
i_key = '014'
i_text = 'Line' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '015'
i_text = 'Source Line' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '016'
i_text = 'Source' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '017'
i_text = 'Source Code' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '018'
i_text = 'Type' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '019'
i_text = 'Source Type' "#EC NOTEXT
i_length = '30'.
ENDFORM.

FORM update_23. " REPT CL_STCTM_PREPROCESSOR=========CP


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'CL_STCTM_PREPROCESSOR=========CP'
i_devclass = 'STC_TM'
i_langu = 'E':
i_id = 'I'
i_key = '076'
i_text = '<task is skipped or not required>' "#EC NOTEXT
i_length = '50'.
ENDFORM.

FORM update_24. " REPT CL_STCTM_UTILITIES============CP


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'CL_STCTM_UTILITIES============CP'
i_devclass = 'STC_TM'
i_langu = 'E':
i_id = 'I'
i_key = '018'
i_text = 'Source' "#EC NOTEXT
i_length = '20',
i_id = 'I'
i_key = '019'
i_text = 'Line' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '020'
i_text = 'Execution History' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '021'
i_text = 'Execution Details' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '022'
i_text = 'API call' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '023'
i_text = 'User interface call' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '024'
i_text = 'Background processing' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '025'
i_text = 'Online processing' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '026'
i_text = 'Execution Mode' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '027'
i_text = 'Interface' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '028'
i_text = 'Duration' "#EC NOTEXT
i_length = '20',
i_id = 'I'
i_key = '029'
i_text = 'Top Tasks' "#EC NOTEXT
i_length = '20',
i_id = 'I'
i_key = '030'
i_text = 'No. of Maintenance' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '031'
i_text = 'No. of Checkruns' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '032'
i_text = 'No. of Executions' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '033'
i_text = 'Checkrun Duration' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '034'
i_text = 'Execution Duration' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '035'
i_text = 'Top Tasks by Duration' "#EC NOTEXT
i_length = '50',
i_id = 'I'
i_key = '036'
i_text = 'Involved Tasks' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '037'
i_text = 'SL Analytics' "#EC NOTEXT
i_length = '20'.
ENDFORM.

FORM update_25. " REPT CL_STCTT_COMPLEX==============CP


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'CL_STCTT_COMPLEX==============CP'
i_devclass = 'STC_TEST'
i_langu = 'E':
i_id = 'I'
i_key = '002'
i_text = 'Current progress: &1%' "#EC NOTEXT
i_length = '50'.
ENDFORM.

FORM update_26. " REPT CL_STCTT_VARIABLE_PARAMETERS==CP


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'CL_STCTT_VARIABLE_PARAMETERS==CP'
i_devclass = 'STC_TEST'
i_langu = 'E':
i_id = 'I'
i_key = '001'
i_text = 'Test task: External parameters depends on the task occurrence'
"#EC NOTEXT
i_length = '100'.
ENDFORM.

FORM update_27. " DOCU CLCL_STCTT_VARIABLE_PARAMETERS


CALL METHOD lcl_wb=>create_other_docu "#EC *
EXPORTING
i_devclass = 'STC_TEST'
i_docname = 'CLCL_STCTT_VARIABLE_PARAMETERS'
i_langu = 'E'
i_line =:'/: INCLUDE STCTT_VARIABLE_PARAMETERS OBJECT DOKU ID TX',
"#EC NOTEXT
space.
ENDFORM.

FORM update_28. " DOCU CLCL_STCTT_WITH_REF_TO_TASKLIST


CALL METHOD lcl_wb=>create_other_docu "#EC *
EXPORTING
i_devclass = 'STC_TEST'
i_docname = 'CLCL_STCTT_WITH_REF_TO_TASKLIST'
i_langu = 'E'
i_line =:'/: INCLUDE STCTT_WITH_REF_TO_TASKLIST OBJECT DOKU ID TX',
"#EC NOTEXT
space.
ENDFORM.

FORM update_29. " REPT LSTC_TM_FUNCTIONST99


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'LSTC_TM_FUNCTIONST99'
i_devclass = 'STC_TM'
i_langu = 'E':
i_id = 'R'
i_key = ''
i_text = 'Include LSTC_TM_FUNCTIONST99' "#EC NOTEXT
i_length = '28'.
ENDFORM.

FORM update_30. " REPT SAPLSTC_TM_FUNCTIONS


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'SAPLSTC_TM_FUNCTIONS'
i_devclass = 'STC_TM'
i_langu = 'E':
i_id = 'I'
i_key = '081'
i_text = 'Details' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '082'
i_text = 'Implementation' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '083'
i_text = 'Copy Text' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '084'
i_text = 'Spreadsheet...' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '085'
i_text = 'Find' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '086'
i_text = 'Find next' "#EC NOTEXT
i_length = '25'.
ENDFORM.

FORM update_31. " REPT STC_SCN_MAINTAIN


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'STC_SCN_MAINTAIN'
i_devclass = 'STC_TM'
i_langu = 'E':
i_id = 'I'
i_key = '043'
i_text = 'Show Event Tasks' "#EC NOTEXT
i_length = '40',
i_id = 'I'
i_key = '047'
i_text = 'Event' "#EC NOTEXT
i_length = '15',
i_id = 'I'
i_key = '048'
i_text = 'Event Description' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '049'
i_text = 'Ev. Descr.' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '050'
i_text = 'Section' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '051'
i_text = 'Event Section' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '052'
i_text = 'Tasklist &1 with resolved events' "#EC NOTEXT
i_length = '45',
i_id = 'I'
i_key = '053'
i_text = '<no tasks assigned>' "#EC NOTEXT
i_length = '32',
i_id = 'I'
i_key = '054'
i_text = 'Prepare' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '055'
i_text = 'Post' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '056'
i_text = 'Main' "#EC NOTEXT
i_length = '10',
i_id = 'I'
i_key = '057'
i_text = 'Note:' "#EC NOTEXT
i_length = '15',
i_id = 'I'
i_key = '058'
i_text = 'Tasks assigned to events depends on the installed software
components.' "#EC NOTEXT
i_length = '100',
i_id = 'I'
i_key = '059'
i_text = 'The displayed list shows the currently assigned tasks in this
system.' "#EC NOTEXT
i_length = '100',
i_id = 'I'
i_key = '060'
i_text = 'Copy Text' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '061'
i_text = 'Details' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '062'
i_text = 'Implementation' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '063'
i_text = 'Spreadsheet...' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '064'
i_text = 'Event Sequence' "#EC NOTEXT
i_length = '25',
i_id = 'I'
i_key = '065'
i_text = 'Sequence' "#EC NOTEXT
i_length = '10'.
ENDFORM.

FORM update_32. " CUAD STC_SCN_MAINTAIN


DATA: ls_adm TYPE rsmpe_adm,
lt_sta TYPE TABLE OF rsmpe_stat, ls_sta type rsmpe_stat,
lt_fun TYPE TABLE OF rsmpe_funt, ls_fun type rsmpe_funt,
lt_men TYPE TABLE OF rsmpe_men, ls_men type rsmpe_men,
lt_mtx TYPE TABLE OF rsmpe_mnlt, ls_mtx type rsmpe_mnlt,
lt_act TYPE TABLE OF rsmpe_act, ls_act type rsmpe_act,
lt_but TYPE TABLE OF rsmpe_but, ls_but type rsmpe_but,
lt_pfk TYPE TABLE OF rsmpe_pfk, ls_pfk type rsmpe_pfk,
lt_set TYPE TABLE OF rsmpe_staf, ls_set type rsmpe_staf,
lt_doc TYPE TABLE OF rsmpe_atrt, ls_doc type rsmpe_atrt,
lt_tit TYPE TABLE OF rsmpe_titt, ls_tit type rsmpe_titt,
lt_biv TYPE TABLE OF rsmpe_buts, ls_biv type rsmpe_buts.
ls_adm-actcode = '000003'.
ls_adm-mencode = '000020'.
ls_adm-pfkcode = '000005'.
CLEAR ls_men.
ls_men-code = '000001'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'COPY'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000001'.
ls_men-no = '02'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'DELETE'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000001'.
ls_men-no = '03'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000001'.
ls_men-no = '04'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'CONS_CHECK'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000001'.
ls_men-no = '05'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000001'.
ls_men-no = '06'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F15'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000002'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'ATTR'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000002'.
ls_men-no = '02'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000002'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F12'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'STC02'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '02'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'OBJCAT'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '04'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '05'.
ls_men-ref_type = 'M'.
ls_men-ref_code = '000018'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '06'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000003'.
ls_men-no = '07'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F03'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000006'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'COPY'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000006'.
ls_men-no = '02'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'DELETE'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000006'.
ls_men-no = '03'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000006'.
ls_men-no = '04'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'CONS_CHECK'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000006'.
ls_men-no = '05'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000006'.
ls_men-no = '06'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F15'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000007'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'ATTR'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000007'.
ls_men-no = '02'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000007'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F12'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'STC02'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '02'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'OBJCAT'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '04'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '05'.
ls_men-ref_type = 'M'.
ls_men-ref_code = '000018'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '06'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000008'.
ls_men-no = '07'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F03'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000011'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'CREATE'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000011'.
ls_men-no = '02'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'COPY'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000011'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'DELETE'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000011'.
ls_men-no = '04'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000011'.
ls_men-no = '05'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F15'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000012'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F12'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000013'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'STC02'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000013'.
ls_men-no = '02'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000013'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = '&F03'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000016'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'USRSET'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000016'.
ls_men-no = '02'.
ls_men-ref_type = 'S'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000016'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'VERSION'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000016'.
ls_men-no = '04'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'VERS_GEN'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000018'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'DOCU_DISP'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000018'.
ls_men-no = '02'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'DOCU_CHNG'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000018'.
ls_men-no = '03'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'DOCU_L'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_men.
ls_men-code = '000020'.
ls_men-no = '01'.
ls_men-ref_type = 'F'.
ls_men-ref_code = 'USRSET'.
ls_men-ref_no = '001'.
APPEND ls_men TO lt_men.
CLEAR ls_act.
ls_act-code = '000001'.
ls_act-no = '01'.
ls_act-menucode = '000001'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000001'.
ls_act-no = '02'.
ls_act-menucode = '000002'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000001'.
ls_act-no = '03'.
ls_act-menucode = '000003'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000001'.
ls_act-no = '04'.
ls_act-menucode = '000016'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000002'.
ls_act-no = '01'.
ls_act-menucode = '000006'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000002'.
ls_act-no = '02'.
ls_act-menucode = '000007'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000002'.
ls_act-no = '03'.
ls_act-menucode = '000008'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000002'.
ls_act-no = '04'.
ls_act-menucode = '000016'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000003'.
ls_act-no = '01'.
ls_act-menucode = '000011'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000003'.
ls_act-no = '02'.
ls_act-menucode = '000012'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000003'.
ls_act-no = '03'.
ls_act-menucode = '000013'.
APPEND ls_act TO lt_act.
CLEAR ls_act.
ls_act-code = '000003'.
ls_act-no = '04'.
ls_act-menucode = '000020'.
APPEND ls_act TO lt_act.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '01'.
ls_but-pfno = '08'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '02'.
ls_but-pfno = '09'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '03'.
ls_but-pfno = '27'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '04'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '05'.
ls_but-pfno = '22'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '06'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '07'.
ls_but-pfno = '18'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '08'.
ls_but-pfno = '19'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '09'.
ls_but-pfno = '20'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '10'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '11'.
ls_but-pfno = '05'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '12'.
ls_but-pfno = '06'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '13'.
ls_but-pfno = '07'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '14'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '15'.
ls_but-pfno = '37'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '16'.
ls_but-pfno = '38'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '17'.
ls_but-pfno = '39'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000001'.
ls_but-code = '0001'.
ls_but-no = '18'.
ls_but-pfno = '40'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '01'.
ls_but-pfno = '08'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '02'.
ls_but-pfno = '09'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '03'.
ls_but-pfno = '27'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '04'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '05'.
ls_but-pfno = '22'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '06'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '07'.
ls_but-pfno = '18'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '08'.
ls_but-pfno = '19'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000002'.
ls_but-code = '0001'.
ls_but-no = '09'.
ls_but-pfno = '20'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '01'.
ls_but-pfno = '06'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '02'.
ls_but-pfno = '02'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '03'.
ls_but-pfno = '05'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '04'.
ls_but-pfno = '14'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '05'.
ls_but-pfno = '07'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '06'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '07'.
ls_but-pfno = '22'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '08'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '09'.
ls_but-pfno = '08'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '10'.
ls_but-pfno = 'S'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '11'.
ls_but-pfno = '32'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '12'.
ls_but-pfno = '26'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '13'.
ls_but-pfno = '30'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000003'.
ls_but-code = '0001'.
ls_but-no = '14'.
ls_but-pfno = '38'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000005'.
ls_but-code = '0001'.
ls_but-no = '01'.
ls_but-pfno = '00'.
APPEND ls_but TO lt_but.
CLEAR ls_but.
ls_but-pfk_code = '000005'.
ls_but-code = '0001'.
ls_but-no = '02'.
ls_but-pfno = '12'.
APPEND ls_but TO lt_but.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '03'.
ls_pfk-funcode = '&F03'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '05'.
ls_pfk-funcode = 'ADD'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '06'.
ls_pfk-funcode = 'REMOVE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '07'.
ls_pfk-funcode = 'DUPLICATE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '08'.
ls_pfk-funcode = 'EXECUTE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '09'.
ls_pfk-funcode = 'CHANGE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '11'.
ls_pfk-funcode = '&DATA_SAVE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '12'.
ls_pfk-funcode = '&F12'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '14'.
ls_pfk-funcode = 'DELETE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '15'.
ls_pfk-funcode = '&F15'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '18'.
ls_pfk-funcode = 'ATTR'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '19'.
ls_pfk-funcode = 'DOCU_CHNG'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '20'.
ls_pfk-funcode = 'RESOLVE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '21'.
ls_pfk-funcode = 'COPY'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '22'.
ls_pfk-funcode = 'APPLHELP'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '23'.
ls_pfk-funcode = 'USRSET'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '27'.
ls_pfk-funcode = 'CONS_CHECK'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '37'.
ls_pfk-funcode = 'MOVE_TOP'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '38'.
ls_pfk-funcode = 'MOVE_UP'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '39'.
ls_pfk-funcode = 'MOVE_DOWN'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '40'.
ls_pfk-funcode = 'MOVE_BOTM'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '44'.
ls_pfk-funcode = 'VIEW_CHG'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '71'.
ls_pfk-funcode = '&FIND'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000001'.
ls_pfk-pfno = '84'.
ls_pfk-funcode = '&FIND_MORE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '03'.
ls_pfk-funcode = '&F03'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '08'.
ls_pfk-funcode = 'EXECUTE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '09'.
ls_pfk-funcode = 'CHANGE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '12'.
ls_pfk-funcode = '&F12'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '14'.
ls_pfk-funcode = 'DELETE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '15'.
ls_pfk-funcode = '&F15'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '18'.
ls_pfk-funcode = 'ATTR'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '19'.
ls_pfk-funcode = 'DOCU_DISP'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '20'.
ls_pfk-funcode = 'RESOLVE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '21'.
ls_pfk-funcode = 'COPY'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '22'.
ls_pfk-funcode = 'APPLHELP'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '23'.
ls_pfk-funcode = 'USRSET'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '27'.
ls_pfk-funcode = 'CONS_CHECK'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '44'.
ls_pfk-funcode = 'VIEW_CHG'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '71'.
ls_pfk-funcode = '&FIND'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000002'.
ls_pfk-pfno = '84'.
ls_pfk-funcode = '&FIND_MORE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '02'.
ls_pfk-funcode = 'DISPLAY'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '03'.
ls_pfk-funcode = '&F03'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '05'.
ls_pfk-funcode = 'EDIT'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '06'.
ls_pfk-funcode = 'CREATE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '07'.
ls_pfk-funcode = 'COPY'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '08'.
ls_pfk-funcode = 'EXECUTE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '12'.
ls_pfk-funcode = '&F12'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '14'.
ls_pfk-funcode = 'DELETE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '15'.
ls_pfk-funcode = '&F15'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '22'.
ls_pfk-funcode = 'APPLHELP'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '23'.
ls_pfk-funcode = 'USRSET'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '26'.
ls_pfk-funcode = 'DISVARI'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '30'.
ls_pfk-funcode = 'CREVARI'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '32'.
ls_pfk-funcode = 'EXEVARI'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000003'.
ls_pfk-pfno = '38'.
ls_pfk-funcode = 'DELVARI'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000005'.
ls_pfk-pfno = '00'.
ls_pfk-funcode = 'CONTINUE'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_pfk.
ls_pfk-code = '000005'.
ls_pfk-pfno = '12'.
ls_pfk-funcode = 'CANCEL'.
ls_pfk-funno = '001'.
APPEND ls_pfk TO lt_pfk.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = '&F03'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = '&F12'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = '&F15'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = '&FIND'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = '&FIND_MORE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = '&PRINT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'APPLHELP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'ATTR'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'CHANGE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'CONS_CHECK'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'COPY'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'DELETE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'DOCU_DISP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'DOCU_L'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'DOCU_S'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'EXECUTE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'OBJCAT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'RESOLVE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'STC02'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'USROPT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'USRSET'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'VERSION'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'VERS_GEN'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_DISPLAY'.
ls_set-function = 'VIEW_CHG'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = '&F03'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = '&F12'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = '&F15'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'APPLHELP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'COPY'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'CREATE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'CREVARI'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'DELETE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'DELVARI'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'DISPLAY'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'DISVARI'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'EDIT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'EXECUTE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'EXEVARI'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'STC02'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'USROPT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAIN'.
ls_set-function = 'USRSET'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&DATA_SAVE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&F03'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&F12'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&F15'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&FIND'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&FIND_MORE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = '&PRINT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'ADD'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'APPLHELP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'ATTR'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'CHANGE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'CONS_CHECK'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'COPY'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'DELETE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'DOCU_CHNG'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'DOCU_DISP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'DOCU_L'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'DOCU_S'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'DUPLICATE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'EXECUTE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'MOVE_BOTM'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'MOVE_DOWN'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'MOVE_TOP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'MOVE_UP'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'OBJCAT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'REMOVE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'RESOLVE'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'STC02'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'USROPT'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'USRSET'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'VERSION'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'VERS_GEN'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_MAINTAIN'.
ls_set-function = 'VIEW_CHG'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_PROP'.
ls_set-function = 'CANCEL'.
APPEND ls_set TO lt_set.
CLEAR ls_set.
ls_set-status = 'SCN_PROP'.
ls_set-function = 'CONTINUE'.
APPEND ls_set TO lt_set.
CLEAR ls_sta.
ls_sta-code = 'SCN_DISPLAY'.
ls_sta-modal = 'D'.
ls_sta-actcode = '000002'.
ls_sta-pfkcode = '000002'.
ls_sta-butcode = '0001'.
ls_sta-int_note = 'Display Scenario'. "#EC NOTEXT
APPEND ls_sta TO lt_sta.
CLEAR ls_sta.
ls_sta-code = 'SCN_MAIN'.
ls_sta-modal = 'D'.
ls_sta-actcode = '000003'.
ls_sta-pfkcode = '000003'.
ls_sta-butcode = '0001'.
ls_sta-int_note = 'Main'. "#EC NOTEXT
APPEND ls_sta TO lt_sta.
CLEAR ls_sta.
ls_sta-code = 'SCN_MAINTAIN'.
ls_sta-modal = 'D'.
ls_sta-actcode = '000001'.
ls_sta-pfkcode = '000001'.
ls_sta-butcode = '0001'.
ls_sta-int_note = 'Maintain Scenario'. "#EC NOTEXT
APPEND ls_sta TO lt_sta.
CLEAR ls_sta.
ls_sta-code = 'SCN_PROP'.
ls_sta-modal = 'P'.
ls_sta-pfkcode = '000005'.
ls_sta-butcode = '0001'.
ls_sta-int_note = 'Properties'. "#EC NOTEXT
APPEND ls_sta TO lt_sta.
CLEAR ls_fun.
ls_fun-code = '&DATA_SAVE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_SYSTEM_SAVE'.
ls_fun-icon_id = '@2L@'.
ls_fun-fun_text = 'Save'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = '&F03'.
ls_fun-textno = '001'.
ls_fun-type = 'E'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Back'. "#EC NOTEXT
ls_fun-path = 'B'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = '&F12'.
ls_fun-textno = '001'.
ls_fun-type = 'E'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_CANCEL'.
ls_fun-icon_id = '@0W@'.
ls_fun-fun_text = 'Cancel'. "#EC NOTEXT
ls_fun-path = 'A'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = '&F15'.
ls_fun-textno = '001'.
ls_fun-type = 'E'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Exit'. "#EC NOTEXT
ls_fun-path = 'X'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = '&FIND'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_SEARCH'.
ls_fun-icon_id = '@13@'.
ls_fun-fun_text = 'Find'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = '&FIND_MORE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_SEARCH_NEXT'.
ls_fun-icon_id = '@4E@'.
ls_fun-fun_text = 'Find next'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = '&PRINT'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_PRINT'.
ls_fun-icon_id = '@0X@'.
ls_fun-fun_text = 'Print'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'ADD'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_INSERT_ROW'.
ls_fun-icon_id = '@17@'.
ls_fun-fun_text = 'Add Task'. "#EC NOTEXT
ls_fun-info_text = 'Add new tasks'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'APPLHELP'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_INFORMATION'.
ls_fun-icon_id = '@0S@'.
ls_fun-fun_text = 'Online Help'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'ATTR'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Attributes'. "#EC NOTEXT
ls_fun-info_text = 'Task List Attributes'. "#EC NOTEXT
ls_fun-path = 'T'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'CANCEL'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_CANCEL'.
ls_fun-icon_id = '@0W@'.
ls_fun-fun_text = 'Cancel'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'CHANGE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_TOGGLE_DISPLAY_CHANGE'.
ls_fun-icon_id = '@3I@'.
ls_fun-fun_text = 'Display/Change'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'CONS_CHECK'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_AVAILABILITY_DISPLAY'.
ls_fun-icon_id = '@FF@'.
ls_fun-fun_text = 'Consistency Check'. "#EC NOTEXT
ls_fun-path = 'O'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'CONTINUE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_OKAY'.
ls_fun-icon_id = '@0V@'.
ls_fun-fun_text = 'Continue'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'COPY'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_COPY_OBJECT'.
ls_fun-icon_id = '@14@'.
ls_fun-fun_text = 'Copy'. "#EC NOTEXT
ls_fun-info_text = 'Copy Task List'. "#EC NOTEXT
ls_fun-path = 'O'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'CREATE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_CREATE'.
ls_fun-icon_id = '@0Y@'.
ls_fun-fun_text = 'Create'. "#EC NOTEXT
ls_fun-info_text = 'Create New Task List'. "#EC NOTEXT
ls_fun-path = 'C'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'CREVARI'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_CREATE'.
ls_fun-icon_id = '@0Y@'.
ls_fun-fun_text = 'Create New Variant'. "#EC NOTEXT
ls_fun-icon_text = 'Variant'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DELETE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_DELETE'.
ls_fun-icon_id = '@11@'.
ls_fun-fun_text = 'Delete'. "#EC NOTEXT
ls_fun-info_text = 'Delete Task List'. "#EC NOTEXT
ls_fun-path = 'D'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DELVARI'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_DELETE'.
ls_fun-icon_id = '@11@'.
ls_fun-fun_text = 'Delete Variants'. "#EC NOTEXT
ls_fun-icon_text = 'Variants'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DISPLAY'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_DISPLAY'.
ls_fun-icon_id = '@10@'.
ls_fun-fun_text = 'Display'. "#EC NOTEXT
ls_fun-info_text = 'Display Task List'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DISVARI'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_VARIANTS'.
ls_fun-icon_id = '@0R@'.
ls_fun-fun_text = 'Display Variants'. "#EC NOTEXT
ls_fun-icon_text = 'Variants'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DOCU_CHNG'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_CHANGE_TEXT'.
ls_fun-icon_id = '@0Q@'.
ls_fun-fun_text = 'Change'. "#EC NOTEXT
ls_fun-info_text = 'Change Task List Documentation'. "#EC NOTEXT
ls_fun-path = 'C'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DOCU_DISP'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_DISPLAY_TEXT'.
ls_fun-icon_id = '@0P@'.
ls_fun-fun_text = 'Display'. "#EC NOTEXT
ls_fun-info_text = 'Display Task List Documentation'. "#EC NOTEXT
ls_fun-path = 'D'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DOCU_L'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Display with Task Docu.'. "#EC NOTEXT
ls_fun-path = 'A'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DOCU_S'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Display with Task Summary'. "#EC NOTEXT
ls_fun-path = 'T'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'DUPLICATE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_COPY_OBJECT'.
ls_fun-icon_id = '@14@'.
ls_fun-fun_text = 'Duplicate Task'. "#EC NOTEXT
ls_fun-info_text = 'Duplicate selected tasks'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'EDIT'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_CHANGE'.
ls_fun-icon_id = '@0Z@'.
ls_fun-fun_text = 'Edit'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'EXECUTE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_EXECUTE_OBJECT'.
ls_fun-icon_id = '@15@'.
ls_fun-fun_text = 'Execute'. "#EC NOTEXT
ls_fun-info_text = 'Generate Task List Run'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'EXEVARI'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_EXECUTE_OBJECT'.
ls_fun-icon_id = '@15@'.
ls_fun-fun_text = 'Execute with Variant'. "#EC NOTEXT
ls_fun-icon_text = 'With Variant'. "#EC NOTEXT
ls_fun-info_text = 'Generate Task List Run with Variant'. "#EC
NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'MOVE_BOTM'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_TOTAL_DOWN'.
ls_fun-icon_id = '@HG@'.
ls_fun-fun_text = 'Move to Bottom'. "#EC NOTEXT
ls_fun-info_text = 'Move selected tasks to the bottom of the list'.
"#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'MOVE_DOWN'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_PREVIOUS_VALUE'.
ls_fun-icon_id = '@0H@'.
ls_fun-fun_text = 'Move Down'. "#EC NOTEXT
ls_fun-info_text = 'Move selected tasks one task down'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'MOVE_TOP'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_TOTAL_UP'.
ls_fun-icon_id = '@HF@'.
ls_fun-fun_text = 'Move to Top'. "#EC NOTEXT
ls_fun-info_text = 'Move selected tasks to the top of the list'.
"#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'MOVE_UP'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_NEXT_VALUE'.
ls_fun-icon_id = '@0I@'.
ls_fun-fun_text = 'Move Up'. "#EC NOTEXT
ls_fun-info_text = 'Move selected tasks one task up'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'OBJCAT'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Object Directory Entry'. "#EC NOTEXT
ls_fun-path = 'O'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'REMOVE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_DELETE_ROW'.
ls_fun-icon_id = '@18@'.
ls_fun-fun_text = 'Remove Task'. "#EC NOTEXT
ls_fun-info_text = 'Remove selected tasks'. "#EC NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'RESOLVE'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_TOGGLE_FUNCTION'.
ls_fun-icon_id = '@K7@'.
ls_fun-fun_text = 'Resolve'. "#EC NOTEXT
ls_fun-info_text = 'Show Task List with resolved Event Tasks'. "#EC
NOTEXT
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'STC02'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_BIW_MONITOR'.
ls_fun-icon_id = '@6P@'.
ls_fun-fun_text = 'Run Monitor'. "#EC NOTEXT
ls_fun-path = 'R'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'USRSET'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-text_name = 'ICON_SETTINGS'.
ls_fun-icon_id = '@XC@'.
ls_fun-fun_text = 'User Settings'. "#EC NOTEXT
ls_fun-path = 'U'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'VERSION'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Version Management'. "#EC NOTEXT
ls_fun-path = 'V'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'VERS_GEN'.
ls_fun-textno = '001'.
ls_fun-text_type = 'S'.
ls_fun-fun_text = 'Generate Version'. "#EC NOTEXT
ls_fun-path = 'G'.
APPEND ls_fun TO lt_fun.
CLEAR ls_fun.
ls_fun-code = 'VIEW_CHG'.
ls_fun-textno = '001'.
ls_fun-text_type = 'D'.
ls_fun-text_name = 'GV_BTN_VIEW_TEXT'.
APPEND ls_fun TO lt_fun.
CLEAR ls_mtx.
ls_mtx-code = '000001'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Task List'. "#EC NOTEXT
ls_mtx-path = 'T'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000002'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Edit'. "#EC NOTEXT
ls_mtx-path = 'E'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000003'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Goto'. "#EC NOTEXT
ls_mtx-path = 'G'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000006'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Task List'. "#EC NOTEXT
ls_mtx-path = 'T'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000007'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Edit'. "#EC NOTEXT
ls_mtx-path = 'E'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000008'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Goto'. "#EC NOTEXT
ls_mtx-path = 'G'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000011'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Task List'. "#EC NOTEXT
ls_mtx-path = 'T'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000012'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Edit'. "#EC NOTEXT
ls_mtx-path = 'E'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000013'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Goto'. "#EC NOTEXT
ls_mtx-path = 'G'.
ls_mtx-int_note = 'Standard Supplement'. "#EC NOTEXT
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000016'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Utilities'. "#EC NOTEXT
ls_mtx-path = 'S'.
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000018'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Documentation'. "#EC NOTEXT
ls_mtx-path = 'D'.
APPEND ls_mtx TO lt_mtx.
CLEAR ls_mtx.
ls_mtx-code = '000020'.
ls_mtx-text_type = 'S'.
ls_mtx-text = 'Utilities'. "#EC NOTEXT
ls_mtx-path = 'S'.
APPEND ls_mtx TO lt_mtx.
CLEAR ls_doc.
ls_doc-obj_type = 'A'.
ls_doc-obj_code = '000002'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Display Scenario'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'A'.
ls_doc-obj_code = '000003'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Main'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'A'.
ls_doc-obj_code = '000001'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Maintain Scenario'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'B'.
ls_doc-obj_code = '000002'.
ls_doc-sub_code = '0001'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Display Scenario'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'B'.
ls_doc-obj_code = '000003'.
ls_doc-sub_code = '0001'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Main'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'B'.
ls_doc-obj_code = '000001'.
ls_doc-sub_code = '0001'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Maintain Scenario'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'P'.
ls_doc-obj_code = '000002'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Display Scenario'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'P'.
ls_doc-obj_code = '000003'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Main'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'P'.
ls_doc-obj_code = '000001'.
ls_doc-modal = 'D'.
ls_doc-int_note = 'Maintain Scenario'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'P'.
ls_doc-obj_code = '000005'.
ls_doc-modal = 'P'.
ls_doc-int_note = 'Properties'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_doc.
ls_doc-obj_type = 'B'.
ls_doc-obj_code = '000005'.
ls_doc-sub_code = '0001'.
ls_doc-modal = 'P'.
ls_doc-int_note = 'Properties'. "#EC NOTEXT
APPEND ls_doc TO lt_doc.
CLEAR ls_tit.
ls_tit-code = 'SCN_DISPLAY'.
ls_tit-text = 'Display Task List &1'. "#EC NOTEXT
APPEND ls_tit TO lt_tit.
CLEAR ls_tit.
ls_tit-code = 'SCN_MAIN'.
ls_tit-text = 'Task Manager for Technical Configuration'. "#EC
NOTEXT
APPEND ls_tit TO lt_tit.
CLEAR ls_tit.
ls_tit-code = 'SCN_MAINTAIN'.
ls_tit-text = 'Maintain Task List &1'. "#EC NOTEXT
APPEND ls_tit TO lt_tit.
CLEAR ls_tit.
ls_tit-code = 'SCN_PROP'.
ls_tit-text = 'Task List Attributes'. "#EC NOTEXT
APPEND ls_tit TO lt_tit.
CALL METHOD lcl_wb=>create_user_interface "#EC *
EXPORTING
i_progname = 'STC_SCN_MAINTAIN'
i_devclass = 'STC_TM'
i_langu = 'E'
is_adm = ls_adm
it_sta = lt_sta
it_men = lt_men
it_act = lt_act
it_but = lt_but
it_pfk = lt_pfk
it_biv = lt_biv
it_set = lt_set
it_fun = lt_fun
it_mtx = lt_mtx
it_doc = lt_doc
it_tit = lt_tit.
ENDFORM.

FORM update_33. " REPT STC_TEST_REPORT_UI_DIFF_PARAM


IF sy-saprl >= '750'.
CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'STC_TEST_REPORT_UI_DIFF_PARAM'
i_devclass = 'STC_TEST'
i_langu = 'E':
i_id = 'S'
i_key = 'P_CH1024'
i_length = '0',
i_id = 'S'
i_key = 'P_CHR255'
i_length = '0',
i_id = 'S'
i_key = 'P_DF16D'
i_length = '0',
i_id = 'S'
i_key = 'P_DF16R'
i_length = '0',
i_id = 'S'
i_key = 'P_DF34D'
i_length = '0',
i_id = 'S'
i_key = 'P_DF34R'
i_length = '0',
i_id = 'S'
i_key = 'P_INT8'
i_length = '0',
i_id = 'S'
i_key = 'S_C10NE'
i_text = 'Char. 10 (C), NO-EXTENSION' "#EC NOTEXT
i_length = '35',
i_id = 'S'
i_key = 'S_C10NI'
i_text = 'Char. 10 (C), NO INTERVALS' "#EC NOTEXT
i_length = '34',
i_id = 'S'
i_key = 'S_C10NIE'
i_text = 'Char. 10 (C), NO INT. & NO-EXT' "#EC NOTEXT
i_length = '38',
i_id = 'S'
i_key = 'S_CH1024'
i_length = '0',
i_id = 'S'
i_key = 'S_CHR255'
i_length = '0',
i_id = 'S'
i_key = 'S_DF16D'
i_length = '0',
i_id = 'S'
i_key = 'S_DF16R'
i_length = '0',
i_id = 'S'
i_key = 'S_DF34D'
i_length = '0',
i_id = 'S'
i_key = 'S_DF34R'
i_length = '0',
i_id = 'S'
i_key = 'S_INT8'
i_length = '0'.
ELSEIF sy-saprl >= '702'.
CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'STC_TEST_REPORT_UI_DIFF_PARAM'
i_devclass = 'STC_TEST'
i_langu = 'E':
i_id = 'S'
i_key = 'P_CH1024'
i_length = '0',
i_id = 'S'
i_key = 'P_CHR255'
i_length = '0',
i_id = 'S'
i_key = 'P_DF16D'
i_length = '0',
i_id = 'S'
i_key = 'P_DF16R'
i_length = '0',
i_id = 'S'
i_key = 'P_DF34D'
i_length = '0',
i_id = 'S'
i_key = 'P_DF34R'
i_length = '0',
i_id = 'S'
i_key = 'S_C10NE'
i_text = 'Char. 10 (C), NO-EXTENSION' "#EC NOTEXT
i_length = '35',
i_id = 'S'
i_key = 'S_C10NI'
i_text = 'Char. 10 (C), NO INTERVALS' "#EC NOTEXT
i_length = '34',
i_id = 'S'
i_key = 'S_C10NIE'
i_text = 'Char. 10 (C), NO INT. & NO-EXT' "#EC NOTEXT
i_length = '38',
i_id = 'S'
i_key = 'S_CH1024'
i_length = '0',
i_id = 'S'
i_key = 'S_CHR255'
i_length = '0',
i_id = 'S'
i_key = 'S_DF16D'
i_length = '0',
i_id = 'S'
i_key = 'S_DF16R'
i_length = '0',
i_id = 'S'
i_key = 'S_DF34D'
i_length = '0',
i_id = 'S'
i_key = 'S_DF34R'
i_length = '0'.
ELSEIF sy-saprl >= '700'.
CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'STC_TEST_REPORT_UI_DIFF_PARAM'
i_devclass = 'STC_TEST'
i_langu = 'E':
i_id = 'S'
i_key = 'P_CH1024'
i_length = '0',
i_id = 'S'
i_key = 'P_CHR255'
i_length = '0',
i_id = 'S'
i_key = 'S_C10NE'
i_text = 'Char. 10 (C), NO-EXTENSION' "#EC NOTEXT
i_length = '35',
i_id = 'S'
i_key = 'S_C10NI'
i_text = 'Char. 10 (C), NO INTERVALS' "#EC NOTEXT
i_length = '34',
i_id = 'S'
i_key = 'S_C10NIE'
i_text = 'Char. 10 (C), NO INT. & NO-EXT' "#EC NOTEXT
i_length = '38',
i_id = 'S'
i_key = 'S_CH1024'
i_length = '0',
i_id = 'S'
i_key = 'S_CHR255'
i_length = '0'.
ENDIF.
ENDFORM.

FORM update_34. " REPT STC_TM_SESSION_BEGIN


CALL METHOD lcl_wb=>create_program_text "#EC *
EXPORTING
i_progname = 'STC_TM_SESSION_BEGIN'
i_devclass = 'STC_API'
i_langu = 'E':
i_id = 'I'
i_key = '001'
i_text = 'Task List and Variant' "#EC NOTEXT
i_length = '40',
i_id = 'I'
i_key = '002'
i_text = 'Execution Options' "#EC NOTEXT
i_length = '40',
i_id = 'I'
i_key = '003'
i_text = 'Error Handling' "#EC NOTEXT
i_length = '40',
i_id = 'I'
i_key = '004'
i_text = 'External Caller Info' "#EC NOTEXT
i_length = '40',
i_id = 'I'
i_key = '005'
i_text = 'Asynchronous Execution' "#EC NOTEXT
i_length = '40',
i_id = 'I'
i_key = '006'
i_text = 'Batch Target Server' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '007'
i_text = 'Ignore Task List Differences' "#EC NOTEXT
i_length = '50',
i_id = 'I'
i_key = '008'
i_text = 'Ignore Language Differences' "#EC NOTEXT
i_length = '50',
i_id = 'I'
i_key = '009'
i_text = 'Ignore Obsolete Task Lists' "#EC NOTEXT
i_length = '50',
i_id = 'I'
i_key = '010'
i_text = 'Instance No.' "#EC NOTEXT
i_length = '30',
i_id = 'I'
i_key = '011'
i_text = 'Result Messages' "#EC NOTEXT
i_length = '30',
i_id = 'R'
i_key = ''
i_text = 'Create Task List Run and Start Execution' "#EC NOTEXT
i_length = '40',
i_id = 'S'
i_key = 'ASYNC'
i_text = 'Execute Asynchronous' "#EC NOTEXT
i_length = '28',
i_id = 'S'
i_key = 'BTCHTGT'
i_length = '0',
i_id = 'S'
i_key = 'CHKONLY'
i_length = '0',
i_id = 'S'
i_key = 'EXTCLNT'
i_length = '0',
i_id = 'S'
i_key = 'EXTHOST'
i_length = '0',
i_id = 'S'
i_key = 'EXTINST'
i_text = 'Instance No.' "#EC NOTEXT
i_length = '20',
i_id = 'S'
i_key = 'EXTSESS'
i_length = '0',
i_id = 'S'
i_key = 'EXTSID'
i_length = '0',
i_id = 'S'
i_key = 'EXTUNAM'
i_length = '0',
i_id = 'S'
i_key = 'LNGDIFF'
i_text = 'Ignore Language Differences' "#EC NOTEXT
i_length = '35',
i_id = 'S'
i_key = 'OBSOLETE'
i_text = 'Ignore Obsolete Task Lists' "#EC NOTEXT
i_length = '34',
i_id = 'S'
i_key = 'SCENARIO'
i_length = '0',
i_id = 'S'
i_key = 'SCNDIFF'
i_text = 'Ignore Task List Differences' "#EC NOTEXT
i_length = '36',
i_id = 'S'
i_key = 'TEMPLATE'
i_length = '0'.
ENDFORM.

FORM update_35. " MESS STC037


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC'
i_msgno = '037'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'ABAP class &1 contains syntax error &2 in include &3, line
&4'.
ENDFORM.

FORM update_36. " MESS STC_API004


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_API'
i_msgno = '004'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Input parameter &1: &2'.
ENDFORM.

FORM update_37. " MESS STC_API005


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_API'
i_msgno = '005'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Output parameter &1: &2'.
ENDFORM.

FORM update_38. " MESS STC_TASK024


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '024'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task provided by event ''&3'''.
ENDFORM.

FORM update_39. " DOCU NASTC_TASK024


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '024'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS Task &V1& is provided by event &V2& &V3&.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS If errors occur during execution of this task the
responsible support', "#EC NOTEXT
' component is &V4&.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_40. " MESS STC_TASK030


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '030'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Event task class &1 is not valid (&2)'.
ENDFORM.

FORM update_41. " MESS STC_TASK041


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '041'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'For parameter &1 with ''BT'' operation specify minimum and
maximum values'.
ENDFORM.

FORM update_42. " MESS STC_TASK046


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '046'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Parameter &1 has been passed several times; pass parameter &1
only once'.
ENDFORM.

FORM update_43. " MESS STC_TASK057


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '057'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task &1 could not be configured'.
ENDFORM.

FORM update_44. " MESS STC_TASK058


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '058'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Attributes for report based user interfaces not supported by
task manager'.
ENDFORM.

FORM update_45. " DOCU NASTC_TASK058


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '058'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS This task uses a user interface based on a report selection
screen. For', "#EC NOTEXT
' parameter maintenance, a temporary report variant is
created by the task', "#EC NOTEXT
' manager framework just to enter the required parameter.',
"#EC NOTEXT
'AS In addition to parameter maintenance, the report variant
provides the', "#EC NOTEXT
' possibility to maintain further variant attributes, e.g.
references to', "#EC NOTEXT
' variable fields or hide fields.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS All kinds of changed variant attributes are ignored by the
task manager.', "#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS The user interface can only be used to enter values
(parameters) for the', "#EC NOTEXT
' given task. The current parameters are copied to the task
and remain in', "#EC NOTEXT
' the task as they have been entered.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_46. " MESS STC_TASK059


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '059'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task &1 belongs to different event &3'.
ENDFORM.

FORM update_47. " DOCU NASTC_TASK059


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '059'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS Task &V1& should be added to the task list defined by a so
called', "#EC NOTEXT
' "configuration content". In the configuration content the
task is', "#EC NOTEXT
' assigned to event &V2&, but in the current system the task
belongs to', "#EC NOTEXT
' different event &V3&.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The task cannot be added to the task list at the current
position and', "#EC NOTEXT
' will be replaced by a non-executable (dummy) task.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS If this task is required at the current position or should
belong to the', "#EC NOTEXT
' given event &V2&, contact the owner of the task. He or she
should either', "#EC NOTEXT
' assign the task to the event or the task need to be
declared as "usable', "#EC NOTEXT
' with event assignment".',
"#EC NOTEXT
'AS If the task is not required at the current position, check
the', "#EC NOTEXT
' configuration content or contact the owner of the
configuration content.', "#EC NOTEXT
' The task has to be removed from the given configuration
content.', "#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_48. " MESS STC_TASK060


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '060'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task &1 belongs to different events'.
ENDFORM.

FORM update_49. " DOCU NASTC_TASK060


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '060'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS Task &V1& should be added to the task list defined by a so
called', "#EC NOTEXT
' "configuration content". In the configuration content the
task is', "#EC NOTEXT
' assigned to event &V2&, but in the current system the task
belongs to', "#EC NOTEXT
' different other events.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The task cannot be added to the task list at the current
position and', "#EC NOTEXT
' will be replaced by a non-executable (dummy) task.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS If this task is required at the current position or should
belong to the', "#EC NOTEXT
' iven event &V2&, contact the owner of the task. He or she
should either', "#EC NOTEXT
' assign the task to the event or the task need to be
declared as "usable', "#EC NOTEXT
' with event assignment".',
"#EC NOTEXT
'AS If the task is not required at the current position, check
the', "#EC NOTEXT
' configuration content or contact the owner of the
configuration content.', "#EC NOTEXT
' The task has to be removed from the given configuration
content.', "#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_50. " MESS STC_TASK061


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '061'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Event task not declared to be used as standalone task'.
ENDFORM.

FORM update_51. " MESS STC_TASK062


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '062'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'ABAP class &1 contains syntax error in include &3, line &4'.
ENDFORM.

FORM update_52. " DOCU NASTC_TASK062


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '062'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS ABAP class &V1& contains syntax error ''&V2&'' in include
&V3&, line &V4&.', "#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS In case the corresponding task has not been executed
already, it will', "#EC NOTEXT
' be skipped. If the task has been executed, the execution
status and the', "#EC NOTEXT
' task log remains.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Contact the class owner. In case the class is provided by
SAP, check the', "#EC NOTEXT
' SAP Online Service System for class name &V1& and syntax
error ''&V2&''.', "#EC NOTEXT
space.
ENDFORM.

FORM update_53. " MESS STC_TASK063


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '063'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'ABAP report &1 contains syntax error in include &3, line &4'.
ENDFORM.

FORM update_54. " DOCU NASTC_TASK063


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '063'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS ABAP report &V1& contains syntax error ''&V2&'' in include
&V3&, line &V4&', "#EC NOTEXT
'= .',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS In case the corresponding task has not been executed
already, it will be', "#EC NOTEXT
' skipped. If the task has been executed, the execution
status and the', "#EC NOTEXT
' task log remains.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Contact the report owner. In case the report is provided by
SAP, check', "#EC NOTEXT
' the SAP Online Service System for report name &V1& and
syntax error ''', "#EC NOTEXT
'= &V2&''.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
space.
ENDFORM.

FORM update_55. " MESS STC_TASK064


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '064'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task method &1->&2 raises exception &3'.
ENDFORM.

FORM update_56. " MESS STC_TASK065


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '065'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task has been skipped by task ''&1'''.
ENDFORM.

FORM update_57. " MESS STC_TASK066


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '066'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task has been set in scope by task ''&1'''.
ENDFORM.
FORM update_58. " MESS STC_TASK067
DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '067'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task check status changed from ''&2'' to ''&3'' by task
''&1'''.
ENDFORM.

FORM update_59. " MESS STC_TASK068


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '068'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task execution status changed from ''&2'' to ''&3'' by task
''&3'''.
ENDFORM.

FORM update_60. " MESS STC_TASK069


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '069'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task configuration changed by task ''&1'''.
ENDFORM.

FORM update_61. " MESS STC_TASK070


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '070'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task is completed; Status changes performed by task ''&1''
rejected'.
ENDFORM.

FORM update_62. " MESS STC_TASK071


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '071'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task is completed; Configuration changes performed by task
''&1'' rejected'.
ENDFORM.

FORM update_63. " MESS STC_TASK072


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '072'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task ''&1'' already completed; Status changes not possible
anymore'.
ENDFORM.

FORM update_64. " MESS STC_TASK073


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '073'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task ''&1'' already completed; Configuration changes not
possible anymore'.
ENDFORM.

FORM update_65. " MESS STC_TASK074


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '074'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'No value provided for mandatory parameter &1'.
ENDFORM.

FORM update_66. " MESS STC_TASK075


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '075'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Invalid parameters provided; check parameter'.
ENDFORM.

FORM update_67. " MESS STC_TASK076


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '076'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'For radiobutton group &1 no option is set; choose one
option'.
ENDFORM.

FORM update_68. " MESS STC_TASK077


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '077'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'No value provided for mandatory parameter &1 (&2)'.
ENDFORM.

FORM update_69. " MESS STC_TASK078


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '078'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Formerly inconsistent task has been recovered'.
ENDFORM.

FORM update_70. " DOCU NASTC_TASK078


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '078'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS Task is consistent again. Before, the task object &V1&
could not have', "#EC NOTEXT
' been created or caused syntax errors. The task manager
preserved the old', "#EC NOTEXT
' task configuration and replaced the inconsistent task by a
dummy task.', "#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS Now, the original task is now syntax error free and has
been recovered', "#EC NOTEXT
' with its original configuration.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS If the task is in scope, check the task configuration
(parameters and', "#EC NOTEXT
' scope definition) if they are still valid before the task
is executed.', "#EC NOTEXT
' If the task cannot be set in scope (again), e.g. because
the task list', "#EC NOTEXT
' run processing has been continued with one of the next
tasks, the task', "#EC NOTEXT
' cannot be executed anymore.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_71. " MESS STC_TASK079


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '079'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task object exists and is syntax error free now'.
ENDFORM.

FORM update_72. " DOCU NASTC_TASK079


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '079'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS The task object &V1& did not exist formerly or caused
syntax errors', "#EC NOTEXT
' during instantiation. The task is valid now and can be
used.', "#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS Mind, that the task is created now and not at a time when
all other', "#EC NOTEXT
' tasks have been created.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS If the task is in scope, check the task configuration
(parameters and', "#EC NOTEXT
' scope definition) if they are still valid before the task
is executed.', "#EC NOTEXT
' If the task cannot be set in scope (again), e.g. because
the task list', "#EC NOTEXT
' run processing has been continued with one of the next
tasks, the task', "#EC NOTEXT
' cannot be executed anymore.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_73. " MESS STC_TASK080


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '080'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Parameter &1 is read-only; value not copied'.
ENDFORM.

FORM update_74. " MESS STC_TASK081


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '081'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'For parameter &1 the lower limit is greater than upper
limit'.
ENDFORM.

FORM update_75. " MESS STC_TASK082


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '082'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'For parameter &1 value &3 in field HIGH is ignored for
operation &2'.
ENDFORM.
FORM update_76. " MESS STC_TEST018
DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TEST'
i_msgno = '018'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Value for parameter &1 contains more than &2 char.; value is
truncated'.
ENDFORM.

FORM update_77. " MESS STC_TEST019


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TEST'
i_msgno = '019'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Invalid value ''&2'' for parameter &1'.
ENDFORM.

FORM update_78. " DOCU NASTC_TM210


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_msgid = 'STC_TM'
i_msgno = '210'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS Task indicates a running status but the task list run is
not processing', "#EC NOTEXT
' anymore.',
"#EC NOTEXT
'AS This may occur when the work process of the ABAP system is
cancelled', "#EC NOTEXT
' before the task list run is finished, e.g.',
"#EC NOTEXT
'B1 You executed the task list run in in dialog mode and either
the maximum', "#EC NOTEXT
' processing time for dialog processes is reached or the
window has', "#EC NOTEXT
' been closed before the task list run is finished.',
"#EC NOTEXT
'B1 You executed the task list run in batch mode and the
corresponding batch', "#EC NOTEXT
' job &V1& is aborted, deleted or in any other unexpected
state.', "#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The execution of the task list run is interrupted.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Set the task in scope again and resume the task list run in
batch mode.', "#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_79. " MESS STC_TM281


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '281'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task list &1 has changed; execution of run &2 denied'.
ENDFORM.

FORM update_80. " DOCU NASTC_TM281


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_msgid = 'STC_TM'
i_msgno = '281'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS The task list run has been created based on a different
task list', "#EC NOTEXT
' version.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The execution of the task list run is rejected by default
to avoid data', "#EC NOTEXT
' loss.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Check the software level of your system. To avoid data
loss, the task', "#EC NOTEXT
' list run should only be continued if the current software
level equals', "#EC NOTEXT
' the software level when the task list run has been created.
The software', "#EC NOTEXT
' may have changed e.g. by applying SAP notes or support
packages in', "#EC NOTEXT
' between.',
"#EC NOTEXT
'AS It is possible to continue the task list run execution. But
then it is', "#EC NOTEXT
' very likely that the execution will lead to data loss
because tasks are', "#EC NOTEXT
' missing in the old or new task list version or task
implementations have', "#EC NOTEXT
' changed.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
space.
ENDFORM.

FORM update_81. " MESS STC_TM363


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '363'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Runtime error: &1&2&3&4'.
ENDFORM.

FORM update_82. " DOCU NASTC_TM363


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_msgid = 'STC_TM'
i_msgno = '363'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS Task list run, variant or task is inconsistent.
Deserialzation from XML', "#EC NOTEXT
' causes a runtime error (short dump) in the system.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Check <DS:TRAN.ST22>runtime errors (transaction ST22)</>
for further', "#EC NOTEXT
' details.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_83. " MESS STC_TM364


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '364'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Error occurred in source code &1&2, line &3'.
ENDFORM.

FORM update_84. " MESS STC_TM365


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '365'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'XML deserialization error at tree position &1: &2&3&4'.
ENDFORM.

FORM update_85. " MESS STC_TM366


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '366'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list run &1 generated for variant &3 of task list &2'.
ENDFORM.

FORM update_86. " MESS STC_TM367


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '367'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list run &1 generated for task list &2'.
ENDFORM.

FORM update_87. " MESS STC_TM368


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '368'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list run &1 will be resumed'.
ENDFORM.

FORM update_88. " MESS STC_TM369


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '369'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Check for different langugage disabled'.
ENDFORM.

FORM update_89. " MESS STC_TM370


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '370'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Check for different task list disabled'.
ENDFORM.

FORM update_90. " MESS STC_TM371


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '371'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Check for obsolete task list disabled'.
ENDFORM.

FORM update_91. " MESS STC_TM372


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '372'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Variant contains content in language &1; user confirms run
creation in &2'.
ENDFORM.

FORM update_92. " MESS STC_TM373


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '373'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list &1 has changed; Check for obsolete task list
disabled'.
ENDFORM.

FORM update_93. " MESS STC_TM374


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '374'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list &1 is obsolete; Check for obsolete task list
disabled'.
ENDFORM.

FORM update_94. " MESS STC_TM375


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '375'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Variant contains content in language &1; user confirms
maintenance in &1'.
ENDFORM.

FORM update_95. " MESS STC_TM376


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '376'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Run contains content in language &1; user confirms
maintenance in &1'.
ENDFORM.

FORM update_96. " MESS STC_TM377


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '377'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Language of variant changed from &1 to &2'.
ENDFORM.

FORM update_97. " MESS STC_TM378


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '378'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Language of run changed from &1 to &2'.
ENDFORM.

FORM update_98. " MESS STC_TM379


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '379'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list run &1 generated from task list run &2'.
ENDFORM.

FORM update_99. " MESS STC_TM380


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '380'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Finalization indicator has been removed; task list run can be
resumed'.
ENDFORM.

FORM update_100. " MESS STC_TM381


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '381'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list run exported'.
ENDFORM.

FORM update_101. " MESS STC_TM382


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '382'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Task list run imported'.
ENDFORM.

FORM update_102. " MESS STC_TM383


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '383'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'XML format &1 unknown'.
ENDFORM.

FORM update_103. " MESS STC_TM384


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '384'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Invalid parameter provided when calling method &1 of class
&2'.
ENDFORM.

FORM update_104. " MESS STC_TM385


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '385'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task list &1 contains configuration content; no variant
creation possible'.
ENDFORM.

FORM update_105. " DOCU NASTC_TM385


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_msgid = 'STC_TM'
i_msgno = '385'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS This task list contains tasks using S/4HANA content
functions. These', "#EC NOTEXT
' tasks define and use parameters in a special way. Variants
cannot', "#EC NOTEXT
' support this kind of parameters.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS You cannot create a variant.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS If you intend to select or skip single tasks you can use
the scoping', "#EC NOTEXT
' functions in the parameter display of the first task in the
task list.', "#EC NOTEXT
'AS If you intend to change parameter values you need to
contact the author', "#EC NOTEXT
' of the content.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_106. " MESS STC_TM386


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '386'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Task list &1 contains configuration content; no migration
possible'.
ENDFORM.

FORM update_107. " DOCU NASTC_TM386


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TM'
i_msgid = 'STC_TM'
i_msgno = '386'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS The task list &v1& contains tasks using S/4HANA content
functions. These', "#EC NOTEXT
' tasks define and use parameters in a special way. A
migration of the', "#EC NOTEXT
' task list run is not possible.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The system does not allow execution or change of the task
list run.', "#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Start a new task list run.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_108. " MESS STC_TM387


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TM'
i_msgno = '387'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Exception &1 occurred'.
ENDFORM.

FORM update_109. " MESS STC_TASK083


DATA lt_activity TYPE tt_activity.
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = 'STC_TASK'
i_msgno = '083'
it_activity = lt_activity
i_auth_check = '':
i_langu = 'E'
i_selfdef = ''
i_text = 'Interface combination for task class &1 is supported with
restrictions'.
ENDFORM.

FORM update_110. " DOCU NASTC_TASK083


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_devclass = 'STC_TASK'
i_msgid = 'STC_TASK'
i_msgno = '083'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS You have implemented a technical configuration task with an
invalid', "#EC NOTEXT
' combination of task interfaces.',
"#EC NOTEXT
'AS Your task class &V1& implements the following interface(s):
&V2&&V3&&V4&', "#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The task can be used in task lists with restrictions. In
this case task', "#EC NOTEXT
' manager defines a fallback solution to handle the current
interface', "#EC NOTEXT
' combination. In most cases this happens when an already
delivered task', "#EC NOTEXT
' has been changed later on due to SAP Note implementation
restrictions.', "#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS The task owner should check the interface combination and
cleanup the', "#EC NOTEXT
' task as soon as possible (support package or next release)
to avoid', "#EC NOTEXT
' problems in future.',
"#EC NOTEXT
'/: INCLUDE STC_TASK_IF_DEFINITION OBJECT DOKU ID TX',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
space.
ENDFORM.

FORM update_111. " DOCU TXSTCTT_VARIABLE_PARAMETERS


CALL METHOD lcl_wb=>create_other_docu "#EC *
EXPORTING
i_devclass = 'STC_TEST'
i_docname = 'TXSTCTT_VARIABLE_PARAMETERS'
i_langu = 'E'
i_line =:'U1 &FUNCTIONALITY&',
"#EC NOTEXT
'AS This task provides a different set of parameters depending
on the', "#EC NOTEXT
' occurrence of the task in the task list.',
"#EC NOTEXT
'AS First occurrence in a task list: Character like parameter
_STRING is', "#EC NOTEXT
' provided for input and output.',
"#EC NOTEXT
'AS Second occurrence in a task list: Integer like parameter
_INT2 is', "#EC NOTEXT
' provided for input and output.',
"#EC NOTEXT
'AS Third occurrence in a task list: Parameters _STRING and
_INT2 are', "#EC NOTEXT
' provided. _STRING can be used for input and output, _INT2
is defined as', "#EC NOTEXT
' read-only.',
"#EC NOTEXT
'AS Other occurrences does not define any parameters.',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &RELATIONS&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &EXAMPLE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &HINTS&',
"#EC NOTEXT
'AS This task cannot be executed. It is only used to handle
parameters.', "#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &FURTHER_SOURCES_OF_INF&',
"#EC NOTEXT
'AS This task is implemented by ABAP class
<EX>CL_STCTT_VARIABLE_PARAMETERS', "#EC NOTEXT
'= </>.',
"#EC NOTEXT
'/: INCLUDE STCTM_DEMO_DISCLAIMER OBJECT DOKU ID TX',
"#EC NOTEXT
space.
ENDFORM.

FORM update_112. " DOCU TXSTCTT_WITH_REF_TO_TASKLIST


CALL METHOD lcl_wb=>create_other_docu "#EC *
EXPORTING
i_devclass = 'STC_TEST'
i_docname = 'TXSTCTT_WITH_REF_TO_TASKLIST'
i_langu = 'E'
i_line =:'U1 &FUNCTIONALITY&',
"#EC NOTEXT
'AS This test task uses an internal reference to the configured
list of', "#EC NOTEXT
' tasks (parameter IR_TASKLIST, type ref to
<EX>CL_STCTM_TASKLIST</>).', "#EC NOTEXT
'AS The configured list of tasks is controlled by the task
manager framework', "#EC NOTEXT
' and should usually not be referenced within task classes.
Unfortunately', "#EC NOTEXT
' there are tasks doing so - this may cause problems when
task manager is', "#EC NOTEXT
' running in recovery mode (replacing inconsistent tasks by
dummy tasks).', "#EC NOTEXT
'AS Behavior: The task acts as a check task only. It is in
scope by defaults', "#EC NOTEXT
' and always returns a successful check result when it is
executed.', "#EC NOTEXT
'U1 &RELATIONS&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &EXAMPLE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &HINTS&',
"#EC NOTEXT
'AS In general, do not use an internal reference to parameter
IR_TASKLIST.', "#EC NOTEXT
' Task manager provides the configured list of tasks wherever
it can be', "#EC NOTEXT
' used.',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &FURTHER_SOURCES_OF_INF&',
"#EC NOTEXT
'AS This task is implemented by ABAP class
<EX>CL_STCTT_WITH_REF_TO_TASKLIST', "#EC NOTEXT
'= </>.',
"#EC NOTEXT
'/: INCLUDE STCTM_DEMO_DISCLAIMER OBJECT DOKU ID TX',
"#EC NOTEXT
space.
ENDFORM.

FORM update_113. " DOCU TXSTC_TEST_TASKLIST_044


CALL METHOD lcl_wb=>create_other_docu "#EC *
EXPORTING
i_devclass = 'STC_TEST'
i_docname = 'TXSTC_TEST_TASKLIST_044'
i_langu = 'E'
i_line =:'* This test task list contains three times the same task -
but each task', "#EC NOTEXT
' instance supports different parameters:',
"#EC NOTEXT
'*',
"#EC NOTEXT
'N1 <DS:TX.STCTT_VARIABLE_PARAMETERS>Task with variable
attributes</> - this', "#EC NOTEXT
' instance provides a single character like parameter',
"#EC NOTEXT
'N1 <DS:TX.STCTT_VARIABLE_PARAMETERS>Task with variable
attributes</> - this', "#EC NOTEXT
' instance provides a single integer like parameter',
"#EC NOTEXT
'N1 <DS:TX.STCTT_VARIABLE_PARAMETERS>Task with variable
attributes</> - this', "#EC NOTEXT
' instance provides two parameters (character like and
integer like)', "#EC NOTEXT
'*',
"#EC NOTEXT
space.
ENDFORM.

FORM update_114. " STCS STC_TEST_TASKLIST_043


CALL METHOD lcl_wb=>create_logical_object "#EC *
EXPORTING
i_object = 'STCS'
i_obj_name = 'STC_TEST_TASKLIST_043'
i_devclass = 'STC_TEST'
i_langu = 'E'
i_masterlang = 'E'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0. RETURN. ENDIF.
DATA: lt_stc_scn_attr TYPE TABLE OF stc_scn_attr, ls_stc_scn_attr TYPE
stc_scn_attr.
CLEAR ls_stc_scn_attr.
ls_stc_scn_attr-scenario_id = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_attr-attr_name = 'SAPTAGS'.
"#EC NOTEXT
APPEND ls_stc_scn_attr TO lt_stc_scn_attr.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_ATTR'
it_entries = lt_stc_scn_attr.
DATA: lt_stc_scn_hdr TYPE TABLE OF stc_scn_hdr, ls_stc_scn_hdr TYPE stc_scn_hdr.
CLEAR ls_stc_scn_hdr.
ls_stc_scn_hdr-scenario_id = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_hdr-created_on = sy-datum.
"#EC NOTEXT
ls_stc_scn_hdr-created_by = sy-uname.
"#EC NOTEXT
ls_stc_scn_hdr-changed_on = sy-datum.
"#EC NOTEXT
ls_stc_scn_hdr-changed_by = sy-uname.
"#EC NOTEXT
ls_stc_scn_hdr-doku_id = 'TX'.
"#EC NOTEXT
ls_stc_scn_hdr-doku_obj = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_hdr-config_class = 'CL_STC_TEST_SCENARIO_CONFIG'.
"#EC NOTEXT
APPEND ls_stc_scn_hdr TO lt_stc_scn_hdr.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_HDR'
it_entries = lt_stc_scn_hdr.
DATA: lt_stc_scn_hdr_t TYPE TABLE OF stc_scn_hdr_t, ls_stc_scn_hdr_t TYPE
stc_scn_hdr_t.
CLEAR ls_stc_scn_hdr_t.
ls_stc_scn_hdr_t-scenario_id = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_hdr_t-langu = 'E'.
"#EC NOTEXT
ls_stc_scn_hdr_t-descr = 'Task List contains an error task in scope and
a task with parameters which is skipped by default'. "#EC NOTEXT
CLEAR ls_stc_scn_hdr_t.
ls_stc_scn_hdr_t-scenario_id = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_hdr_t-langu = 'D'.
"#EC NOTEXT
ls_stc_scn_hdr_t-descr = 'AufgListe enth�lt ausgew�hlte Fehleraufgabe
und standardm��ig �bersprungene Aufgabe mit Parametern'. "#EC NOTEXT
APPEND ls_stc_scn_hdr_t TO lt_stc_scn_hdr_t.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_HDR_T'
it_entries = lt_stc_scn_hdr_t.
DATA: lt_stc_scn_tasks TYPE TABLE OF stc_scn_tasks, ls_stc_scn_tasks TYPE
stc_scn_tasks.
CLEAR ls_stc_scn_tasks.
ls_stc_scn_tasks-scenario_id = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_tasks-sequence = '00001'.
"#EC NOTEXT
ls_stc_scn_tasks-tasktype = 'CLAS'.
"#EC NOTEXT
ls_stc_scn_tasks-taskname = 'CL_STCTT_SIMPLE_FAILURE'.
"#EC NOTEXT
APPEND ls_stc_scn_tasks TO lt_stc_scn_tasks.
CLEAR ls_stc_scn_tasks.
ls_stc_scn_tasks-scenario_id = 'STC_TEST_TASKLIST_043'.
"#EC NOTEXT
ls_stc_scn_tasks-sequence = '00002'.
"#EC NOTEXT
ls_stc_scn_tasks-tasktype = 'CLAS'.
"#EC NOTEXT
ls_stc_scn_tasks-taskname = 'CL_STCTT_DIFF_PARAM_SKIPPED'.
"#EC NOTEXT
APPEND ls_stc_scn_tasks TO lt_stc_scn_tasks.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_TASKS'
it_entries = lt_stc_scn_tasks.
ENDFORM.

FORM update_115. " STCS STC_TEST_TASKLIST_044


CALL METHOD lcl_wb=>create_logical_object "#EC *
EXPORTING
i_object = 'STCS'
i_obj_name = 'STC_TEST_TASKLIST_044'
i_devclass = 'STC_TEST'
i_langu = 'E'
i_masterlang = 'E'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0. RETURN. ENDIF.
DATA: lt_stc_scn_attr TYPE TABLE OF stc_scn_attr, ls_stc_scn_attr TYPE
stc_scn_attr.
CLEAR ls_stc_scn_attr.
ls_stc_scn_attr-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_attr-attr_name = 'SAPTAGS'.
"#EC NOTEXT
APPEND ls_stc_scn_attr TO lt_stc_scn_attr.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_ATTR'
it_entries = lt_stc_scn_attr.
DATA: lt_stc_scn_hdr TYPE TABLE OF stc_scn_hdr, ls_stc_scn_hdr TYPE stc_scn_hdr.
CLEAR ls_stc_scn_hdr.
ls_stc_scn_hdr-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_hdr-created_on = sy-datum.
"#EC NOTEXT
ls_stc_scn_hdr-created_by = sy-uname.
"#EC NOTEXT
ls_stc_scn_hdr-changed_on = sy-datum.
"#EC NOTEXT
ls_stc_scn_hdr-changed_by = sy-uname.
"#EC NOTEXT
ls_stc_scn_hdr-doku_id = 'TX'.
"#EC NOTEXT
ls_stc_scn_hdr-doku_obj = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_hdr-config_class = 'CL_STC_TEST_SCENARIO_CONFIG'.
"#EC NOTEXT
APPEND ls_stc_scn_hdr TO lt_stc_scn_hdr.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_HDR'
it_entries = lt_stc_scn_hdr.
DATA: lt_stc_scn_hdr_t TYPE TABLE OF stc_scn_hdr_t, ls_stc_scn_hdr_t TYPE
stc_scn_hdr_t.
CLEAR ls_stc_scn_hdr_t.
ls_stc_scn_hdr_t-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_hdr_t-langu = 'E'.
"#EC NOTEXT
ls_stc_scn_hdr_t-descr = 'Task List with three times the same task -
but each instance provides different parameters'. "#EC NOTEXT
APPEND ls_stc_scn_hdr_t TO lt_stc_scn_hdr_t.
CLEAR ls_stc_scn_hdr_t.
ls_stc_scn_hdr_t-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_hdr_t-langu = 'D'.
"#EC NOTEXT
ls_stc_scn_hdr_t-descr = 'Aufgabenliste enth�lt selbe Aufgabe drei Mal,
jedoch liefert jede Instanz andere Parameter'. "#EC NOTEXT
APPEND ls_stc_scn_hdr_t TO lt_stc_scn_hdr_t.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_HDR_T'
it_entries = lt_stc_scn_hdr_t.
DATA: lt_stc_scn_tasks TYPE TABLE OF stc_scn_tasks, ls_stc_scn_tasks TYPE
stc_scn_tasks.
CLEAR ls_stc_scn_tasks.
ls_stc_scn_tasks-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_tasks-sequence = '00001'.
"#EC NOTEXT
ls_stc_scn_tasks-tasktype = 'CLAS'.
"#EC NOTEXT
ls_stc_scn_tasks-taskname = 'CL_STCTT_VARIABLE_PARAMETERS'.
"#EC NOTEXT
APPEND ls_stc_scn_tasks TO lt_stc_scn_tasks.
CLEAR ls_stc_scn_tasks.
ls_stc_scn_tasks-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_tasks-sequence = '00002'.
"#EC NOTEXT
ls_stc_scn_tasks-tasktype = 'CLAS'.
"#EC NOTEXT
ls_stc_scn_tasks-taskname = 'CL_STCTT_VARIABLE_PARAMETERS'.
"#EC NOTEXT
APPEND ls_stc_scn_tasks TO lt_stc_scn_tasks.
CLEAR ls_stc_scn_tasks.
ls_stc_scn_tasks-scenario_id = 'STC_TEST_TASKLIST_044'.
"#EC NOTEXT
ls_stc_scn_tasks-sequence = '00003'.
"#EC NOTEXT
ls_stc_scn_tasks-tasktype = 'CLAS'.
"#EC NOTEXT
ls_stc_scn_tasks-taskname = 'CL_STCTT_VARIABLE_PARAMETERS'.
"#EC NOTEXT
APPEND ls_stc_scn_tasks TO lt_stc_scn_tasks.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_logical_object = 'STCS'
i_tabname = 'STC_SCN_TASKS'
it_entries = lt_stc_scn_tasks.
ENDFORM.

FORM update_116. " XSLT STC_TM_SESSION_EXTXML_2_HTML


CALL METHOD lcl_wb=>create_transformation "#EC *
EXPORTING
i_transformation = 'STC_TM_SESSION_EXTXML_2_HTML'
i_devclass = 'STC_TM'
i_langu = 'E'
i_text = 'Transform external XML for a Task List Run to HTML'
i_line =:
'<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sap="http://www.sap.com/sapxsl" version="1.0">',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:param name="T_SESSION_HEADER_INFO"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_TEMPLATE_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_STATUS"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_FINALIZED"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_CREATED_BY"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_CREATED_ON"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_CHANGED_BY"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_CHANGED_ON"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI_SESSION_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI_USERNAME"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI_SID"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI_SYSNR"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI_CLIENT"/>',
"#EC NOTEXT
' <xsl:param name="T_SESSION_ECI_HOST"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_HEADER_INFO"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_DESCRIPTION"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_CREATED_ON"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_CREATED_BY"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_CHANGED_ON"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_CHANGED_BY"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_BUILD_NO"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_BASIC_SCEN_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_SCENARIO_APPL_COMPONENT"/>',
"#EC NOTEXT
' <xsl:param name="T_TOP_TASKS"/>',
"#EC NOTEXT
' <xsl:param name="T_TOP_TASKS_DURATION"/>',
"#EC NOTEXT
' <xsl:param name="T_MAINTENANCE_COUNT"/>',
"#EC NOTEXT
' <xsl:param name="T_CHECKRUN_COUNT"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_COUNT"/>',
"#EC NOTEXT
' <xsl:param name="T_CHECKRUN_DURATION"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_DURATION"/>',
"#EC NOTEXT
' <xsl:param name="T_TASKLIST_OVERVIEW"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_NR"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_DESCRIPTION"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_PHASE"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_COMPONENT"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_CHECK_STATUS"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_EXECUTION_STATUS"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_SEQUENCE_NUMBER"/>',
"#EC NOTEXT
' <xsl:param name="T_TASKLIST_DETAILS"/>',
"#EC NOTEXT
' <xsl:param name="T_TASK_APPL_COMPONENT"/>',
"#EC NOTEXT
' <xsl:param name="T_PARAMETERS"/>',
"#EC NOTEXT
' <xsl:param name="T_PARAM_FIELDNAME"/>',
"#EC NOTEXT
' <xsl:param name="T_PARAM_VALUE"/>',
"#EC NOTEXT
' <xsl:param name="T_PARAM_DESCRIPTION"/>',
"#EC NOTEXT
' <xsl:param name="T_MESSAGE_LOG"/>',
"#EC NOTEXT
' <xsl:param name="T_MESSAGE_TIME"/>',
"#EC NOTEXT
' <xsl:param name="T_MESSAGE_ID"/>',
"#EC NOTEXT
' <xsl:param name="T_MESSAGE_NR"/>',
"#EC NOTEXT
' <xsl:param name="T_MESSAGE_TYPE"/>',
"#EC NOTEXT
' <xsl:param name="T_MESSAGE_TEXT"/>',
"#EC NOTEXT
' <xsl:param name="T_SOURCE_OBJECT"/>',
"#EC NOTEXT
' <xsl:param name="T_SOURCE_LINE"/>',
"#EC NOTEXT
' <xsl:param name="T_FUNCTION_BACK"/>',
"#EC NOTEXT
' <xsl:param name="T_USERNAME"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_INFO"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_DETAILS"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_IDENTIFIER"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_PERIOD"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_ACTIVITY"/>',
"#EC NOTEXT
' <xsl:param name="T_EXECUTION_TASKS"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_DURATION"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_BATCH"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_API"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_SID"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_CLIENT"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_HOST"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_JOBNAME"/>',
"#EC NOTEXT
' <xsl:param name="T_EXEC_LAST_UPDATE"/>',
"#EC NOTEXT
' <xsl:param name="T_TM_VERSION"/>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:param name="l_date"/>',
"#EC NOTEXT
' <xsl:param name="l_year" select="substring($l_date,1,4)"/>',
"#EC NOTEXT
' <xsl:param name="l_month" select="substring($l_date,5,2)"/>',
"#EC NOTEXT
' <xsl:param name="l_day" select="substring($l_date,7,2)"/>',
"#EC NOTEXT
' <xsl:param name="l_hour" select="substring($l_date,9,2)"/>',
"#EC NOTEXT
' <xsl:param name="l_minute" select="substring($l_date,11,2)"/>',
"#EC NOTEXT
' <xsl:param name="l_second" select="substring($l_date,13,2)"/>',
"#EC NOTEXT
' <xsl:value-of select="concat($l_year,''-'',$l_month,''-'',$l_day,''T'',
$l_hour,'':'',$l_minute,'':'',$l_second)"/>', "#EC NOTEXT
' </xsl:template>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:template name="parse_duration_to_seconds">',
"#EC NOTEXT
' <xsl:param name="l_duration"/>',
"#EC NOTEXT
' <xsl:choose>',
"#EC NOTEXT
' <xsl:when test="$l_duration=0.00">',
"#EC NOTEXT
' </xsl:when>',
"#EC NOTEXT
' <xsl:otherwise>',
"#EC NOTEXT
' <xsl:value-of select="format-number($l_duration,''0.00'')"/>s',
"#EC NOTEXT
' </xsl:otherwise>',
"#EC NOTEXT
' </xsl:choose>',
"#EC NOTEXT
' </xsl:template>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:strip-space elements="*"/>',
"#EC NOTEXT
' <xsl:template match="/">',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:variable name="SESSION" select="//SESSION"/>',
"#EC NOTEXT
' <xsl:variable name="SESSION2" select="//SESSION/STCTM_S_SESSION"/>',
"#EC NOTEXT
' <xsl:variable name="TASKLIST" select="//TASKLIST/item"/>',
"#EC NOTEXT
' <xsl:variable name="EXEC_INFO" select="//EXEC_INFO/item"/>',
"#EC NOTEXT
' <xsl:variable name="TOP_TASKS" select="//TOP_TASKS/item"/>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <html>',
"#EC NOTEXT
' <head>',
"#EC NOTEXT
' <title>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SCENARIO_ID/text()"/>',
"#EC NOTEXT
' </title>',
"#EC NOTEXT
' <style type="text/css">html, body { margin: 0; padding: 0; width: auto;
height: 100%; font-family: Arial, Helvetica, sans-serif', "#EC NOTEXT
'<<...>>; background-color:#EAF1F6; font-size: 100.01%;} html {scrollbar-base-
color:#B5C0C9; scrollbar-face-color:#C5DBEC;', "#EC NOTEXT
'scrollbar-3dlight-color:#899CAC; scrollbar-arrow-color:#394452; scrollbar-
darkshadow-color:#DDEAF5; scrollbar-shadow-color:#899CAC; scro', "#EC
NOTEXT
'<<...>>llbar-track-color:#F3F6F9; scrollbar-highlight-color:#C5DBEC; } .equal
{background-color:#009933;} .notequal', "#EC NOTEXT
'{background-color:#FF3333;} .unknown {background-color:#CCCCCC;} .smbEqual
{background: url(../webdynpro/resources/sap.com/tc~wd~dispwda', "#EC NOTEXT
'<<...>>/global/sapIcons/s_s_ledg.gif?7.30.1.1.0) no-repeat 50% 50%;}
.smbNotequal {background:', "#EC
NOTEXT
'url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/sapIcons/s_s_ledr.gif?
7.30.1.1.0) no-repeat 50% 50%;} .smbUnknown {background: u', "#EC NOTEXT

'<<...>>rl(../webdynpro/resources/sap.com/tc~wd~dispwda/global/sapIcons/s_s_ledi.gi
f?7.30.1.1.0) no-repeat 50% 50%;}', "#EC NOTEXT
'.hdrTitle {background-color:#FFFFFF; background:
url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/SSR/themes/sap_tradeshow_pl
us/c', "#EC NOTEXT
'<<...>>ommon/tray/blockheader_center.gif?7.30.1.1.0) repeat-x 0 0;}
table#COWrapper { border: none; border-collapse:', "#EC
NOTEXT
'collapse; width: 100%; height: 100%;} td.topBarRht { height: 30px; background-
color: #B6CFE6;} td.topBarLft { width: 360px; height: 30px', "#EC NOTEXT
'<<...>>; background-color: #B6CFE6; font-weight:bold;} table { margin:0px;
padding: 0 10px; border-collapse:collapse;', "#EC NOTEXT
'text-align:left; } table tr th { background-color:#C1D6EB; background-
image:url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/SSR/', "#EC
NOTEXT
'<<...>>themes/sap_tradeshow_plus/common/tray/blockheader_center.gif?7.30.1.1.0);
background-position:left top;', "#EC NOTEXT
'background-repeat:repeat-x; font-size: 16px; text-align:left; height:20px;
padding: 0 5px; } table tr td { padding: 0px 5px; font-size', "#EC NOTEXT
'<<...>>: 14px; } div#contentRht { float: left; width: 100%;} div#contentLft
{ float: left; width: 360px;} div.navWrapper {', "#EC NOTEXT
'float: left; width: 350px; margin: 15px 0 20px 0; font-size: 14px; background-
color: #DFEBF5; } div.navFldr { float: left; margin: 5px 5', "#EC NOTEXT
'<<...>>px 0 5px; font-weight: bold; width: 300px;} div.navContentWrapper
{ margin: 0; padding: 0; float: left; width:', "#EC
NOTEXT
'inherit;} div.navLink { margin-top: 5px; float: left; height: 21px; padding-
left: 10px; font-weight: normal; } span.arrow { float: left', "#EC NOTEXT
'<<...>>; width: 11px; height: 11px; cursor: pointer; } span.arrowClosed
{ background:', "#EC
NOTEXT

'url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/SSR/themes/sap_tradeshow_p
lus/common/saptable/ico12_branch_closed.gif) no-repea', "#EC NOTEXT
'<<...>>t 0 50%; } span.arrowOpen { background:',
"#EC NOTEXT

'url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/SSR/themes/sap_tradeshow_p
lus/common/saptable/ico12_branch_open.gif) no-repea', "#EC NOTEXT
'<<...>>t 0 50%; } span.book { margin-left: 3px; float: left; width: 16px;
height: 16px; } span.openBook { background:', "#EC
NOTEXT
'url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/sapIcons/s_s_ledi.gif?
7.30.1.1.0) no-repeat 0 50%; } span.changeBook { background:', "#EC NOTEXT

'url(../webdynpro/resources/sap.com/tc~wd~dispwda/global/SSR/themes/sap_tradeshow_p
lus/common/saptable/ico12_leaf.gif) no-repeat 0 50%', "#EC NOTEXT
'<<...>>; } span.navLabel { margin-left: 3px; float: left; width: 250px; height:
20px; font-size: 100.01%; cursor: pointer;', "#EC NOTEXT
'color: #204BA2; } span.navLabel:hover { color:#FF7800; }
div.configObjectDetails,div.headerBar { margin: 0; padding: 20px 0 0 0; font-si',
"#EC NOTEXT
'<<...>>ze: 10pt; width: 100%; } div.configObjectDetails {display: none;}
.content { background-color: #DFEBF5; padding: 5px', "#EC
NOTEXT
'0px; } .h2{ font-size:15px; font-weight:bold; height:25px;} .h3{ font-size:15px;
font-weight:bold; height:20px; } hr { color:#204BA2', "#EC NOTEXT
'<<...>>; } div#CO_toc { height: 100%; margin: 0; padding: 20px 20px; display:
none;} div#CO_toc a{ text-decoration: underline;', "#EC NOTEXT
'color: #204BA2; cursor: pointer; } div#CO_toc a:hover { text-decoration:
underline; color: #FF7800; } div#toggleView { text-align:center', "#EC
NOTEXT
'<<...>>; color: navy; font-weight: bold; cursor: pointer; width: 80px;}
div#toggleView a{ text-decoration: none;', "#EC
NOTEXT
'color:#204BA2;} div#toggleView a:hover{ text-decoration: underline;
color:#FF7800;} a.buildLinks {color:#204BA2; font-size: 14px; text-d', "#EC
NOTEXT
'<<...>>ecoration: none;} a.buildLinks:hover {color:#FF7800; text-decoration:
underline;}', "#EC NOTEXT
'',
"#EC NOTEXT
'h1{ font-size: 25px; font-weight: bold; }',
"#EC NOTEXT
'h2{ font-size: 15px; font-weight: bold; display:inline;}',
"#EC NOTEXT
'td.task { width: 50%; }',
"#EC NOTEXT
'td.exec { width: 50%; }',
"#EC NOTEXT
'td.message_id { width: 10%; }',
"#EC NOTEXT
'td.message_no { width: 5%; }',
"#EC NOTEXT
'td.message_typ { width: 5%; }',
"#EC NOTEXT
'td.fieldname { width: 20%; }',
"#EC NOTEXT
'th.header { width: 20%; font-size: 15px; }',
"#EC NOTEXT
'table.task { width: 100%; }',
"#EC NOTEXT
'table.exec { width: 100%; }',
"#EC NOTEXT
'.message { border-top-width: 0px; border-bottom-width: 1px; border-collapse:
collapse; width: 100%;}', "#EC NOTEXT
'</style>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </head>',
"#EC NOTEXT
' <body>',
"#EC NOTEXT
' <a name="TOP"/>',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_HEADER_INFO"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <table border="1" class="task">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ID"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SESSION_ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TEMPLATE_ID"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/TEMPLATE_ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_STATUS"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_FINALIZED"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/FINALIZED_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_CREATED_BY"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/CREATED_BY/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_CREATED_ON"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date"
select="$SESSION/CREATED_ON/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_CHANGED_BY"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/CHANGED_BY/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_CHANGED_ON"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date"
select="$SESSION/CHANGED_ON/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TM_VERSION"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/TM_VERSION/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_SCENARIO_HEADER_INFO"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <table border="1" class="task">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SCENARIO_ID"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SCENARIO/SCENARIO_ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SCENARIO_DESCRIPTION"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SCENARIO/SCENARIO_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SCENARIO_BASIC_SCEN_ID"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SCENARIO/BASIC_SCEN_ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SCENARIO_BUILD_NO"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SCENARIO/BUILD_NO/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SCENARIO_APPL_COMPONENT"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SCENARIO/APPL_COMP/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:if test="(normalize-space($SESSION/USERNAME))&#xA; or
(normalize-space($SESSION/SID))&#xA; or', "#EC NOTEXT
'(normalize-space($SESSION/SYSNR))&#xA;&#xA;or&#xA;(normalize-
space($SESSION/MANDT))&#xA;&#xA;or&#xA;(normalize-space($SESSION/HOST))">',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <table border="1" class="task">',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI_SESSION_ID"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/EXT_SESSION_ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI_USERNAME"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/USERNAME/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI_SID"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI_SYSNR"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/SYSNR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI_CLIENT"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/MANDT/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_ECI_HOST"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="$SESSION/HOST/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_TASKLIST_OVERVIEW"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <table border="1" class="task">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_SEQUENCE_NUMBER"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_DESCRIPTION"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_NR"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_PHASE"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_COMPONENT"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_CHECK_STATUS"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_EXECUTION_STATUS"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:for-each select="$TASKLIST/TASK">',
"#EC NOTEXT
' <xsl:variable name="TASK" select="TASKNAME"/>',
"#EC NOTEXT
' <xsl:variable name="ID" select="LNR"/>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="position()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <a class="buildLinks" href="#{DESCRIPTION}_{$ID}">',
"#EC NOTEXT
' <xsl:value-of select="DESCRIPTION/text()"/>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="LNR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="PHASE_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="COMPONENT/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="CHECK_STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_INFO"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <table border="1" class="exec">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_IDENTIFIER"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_PERIOD"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_STATUS"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <th class="header">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_DURATION"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:for-each select="$EXEC_INFO">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <a class="buildLinks" href="#{EXEC_ID}">',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date" select="EXEC_ID/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="PERIOD_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:call-template name="parse_duration_to_seconds">',
"#EC NOTEXT
' <xsl:with-param name="l_duration" select="DURATION"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <table border="1" class="task" style="table-layout:auto">',
"#EC NOTEXT
' <xsl:if test="(normalize-space($TOP_TASKS))">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header" colspan="3">',
"#EC NOTEXT
' <xsl:value-of select="$T_TOP_TASKS_DURATION"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_DESCRIPTION"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_IDENTIFIER"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_DURATION"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:for-each select="$TOP_TASKS">',
"#EC NOTEXT
' <xsl:variable name="TASK" select="TASKNAME"/>',
"#EC NOTEXT
' <xsl:variable name="ID" select="LNR"/>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <a class="buildLinks" href="#{DESCRIPTION}_{$ID}">',
"#EC NOTEXT
' <xsl:value-of select="DESCRIPTION/text()"/>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <a class="buildLinks" href="#{EXEC_ID}">',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date" select="EXEC_ID/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:call-template name="parse_duration_to_seconds">',
"#EC NOTEXT
' <xsl:with-param name="l_duration" select="DURATION"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <br/>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_TASKLIST_DETAILS"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <xsl:for-each select="$TASKLIST">',
"#EC NOTEXT
' <xsl:variable name="APPL_COMP" select="APPL_COMP"/>',
"#EC NOTEXT
' <xsl:variable name="TASK" select="TASK"/>',
"#EC NOTEXT
' <xsl:variable name="ID" select="TASK/LNR"/>',
"#EC NOTEXT
' <xsl:variable name="LOGLIST" select="LOG"/>',
"#EC NOTEXT
' <xsl:variable name="PARAMETERS" select="PARAMETER"/>',
"#EC NOTEXT
'',
"#EC NOTEXT
'',
"#EC NOTEXT
' <table border="1" class="task" style="table-layout:auto">',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th align="left" class="header" colspan="4">',
"#EC NOTEXT
' <a name="{$TASK/DESCRIPTION}_{$ID}">',
"#EC NOTEXT
' <xsl:value-of select="position()"/>.',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_ID"/>:',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:value-of select="$TASK/DESCRIPTION/text()"/>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="task" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_APPL_COMPONENT"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="task" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="TASK/APPL_COMP/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_ID"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="TASK/TASKNAME/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_NR"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$TASK/LNR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_PHASE"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$TASK/PHASE_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_COMPONENT"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$TASK/COMPONENT/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_CHECK_STATUS"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$TASK/CHECK_STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_EXECUTION_STATUS"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$TASK/STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:if test="(normalize-space($PARAMETERS))">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header" colspan="4">',
"#EC NOTEXT
' <xsl:value-of select="$T_PARAMETERS"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td width="20%" colspan="1">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_PARAM_FIELDNAME"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td style="width:30%" colspan="1">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_PARAM_VALUE"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td width="30%" colspan="2">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_PARAM_DESCRIPTION"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <xsl:for-each select="$PARAMETERS/item">',
"#EC NOTEXT
' <xsl:variable name="DEFINITION"
select="DEFINITION/DDTEXT/text()"/>',
"#EC NOTEXT
' <xsl:variable name="VALUE" select="VALUE/item"/>',
"#EC NOTEXT
' <xsl:for-each select="$VALUE">',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="1">',
"#EC NOTEXT
' <xsl:value-of select="FIELDNAME/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td style="width:30%; word-break:break-all; word-
wrap:break-word" colspan="1">', "#EC
NOTEXT
' <xsl:value-of select="VALUE/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="fieldname" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$DEFINITION"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <table border="1" class="message">',
"#EC NOTEXT
' <xsl:if test="(normalize-space($LOGLIST))">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header" colspan="10">',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_LOG"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_IDENTIFIER"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_typ">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_TYPE"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_TEXT"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_ACTIVITY"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_TIME"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_USERNAME"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_id">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_ID"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_no">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_NR"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td width="1%">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_SOURCE_OBJECT"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td width="1%">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_SOURCE_LINE"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:for-each select="$LOGLIST/STCTM_S_LOG">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date" select="EXEC_ID/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_typ">',
"#EC NOTEXT
' <xsl:value-of select="TYPE/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="MESSAGE/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="ACTIVITY_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date" select="TIMESTMP/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="TSTPNM/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_id">',
"#EC NOTEXT
' <xsl:value-of select="ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_no">',
"#EC NOTEXT
' <xsl:value-of select="NUMBER/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="SRC_OBJECT/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <xsl:if test="SRC_LINE/text()=0">',
"#EC NOTEXT
' <td/>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' <xsl:if test="SRC_LINE/text()>0">',
"#EC NOTEXT
' <td><xsl:value-of select="SRC_LINE/text()"/></td>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
' <a class="buildLinks" href="javascript:history.back()">',
"#EC NOTEXT
' <xsl:value-of select="$T_FUNCTION_BACK"/>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' <br/>',
"#EC NOTEXT
' <br/>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <h1>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_DETAILS"/>',
"#EC NOTEXT
' </h1>',
"#EC NOTEXT
' <xsl:for-each select="$EXEC_INFO">',
"#EC NOTEXT
' <xsl:variable name="EXEC_ID" select="EXEC_ID"/>',
"#EC NOTEXT
' <xsl:variable name="PERIOD_DESCR" select="PERIOD_DESCR"/>',
"#EC NOTEXT
' <xsl:variable name="STATUS_DESCR" select="STATUS_DESCR"/>',
"#EC NOTEXT
' <xsl:variable name="LOGLIST" select="LOG"/>',
"#EC NOTEXT
' <xsl:variable name="EXECTASKS" select="TASKS"/>',
"#EC NOTEXT
' <xsl:variable name="PERIOD" select="/PERIOD/text()"/>',
"#EC NOTEXT
' <table border="1" class="exec" style="table-layout:auto">',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th align="left" class="header" colspan="4">',
"#EC NOTEXT
' <a name="{EXEC_ID}">',
"#EC NOTEXT
' <xsl:value-of select="$PERIOD_DESCR/text()"/>:',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date" select="EXEC_ID/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_USERNAME"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="USER/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_BATCH"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="BATCH_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_API"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="API_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_SID"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="SID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_CLIENT"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="CLNT/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_HOST"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="HOST/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_JOBNAME"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="JOBNAME/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_LAST_UPDATE"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="exec" colspan="2">',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date"
select="LAST_UPDATE/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$T_SESSION_STATUS"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td colspan="2">',
"#EC NOTEXT
' <xsl:value-of select="$STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <table border="1" class="message">',
"#EC NOTEXT
' <xsl:if test="(normalize-space($LOGLIST))">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header" colspan="6">',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_LOG"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="message_typ">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_TYPE"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_TEXT"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_TIME"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_USERNAME"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_id">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_ID"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_no">',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_MESSAGE_NR"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:for-each select="$LOGLIST/STCTM_S_LOG">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td class="message_typ">',
"#EC NOTEXT
' <xsl:value-of select="TYPE/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="MESSAGE/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:call-template name="parse_date_to_iso_format">',
"#EC NOTEXT
' <xsl:with-param name="l_date" select="TIMESTMP/text()"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <xsl:value-of select="TSTPNM/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_id">',
"#EC NOTEXT
' <xsl:value-of select="ID/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <td class="message_no">',
"#EC NOTEXT
' <xsl:value-of select="NUMBER/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <table border="1" class="task" style="table-layout:auto">',
"#EC NOTEXT
' <xsl:if test="(normalize-space($EXECTASKS))">',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <th class="header" colspan="5">',
"#EC NOTEXT
' <xsl:value-of select="$T_EXECUTION_TASKS"/>',
"#EC NOTEXT
' </th>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_DESCRIPTION"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <xsl:if test="PERIOD=''E'' or PERIOD=''C''">',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_CHECK_STATUS"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <xsl:if test="PERIOD=''E''">',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_TASK_EXECUTION_STATUS"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' <td>',
"#EC NOTEXT
' <b>',
"#EC NOTEXT
' <xsl:value-of select="$T_EXEC_DURATION"/>',
"#EC NOTEXT
' </b>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' <xsl:for-each select="$EXECTASKS/item">',
"#EC NOTEXT
' <xsl:variable name="TASK" select="TASKNAME"/>',
"#EC NOTEXT
' <xsl:variable name="ID" select="LNR"/>',
"#EC NOTEXT
' <xsl:variable name="PERIOD_ROW" select="../../PERIOD"/>',
"#EC NOTEXT
' <tr>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <a class="buildLinks" href="#{DESCRIPTION}_{$ID}">',
"#EC NOTEXT
' <xsl:value-of select="DESCRIPTION/text()"/>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <xsl:if test="$PERIOD_ROW=''E'' or $PERIOD_ROW=''C''">',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="CHECK_STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' <xsl:if test="$PERIOD_ROW=''E''">',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:value-of select="STATUS_DESCR/text()"/>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' <td align="left" nowrap="nowrap">',
"#EC NOTEXT
' <xsl:call-template name="parse_duration_to_seconds">',
"#EC NOTEXT
' <xsl:with-param name="l_duration" select="DURATION"/>',
"#EC NOTEXT
' </xsl:call-template>',
"#EC NOTEXT
' </td>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </tr>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </table>',
"#EC NOTEXT
' <a class="buildLinks" href="javascript:history.back()">',
"#EC NOTEXT
' <xsl:value-of select="$T_FUNCTION_BACK"/>',
"#EC NOTEXT
' </a>',
"#EC NOTEXT
' <br/>',
"#EC NOTEXT
' <br/>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
'',
"#EC NOTEXT
' </body>',
"#EC NOTEXT
' </html>',
"#EC NOTEXT
' </xsl:template>',
"#EC NOTEXT
'',
"#EC NOTEXT
'</xsl:transform>',
"#EC NOTEXT
'<<--->>'. "#EC NOTEXT
ENDFORM.

FORM update_117. " XSLT STC_TM_SESSION_EXTXML_2_SLA


CALL METHOD lcl_wb=>create_transformation "#EC *
EXPORTING
i_transformation = 'STC_TM_SESSION_EXTXML_2_SLA'
i_devclass = 'STC_TM'
i_langu = 'E'
i_text = 'Transform external XML for a Task List Run to SLA'
i_line =:
'<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sap="http://www.sap.com/sapxsl" xmlns:stc="sap:stc">', "#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:strip-space elements="*"/>',
"#EC NOTEXT
' <xsl:output indent="yes" method="xml"/>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <sap:external-function name="stc:convert_to_unix_timestamp"
class="CL_STCTM_UTILITIES" method="CONVERT_TO_UNIX_TIMESTAMP" kind="class">',
"#EC NOTEXT
' <sap:argument param="IP_TIMESTAMP"/>',
"#EC NOTEXT
' <sap:result param="RV_EPOCH_TIME" type="string"/>',
"#EC NOTEXT
' </sap:external-function>',
"#EC NOTEXT
'',
"#EC NOTEXT
' <xsl:template match="/">',
"#EC NOTEXT
' <analysis>',
"#EC NOTEXT
' <title>Task Manager for Technical Configuration</title>',
"#EC NOTEXT
' <application_system>',
"#EC NOTEXT
' </application_system>',
"#EC NOTEXT
' <general_scenario_details>',
"#EC NOTEXT
' <lmprocess>TASKMANAGER</lmprocess>',
"#EC NOTEXT
' <startdate>',
"#EC NOTEXT
' <xsl:variable name="general_scenario_details_startdate">',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CREATED_ON"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($general_scenario_details_startdate))"
/>', "#EC NOTEXT
' </startdate>',
"#EC NOTEXT
' <enddate>',
"#EC NOTEXT
' <xsl:variable name="general_scenario_details_enddate">',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CHANGED_ON"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($general_scenario_details_enddate))"/>
', "#EC NOTEXT
' </enddate>',
"#EC NOTEXT
' <modelversion>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/BUILD_NO"/>',
"#EC NOTEXT
' </modelversion>',
"#EC NOTEXT
' <!-- Begin of specific definitions -->',
"#EC NOTEXT
' <specific_scenario_details>',
"#EC NOTEXT
' <scenario_descr>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/SCENARIO_DESCR"/>',
"#EC NOTEXT
' </scenario_descr>',
"#EC NOTEXT
' <created_by>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/CREATED_BY"/>',
"#EC NOTEXT
' </created_by>',
"#EC NOTEXT
' <created_on>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/CREATED_ON"/>',
"#EC NOTEXT
' </created_on>',
"#EC NOTEXT
' <changed_by>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/CHANGED_BY"/>',
"#EC NOTEXT
' </changed_by>',
"#EC NOTEXT
' <changed_on>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/CHANGED_ON"/>',
"#EC NOTEXT
' </changed_on>',
"#EC NOTEXT
' <obsolete>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/OBSOLETE"/>',
"#EC NOTEXT
' </obsolete>',
"#EC NOTEXT
' <basic_scen_id>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/BASIC_SCEN_ID"/>',
"#EC NOTEXT
' </basic_scen_id>',
"#EC NOTEXT
' <basic_scen_descr>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/BASIC_SCEN_DESCR"/>',
"#EC NOTEXT
' </basic_scen_descr>',
"#EC NOTEXT
' <tags>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/TAGS"/>',
"#EC NOTEXT
' </tags>',
"#EC NOTEXT
' <appl_comp>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SCENARIO/APPL_COMP"/>',
"#EC NOTEXT
' </appl_comp>',
"#EC NOTEXT
' </specific_scenario_details>',
"#EC NOTEXT
' <!-- End of specific definitions -->',
"#EC NOTEXT
' <general_process>',
"#EC NOTEXT
' <process_item>',
"#EC NOTEXT
' <processnr>',
"#EC NOTEXT
' <xsl:variable name="process_item_processnr">',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SESSION_ID"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of select="translate($process_item_processnr,
translate($process_item_processnr, ''0123456789'', ''''), '''')"/>', "#EC
NOTEXT
' </processnr>',
"#EC NOTEXT
' <processname>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SESSION_ID"/>',
"#EC NOTEXT
' </processname>',
"#EC NOTEXT
' <processtype>RUN</processtype>',
"#EC NOTEXT
' <startdate>',
"#EC NOTEXT
' <xsl:variable name="process_item_startdate">',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CREATED_ON"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($process_item_startdate))"/>',
"#EC NOTEXT
' </startdate>',
"#EC NOTEXT
' <enddate>',
"#EC NOTEXT
' <xsl:variable name="process_item_enddate">',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CHANGED_ON"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($process_item_enddate))"/>',
"#EC NOTEXT
' </enddate>',
"#EC NOTEXT
' <runtime>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($process_item_enddate)) -
stc:convert_to_unix_timestamp(string(', "#EC NOTEXT
'<<...>>$process_item_startdate))"/>',
"#EC NOTEXT
' </runtime>',
"#EC NOTEXT
' <!-- Begin of specific definitions -->',
"#EC NOTEXT
' <specific_process_item>',
"#EC NOTEXT
' <template_id>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/TEMPLATE_ID"/>',
"#EC NOTEXT
' </template_id>',
"#EC NOTEXT
' <template_descr>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/TEMPLATE_DESCR"/>',
"#EC NOTEXT
' </template_descr>',
"#EC NOTEXT
' <status>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/STATUS"/>',
"#EC NOTEXT
' </status>',
"#EC NOTEXT
' <status_descr>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/STATUS_DESCR"/>',
"#EC NOTEXT
' </status_descr>',
"#EC NOTEXT
' <finalized>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/FINALIZED"/>',
"#EC NOTEXT
' </finalized>',
"#EC NOTEXT
' <finalized_descr>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/FINALIZED_DESCR"/>',
"#EC NOTEXT
' </finalized_descr>',
"#EC NOTEXT
' <created_by>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CREATED_BY"/>',
"#EC NOTEXT
' </created_by>',
"#EC NOTEXT
' <created_on>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CREATED_ON"/>',
"#EC NOTEXT
' </created_on>',
"#EC NOTEXT
' <changed_by>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CHANGED_BY"/>',
"#EC NOTEXT
' </changed_by>',
"#EC NOTEXT
' <changed_on>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/CHANGED_ON"/>',
"#EC NOTEXT
' </changed_on>',
"#EC NOTEXT
' <ext_session_id>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/EXT_SESSION_ID"/>',
"#EC NOTEXT
' </ext_session_id>',
"#EC NOTEXT
' <username>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/USERNAME"/>',
"#EC NOTEXT
' </username>',
"#EC NOTEXT
' <sid>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SID"/>',
"#EC NOTEXT
' </sid>',
"#EC NOTEXT
' <sysnr>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/SYSNR"/>',
"#EC NOTEXT
' </sysnr>',
"#EC NOTEXT
' <mandt>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/MANDT"/>',
"#EC NOTEXT
' </mandt>',
"#EC NOTEXT
' <host>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/HOST"/>',
"#EC NOTEXT
' </host>',
"#EC NOTEXT
' <tm_version>',
"#EC NOTEXT
' <xsl:value-of select="//SESSION/TM_VERSION"/>',
"#EC NOTEXT
' </tm_version>',
"#EC NOTEXT
' <tasklist>',
"#EC NOTEXT
' <xsl:for-each select="//SESSION/TASKLIST/item">',
"#EC NOTEXT
' <tasklist_item>',
"#EC NOTEXT
' <task>',
"#EC NOTEXT
' <check_status>',
"#EC NOTEXT
' <xsl:value-of select="TASK/CHECK_STATUS"/>',
"#EC NOTEXT
' </check_status>',
"#EC NOTEXT
' <check_status_descr>',
"#EC NOTEXT
' <xsl:value-of select="TASK/CHECK_STATUS_DESCR"/>',
"#EC NOTEXT
' </check_status_descr>',
"#EC NOTEXT
' <check_progress>',
"#EC NOTEXT
' <xsl:value-of select="TASK/CHECK_PROGRESS"/>',
"#EC NOTEXT
' </check_progress>',
"#EC NOTEXT
' <status>',
"#EC NOTEXT
' <xsl:value-of select="TASK/STATUS"/>',
"#EC NOTEXT
' </status>',
"#EC NOTEXT
' <status_descr>',
"#EC NOTEXT
' <xsl:value-of select="TASK/STATUS_DESCR"/>',
"#EC NOTEXT
' </status_descr>',
"#EC NOTEXT
' <progress>',
"#EC NOTEXT
' <xsl:value-of select="TASK/PROGRESS"/>',
"#EC NOTEXT
' </progress>',
"#EC NOTEXT
' <type>',
"#EC NOTEXT
' <xsl:value-of select="TASK/TYPE"/>',
"#EC NOTEXT
' </type>',
"#EC NOTEXT
' <taskname>',
"#EC NOTEXT
' <xsl:value-of select="TASK/TASKNAME"/>',
"#EC NOTEXT
' </taskname>',
"#EC NOTEXT
' <lnr>',
"#EC NOTEXT
' <xsl:value-of select="TASK/LNR"/>',
"#EC NOTEXT
' </lnr>',
"#EC NOTEXT
' <semantic_id>',
"#EC NOTEXT
' <xsl:value-of select="TASK/SEMANTIC_ID"/>',
"#EC NOTEXT
' </semantic_id>',
"#EC NOTEXT
' <description>',
"#EC NOTEXT
' <xsl:value-of select="TASK/DESCRIPTION"/>',
"#EC NOTEXT
' </description>',
"#EC NOTEXT
' <phase>',
"#EC NOTEXT
' <xsl:value-of select="TASK/PHASE"/>',
"#EC NOTEXT
' </phase>',
"#EC NOTEXT
' <phase_descr>',
"#EC NOTEXT
' <xsl:value-of select="TASK/PHASE_DESCR"/>',
"#EC NOTEXT
' </phase_descr>',
"#EC NOTEXT
' <component>',
"#EC NOTEXT
' <xsl:value-of select="TASK/COMPONENT"/>',
"#EC NOTEXT
' </component>',
"#EC NOTEXT
' <appl_comp>',
"#EC NOTEXT
' <xsl:value-of select="TASK/APPL_COMP"/>',
"#EC NOTEXT
' </appl_comp>',
"#EC NOTEXT
' <maintained>',
"#EC NOTEXT
' <xsl:value-of select="TASK/MAINTAINED"/>',
"#EC NOTEXT
' </maintained>',
"#EC NOTEXT
' <variant>',
"#EC NOTEXT
' <xsl:value-of select="TASK/VARIANT"/>',
"#EC NOTEXT
' </variant>',
"#EC NOTEXT
' <docu_exist>',
"#EC NOTEXT
' <xsl:value-of select="TASK/DOCU_EXISTS"/>',
"#EC NOTEXT
' </docu_exist>',
"#EC NOTEXT
' <log_exist>',
"#EC NOTEXT
' <xsl:value-of select="TASK/LOG_EXISTS"/>',
"#EC NOTEXT
' </log_exist>',
"#EC NOTEXT
' <action_skip>',
"#EC NOTEXT
' <xsl:value-of select="TASK/ACTION_SKIP"/>',
"#EC NOTEXT
' </action_skip>',
"#EC NOTEXT
' <action_unskip>',
"#EC NOTEXT
' <xsl:value-of select="TASK/ACTION_UNSKIP"/>',
"#EC NOTEXT
' </action_unskip>',
"#EC NOTEXT
' <action_confirm>',
"#EC NOTEXT
' <xsl:value-of select="TASK/ACTION_CONFIRM"/>',
"#EC NOTEXT
' </action_confirm>',
"#EC NOTEXT
' <action_maintain>',
"#EC NOTEXT
' <xsl:value-of select="TASK/ACTION_MAINTAIN"/>',
"#EC NOTEXT
' </action_maintain>',
"#EC NOTEXT
' </task>',
"#EC NOTEXT
' </tasklist_item>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </tasklist>',
"#EC NOTEXT
' </specific_process_item>',
"#EC NOTEXT
' <!-- End of specific definitions -->',
"#EC NOTEXT
' <subprocesses>',
"#EC NOTEXT
' <xsl:for-each select="//SESSION/EXEC_INFO/item">',
"#EC NOTEXT
' <subprocess_item>',
"#EC NOTEXT
' <subprocessname>',
"#EC NOTEXT
' <xsl:value-of select="EXEC_ID"/>',
"#EC NOTEXT
' </subprocessname>',
"#EC NOTEXT
' <subprocesstype>',
"#EC NOTEXT
' <xsl:value-of select="PERIOD_DESCR"/>',
"#EC NOTEXT
' </subprocesstype>',
"#EC NOTEXT
' <startdate>',
"#EC NOTEXT
' <xsl:variable name="subprocess_item_startdate">',
"#EC NOTEXT
' <xsl:value-of select="EXEC_ID"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($subprocess_item_startdate))"/>',
"#EC NOTEXT
' </startdate>',
"#EC NOTEXT
' <enddate>',
"#EC NOTEXT
' <xsl:variable name="subprocess_item_enddate">',
"#EC NOTEXT
' <xsl:value-of select="LAST_UPDATE"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($subprocess_item_enddate))"/>',
"#EC NOTEXT
' </enddate>',
"#EC NOTEXT
' <runtime>',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($subprocess_item_enddate)) -
stc:convert_to_unix_timestam', "#EC NOTEXT
'<<...>>p(string($subprocess_item_startdate))"/>',
"#EC NOTEXT
' </runtime>',
"#EC NOTEXT
' <!-- Begin of specific definitions -->',
"#EC NOTEXT
' <specific_subprocess_item>',
"#EC NOTEXT
' <period>',
"#EC NOTEXT
' <xsl:value-of select="PERIOD"/>',
"#EC NOTEXT
' </period>',
"#EC NOTEXT
' <batch>',
"#EC NOTEXT
' <xsl:value-of select="BATCH"/>',
"#EC NOTEXT
' </batch>',
"#EC NOTEXT
' <batch_descr>',
"#EC NOTEXT
' <xsl:value-of select="BATCH_DESCR"/>',
"#EC NOTEXT
' </batch_descr>',
"#EC NOTEXT
' <api>',
"#EC NOTEXT
' <xsl:value-of select="API"/>',
"#EC NOTEXT
' </api>',
"#EC NOTEXT
' <api_descr>',
"#EC NOTEXT
' <xsl:value-of select="API_DESCR"/>',
"#EC NOTEXT
' </api_descr>',
"#EC NOTEXT
' <user>',
"#EC NOTEXT
' <xsl:value-of select="USER"/>',
"#EC NOTEXT
' </user>',
"#EC NOTEXT
' <jobname>',
"#EC NOTEXT
' <xsl:value-of select="JOBNAME"/>',
"#EC NOTEXT
' </jobname>',
"#EC NOTEXT
' <jobcount>',
"#EC NOTEXT
' <xsl:value-of select="JOBCOUNT"/>',
"#EC NOTEXT
' </jobcount>',
"#EC NOTEXT
' <sid>',
"#EC NOTEXT
' <xsl:value-of select="SID"/>',
"#EC NOTEXT
' </sid>',
"#EC NOTEXT
' <clnt>',
"#EC NOTEXT
' <xsl:value-of select="CLNT"/>',
"#EC NOTEXT
' </clnt>',
"#EC NOTEXT
' <host>',
"#EC NOTEXT
' <xsl:value-of select="HOST"/>',
"#EC NOTEXT
' </host>',
"#EC NOTEXT
' <status>',
"#EC NOTEXT
' <xsl:value-of select="STATUS"/>',
"#EC NOTEXT
' </status>',
"#EC NOTEXT
' <status_descr>',
"#EC NOTEXT
' <xsl:value-of select="STATUS_DESCR"/>',
"#EC NOTEXT
' </status_descr>',
"#EC NOTEXT
' <last_update>',
"#EC NOTEXT
' <xsl:value-of select="LAST_UPDATE"/>',
"#EC NOTEXT
' </last_update>',
"#EC NOTEXT
' </specific_subprocess_item>',
"#EC NOTEXT
' <!-- End of specific definitions -->',
"#EC NOTEXT
' <steps>',
"#EC NOTEXT
' <xsl:for-each select="TASKS/item">',
"#EC NOTEXT
' <step_item>',
"#EC NOTEXT
' <stepname>',
"#EC NOTEXT
' <xsl:value-of select="TASKNAME"/>.<xsl:value-of
select="LNR"/>', "#EC
NOTEXT
' </stepname>',
"#EC NOTEXT
' <steptype>',
"#EC NOTEXT
' <xsl:value-of select="TYPE"/>',
"#EC NOTEXT
' </steptype>',
"#EC NOTEXT
' <startdate>',
"#EC NOTEXT
' <xsl:variable name="step_item_startdate">',
"#EC NOTEXT
' <xsl:value-of select="START_TIME"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:if test="$step_item_startdate != 0">',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($step_item_startdate))"/>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </startdate>',
"#EC NOTEXT
' <enddate>',
"#EC NOTEXT
' <xsl:variable name="step_item_enddate">',
"#EC NOTEXT
' <xsl:value-of select="END_TIME"/>',
"#EC NOTEXT
' </xsl:variable>',
"#EC NOTEXT
' <xsl:if test="$step_item_enddate != 0">',
"#EC NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($step_item_enddate))"/>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </enddate>',
"#EC NOTEXT
' <runtime>',
"#EC NOTEXT
' <xsl:if test="($step_item_startdate != 0) and
($step_item_enddate != 0)">', "#EC
NOTEXT
' <xsl:value-of
select="stc:convert_to_unix_timestamp(string($step_item_enddate)) -
stc:convert_to_unix_timest', "#EC NOTEXT
'<<...>>amp(string($step_item_startdate))"/>',
"#EC NOTEXT
' </xsl:if>',
"#EC NOTEXT
' </runtime>',
"#EC NOTEXT
' <!-- Begin of specific definitions -->',
"#EC NOTEXT
' <specific_step_item>',
"#EC NOTEXT
' <taskname>',
"#EC NOTEXT
' <xsl:value-of select="TASKNAME"/>',
"#EC NOTEXT
' </taskname>',
"#EC NOTEXT
' <lnr>',
"#EC NOTEXT
' <xsl:value-of select="LNR"/>',
"#EC NOTEXT
' </lnr>',
"#EC NOTEXT
' <description>',
"#EC NOTEXT
' <xsl:value-of select="DESCRIPTION"/>',
"#EC NOTEXT
' </description>',
"#EC NOTEXT
' <check_status>',
"#EC NOTEXT
' <xsl:value-of select="CHECK_STATUS"/>',
"#EC NOTEXT
' </check_status>',
"#EC NOTEXT
' <check_status_descr>',
"#EC NOTEXT
' <xsl:value-of select="CHECK_STATUS_DESCR"/>',
"#EC NOTEXT
' </check_status_descr>',
"#EC NOTEXT
' <status>',
"#EC NOTEXT
' <xsl:value-of select="STATUS"/>',
"#EC NOTEXT
' </status>',
"#EC NOTEXT
' <status_descr>',
"#EC NOTEXT
' <xsl:value-of select="STATUS_DESCR"/>',
"#EC NOTEXT
' </status_descr>',
"#EC NOTEXT
' </specific_step_item>',
"#EC NOTEXT
' <!-- End of specific definitions -->',
"#EC NOTEXT
' </step_item>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </steps>',
"#EC NOTEXT
' </subprocess_item>',
"#EC NOTEXT
' </xsl:for-each>',
"#EC NOTEXT
' </subprocesses>',
"#EC NOTEXT
' </process_item>',
"#EC NOTEXT
' </general_process>',
"#EC NOTEXT
' </general_scenario_details>',
"#EC NOTEXT
' <VERSION>',
"#EC NOTEXT
' <xsl:value-of select="//VERSION"/>',
"#EC NOTEXT
' </VERSION>',
"#EC NOTEXT
' </analysis>',
"#EC NOTEXT
' </xsl:template>',
"#EC NOTEXT
'</xsl:transform>',
"#EC NOTEXT
'<<--->>'. "#EC NOTEXT
ENDFORM.

FORM update_118. " TABU BALSUB


DATA: lt_balsub TYPE TABLE OF balsub, ls_balsub TYPE balsub.
CLEAR ls_balsub.
ls_balsub-object = 'STC'.
"#EC NOTEXT
ls_balsub-subobject = 'CONTENT'.
"#EC NOTEXT
APPEND ls_balsub TO lt_balsub.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_tabname = 'BALSUB'
it_entries = lt_balsub.
ENDFORM.

FORM update_119. " TABU BALSUBT


DATA: lt_balsubt TYPE TABLE OF balsubt, ls_balsubt TYPE balsubt.
CLEAR ls_balsubt.
ls_balsubt-spras = 'D'.
"#EC NOTEXT
ls_balsubt-object = 'STC'.
"#EC NOTEXT
ls_balsubt-subobject = 'CONTENT'.
"#EC NOTEXT
ls_balsubt-subobjtxt = 'Content'.
"#EC NOTEXT
APPEND ls_balsubt TO lt_balsubt.
CALL METHOD lcl_wb=>create_table_entries "#EC *
EXPORTING
i_tabname = 'BALSUBT'
it_entries = lt_balsubt.
ENDFORM.

FORM update_beforeact.
gv_master_languages = 'E'. "#EC NOTEXT
APPEND 'STCTM_SX_PARAMETER' TO gt_tabname. "#EC NOTEXT
APPEND 'STCTM_S_LOG' TO gt_tabname. "#EC NOTEXT
APPEND 'STCTM_S_SESSION' TO gt_tabname. "#EC NOTEXT
APPEND 'STCTM_S_TASK' TO gt_tabname. "#EC NOTEXT
APPEND 'STCTT_S_DIFFERENT_PARAMETERS' TO gt_tabname. "#EC NOTEXT
APPEND 'STC_RS_TASK_ID' TO gt_tabname. "#EC NOTEXT
APPEND 'STC_RS_TASK_TYPE' TO gt_tabname. "#EC NOTEXT
APPEND 'STC_TEMPLATE' TO gt_tabname. "#EC NOTEXT
APPEND 'STC_RT_TASK_ID' TO gt_ttypname. "#EC NOTEXT
APPEND 'STC_RT_TASK_TYPE' TO gt_ttypname. "#EC NOTEXT
PERFORM update_01. " DOMD STC_EXEC_ACTIVITY
PERFORM update_02. " DOMD STC_EXEC_PERIOD
PERFORM update_03. " DTED STC_EXEC_ACTIVITY
PERFORM update_04. " DOCU DESTC_EXEC_ACTIVITY
PERFORM update_05. " DTED STC_EXEC_ACTIVITY_DESCR
PERFORM update_06. " DOCU DESTC_EXEC_ACTIVITY_DESCR
PERFORM update_07. " DTED STC_EXEC_PERIOD
PERFORM update_08. " DTED STC_EXEC_PERIOD_DESCR
PERFORM update_09. " DOCU DESTC_EXEC_PERIOD_DESCR
PERFORM update_10. " DTED STC_SESSION_FINALIZED_DESCR
PERFORM update_11. " DTED STC_TASK_SEMANTIC_DESCR
PERFORM update_12. " DTED STC_TASK_SEMANTIC_ID
PERFORM update_13. " TABD STCTM_S_LOG
PERFORM update_14. " TABD STCTM_S_SESSION
PERFORM update_15. " TABD STCTM_S_TASK
PERFORM update_16. " TABD STCTT_S_DIFFERENT_PARAMETERS
PERFORM update_17. " TABD STC_RS_TASK_ID
PERFORM update_18. " TABD STC_RS_TASK_TYPE
PERFORM update_19. " TTYD STC_RT_TASK_ID
PERFORM update_20. " TTYD STC_RT_TASK_TYPE
PERFORM update_21. " DOCU CLCL_STCTM_DUMMY_TASK
PERFORM update_22. " REPT CL_STCTM_LOG_DISPLAY==========CP
PERFORM update_23. " REPT CL_STCTM_PREPROCESSOR=========CP
PERFORM update_24. " REPT CL_STCTM_UTILITIES============CP
PERFORM update_25. " REPT CL_STCTT_COMPLEX==============CP
PERFORM update_26. " REPT CL_STCTT_VARIABLE_PARAMETERS==CP
PERFORM update_27. " DOCU CLCL_STCTT_VARIABLE_PARAMETERS
PERFORM update_28. " DOCU CLCL_STCTT_WITH_REF_TO_TASKLIST
PERFORM update_29. " REPT LSTC_TM_FUNCTIONST99
PERFORM update_30. " REPT SAPLSTC_TM_FUNCTIONS
PERFORM update_31. " REPT STC_SCN_MAINTAIN
PERFORM update_32. " CUAD STC_SCN_MAINTAIN
PERFORM update_33. " REPT STC_TEST_REPORT_UI_DIFF_PARAM
PERFORM update_34. " REPT STC_TM_SESSION_BEGIN
PERFORM update_35. " MESS STC037
PERFORM update_36. " MESS STC_API004
PERFORM update_37. " MESS STC_API005
PERFORM update_38. " MESS STC_TASK024
PERFORM update_39. " DOCU NASTC_TASK024
PERFORM update_40. " MESS STC_TASK030
PERFORM update_41. " MESS STC_TASK041
PERFORM update_42. " MESS STC_TASK046
PERFORM update_43. " MESS STC_TASK057
PERFORM update_44. " MESS STC_TASK058
PERFORM update_45. " DOCU NASTC_TASK058
PERFORM update_46. " MESS STC_TASK059
PERFORM update_47. " DOCU NASTC_TASK059
PERFORM update_48. " MESS STC_TASK060
PERFORM update_49. " DOCU NASTC_TASK060
PERFORM update_50. " MESS STC_TASK061
PERFORM update_51. " MESS STC_TASK062
PERFORM update_52. " DOCU NASTC_TASK062
PERFORM update_53. " MESS STC_TASK063
PERFORM update_54. " DOCU NASTC_TASK063
PERFORM update_55. " MESS STC_TASK064
PERFORM update_56. " MESS STC_TASK065
PERFORM update_57. " MESS STC_TASK066
PERFORM update_58. " MESS STC_TASK067
PERFORM update_59. " MESS STC_TASK068
PERFORM update_60. " MESS STC_TASK069
PERFORM update_61. " MESS STC_TASK070
PERFORM update_62. " MESS STC_TASK071
PERFORM update_63. " MESS STC_TASK072
PERFORM update_64. " MESS STC_TASK073
PERFORM update_65. " MESS STC_TASK074
PERFORM update_66. " MESS STC_TASK075
PERFORM update_67. " MESS STC_TASK076
PERFORM update_68. " MESS STC_TASK077
PERFORM update_69. " MESS STC_TASK078
PERFORM update_70. " DOCU NASTC_TASK078
PERFORM update_71. " MESS STC_TASK079
PERFORM update_72. " DOCU NASTC_TASK079
PERFORM update_73. " MESS STC_TASK080
PERFORM update_74. " MESS STC_TASK081
PERFORM update_75. " MESS STC_TASK082
PERFORM update_76. " MESS STC_TEST018
PERFORM update_77. " MESS STC_TEST019
PERFORM update_78. " DOCU NASTC_TM210
PERFORM update_79. " MESS STC_TM281
PERFORM update_80. " DOCU NASTC_TM281
PERFORM update_81. " MESS STC_TM363
PERFORM update_82. " DOCU NASTC_TM363
PERFORM update_83. " MESS STC_TM364
PERFORM update_84. " MESS STC_TM365
PERFORM update_85. " MESS STC_TM366
PERFORM update_86. " MESS STC_TM367
PERFORM update_87. " MESS STC_TM368
PERFORM update_88. " MESS STC_TM369
PERFORM update_89. " MESS STC_TM370
PERFORM update_90. " MESS STC_TM371
PERFORM update_91. " MESS STC_TM372
PERFORM update_92. " MESS STC_TM373
PERFORM update_93. " MESS STC_TM374
PERFORM update_94. " MESS STC_TM375
PERFORM update_95. " MESS STC_TM376
PERFORM update_96. " MESS STC_TM377
PERFORM update_97. " MESS STC_TM378
PERFORM update_98. " MESS STC_TM379
PERFORM update_99. " MESS STC_TM380
PERFORM update_100. " MESS STC_TM381
PERFORM update_101. " MESS STC_TM382
PERFORM update_102. " MESS STC_TM383
PERFORM update_103. " MESS STC_TM384
PERFORM update_104. " MESS STC_TM385
PERFORM update_105. " DOCU NASTC_TM385
PERFORM update_106. " MESS STC_TM386
PERFORM update_107. " DOCU NASTC_TM386
PERFORM update_108. " MESS STC_TM387
PERFORM update_109. " MESS STC_TASK083
PERFORM update_110. " DOCU NASTC_TASK083
PERFORM update_111. " DOCU TXSTCTT_VARIABLE_PARAMETERS
PERFORM update_112. " DOCU TXSTCTT_WITH_REF_TO_TASKLIST
PERFORM update_113. " DOCU TXSTC_TEST_TASKLIST_044
PERFORM update_114. " STCS STC_TEST_TASKLIST_043
PERFORM update_115. " STCS STC_TEST_TASKLIST_044
PERFORM update_118. " TABU BALSUB ( STC/CONTENT )
PERFORM update_119. " TABU BALSUBT ( STC/CONTENT )
ENDFORM.

FORM update_afteract.
PERFORM update_116. " XSLT STC_TM_SESSION_EXTXML_2_HTML
PERFORM update_117. " XSLT STC_TM_SESSION_EXTXML_2_SLA
ENDFORM.

START-OF-SELECTION.
PERFORM main.

Das könnte Ihnen auch gefallen