Sunteți pe pagina 1din 40

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

*& Report Z_DOCU_REPORT


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

REPORT Z_NOTE_1871755_MSG.

* Generated by SAP_LOCAL_DOWNPORT_ASSISTANT Version 3.40 on 20.06.2013

* The individual coding starts at 'FORM action.' ( line 1.847 )

PARAMETERS testrun RADIOBUTTON GROUP mode.


PARAMETERS update RADIOBUTTON GROUP mode.
DATA genview.
PARAMETERS showlogs RADIOBUTTON GROUP mode.
DATA: gv_copy_translation.

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

TYPES: t_switch_id TYPE char30, "sfw_switch_id does not exist in SAP_BASIS 640
t_bfunction TYPE char30, "sfw_bfunction does not exist in SAP_BASIS 640
BEGIN OF t_bf_sw, "sfw_bf_sw
switch_id TYPE t_switch_id,
version,
bfunction TYPE t_bfunction,
no_check,
END OF t_bf_sw,
BEGIN OF
dd43v,typename(30),seckeyname(30),ddlanguage,seckeyunique,accessmode,kind,keydescri
ption(80),END OF dd43v.

TYPES: tt_dd05m TYPE TABLE OF dd05m,


tt_dd17v TYPE TABLE OF dd17v,
tt_dd26v TYPE TABLE OF dd26v,
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_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.

DATA: gr_domname TYPE RANGE OF domname,


gr_rollname TYPE RANGE OF rollname,
gr_tabname TYPE RANGE OF tabname, "structures and database tables
gr_dbtabname TYPE RANGE OF tabname, "only database tables
gt_tabname TYPE TABLE OF tabname,
gr_indexes TYPE RANGE OF trobj_name,
gr_indxtab TYPE RANGE OF tabname,
gr_indxname TYPE RANGE OF indexid,
gr_shlpname TYPE RANGE OF shlpname,
gr_viewname TYPE RANGE OF viewname,
gr_ttypname TYPE RANGE OF ttypename,
gt_ttypname TYPE TABLE OF ttypename,
gr_guistatus TYPE RANGE OF progname,
gr_switchname TYPE RANGE OF t_switch_id,
gr_msg_class TYPE RANGE OF msgid,
gv_trkorr TYPE trkorr,
gv_unit_test,
gv_translation,
gv_repository_changed,
gv_errors_occured,
gv_uname TYPE syuname,
gv_log_handle TYPE balloghndl.

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_memory_id(40) VALUE 'SAP_LOCAL_DOWNPORT_ASSISTANT',
c_logical_object VALUE 'L'.

DATA: akb_get_tadir TYPE funcname VALUE 'AKB_GET_TADIR'.

*&---------------------------------------------------------------------*
*& Form bal_callback_ucomm
*&---------------------------------------------------------------------*
* called from ballog, e.g. during double click
*----------------------------------------------------------------------*
FORM bal_callback_ucomm CHANGING c_state TYPE bal_s_cbuc. "#EC CALLED
DATA: ls_msg TYPE bal_s_msg,
l_date(8),
ls_tadir TYPE adir_key.
CASE c_state-ucomm.
WHEN '%LONGTEXT' OR '&IC1'.
CALL FUNCTION 'BAL_LOG_MSG_READ'
EXPORTING
i_s_msg_handle = c_state-list_msgh
IMPORTING
e_s_msg = ls_msg
EXCEPTIONS
log_not_found = 1
msg_not_found = 2
OTHERS = 3.
IF ls_msg-msgid EQ 'DO' AND ls_msg-msgno EQ '626'.
"MESSAGE i626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
SPLIT ls_msg-msgv3 AT ':' INTO sy-lisel l_date.
SUBMIT radprotb WITH protname EQ ls_msg-msgv3
WITH date EQ l_date
* with TIME
* with USER
AND RETURN.
c_state-ucomm_exec = 'X'.
ELSEIF c_state-ucomm EQ '&IC1'.
ls_tadir = ls_msg-context-value.
CHECK ls_tadir-object IS NOT INITIAL.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ls_tadir-obj_name
object_type = ls_tadir-object
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.
c_state-ucomm_exec = 'X'.
ENDIF.
ENDCASE.
ENDFORM. "bal_callback_ucomm
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
DEFINE bdc_field.
clear: ls_bdc.
ls_bdc-fnam = &1.
ls_bdc-fval = &2.
append ls_bdc to lt_bdc.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
DEFINE bdc_screen.
clear ls_bdc.
ls_bdc-program = &1.
ls_bdc-dynpro = &2.
ls_bdc-dynbegin = 'X'.
append ls_bdc to lt_bdc.
END-OF-DEFINITION.
*----------------------------------------------------------------------*
* CLASS lcl_wb DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_wb DEFINITION.
PUBLIC SECTION.

CLASS-METHODS init
IMPORTING
value(i_note) TYPE clike OPTIONAL "note which indicates that report
is not needed anymore
value(i_cinst) TYPE cwbcialeid OPTIONAL "correction instruction which
describes the validity of the report
EXCEPTIONS
stop_processing.

CLASS-METHODS get_object_text
IMPORTING
i_object TYPE e071-object "e.g. TABD
i_obj_name TYPE c OPTIONAL "for DOCU
RETURNING value(r_text) TYPE string.

CLASS-METHODS create_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_deffdname TYPE deffdname OPTIONAL
i_proxytype TYPE ddproxyty OPTIONAL.

CLASS-METHODS create_message
IMPORTING
i_msgid TYPE msgid
i_msgno TYPE msgno
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_text TYPE natxt
i_selfdef TYPE doku_selfd DEFAULT 'X'.

CLASS-METHODS create_dtel_docu
IMPORTING
i_rollname TYPE rollname
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tline_tab.

CLASS-METHODS create_mess_docu
IMPORTING
i_msgid TYPE msgid
i_msgno TYPE msgno
i_langu TYPE sylangu DEFAULT 'E' "Default EN
i_line TYPE string OPTIONAL "all lines get collected until i_line is
omitted
EXPORTING
et_lines TYPE tline_tab.

CLASS-METHODS add_to_transport
IMPORTING
i_object TYPE e071-object "TABD
i_obj_name TYPE c "flexible number of characters
i_devclass TYPE devclass OPTIONAL
i_langu TYPE sylangu OPTIONAL
EXCEPTIONS
error
simulation.

CLASS-METHODS 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.

CLASS-METHODS display_log.

CLASS-METHODS set_context
IMPORTING i_object TYPE e071-object
i_obj_name TYPE c
i_obj_name2 TYPE c OPTIONAL
i_text TYPE c OPTIONAL
i_langu TYPE sylangu.

CLASS-METHODS activate
IMPORTING i_result_auth_check TYPE sysubrc OPTIONAL.

CLASS-METHODS mass_activation
IMPORTING
i_step TYPE i DEFAULT 1
i_inactive TYPE c OPTIONAL
i_ddmode TYPE ddmode DEFAULT 'O'
i_logname TYPE c
EXCEPTIONS
error.
ENDCLASS. "lcl_wb DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_dcm_to_po_bridge IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_wb IMPLEMENTATION.

METHOD init.

CLEAR gv_errors_occured.

CALL FUNCTION 'AUTHORITY_CHECK_TCODE'


EXPORTING
tcode = 'SNOTE'
EXCEPTIONS
ok = 0
OTHERS = 1.
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'.
RAISE stop_processing.
ENDIF.

IF showlogs IS NOT INITIAL.


CALL METHOD display_log.
LEAVE PROGRAM.
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-repid.
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.
"create standard application log handle
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = ls_log
IMPORTING
e_log_handle = gv_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
EXPORT gv_log_handle FROM gv_log_handle TO MEMORY ID c_memory_id.

CALL METHOD set_context


EXPORTING
i_langu = space
i_object = space
i_obj_name = space.

"Main check: Last changed by SAP -> Report came via SP / Upgrade
"==> no execution anymore.
IF sy-repid NE 'SAP_LOCAL_DOWNPORT_ASSISTANT' AND sy-repid(1) NE '%'.
SELECT SINGLE prog FROM d010sinf INTO sy-lisel
WHERE prog EQ sy-repid
AND ( unam EQ 'SAP' OR cnam EQ 'SAP' ).
IF sy-subrc EQ 0.
MESSAGE w666(01) WITH 'The neccessary changes already came' 'via support
package.' 'Report execution not required anymore.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD display_log.
RAISE stop_processing.
ENDIF.
ENDIF.

IF i_note IS NOT INITIAL.


* that that note is not already implemented
* this must not be the note containing the generated report for DDIC but a
follow-up note with the coding using that new DDIC
DATA l_status TYPE c.
CALL FUNCTION 'SCWB_NOTE_IMPL_STATUS_SIMPLE'
EXPORTING
iv_numm = i_note
IMPORTING
ev_status = l_status
EXCEPTIONS
OTHERS = 1.
CASE l_status.
WHEN 'E'.
MESSAGE w666(01) WITH 'SAP Note' i_note 'completely implemented;' 'Report
execution not required anymore.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD display_log.
RAISE stop_processing.
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.
CALL METHOD display_log.
RAISE stop_processing.
WHEN OTHERS. "okay
DATA: ls_note TYPE bcwbn_note.
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 e666(01) WITH 'SAP Note' i_note 'cannot be read;' 'Ensure
correct download of note first.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
CALL METHOD display_log.
RAISE stop_processing.
ENDIF.
*------
FIELD-SYMBOLS: <ls_corr> TYPE bcwbn_corr_instruction.
DATA: l_valid TYPE bcwbn_bool.
LOOP AT ls_note-corr_instructions ASSIGNING <ls_corr>.
IF i_cinst IS NOT INITIAL.
CHECK <ls_corr>-key-aleid = i_cinst.
ENDIF.
CALL FUNCTION 'SCWB_CINST_CHECK_VALID'
IMPORTING
ev_valid = l_valid
CHANGING
cs_corr_instruction = <ls_corr>
EXCEPTIONS
corr_inst_not_found = 1
inconsistent_delivery_data = 2
undefined = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF l_valid IS NOT 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.
CALL METHOD display_log.
RAISE stop_processing.
ENDIF.
ENDCASE.
ENDIF.

CALL FUNCTION 'SCWG_TOOLFLAG_SET'. "Reset will happen at leave of program

IF testrun IS INITIAL.
MESSAGE i666(01) WITH 'Running in Update Mode' INTO sy-lisel. "#EC *
ELSE.
MESSAGE w666(01) WITH 'Running in Test Mode' INTO sy-lisel. "#EC *
ENDIF.
CALL METHOD log_message.

ENDMETHOD. "init

METHOD get_object_text.

STATICS: lt_object_text TYPE TABLE OF ko100,


lt_doktypes TYPE TABLE OF dd07v.

DATA: ls_object_text TYPE ko100,


ls_doktype TYPE dd07v.

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

CALL FUNCTION 'DDIF_DOMA_GET'


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

IF i_object EQ 'DOCU'.
READ TABLE lt_doktypes INTO ls_doktype BINARY SEARCH
WITH KEY domvalue_l = i_obj_name(2).
IF sy-subrc EQ 0.
CONCATENATE 'Documentation' ls_doktype-ddtext INTO r_text SEPARATED BY
space. "#EC NOTEXT
ELSE.
r_text = 'Documentation'. "#EC NOTEXT
ENDIF.
ELSEIF i_object IS NOT INITIAL.
READ TABLE lt_object_text INTO ls_object_text BINARY SEARCH
WITH KEY object = i_object. "ignore PGMID!
IF sy-subrc EQ 0.
r_text = ls_object_text-text.
ENDIF.
ENDIF.

ENDMETHOD. "get_object_text

METHOD create_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 = i_rollname AND
ls_dd04v-logflag = i_logflag AND
ls_dd04v-memoryid = i_memoryid AND
ls_dd04v-ddlanguage = i_langu AND
ls_dd04v-ddtext = i_ddtext AND
ls_dd04v-scrtext_m = i_scrtext_m AND
ls_dd04v-scrtext_l = i_scrtext_l AND
ls_dd04v-scrtext_s = i_scrtext_s AND
ls_dd04v-reptext = i_reptext AND
ls_dd04v-shlpname = i_shlpname AND
ls_dd04v-shlpfield = i_shlpfield AND
ls_dd04v-deffdname = i_deffdname AND
ls_dd04v-proxytype = i_proxytype AND
( ls_dd04v-domname = i_domname OR i_domname IS INITIAL AND
ls_dd04v-datatype = i_datatype AND
ls_dd04v-decimals = i_decimals AND
ls_dd04v-leng = 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 i_domname IS NOT INITIAL.
READ TABLE gr_domname TRANSPORTING NO FIELDS WITH KEY low = i_domname.
IF sy-subrc NE 0.
SELECT COUNT(*) FROM dd01l 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.
RETURN.
ENDIF.
ENDIF.

CHECK testrun IS INITIAL.

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 i_reptext IS NOT 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.

IF gv_copy_translation IS INITIAL.
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-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.
ENDIF.

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

IF i_langu EQ ls_dd04v-dtelmaster OR gv_copy_translation IS INITIAL.


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.

ELSE.
DATA: ls_dd04l TYPE dd04l,
ls_dd04t TYPE dd04t,
lt_dd04t TYPE TABLE OF dd04t.
MOVE-CORRESPONDING ls_dd04v TO: ls_dd04l, ls_dd04t.
APPEND ls_dd04t TO lt_dd04t.
TRANSLATE l_gotstate USING 'MN'.
CALL FUNCTION 'DD_DTEL_PUT'
EXPORTING
dd04l_wa = ls_dd04l
prid = -2 "no_log
put_state = l_gotstate
rollname = ls_dd04v-rollname
TABLES
dd04t_tab = lt_dd04t
EXCEPTIONS
object_inconsistent = 1
OTHERS = 2.
ENDIF.

ENDMETHOD. "create_dtel

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.

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.

"activate switches "online"


IF gr_switchname IS NOT INITIAL.
SELECT * FROM dwinactiv INTO TABLE lt_dwinactiv
WHERE obj_name IN gr_switchname.
IF lt_dwinactiv[] IS NOT INITIAL.
LOOP AT lt_dwinactiv ASSIGNING <ls_dwinactiv>
WHERE uname NE sy-uname
AND obj_name IN gr_switchname.
<ls_dwinactiv>-uname = sy-uname.
ENDLOOP.
INSERT dwinactiv FROM TABLE lt_dwinactiv ACCEPTING DUPLICATE KEYS.
ENDIF.

MESSAGE s357(scwn).
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
dictionary_only = 'X'
TABLES
objects = lt_dwinactiv
EXCEPTIONS
OTHERS = 5.
ENDIF.

"make sure that ranges are not empty


APPEND 'IEQ' TO: "gr_switchname,
gr_domname,
gr_rollname,
gr_tabname,
gr_shlpname,
gr_viewname,
gr_ttypname,
gr_guistatus,
gr_indexes,
gr_indxtab,
gr_indxname.

SELECT * FROM dwinactiv INTO TABLE lt_dwinactiv


WHERE ( object NE space ) "dummy
AND ( "obj_name IN gr_switchname OR
obj_name IN gr_domname
OR obj_name IN gr_rollname
OR obj_name IN gr_tabname
OR obj_name IN gr_shlpname
OR obj_name IN gr_viewname
OR obj_name IN gr_ttypname
OR obj_name IN gr_guistatus
OR obj_name IN gr_indexes ).
ENDIF.

IF lt_dwinactiv[] IS INITIAL AND gv_repository_changed IS INITIAL.


MESSAGE i666(01) WITH 'No repository changes made' '' '' '' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
IF gv_translation EQ 'X' OR gv_copy_translation EQ 'X'.
MESSAGE i666(01) WITH 'Translation has been updated' '' '' '' INTO sy-
lisel. "#EC *
CALL METHOD log_message.
ENDIF.
ELSEIF gv_errors_occured IS NOT INITIAL.
MESSAGE w666(01) WITH 'Activation was skipped because of errors' 'in previous
steps. Please try again.' INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSEIF i_result_auth_check IS NOT 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.
"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 TRANSPORTING NO FIELDS


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

"DDIC always via RADMASG0


"remove DDIC objects from worklist
LOOP AT lt_dwinactiv ASSIGNING <ls_dwinactiv>
WHERE object = 'DOMA' OR
object = 'DTEL' OR
object = 'TABL' OR
object = 'INDX' OR
object = 'VIEW' OR
object = 'TTYP' OR
object = 'SHLP'.
APPEND <ls_dwinactiv> TO lt_dwinactiv_ddic.
ENDLOOP.
ENDIF.

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


"1) activate non DDIC objects (e.g. CUAD) online
MESSAGE s357(scwn).
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
dictionary_only = ' '
* cwb_mode = 'X'
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.

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

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

CALL METHOD mass_activation "Step 1


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.
IF sy-subrc EQ 0.
CALL METHOD mass_activation "Step 2
EXPORTING
i_step = 2
i_logname = l_logname
i_ddmode = 'O'
i_inactive = ' '
EXCEPTIONS
error = 1.
ENDIF.

CLEAR l_message.
IF sy-subrc EQ 0.
LOOP AT gr_dbtabname INTO ls_tabname WHERE low IS NOT INITIAL.
"make a test SELECT * FROM table UP TP 1 ROWS to see whether it is
really consistent
"go via RFC to have the chance to catch short dumps
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'NONE' "#EC FB_PAR_MIS
EXPORTING
query_table = ls_tabname-low
rowcount = 1
EXCEPTIONS
system_failure = 1 MESSAGE l_message
table_not_available = 0
OTHERS = 0.
IF sy-subrc <> 0.
MESSAGE e666(01) WITH l_message INTO sy-lisel. "#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 low IS NOT 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.
MESSAGE i626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ELSE.
"make sure that the objects appear as inactive; corresponding are removed
by DDIC activation phase 1 although phase 2 or 3 may fail.
MODIFY dwinactiv FROM TABLE lt_dwinactiv_ddic.
MESSAGE e626(do) WITH 'Click this message to view' 'detailed activation
logs with name' l_logname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.

ELSEIF lv_answer = '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.
SUBMIT radmasg0 WITH domname IN gr_domname
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.

SUBMIT radmasg0 WITH domname IN gr_domname


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.
MESSAGE i666(01) WITH 'Use Report RADPROTB to view' 'activation log'
l_logname 'after job has finished in transaction SMX.'. "#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.

SET PARAMETER ID 'EUK' FIELD space.


EXPORT current_devclass FROM space TO MEMORY ID 'EUK'.
ENDMETHOD. "activate

METHOD mass_activation.

DATA: lt_log TYPE TABLE OF trlog,


ls_log TYPE trlog.

SUBMIT radmasg0 WITH domname IN gr_domname


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 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 i_logname IS NOT INITIAL.

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


CHECK i_step <> 1. "messages of step 1 have to be ignored
MESSAGE e666(01) WITH 'DDIC activation step' i_step 'ended with errors:' INTO
sy-lisel. "#EC *
CALL METHOD log_message.
CALL FUNCTION 'TR_READ_LOG'
EXPORTING
iv_log_type = 'DB'
iv_logname_db = i_logname
TABLES
et_lines = lt_log
EXCEPTIONS
invalid_input = 1
access_error = 2
OTHERS = 3.
"append errors from activation log
LOOP AT lt_log INTO ls_log WHERE severity EQ 'E'.
MESSAGE e666(01) WITH ls_log-line INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDLOOP.
RAISE error.
ENDIF.

ENDMETHOD. "mass_activation

METHOD add_to_transport.
STATICS: s_object LIKE i_object,
s_obj_name TYPE string,
s_subrc TYPE sysubrc.

DATA: l_tadir_name TYPE tadir-obj_name,


l_object_name TYPE string,
l_object_class TYPE string,
l_extend,
l_global_lock,
ls_trkey TYPE trkey.

CLEAR sy-subrc.
CHECK gv_copy_translation IS INITIAL.
CHECK testrun IS INITIAL.

IF i_object NE s_object OR
i_obj_name NE s_obj_name.

s_object = i_object.
s_obj_name = i_obj_name.

CASE i_object.
WHEN 'REPT' OR 'FUNC' OR 'CUAD' OR 'DOCU'.
l_object_class = i_object.
l_object_name = i_obj_name.
WHEN 'DOCV' OR 'DOCT' OR 'DSYS' OR 'STCS' OR 'MSAG'
OR 'SFRN' OR 'OSOD'. "logical transport object
l_object_class = i_object.
l_object_name = i_obj_name.
l_global_lock = 'X'.
l_extend = 'X'.
l_tadir_name = i_obj_name.
WHEN 'MESS'.
l_object_class = 'T100'.
l_object_name = i_obj_name.
WHEN 'CLAS' OR 'FUGR' OR 'PARA' OR 'VCLS' OR 'AUTH'.
l_object_class = i_object.
l_object_name = i_obj_name.
l_tadir_name = i_obj_name.
l_global_lock = 'X'.
WHEN 'DOMA' OR 'DTEL' OR 'TABL' OR 'VIEW' OR 'INDX' OR 'TTYP' OR 'SHLP'.
l_object_class = 'DICT'.
CONCATENATE i_object i_obj_name
INTO l_object_name.
l_tadir_name = i_obj_name.
WHEN OTHERS.
l_object_class = i_object.
l_object_name = i_obj_name.
ENDCASE.

"create TADIR entry in advance avoid popup


IF l_tadir_name IS NOT INITIAL.
DATA: ls_tadir_old TYPE tadir.
SELECT SINGLE * FROM tadir INTO ls_tadir_old
WHERE pgmid EQ 'R3TR'
AND object EQ i_object
AND obj_name EQ l_tadir_name.
IF i_langu CA 'ED'.
"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 = space
wi_tadir_pgmid = 'R3TR'
wi_tadir_object = i_object
wi_tadir_obj_name = l_tadir_name
wi_tadir_devclass = i_devclass
wi_tadir_masterlang = i_langu
EXCEPTIONS
OTHERS = 25.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
IF i_devclass IS NOT 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.

CALL FUNCTION 'RS_CORR_INSERT' "and create TADIR-entry


EXPORTING
object = l_object_name
object_class = l_object_class
devclass = i_devclass
korrnum = gv_trkorr
global_lock = l_global_lock
* AUTHOR = ' '
master_language = i_langu
* GENFLAG = ' '
* PROGRAM = ' '
* OBJECT_CLASS_SUPPORTS_MA = ' '
extend = l_extend
* SUPPRESS_DIALOG = ' '
* MOD_LANGU = ' '
* ACTIVATION_CALL = ' '
IMPORTING
korrnum = gv_trkorr
* ORDERNUM =
* NEW_CORR_ENTRY =
* AUTHOR =
transport_key = ls_trkey
* NEW_EXTEND =
EXCEPTIONS
cancelled = 1
permission_failure = 2
unknown_objectclass = 3
OTHERS = 4.
s_subrc = sy-subrc.

"correct master language if neccessary


IF l_tadir_name IS NOT INITIAL AND ls_tadir_old IS INITIAL.
IF i_langu CA 'ED'.
UPDATE tadir SET masterlang = i_langu
WHERE pgmid EQ 'R3TR'
AND object EQ i_object
AND obj_name EQ l_tadir_name
AND masterlang NE i_langu.
ENDIF.
ENDIF.

ENDIF.

IF s_subrc NE 0.
MESSAGE e666(01) WITH 'Could not add to transport request' INTO sy-lisel.
"#EC *
CALL METHOD log_message.
RAISE error.
ENDIF.

ENDMETHOD. "add_to_transport

METHOD 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
wrong_object_name = 1
OTHERS = 2.

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

SELECT SINGLE * FROM t100a INTO ls_t100a


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

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.
IF i_text EQ ls_t100-text.
IF i_selfdef IS INITIAL AND ls_t100u-selfdef IS INITIAL OR
i_selfdef IS NOT INITIAL AND ls_t100u-selfdef IS NOT INITIAL.
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.
ENDIF.

CHECK testrun IS INITIAL.

CALL FUNCTION 'DOCU_OBJECT_NAME_CONCATENATE'


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

CALL METHOD add_to_transport


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

IF i_langu EQ ls_t100a-masterlang AND gv_copy_translation IS INITIAL.


"create or change message and write into transport request
"if sy-langu is different from master language SE91 will switch to master
lang
"-------------------------------------------
ls_bdcp-program = 'SAPLWBMESSAGES'.
ls_bdcp-dynpro = '0100'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.

* ls_bdc-fnam = 'BDC_CURSOR'.
* ls_bdc-fval = 'MSG_NUMMER'.
* APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'RSDAG-ARBGB'.
ls_bdc-fval = i_msgid.
APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'MSG_NUMMER'.
ls_bdc-fval = i_msgno.
APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'RSDAG-MSGFLAG'.
ls_bdc-fval = 'X'.
APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_EDIT'.
APPEND ls_bdc TO lt_bdc.

"-------------------------------------------
ls_bdcp-dynpro = '1000'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.

ls_bdc-fnam = 'BDC_SUBSCR'.
ls_bdc-fval = 'SAPLWBMESSAGES 0101SUB'.
APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'T100-TEXT(01)'.
ls_bdc-fval = i_text.
APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'LISTTAB-DOKU_FLAG(01)'.
IF i_selfdef IS INITIAL.
ls_bdc-fval = ' '.
ELSE.
ls_bdc-fval = 'X'.
ENDIF.
APPEND ls_bdc TO lt_bdc.

ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_SAVE'.
APPEND ls_bdc TO lt_bdc.

"-------------------------------------------
ls_bdcp-dynpro = '1000'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.

ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_BACK'.
APPEND ls_bdc TO lt_bdc.
"-------------------------------------------
ls_bdcp-dynpro = '0100'.
ls_bdcp-dynbegin = 'X'.
APPEND ls_bdcp TO lt_bdc.

ls_bdc-fnam = 'BDC_OKCODE'.
ls_bdc-fval = '=WB_BACK'.
APPEND ls_bdc TO lt_bdc.

ls_opt-dismode = 'E'.
ls_opt-racommit = 'X'.
ls_opt-nobinpt = 'X'.
ls_opt-nobiend = 'X'.

"-------------------------------------------
CALL TRANSACTION 'SE91' USING lt_bdc OPTIONS FROM ls_opt.
ELSE.
"update translation only
ls_t100-arbgb = i_msgid.
ls_t100-msgnr = i_msgno.
ls_t100-sprsl = i_langu.
ls_t100-text = i_text.
MODIFY t100 FROM ls_t100. "no activation needed
ENDIF.
MESSAGE i666(01) WITH 'Update successful' INTO sy-lisel. "#EC *
CALL METHOD log_message.
gv_translation = 'X'.
gv_repository_changed = 'X'.

ENDMETHOD. "create_message

METHOD create_mess_docu.

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,
lv_no_masterlang.

IF i_line IS NOT INITIAL.


ls_line = i_line.
SHIFT ls_line-tdline LEFT.
APPEND ls_line TO lt_line.
ELSE.
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

ls_head-tdobject = 'DOKU'.
CONCATENATE i_msgid i_msgno INTO ls_head-tdname.
ls_head-tdid = 'NA'. "Nachricht/Message
ls_head-tdspras = i_langu.
ls_head-tdform = 'S_DOCU_SHOW'.
ls_head-tdstyle = 'S_DOCUS1'.

CALL FUNCTION 'DOCU_GET'


EXPORTING
id = ls_head-tdid(2)
langu = ls_head-tdspras
object = ls_head-tdname(60)
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.
REFRESH lt_line.
"no update necessary
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.

IF testrun IS INITIAL.

CONCATENATE ls_head-tdid ls_head-tdname INTO ls_tadir-obj_name.

CALL METHOD add_to_transport


EXPORTING
i_object = 'DOCU'
i_obj_name = ls_tadir-obj_name
EXCEPTIONS
OTHERS = 0.

SELECT SINGLE * FROM tadir INTO ls_tadir


WHERE pgmid EQ 'R3TR'
AND object EQ 'MSAG'
AND obj_name EQ i_msgid.
IF ls_head-tdspras NE ls_tadir-masterlang.
lv_no_masterlang = 'X'.
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.

CALL FUNCTION 'DOCU_UPDATE'


EXPORTING
* ACTCLASS = ' '
head = ls_head
no_masterlang = lv_no_masterlang
state = 'A'
typ = 'E'
version = l_dokversion
TABLES
line = lt_line.

MESSAGE i666(01) WITH 'Update successful' 'for longtext of message' i_msgid


i_msgno INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
gv_translation = 'X'.
REFRESH lt_line.
ENDIF.

ENDMETHOD. "create_mess_docu

METHOD create_dtel_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,
lv_no_masterlang.

IF i_line IS NOT INITIAL.


ls_line = i_line.
SHIFT ls_line-tdline LEFT.
APPEND ls_line TO lt_line.
ELSE.
CALL METHOD set_context
EXPORTING
i_langu = i_langu
i_object = 'DTEL'
i_obj_name = i_rollname
i_text = 'Data Element Longtext'. "#EC NOTEXT

ls_head-tdobject = 'DOKU'.
ls_head-tdname = i_rollname.
ls_head-tdid = 'DE'. "Data element
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)
langu = ls_head-tdspras
object = ls_head-tdname(60)
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.
REFRESH lt_line.
"no update necessary
MESSAGE i666(01) WITH 'No update necessary' INTO sy-lisel. "#EC *
CALL METHOD log_message.
RETURN.
ENDIF.

IF testrun IS INITIAL.

CONCATENATE ls_head-tdid ls_head-tdname INTO ls_tadir-obj_name.

CALL METHOD add_to_transport


EXPORTING
i_object = 'DOCU'
i_obj_name = ls_tadir-obj_name
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc EQ 0.

SELECT SINGLE * FROM tadir INTO ls_tadir


WHERE pgmid EQ 'R3TR'
AND object EQ 'DTEL'
AND obj_name EQ i_rollname.
IF ls_head-tdspras NE ls_tadir-masterlang.
lv_no_masterlang = 'X'.
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.

CALL FUNCTION 'DOCU_UPDATE'


EXPORTING
* ACTCLASS = ' '
head = ls_head
no_masterlang = lv_no_masterlang
state = 'A'
typ = 'E'
version = l_dokversion
TABLES
line = lt_line.

MESSAGE i666(01) WITH 'Update successful' 'for longtext of data element'


i_rollname INTO sy-lisel. "#EC *
CALL METHOD log_message.
ENDIF.
gv_translation = 'X'.
REFRESH lt_line.
ENDIF.

ENDMETHOD. "create_dtel_docu

METHOD log_message.

DATA: ls_msg TYPE bal_s_msg.

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


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

CALL FUNCTION 'BAL_LOG_MSG_ADD'


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

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

ENDMETHOD. "log_message

METHOD display_log.

DATA: lt_log_handle TYPE bal_t_logh,


ls_profile TYPE bal_s_prof,
l_s_fcat TYPE bal_s_fcat,
lt_dfies TYPE TABLE OF dfies,
ls_dfies TYPE dfies.
DATA: 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.

IF gv_log_handle IS INITIAL.

CLEAR: ls_filter, lr_extnumber.

*- Search only log file of this application


lr_filter-sign = 'I'.
lr_filter-option = 'EQ'.
lr_filter-low = c_bal_object.
APPEND lr_filter TO ls_filter-object.

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

*- Search only log file of this change number


lr_extnumber-low = sy-repid.
lr_extnumber-sign = 'I'.
lr_extnumber-option = 'EQ'.
APPEND lr_extnumber TO ls_filter-extnumber.

*-- Search for log files on the database


CALL FUNCTION 'BAL_DB_SEARCH'
EXPORTING
i_s_log_filter = ls_filter
IMPORTING
e_t_log_header = lt_log_header
EXCEPTIONS
log_not_found = 1
no_filter_criteria = 2
OTHERS = 3.
IF sy-subrc EQ 0.
*-- Load log files from database into memory
CALL FUNCTION 'BAL_DB_LOAD'
EXPORTING
i_t_log_header = lt_log_header
IMPORTING
e_t_log_handle = lt_log_handle
EXCEPTIONS
no_logs_specified = 1
log_not_found = 2
log_already_loaded = 3
OTHERS = 4.
ENDIF.
ELSE.
APPEND gv_log_handle TO lt_log_handle.
ENDIF.

IF 1 = 1.
"grid
CALL FUNCTION 'BAL_DSP_PROFILE_SINGLE_LOG_GET'
IMPORTING
e_s_display_profile = ls_profile
EXCEPTIONS
OTHERS = 0.
"Set profile
ls_profile-show_all = abap_on.
ls_profile-use_grid = abap_on.
ls_profile-tree_ontop = abap_on.
ls_profile-exp_level = 1.
ls_profile-mess_mark = abap_on.
ELSE.
"tree
CALL FUNCTION 'BAL_DSP_PROFILE_DETLEVEL_GET'
IMPORTING
e_s_display_profile = ls_profile
EXCEPTIONS
OTHERS = 0.
ENDIF.

"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.
ASSERT sy-subrc EQ 0.

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 = c_bal_subobj.

ls_profile-clbk_ucbf-userexitp = sy-repid.
ls_profile-clbk_ucbf-userexitf = 'BAL_CALLBACK_UCOMM'.
* ls_profile-clbk_ucom-userexitp = sy-repid.
* ls_profile-clbk_ucom-userexitf = 'BAL_CALLBACK_UCOMM'.
* ls_profile-ext_push1-active = 'X'.
* ls_profile-ext_push1-def-text = 'DDIC'.
* ls_profile-ext_push1-def-icon_id = icon_history.
* ls_profile-ext_push1-def-icon_text = 'DDIC'.
* ls_profile-ext_push1-def-quickinfo = 'DDIC Activation log'.

IF testrun IS NOT INITIAL.


ls_profile-title = 'UDO - Simulation log'. "#EC *
ELSEIF update IS NOT INITIAL.
ls_profile-title = 'UDO - Change Log'. "#EC *
ELSEIF genview IS NOT INITIAL.
ls_profile-title = 'UDO - View Generation Log'. "#EC *
ENDIF.

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.

CALL FUNCTION 'BAL_DB_SAVE'


EXPORTING
i_t_log_handle = lt_log_handle
EXCEPTIONS
OTHERS = 0.

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

ls_key-i_object = i_object.
ls_key-i_obj_name = i_obj_name.
ls_key-i_obj_name2 = i_obj_name2.
ls_key-i_text = i_text.
ls_key-i_langu = i_langu.
IF ls_key EQ lss_key. "check last key
"avoid double message like "add field to table"
RETURN.
ELSE.
lss_key = ls_key.
ENDIF.

ls_context-object = i_object.
CONCATENATE i_obj_name i_obj_name2 INTO ls_context-obj_name.
ls_msg_defaults-log_handle = gv_log_handle.
ls_msg_defaults-context-value = ls_context.
ls_msg_defaults-context-tabname = c_bal_context.

CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_SET'


EXPORTING
i_s_msg_defaults = ls_msg_defaults
EXCEPTIONS
OTHERS = 0.

"try to check if object exists


IF i_object IS NOT INITIAL AND i_obj_name IS NOT 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 l_text IS NOT INITIAL.


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

ENDMETHOD. "set_context
ENDCLASS. "lcl_wb IMPLEMENTATION

START-OF-SELECTION.
PERFORM action.

*&---------------------------------------------------------------------*
FORM action.

CALL METHOD lcl_wb=>init "#EC *


* EXPORTING
* i_note = ' "<note which indicates that report is not needed
anymore>
EXCEPTIONS
stop_processing = 1
others = 2.
IF sy-subrc EQ 0 and ( update IS NOT INITIAL OR testrun IS NOT INITIAL ).
*
*
*"-- LIMU DOCU DE/FSPAM/_POSTING_CATG (language: EN , source: FHD )
* CALL METHOD lcl_wb=>create_dtel_docu "#EC *
* EXPORTING
* i_rollname = '/FSPAM/_POSTING_CATG'
* i_langu = 'E'
* i_line =:'U1 &DEFINITION&',
"#EC NOTEXT
* 'AS Specifies whether the system only simulates the posting of
a payment', "#EC NOTEXT
* ' order or actually posts a payment order.',
"#EC NOTEXT
* 'U1 &USE&',
"#EC NOTEXT
* 'AS The system fills this field automatically during processes
that call PAM', "#EC NOTEXT
* ' and uses this information when it creates internal payment
orders via', "#EC NOTEXT
* ' PAM. This field can have one of the following values:',
"#EC NOTEXT
* 'B1 1',
"#EC NOTEXT
* 'AL Simulation run - the system does not post the payment
order.', "#EC NOTEXT
* 'B1 2',
"#EC NOTEXT
* 'AL Posting run - the system posts the payment order and makes
an entry in', "#EC NOTEXT
* ' the database table.',
"#EC NOTEXT
* 'U1 &DEPENDENCIES&',
"#EC NOTEXT
* 'AS',
"#EC NOTEXT
* 'U1 &EXAMPLE&',
"#EC NOTEXT
* 'AS',
"#EC NOTEXT
* space.
*
*
*"-- LIMU DOCU DE/FSPAM/_PYMT_DIRECTIVE_TYPE (language: EN , source: FHD )
* CALL METHOD lcl_wb=>create_dtel_docu "#EC *
* EXPORTING
* i_rollname = '/FSPAM/_PYMT_DIRECTIVE_TYPE'
* i_langu = 'E'
* i_line =:'U1 &DEFINITION&',
"#EC NOTEXT
* 'AS For more information, see',
"#EC NOTEXT
* '= <DS:GLOS.88EB2DDB8D891042869ABAF798A60821>payment
directive type</>.', "#EC NOTEXT
* 'U1 &DEPENDENCIES&',
"#EC NOTEXT
* 'AS You define the payment directive types in Customizing for
<LS>Account', "#EC NOTEXT
* ' Management (FS-AM)</>. Choose <LS>Basic Settings</> ->
<LS>Payment', "#EC NOTEXT
* ' Directive Types</> ->',
"#EC NOTEXT
* '= <DS:SIMG._TB_GS_PDI_DITYP>Define Payment Directive
Types</>.', "#EC NOTEXT
* 'U1 &EXAMPLE&',
"#EC NOTEXT
* 'AS',
"#EC NOTEXT
* space.

"- MSAG -------------------------------------------------------------------------


Message Classes
"-- LIMU MESS /FSPAM/_PYMT_ADV058 (language: EN , source: FHD )
* CALL METHOD lcl_wb=>create_message "#EC *
* EXPORTING
* i_msgid = '/FSPAM/_PYMT_ADV'
* i_msgno = '058':
* i_langu = 'E'
* i_selfdef = ''
* i_text = 'Payment Advice Category &1 not customized'.
*
*
*"-- LIMU MESS /FSPAM/_PYMT_ADV059 (language: EN , source: FHD )
* CALL METHOD lcl_wb=>create_message "#EC *
* EXPORTING
* i_msgid = '/FSPAM/_PYMT_ADV'
* i_msgno = '059':
* i_langu = 'E'
* i_selfdef = ''
* i_text = 'Carrier class not available for Paymt Adv Catg &1'.

"-- LIMU MESS /FSPAM/_PYMT_ADV063 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '063':
i_langu = 'E'
i_selfdef = ''
i_text = 'SDD type (core/B2B) is not defined for recipient transaction
type &1'.
"-- LIMU MESS /FSPAM/_PYMT_ADV065 (language: EN , source: FHD )
CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '065':
i_langu = 'E'
i_selfdef = ''
i_text = 'You cannot use a payment advice type that manages mandates
externally'.

"-- LIMU MESS /FSPAM/_PYMT_ADV066 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_message "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '066':
i_langu = 'E'
i_selfdef = '3'
i_text = 'Enter a payment advice type'.

*
*"-- LIMU DOCU NA/FSPAM/_PYMT_ADV058 (language: EN , source: FHD )
* CALL METHOD lcl_wb=>create_mess_docu "#EC *
* EXPORTING
* i_msgid = '/FSPAM/_PYMT_ADV'
* i_msgno = '058'
* i_langu = 'E'
* i_line =:'U1 &CAUSE&',
"#EC NOTEXT
* 'AS Payment Advice Category &SYST-MSGV1& is not
customizied', "#EC NOTEXT
* 'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
* 'AS PPO is created with Business Process ''/FSPAM''',
"#EC NOTEXT
* 'U1 &WHAT_TO_DO&',
"#EC NOTEXT
* 'AS Customize your payment advice category in the following
link', "#EC NOTEXT
* '= <DS:SIMG./FSPAM/_V_PAC>Define Payment Advice
Category</>', "#EC NOTEXT
* 'U1 &SYS_ADMIN&',
"#EC NOTEXT
* 'AS',
"#EC NOTEXT
* space.

*"-- LIMU DOCU NA/FSPAM/_PYMT_ADV059 (language: EN , source: FHD )


* CALL METHOD lcl_wb=>create_mess_docu "#EC *
* EXPORTING
* i_msgid = '/FSPAM/_PYMT_ADV'
* i_msgno = '059'
* i_langu = 'E'
* i_line =:'U1 &CAUSE&',
"#EC NOTEXT
* 'AS Carrier class not customized for Payment Advice Category
&SYST-MSGV1&', "#EC NOTEXT
* 'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
* 'AS PPO is created with business process ''/FSPAM''',
"#EC NOTEXT
* 'U1 &WHAT_TO_DO&',
"#EC NOTEXT
* 'AS Customize class name of Carrier class against your Payment
Advice', "#EC NOTEXT
* ' Category in the folllowing link',
"#EC NOTEXT
* '= <DS:SIMG./FSPAM/_V_PAC>Define Payment Advice
Category</>', "#EC NOTEXT
* 'AS The default Carrier class provided by SAP is
/FSPAM/_CARRIER.', "#EC NOTEXT
* 'AS If payment processing for your Payment Advice Category has
specifc', "#EC NOTEXT
* ' behavior, create a carrier implimentation class by
inheriting from', "#EC NOTEXT
* ' /FSPAM/_CARRIER class and handle the payment processing.',
"#EC NOTEXT
* 'U1 &SYS_ADMIN&',
"#EC NOTEXT
* 'AS',
"#EC NOTEXT
* space.

"-- LIMU DOCU NA/FSPAM/_PYMT_ADV060 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '060'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS The system determines whether the payment advice type is
<LS>Core </>or', "#EC NOTEXT
' <LS>B2B </>as follows:',
"#EC NOTEXT
'N1 Identifies the payment directive type assigned to the
payment advice', "#EC NOTEXT
' type',
"#EC NOTEXT
'N1 Identifies the recipient transaction type assigned to the
payment', "#EC NOTEXT
' directive type derived in step 1',
"#EC NOTEXT
'N1 Identifies the SDD type of the recipient transaction type
derived in', "#EC NOTEXT
' step 2',
"#EC NOTEXT
'AS The system determines the mandate type based on the <LS>B2B
</>flag on', "#EC NOTEXT
' the mandate.',
"#EC NOTEXT
'AS You chose a counterparty whose mandate type does not match
the payment', "#EC NOTEXT
' advice type (core/B2B).',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS You cannot save the payment advice.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS You can do one of the following:',
"#EC NOTEXT
'B1 Choose a different payment advice type',
"#EC NOTEXT
'B1 Choose a different counterparty',
"#EC NOTEXT
'B1 Contact your system administrator',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS You make the corresponding settings as follows:',
"#EC NOTEXT
'B1 You assign the payment directive type to the payment advice
type in the', "#EC NOTEXT
' Customizing activity',
"#EC NOTEXT
'= <DS:SIMG./FSPAM/_V_PAT>Define Payment Advice Type</>',
"#EC NOTEXT
'B1 You assign the recipient transaction type to the payment
directive type', "#EC NOTEXT
' in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG._AM_OM_PO_INPO_PDTY>Assign a Payment Directive
Type with', "#EC NOTEXT
' Transaction Types , Medium/PaytMeth</>',
"#EC NOTEXT
'B1 You assign the SDD type of the recipient transaction type
in the', "#EC NOTEXT
' Customizing activity',
"#EC NOTEXT
'= <DS:SIMG.BCAG35_MND_ORD>Define Lead Days for SEPA Direct
Debits</>', "#EC NOTEXT
space.

"-- LIMU DOCU NA/FSPAM/_PYMT_ADV061 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '061'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS You cannot save the payment advice.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Contact your system administrator.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS Enter the payment advice type in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG./FSPAM/_V_PAT>Define Payment Advice Type</>.',
"#EC NOTEXT
space.

"-- LIMU DOCU NA/FSPAM/_PYMT_ADV062 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '062'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS You cannot save the payment advice.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Contact your system administrator.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS Assign the transaction type/payment method/medium to the
payment', "#EC NOTEXT
' directive type in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG._AM_OM_PO_INPO_PDTY>Assign a Payment Directive
Type with', "#EC NOTEXT
' Transaction Types and Medium/PaytMeth</>.',
"#EC NOTEXT
space.

"-- LIMU DOCU NA/FSPAM/_PYMT_ADV063 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '063'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS The system cannot check whether the direct debit type of
the mandate (', "#EC NOTEXT
'= <LS>Core/B2B</>) and the SDD type for the payment advice
type are', "#EC NOTEXT
' compatible. You cannot save the payment advice.',
"#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Contact your system administrator.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS Assign the <LS>SEPA Direct Debit Type</>
( <LS>CORE/B2B</> ) to the R', "#EC NOTEXT
'= <LS>ecipient Transaction Type</> in the Customizing
activity', "#EC NOTEXT
'= <DS:SIMG.BCAG35_MND_ORD>Define Lead Days for SEPA Direct
Debits</>.', "#EC NOTEXT
space.

"-- LIMU DOCU NA/FSPAM/_PYMT_ADV065 (language: EN , source: FHD )


CALL METHOD lcl_wb=>create_mess_docu "#EC *
EXPORTING
i_msgid = '/FSPAM/_PYMT_ADV'
i_msgno = '065'
i_langu = 'E'
i_line =:'U1 &CAUSE&',
"#EC NOTEXT
'AS The payment advice type &V2& is assigned to the SEPA Direct
Debit', "#EC NOTEXT
' payment advice category and the payment directive type
&V1&. This', "#EC NOTEXT
' payment directive type has been assigned to payment method
&V3&, which', "#EC NOTEXT
' manages mandates externally. The system identifies mandates
as being', "#EC NOTEXT
' externally managed if the <LS>Control </>field has the
value <LS>Mandate', "#EC NOTEXT
' </>in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG._AM_OR_TBKKG1>Define Medium/Payment Method</>.',
"#EC NOTEXT
'AS Payment Advice Management does not support mandates that
are managed', "#EC NOTEXT
' externally.',
"#EC NOTEXT
'U1 &SYSTEM_RESPONSE&',
"#EC NOTEXT
'AS Depending on the action you were performing, the system
does one of the', "#EC NOTEXT
' following:',
"#EC NOTEXT
'B1 The system does not allow you to assign this payment
directive type to', "#EC NOTEXT
' the payment advice type in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG./FSPAM/_V_PAT>Define Payment Advice Type</>.',
"#EC NOTEXT
'B1 The system does not allow you to select this payment advice
type while', "#EC NOTEXT
' maintaining payment advices for the account, order, and so
on.', "#EC NOTEXT
'U1 &WHAT_TO_DO&',
"#EC NOTEXT
'AS Contact your system administrator.',
"#EC NOTEXT
'U1 &SYS_ADMIN&',
"#EC NOTEXT
'AS You can do one of the following:',
"#EC NOTEXT
'B1 Change the payment method that is assigned to this payment
advise type', "#EC NOTEXT
' so that mandates are not managed externally. To do this,
change the', "#EC NOTEXT
' value for the <LS>Control </>field to a value other than
<LS>Mandate', "#EC NOTEXT
' </>in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG._AM_OR_TBKKG1>Define Medium/Payment Method</>.',
"#EC NOTEXT
'B1 Assign a payment method to the payment directive type that
does not', "#EC NOTEXT
' manage mandates externally in the Customizing activity',
"#EC NOTEXT
'= <DS:SIMG._AM_OM_PO_INPO_PDTY>Assign a Payment Directive
Type with', "#EC NOTEXT
' Transaction Types ,Medium/PaytMeth</>.',
"#EC NOTEXT
space.

ENDIF.

CALL METHOD lcl_wb=>activate.

CALL METHOD lcl_wb=>display_log.


ENDFORM.

S-ar putea să vă placă și