ALV字段名不显示
自建的透明表
REPORT ZTXYY_1123.
DATA: gr_alv TYPE REF TO cl_salv_table,
gr_columns TYPE REF TO cl_salv_columns_table.
DATA: ZPL_LIST TYPE TABLE OF ZPL_EINVOICE_LOG.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_alv
CHANGING
t_table = ZPL_LIST ."用该表结构和数据
gr_columns = gr_alv->get_columns( ).
gr_columns->set_optimize( VALUE = 'X' ).
gr_alv->display( ).
执行结果
出现多个列名为空
原因:预定义个描述在alv中不会展示,需要定义数据类型参考
解决方案:定义数据类型参考
注意如果是有多个语言系统,则会出现在中文系统中有列名而英文中没有.
暂时未解决如有解决的请评论回复
文本翻译
SAP ABAP批量翻译工具(翻译+传输)_sap 自动翻译-CSDN博客
YLAN_TRANSLATE ABAP程序批量翻译工具_abap 快速翻译功能-CSDN博客
如何翻译事务代码(tcode)描述-SE63 | 摆渡SAP
p_only只看为空的
*&---------------------------------------------------------------------*
*& Report ZMULTIPLE_TRANSLATION
*&---------------------------------------------------------------------*
*& Author:DeveloprMrMeng
*& Usage :Used to translate common development objects
*& Date :2024.07.15
*&---------------------------------------------------------------------*
REPORT zmultiple_translation.
*----------------------------------------------------------------------*
* Types Defination
*----------------------------------------------------------------------*
TYPES:
* Selection screen
BEGIN OF ty_screen,
package TYPE tdevc-devclass, "Package
author TYPE tadir-author, "Author
s_langu TYPE lxe_log-targlng, "Source Language
t_langu TYPE lxe_log-targlng, "Target Language
table TYPE rsrd1-tbma_val, "Table
structure TYPE rsrd1-stru_val, "Sturcture
data_element TYPE rsrd1-drma_val, "Data element
domain TYPE rsrd1-doma_val, "Domain
view TYPE rsrd1-vima_val, "View
program TYPE reposrc-progname, "Program
function_grp TYPE tlibg-area, "Function Group
function TYPE tfdir-funcname, "Fucntion
transaction TYPE tstc-tcode, "Transaction
message_class TYPE t100-arbgb, "Message class
message_no TYPE t100-msgnr, "Message number
END OF ty_screen,
BEGIN OF ty_tadir,
pgmid TYPE tadir-pgmid, "Program ID
object TYPE tadir-object, "Object Type
obj_name TYPE tadir-obj_name, "Object Name
srcsystem TYPE tadir-srcsystem, "Original System
author TYPE tadir-author, "Author
devclass TYPE tadir-devclass, "Package
END OF ty_tadir,
tt_tadir TYPE STANDARD TABLE OF ty_tadir,
BEGIN OF ty_fungrp,
fungrp TYPE tfdir-pname, "Function group
END OF ty_fungrp,
tt_fungrp TYPE STANDARD TABLE OF ty_fungrp,
BEGIN OF ty_tfdir,
funcname TYPE tfdir-funcname, "Function name
pname TYPE tfdir-pname, "Fucntion group full name
include TYPE tfdir-include, "index
END OF ty_tfdir,
tt_tfdir TYPE SORTED TABLE OF ty_tfdir
WITH UNIQUE KEY pname funcname,
BEGIN OF ty_d020s,
prog TYPE d020s-prog, "Program name
dnum TYPE d020s-dnum, "Screen number
END OF ty_d020s,
tt_d020s TYPE STANDARD TABLE OF ty_d020s
WITH NON-UNIQUE SORTED KEY prog COMPONENTS prog,
BEGIN OF ty_read_para,
objtype TYPE lxeobjtype, "Object type
objname TYPE lxeobjname, "Object name
END OF ty_read_para,
tt_read_para TYPE STANDARD TABLE OF ty_read_para,
ty_attobt TYPE lxe_attobt, "Translation object type description
tt_attobt TYPE SORTED TABLE OF ty_attobt
WITH UNIQUE KEY lang obj_type,
ty_lxe_log TYPE lxe_log, "Translation log
tt_lxe_log TYPE STANDARD TABLE OF ty_lxe_log,
ty_t100 TYPE t100, "Message
tt_t100 TYPE SORTED TABLE OF ty_t100
WITH UNIQUE KEY sprsl arbgb msgnr,
BEGIN OF ty_alv,
obj_type TYPE lxe_attobt-obj_type, "Object Type
ktext TYPE lxe_attobt-ktext, "Object Type Description
objname TYPE lxeobjname, "Object name
textkey TYPE lxe_pcx_s1-textkey, "Text key
icon TYPE icon_d, "Icon
s_text TYPE lxe_pcx_s1-s_text, "Source text
t_text TYPE lxe_pcx_s1-t_text, "Target text
sap_text TYPE lxe_pcx_s1-t_text, "Translation of SAP recommendations
texttype TYPE lxe_pcx_s1-texttype, "Text type
devclass TYPE tadir-devclass, "Package
author TYPE tadir-author, "Author
unitmlt TYPE lxe_pcx_s1-unitmlt, "Maximum Length of Translation Unit
uppcase TYPE lxe_pcx_s1-uppcase, "Only Uppercase Allowed
cbox TYPE cbox, "CheckBox
style TYPE lvc_t_styl,
color TYPE lvc_t_scol,
END OF ty_alv,
tt_alv TYPE STANDARD TABLE OF ty_alv
WITH NON-UNIQUE SORTED KEY cbox COMPONENTS cbox
WITH NON-UNIQUE SORTED KEY grp COMPONENTS obj_type ktext objname.
CONSTANTS:
gc_custmnr TYPE lxecustmnr VALUE cl_lxe_constants=>c_trl_area_local.
*&---------------------------------------------------------------------*
*& Global Pramaters Defination
*&---------------------------------------------------------------------*
DATA:
gs_screen TYPE ty_screen,
gt_tfdir TYPE tt_tfdir,
gt_alv TYPE tt_alv,
gt_attobt TYPE tt_attobt,
gt_d020s TYPE tt_d020s,
gt_t100 TYPE tt_t100,
gv_t_spras TYPE spras,
gv_s_spras TYPE spras.
FIELD-SYMBOLS:
<gs_alv> TYPE ty_alv.
DATA:
gt_r_object TYPE RANGE OF tadir-object,
gs_r_object LIKE LINE OF gt_r_object,
gt_r_obj_name TYPE RANGE OF tadir-obj_name,
gs_r_obj_name LIKE LINE OF gt_r_obj_name.
*&---------------------------------------------------------------------*
*& Selection Screen Defination
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK mode WITH FRAME TITLE gv_desc0.
PARAMETERS:
p_tabl AS CHECKBOX DEFAULT '' USER-COMMAND tabl,
p_view AS CHECKBOX DEFAULT '' USER-COMMAND view,
p_stru AS CHECKBOX DEFAULT '' USER-COMMAND stru,
p_dtel AS CHECKBOX DEFAULT '' USER-COMMAND dtel,
p_doma AS CHECKBOX DEFAULT '' USER-COMMAND doma,
p_prog AS CHECKBOX DEFAULT '' USER-COMMAND prog,
p_fugr AS CHECKBOX DEFAULT '' USER-COMMAND fugr,
p_tran AS CHECKBOX DEFAULT '' USER-COMMAND tran,
p_mess AS CHECKBOX DEFAULT '' USER-COMMAND mess.
SELECTION-SCREEN END OF BLOCK mode.
SELECTION-SCREEN BEGIN OF BLOCK tra WITH FRAME TITLE gv_desc1.
PARAMETERS:
p_sour TYPE ty_screen-s_langu,
p_targ TYPE ty_screen-t_langu.
SELECTION-SCREEN END OF BLOCK tra.
SELECTION-SCREEN BEGIN OF BLOCK opt WITH FRAME TITLE gv_desc2.
SELECT-OPTIONS:
s_pack FOR gs_screen-package,
s_auth FOR gs_screen-author.
SELECTION-SCREEN END OF BLOCK opt.
SELECTION-SCREEN BEGIN OF BLOCK ddic WITH FRAME TITLE gv_desc3.
SELECT-OPTIONS:
s_tabl FOR gs_screen-table MODIF ID tab,
s_view FOR gs_screen-view MODIF ID vie,
s_stru FOR gs_screen-structure MODIF ID str,
s_dtel FOR gs_screen-data_element MODIF ID dte,
s_doma FOR gs_screen-domain MODIF ID dom.
SELECTION-SCREEN END OF BLOCK ddic.
SELECTION-SCREEN BEGIN OF BLOCK prog WITH FRAME TITLE gv_desc4.
SELECT-OPTIONS:
s_prog FOR gs_screen-program MODIF ID pro.
SELECTION-SCREEN END OF BLOCK prog.
SELECTION-SCREEN BEGIN OF BLOCK func WITH FRAME TITLE gv_desc5.
SELECT-OPTIONS:
s_fugr FOR gs_screen-function_grp MODIF ID fug.
SELECTION-SCREEN END OF BLOCK func.
SELECTION-SCREEN BEGIN OF BLOCK trsc WITH FRAME TITLE gv_desc6.
SELECT-OPTIONS:
s_tran FOR gs_screen-transaction MODIF ID tra.
SELECTION-SCREEN END OF BLOCK trsc.
SELECTION-SCREEN BEGIN OF BLOCK mess WITH FRAME TITLE gv_desc7.
SELECT-OPTIONS:
s_mscl FOR gs_screen-message_class MODIF ID mes,
s_msno FOR gs_screen-message_no MODIF ID mes.
SELECTION-SCREEN END OF BLOCK mess.
PARAMETERS:
p_only AS CHECKBOX DEFAULT 'X'.
*&---------------------------------------------------------------------*
*& INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
* Initial some paramaters
PERFORM frm_initial.
*&---------------------------------------------------------------------*
*& SELECTION-SCREEN OUTPUT
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
* Update screen defore screen output
PERFORM frm_update_screen.
*&---------------------------------------------------------------------*
*& SELECTION-SCREEN Search Help
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_sour.
PERFORM frm_f4_for_language USING 'P_SOUR' CHANGING p_sour.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_targ.
PERFORM frm_f4_for_language USING 'P_TARG' CHANGING p_targ.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* Process Start
PERFORM frm_start_process.
*&---------------------------------------------------------------------*
*& Form FRM_INITIAL
*&---------------------------------------------------------------------*
*& Initial some paramaters
*&---------------------------------------------------------------------*
FORM frm_initial .
gv_desc0 = 'Translation Scope'(000).
gv_desc1 = 'Translation Mode'(001).
gv_desc2 = 'Default Condition'(002).
gv_desc3 = 'DDIC Condition'(003).
gv_desc4 = 'Program Condition'(004).
gv_desc5 = 'Function Condition'(005).
gv_desc6 = 'Transaction Condition'(006).
gv_desc7 = 'Message Condition'(007).
%_p_tabl_%_app_%-text = 'Table'(008).
%_p_stru_%_app_%-text = 'Structure'(009).
%_p_dtel_%_app_%-text = 'Data Element'(010).
%_p_doma_%_app_%-text = 'Domain'(011).
%_p_view_%_app_%-text = 'View'(012).
%_p_prog_%_app_%-text = 'Program'(013).
%_p_fugr_%_app_%-text = 'Function Group'(014).
%_p_tran_%_app_%-text = 'Transaction'(015).
%_p_mess_%_app_%-text = 'Message'(016).
%_p_sour_%_app_%-text = 'Source Language'(017).
%_p_targ_%_app_%-text = 'Target Language'(018).
%_s_pack_%_app_%-text = 'Package'(019).
%_s_auth_%_app_%-text = 'Author'(020).
%_s_tabl_%_app_%-text = 'Table Name'(021).
%_s_view_%_app_%-text = 'View Name'(022).
%_s_stru_%_app_%-text = 'Structure Name'(023).
%_s_dtel_%_app_%-text = 'Data Element Name'(024).
%_s_doma_%_app_%-text = 'Domain Name'(025).
%_s_prog_%_app_%-text = 'Program Name'(026).
%_s_fugr_%_app_%-text = 'Function Group Name'(027).
%_s_tran_%_app_%-text = 'Transaction Code'(028).
%_s_mscl_%_app_%-text = 'Message Class'(029).
%_s_msno_%_app_%-text = 'Message Number'(030).
%_p_only_%_app_%-text = 'Untranslated only'(031).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPDATE_SCREEN
*&---------------------------------------------------------------------*
*& Update screen defore screen output
*&---------------------------------------------------------------------*
FORM frm_update_screen .
LOOP AT SCREEN.
IF screen-name = 'S_PACK-LOW' OR screen-name = 'P_SOUR' OR screen-name = 'P_TARG'.
screen-required = '2'.
ENDIF.
IF p_tabl = ''.
IF screen-group1 = 'TAB'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_stru = ''.
IF screen-group1 = 'STR'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_dtel = ''.
IF screen-group1 = 'DTE'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_doma = ''.
IF screen-group1 = 'DOM'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_view = ''.
IF screen-group1 = 'VIE'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_prog = ''.
IF screen-group1 = 'PRO'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_fugr = ''.
IF screen-group1 = 'FUG'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_tran = ''.
IF screen-group1 = 'TRA'.
screen-active = 0.
ENDIF.
ENDIF.
IF p_mess = ''.
IF screen-group1 = 'MES'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_START_PROCESS
*&---------------------------------------------------------------------*
*& Process Start
*&---------------------------------------------------------------------*
FORM frm_start_process .
* Check input
PERFORM frm_check_input.
* Get translation objects
PERFORM frm_get_object.
* Show result as ALV
PERFORM frm_display_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*& Check input
*&---------------------------------------------------------------------*
FORM frm_check_input .
IF p_tabl IS INITIAL AND
p_view IS INITIAL AND
p_stru IS INITIAL AND
p_dtel IS INITIAL AND
p_doma IS INITIAL AND
p_prog IS INITIAL AND
p_fugr IS INITIAL AND
p_tran IS INITIAL AND
p_mess IS INITIAL.
MESSAGE 'Please select at least one transaction scope!'(m01) TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
IF s_pack IS INITIAL.
* Fill out all required entry fields
MESSAGE s055(00) DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
LOOP AT s_pack.
IF ( s_pack-low+0(1) <> 'Z' AND s_pack-low+0(1) <> 'Y' AND s_pack-low IS NOT INITIAL AND s_pack-low <> '$TMP' ) OR
( s_pack-high+0(1) <> 'Z' AND s_pack-high+0(1) <> 'Y' AND s_pack-high IS NOT INITIAL AND s_pack-high <> '$TMP' ).
MESSAGE 'You can select only objects in the custom namespace'(m02) TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_OBJECT
*&---------------------------------------------------------------------*
*& Get translation objects
*&---------------------------------------------------------------------*
FORM frm_get_object .
* Build select condtion scope
PERFORM frm_build_scope_cond.
* Get tranlation list
PERFORM frm_get_list.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Show result as ALV
*&---------------------------------------------------------------------*
FORM frm_display_alv .
DATA:
ls_layout TYPE lvc_s_layo,
lt_fieldcat TYPE lvc_t_fcat,
ls_fieldcat TYPE lvc_s_fcat,
lt_event_exit TYPE slis_t_event_exit,
ls_event_exit TYPE slis_event_exit.
* Set Layout
ls_layout-zebra = 'X'. "Alternating line color
ls_layout-sel_mode = 'C'. "SelectionMode
ls_layout-cwidth_opt = 'X'. "Optimize column width
ls_layout-box_fname = 'CBOX'. "Field name of internal table field
ls_layout-stylefname = 'STYLE'. "Field name of internal table field
ls_layout-ctab_fname = 'COLOR'. "Field name with complex cell color coding
* Set fieldcat
ls_fieldcat-fieldname = 'OBJ_TYPE'.
ls_fieldcat-scrtext_l = 'Translation Object Type'(f02).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KTEXT'.
ls_fieldcat-scrtext_l = 'Object Type Description'(f03).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'OBJNAME'.
ls_fieldcat-scrtext_l = 'Object Name'(f04).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'TEXTKEY'.
ls_fieldcat-scrtext_l = 'Text Key'(f05).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ICON'.
ls_fieldcat-just = 'C'.
ls_fieldcat-scrtext_l = 'Status'(f08).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'S_TEXT'.
ls_fieldcat-scrtext_l = 'Source Text'(f06).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'T_TEXT'.
ls_fieldcat-edit = 'X'.
ls_fieldcat-lowercase = 'X'.
ls_fieldcat-outputlen = 255.
ls_fieldcat-intlen = 255.
ls_fieldcat-dd_outlen = 255.
ls_fieldcat-scrtext_l = 'Target Text'(f07).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'SAP_TEXT'.
ls_fieldcat-scrtext_l = 'SAP recommendations'(f09).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'TEXTTYPE'.
ls_fieldcat-scrtext_l = 'Text Type'(f10).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DEVCLASS'.
ls_fieldcat-scrtext_l = 'Package'(f11).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'AUTHOR'.
ls_fieldcat-scrtext_l = 'Author'(f12).
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
* Show ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_STATUS_SET'
i_callback_user_command = 'FRM_USER_COMMAND'
is_layout_lvc = ls_layout
it_fieldcat_lvc = lt_fieldcat
it_event_exit = lt_event_exit
i_save = 'A'
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BUILD_SCOPE_COND
*&---------------------------------------------------------------------*
*& Build select condtion scope
*&---------------------------------------------------------------------*
FORM frm_build_scope_cond .
gs_r_object-sign = 'I'.
gs_r_object-option = 'EQ'.
IF p_tabl = abap_on OR p_stru = abap_on.
gs_r_object-low = 'TABL'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_view = abap_on.
gs_r_object-low = 'VIEW'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_dtel = abap_on.
gs_r_object-low = 'DTEL'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_doma = abap_on.
gs_r_object-low = 'DOMA'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_prog = abap_on.
gs_r_object-low = 'PROG'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_fugr = abap_on.
gs_r_object-low = 'FUGR'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_tran = abap_on.
gs_r_object-low = 'TRAN'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
IF p_mess = abap_on.
gs_r_object-low = 'MSAG'.
APPEND gs_r_object TO gt_r_object.
ENDIF.
APPEND LINES OF s_tabl TO gt_r_obj_name.
APPEND LINES OF s_view TO gt_r_obj_name.
APPEND LINES OF s_stru TO gt_r_obj_name.
APPEND LINES OF s_dtel TO gt_r_obj_name.
APPEND LINES OF s_doma TO gt_r_obj_name.
APPEND LINES OF s_prog TO gt_r_obj_name.
APPEND LINES OF s_fugr TO gt_r_obj_name.
APPEND LINES OF s_tran TO gt_r_obj_name.
APPEND LINES OF s_mscl TO gt_r_obj_name.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_LIST
*&---------------------------------------------------------------------*
*& Get tranlation list
*&---------------------------------------------------------------------*
FORM frm_get_list .
DATA:
lt_tadir TYPE tt_tadir,
lt_tadir_copy TYPE tt_tadir,
ls_tadir TYPE ty_tadir,
lt_fungrp TYPE tt_fungrp,
ls_fungrp TYPE ty_fungrp,
lt_attobt TYPE tt_attobt,
ls_attobt TYPE ty_attobt,
ls_t100 TYPE ty_t100.
* Get SPRAS
SELECT SINGLE r3_lang INTO gv_s_spras FROM lxe_t002x WHERE language = p_sour.
SELECT SINGLE r3_lang INTO gv_t_spras FROM lxe_t002x WHERE language = p_targ.
* Get check list for transaction
SELECT pgmid
object
obj_name
srcsystem
author
devclass
INTO TABLE lt_tadir
FROM tadir
WHERE pgmid = 'R3TR'
AND object IN gt_r_object
AND obj_name IN gt_r_obj_name
AND devclass IN s_pack
AND author IN s_auth
AND delflag = ''.
* If checked Function Group,get function list also.
IF p_fugr = abap_on.
LOOP AT lt_tadir INTO ls_tadir WHERE object = 'FUGR'.
ls_fungrp-fungrp = 'SAPL' && ls_tadir-obj_name.
COLLECT ls_fungrp INTO lt_fungrp.
CLEAR ls_fungrp.
ENDLOOP.
IF lt_fungrp IS NOT INITIAL.
* Get function list
SELECT funcname
pname
include
INTO TABLE gt_tfdir
FROM tfdir
FOR ALL ENTRIES IN lt_fungrp
WHERE pname = lt_fungrp-fungrp.
ENDIF.
ENDIF.
IF p_prog = abap_on.
lt_tadir_copy = lt_tadir.
DELETE lt_tadir_copy WHERE object <> 'PROG'.
IF lt_tadir_copy IS NOT INITIAL.
* Get program screen list
SELECT prog
dnum
INTO TABLE gt_d020s
FROM d020s
FOR ALL ENTRIES IN lt_tadir_copy
WHERE prog = lt_tadir_copy-obj_name.
ENDIF.
ENDIF.
IF p_mess = abap_on.
* Get message info
SELECT *
INTO TABLE gt_t100
FROM t100
WHERE sprsl = gv_s_spras
AND arbgb IN s_mscl
AND msgnr IN s_msno.
ENDIF.
* Get Texts for Object Attribute
SELECT *
INTO TABLE gt_attobt
FROM lxe_attobt
WHERE lang = sy-langu.
SORT lt_tadir BY object ASCENDING
obj_name ASCENDING.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Data Processing...'(m07).
LOOP AT lt_tadir INTO ls_tadir.
* Get current translation info
PERFORM frm_obj_text_read USING ls_tadir.
ENDLOOP.
IF gt_alv IS INITIAL.
MESSAGE 'No data!'(m03) TYPE 'S'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_F4_FOR_LANGUAGE
*&---------------------------------------------------------------------*
*& F4 For Language
*&---------------------------------------------------------------------*
*& <-- CV_LANGUAGE Language
*&---------------------------------------------------------------------*
FORM frm_f4_for_language USING uv_fname CHANGING cv_language.
CALL FUNCTION 'LXE_T002_SELECT_LANGUAGE'
EXPORTING
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynpfield = uv_fname
IMPORTING
language = cv_language
EXCEPTIONS
parameter_error = 1
no_values_found = 2
no_selection = 3
OTHERS = 4.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_OBJ_TEXT_READ
*&---------------------------------------------------------------------*
*& Get current translation info
*&---------------------------------------------------------------------*
*& --> US_TADIR
*&---------------------------------------------------------------------*
FORM frm_obj_text_read USING us_tadir TYPE ty_tadir.
DATA:
lt_read_para TYPE tt_read_para,
ls_read_para TYPE ty_read_para,
ls_alv TYPE ty_alv,
ls_color TYPE lvc_s_scol,
ls_tfdir TYPE ty_tfdir,
ls_attobt TYPE ty_attobt,
lv_fungrp TYPE tfdir-pname,
ls_d020s TYPE ty_d020s,
ls_t100 TYPE ty_t100.
DATA:
lt_pcx_s1 TYPE STANDARD TABLE OF lxe_pcx_s1,
ls_pcx_s1 TYPE lxe_pcx_s1,
lt_pcx_s2 TYPE STANDARD TABLE OF lxe_pcx_s2,
ls_pcx_s2 TYPE lxe_pcx_s2,
lv_domatyp TYPE lxedomatyp,
lv_domanam TYPE lxedomanam,
lv_pstatus TYPE lxestatprc.
CASE us_tadir-object.
* Table or Sturcture
WHEN 'TABL'.
ls_read_para-objtype = 'BEZD'. "Foreign Key
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
ls_read_para-objtype = 'TABT'. "Table and Built-in type description
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
* View
WHEN 'VIEW'.
ls_read_para-objtype = 'VIEW'.
ls_read_para-objname = us_tadir-obj_name. "View description
APPEND ls_read_para TO lt_read_para.
* Data Element
WHEN 'DTEL'.
ls_read_para-objtype = 'DTEL'. "Data element and description
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
* Domain
WHEN 'DOMA'.
ls_read_para-objtype = 'DOMA'. "Domain description
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
ls_read_para-objtype = 'VALU'. "Domain value
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
* Program
WHEN 'PROG'.
ls_read_para-objtype = 'RPT4'. "Title
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
* ls_read_para-objtype = 'CA4'. "Menu
* ls_read_para-objname = us_tadir-obj_name.
* APPEND ls_read_para TO lt_read_para.
* ls_read_para-objtype = 'CAD4'. "GUI Status
* ls_read_para-objname = us_tadir-obj_name.
* APPEND ls_read_para TO lt_read_para.
LOOP AT gt_d020s INTO ls_d020s USING KEY prog WHERE prog = us_tadir-obj_name.
ls_read_para-objtype = 'SRH4'. "Screen title
CONCATENATE us_tadir-obj_name
ls_d020s-dnum
INTO ls_read_para-objname RESPECTING BLANKS. "Program name + Screen number
APPEND ls_read_para TO lt_read_para.
ls_read_para-objtype = 'SRT4'. "Screen texts
CONCATENATE us_tadir-obj_name
ls_d020s-dnum
INTO ls_read_para-objname RESPECTING BLANKS. "Program name + Screen number
APPEND ls_read_para TO lt_read_para.
ENDLOOP.
* Function Group
WHEN 'FUGR'.
ls_read_para-objtype = 'RPT1'. "Function group
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
lv_fungrp = 'SAPL' && us_tadir-obj_name.
LOOP AT gt_tfdir INTO ls_tfdir WHERE pname = lv_fungrp.
ls_read_para-objtype = 'FNC1'. "Function and parameters
CONCATENATE ls_tfdir-funcname
us_tadir-obj_name
INTO ls_read_para-objname RESPECTING BLANKS. "Function group + Function name
APPEND ls_read_para TO lt_read_para.
ENDLOOP.
* Transaction Code
WHEN 'TRAN'.
ls_read_para-objtype = 'TRAN'. "Transaction code
ls_read_para-objname = us_tadir-obj_name.
APPEND ls_read_para TO lt_read_para.
WHEN 'MSAG'.
LOOP AT gt_t100 INTO ls_t100 WHERE arbgb = us_tadir-obj_name.
ls_read_para-objtype = 'MESS'. "Message
CONCATENATE ls_t100-arbgb
ls_t100-msgnr
INTO ls_read_para-objname RESPECTING BLANKS. "Message class + Message number
APPEND ls_read_para TO lt_read_para.
ENDLOOP.
WHEN OTHERS.
ENDCASE.
LOOP AT lt_read_para INTO ls_read_para.
* Get translation info
CALL FUNCTION 'LXE_OBJ_TEXT_PAIR_READ'
EXPORTING
t_lang = p_targ
s_lang = p_sour
custmnr = gc_custmnr
objtype = ls_read_para-objtype
objname = ls_read_para-objname
read_only = ''
IMPORTING
domatyp = lv_domatyp
domanam = lv_domanam
pstatus = lv_pstatus
TABLES
lt_pcx_s1 = lt_pcx_s1.
* Get best translation
CALL FUNCTION 'LXE_PP1_PROPOSALS_GET'
EXPORTING
s_lang = p_sour
t_lang = p_targ
custmnr = gc_custmnr
objtype = ls_read_para-objtype
domatyp = lv_domatyp
domanam = lv_domanam
IMPORTING
pstatus = lv_pstatus
TABLES
t_pcx_s1 = lt_pcx_s1
t_pcx_s2 = lt_pcx_s2.
IF lt_pcx_s1 IS NOT INITIAL.
READ TABLE gt_attobt INTO ls_attobt
WITH KEY lang = sy-langu
obj_type = ls_read_para-objtype.
LOOP AT lt_pcx_s1 INTO ls_pcx_s1.
ls_alv-obj_type = ls_read_para-objtype. "Translation OType
ls_alv-ktext = ls_attobt-ktext. "Translation OType description
ls_alv-objname = ls_read_para-objname. "Object name
ls_alv-textkey = ls_pcx_s1-textkey. "Text key
ls_alv-s_text = ls_pcx_s1-s_text. "Source text
ls_alv-t_text = ls_pcx_s1-t_text. "Target text
ls_alv-unitmlt = ls_pcx_s1-unitmlt. "Maximum Length of Translation Unit
ls_alv-uppcase = ls_pcx_s1-uppcase. "Only Uppercase Allowed
ls_alv-devclass = us_tadir-devclass. "Package
ls_alv-author = us_tadir-author. "Author
READ TABLE lt_pcx_s2 INTO ls_pcx_s2
WITH KEY textkey = ls_pcx_s1-textkey.
IF sy-subrc = 0.
ls_alv-sap_text = ls_pcx_s2-best_prop. "Translation of SAP recommendations
ENDIF.
ls_alv-texttype = ls_pcx_s1-texttype. "Text type
IF ls_alv-t_text IS NOT INITIAL.
IF ls_alv-t_text = ls_alv-sap_text.
ls_alv-icon = icon_led_green. "Green
ELSE.
ls_alv-icon = icon_led_yellow. "Yellow
ENDIF.
ELSE.
ls_alv-icon = icon_led_red. "Red
ENDIF.
IF p_only = abap_on AND ls_alv-t_text IS NOT INITIAL.
CLEAR:ls_alv.
CONTINUE.
ENDIF.
APPEND ls_alv TO gt_alv.
CLEAR:ls_alv.
ENDLOOP.
ENDIF.
CLEAR:
lt_pcx_s1,
ls_pcx_s1,
lt_pcx_s2,
ls_pcx_s2.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_STATUS_SET
*&---------------------------------------------------------------------*
*& Set GUI Status
*&---------------------------------------------------------------------*
*& --> RT_EXTAB Excluding Button
*&---------------------------------------------------------------------*
FORM frm_status_set USING rt_extab TYPE slis_t_extab.
DATA:
lv_title TYPE string.
SELECT SINGLE text
INTO lv_title
FROM trdirt
WHERE name = sy-repid
AND sprsl = sy-langu.
lv_title = lv_title && ` (` && p_sour && `->` && p_targ && `)`.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE' WITH lv_title.
ENDFORM. "FRM_STATUS_SET
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& User Command
*&---------------------------------------------------------------------*
*& --> R_UCOMM User Command Code
*& --> RS_SELFIELD Filed Info
*&---------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA:
lo_grid TYPE REF TO cl_gui_alv_grid,
ls_stable TYPE lvc_s_stbl,
lv_valid TYPE char1,
ls_layout TYPE lvc_s_layo,
lv_refresh TYPE char1.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lo_grid.
CALL METHOD lo_grid->check_changed_data
IMPORTING
e_valid = lv_valid
CHANGING
c_refresh = lv_refresh.
CASE r_ucomm.
WHEN 'UPLOAD'.
* Upload excel
PERFORM frm_process_upload.
WHEN 'TRANSPORT'.
* Transport object to TR
PERFORM frm_process_transport.
WHEN 'SAVE'.
* Save Change
PERFORM frm_process_save.
WHEN OTHERS.
ENDCASE.
CALL METHOD lo_grid->get_frontend_layout
IMPORTING
es_layout = ls_layout.
ls_layout-cwidth_opt = 'X'.
CALL METHOD lo_grid->set_frontend_layout
EXPORTING
is_layout = ls_layout.
CALL METHOD lo_grid->refresh_table_display
EXPORTING
is_stable = ls_stable
EXCEPTIONS
finished = 1
OTHERS = 2.
ENDFORM. "FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_SAVE
*&---------------------------------------------------------------------*
*& Save Change
*&---------------------------------------------------------------------*
FORM frm_process_save .
DATA:
lt_pcx_s1 TYPE STANDARD TABLE OF lxe_pcx_s1,
lt_pcx_s1_read TYPE STANDARD TABLE OF lxe_pcx_s1,
ls_pcx_s1 TYPE lxe_pcx_s1,
lv_pstatus TYPE lxestatprc,
lv_objname TYPE lxeobjname,
lv_err_msg TYPE lxestring.
FIELD-SYMBOLS:
<ls_alv> TYPE ty_alv.
LOOP AT gt_alv ASSIGNING <gs_alv> USING KEY cbox WHERE cbox = 'X' AND t_text IS NOT INITIAL.
MOVE-CORRESPONDING <gs_alv> TO ls_pcx_s1.
APPEND ls_pcx_s1 TO lt_pcx_s1.
AT END OF objname.
IF <gs_alv>-obj_type = 'FNC1'.
lv_objname = <gs_alv>-objname+0(30).
CALL FUNCTION 'LXE_OBJ_TEXT_PAIR_READ_FUNC'
EXPORTING
t_r3_lang = gv_t_spras
s_r3_lang = gv_s_spras
objtype = 'FUNC'
objname = lv_objname
read_only = ''
TABLES
lt_pcx_s1 = lt_pcx_s1_read.
ENDIF.
CALL FUNCTION 'LXE_OBJ_TEXT_PAIR_WRITE'
EXPORTING
t_lang = p_targ
s_lang = p_sour
custmnr = gc_custmnr
objtype = <gs_alv>-obj_type
objname = <gs_alv>-objname
* AUTODIST =
* RFC_COPY =
IMPORTING
pstatus = lv_pstatus
err_msg = lv_err_msg
TABLES
lt_pcx_s1 = lt_pcx_s1.
IF lv_pstatus = 'S'.
LOOP AT gt_alv ASSIGNING <ls_alv> USING KEY grp
WHERE obj_type = <gs_alv>-obj_type
AND ktext = <gs_alv>-ktext
AND objname = <gs_alv>-objname.
IF <ls_alv>-t_text = <ls_alv>-sap_text.
<ls_alv>-icon = icon_led_green.
ELSE.
<ls_alv>-icon = icon_led_yellow.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR:
lt_pcx_s1,
ls_pcx_s1,
lt_pcx_s1_read,
lv_pstatus,
lv_err_msg.
ENDAT.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_UPLOAD
*&---------------------------------------------------------------------*
*& Upload excel
*&---------------------------------------------------------------------*
FORM frm_process_upload .
DATA:
lv_file TYPE rlgrap-filename,
lv_begin_row TYPE numc4 VALUE 2.
DATA:
lv_filename TYPE string,
lt_records TYPE solix_tab,
lv_headerxstring TYPE xstring,
lv_filelength TYPE i.
DATA:
lo_excel_ref TYPE REF TO cl_fdt_xl_spreadsheet,
lo_data_ref TYPE REF TO data.
DATA:
lt_worksheets TYPE STANDARD TABLE OF string,
ls_worksheets TYPE string.
FIELD-SYMBOLS:
<lt_data> TYPE STANDARD TABLE.
* Get file path
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = lv_file.
IF lv_file IS INITIAL.
MESSAGE 'Canceled upload!'(m04) TYPE 'S'.
RETURN.
ENDIF.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Importing...'(m05).
lv_filename = lv_file.
* Uplaod file
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_filename
filetype = 'BIN'
IMPORTING
filelength = lv_filelength
header = lv_headerxstring
TABLES
data_tab = lt_records
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE 'Please close excel and try again.'(m06) TYPE 'S'.
RETURN.
ENDIF.
* Convert binary to XString
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_filelength
IMPORTING
buffer = lv_headerxstring
TABLES
binary_tab = lt_records
EXCEPTIONS
failed = 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.
RETURN.
ENDIF.
TRY.
CREATE OBJECT lo_excel_ref
EXPORTING
document_name = lv_filename
xdocument = lv_headerxstring.
CATCH cx_fdt_excel_core .
ENDTRY.
IF lo_excel_ref IS BOUND.
* Get sheet list
lo_excel_ref->if_fdt_doc_spreadsheet~get_worksheet_names(
IMPORTING
worksheet_names = lt_worksheets ).
IF lt_worksheets IS NOT INITIAL.
* Get data from first sheet
READ TABLE lt_worksheets INTO ls_worksheets INDEX 1.
lo_data_ref = lo_excel_ref->if_fdt_doc_spreadsheet~get_itab_from_worksheet( ls_worksheets ).
ASSIGN lo_data_ref->* TO <lt_data>.
CLEAR gt_alv.
* Convert to internal table
PERFORM frm_data_conv TABLES gt_alv
USING <lt_data>
lv_begin_row.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_CONV
*&---------------------------------------------------------------------*
* Convert to internal table
*----------------------------------------------------------------------*
* <--CT_TABLE ALV table
* -->UT_DATA Any table
* -->UV_BEGIN_ROW Begin row
*----------------------------------------------------------------------*
FORM frm_data_conv TABLES ct_table
USING ut_data TYPE STANDARD TABLE
uv_begin_row TYPE numc4.
DATA:lo_typedescr TYPE REF TO cl_abap_typedescr,
lo_structdescr TYPE REF TO cl_abap_structdescr,
lo_tabledescr TYPE REF TO cl_abap_tabledescr,
lo_result_ref TYPE REF TO data,
lo_newline_ref TYPE REF TO data.
DATA:lv_index TYPE i.
FIELD-SYMBOLS:
<ls_itab> TYPE data,
<ls_newline> TYPE data,
<ls_source_value> TYPE data,
<ls_target_value> TYPE data.
* Get result table type
CALL METHOD cl_abap_structdescr=>describe_by_data
EXPORTING
p_data = ct_table
RECEIVING
p_descr_ref = lo_typedescr.
lo_structdescr ?= lo_typedescr.
* Create work area refrence
CREATE DATA lo_newline_ref TYPE HANDLE lo_structdescr.
ASSIGN lo_newline_ref->* TO <ls_newline>.
* Data Mapping
LOOP AT ut_data ASSIGNING <ls_itab> FROM uv_begin_row.
DO.
ADD 1 TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE <ls_itab> TO <ls_source_value>.
ASSIGN COMPONENT lv_index OF STRUCTURE <ls_newline> TO <ls_target_value>.
IF <ls_source_value> IS ASSIGNED AND <ls_target_value> IS ASSIGNED.
<ls_target_value> = <ls_source_value>.
ELSE.
EXIT.
ENDIF.
UNASSIGN:
<ls_source_value>,
<ls_target_value>.
ENDDO.
IF <ls_newline> IS NOT INITIAL.
APPEND <ls_newline> TO ct_table.
ENDIF.
CLEAR:
<ls_newline>,
lv_index.
ENDLOOP.
IF ct_table[] IS INITIAL.
MESSAGE 'No data!'(m03) TYPE 'S'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_TRANSPORT
*&---------------------------------------------------------------------*
*& Transport object to TR
*&---------------------------------------------------------------------*
FORM frm_process_transport .
DATA:
lt_lxe_log TYPE tt_lxe_log,
ls_lxe_log TYPE ty_lxe_log,
lt_alv TYPE tt_alv,
lv_has_err TYPE flag.
DATA:
ls_request TYPE trwbo_request_header.
DATA:
lv_pstatus TYPE lxestatprc,
lt_objlist TYPE STANDARD TABLE OF e071,
lt_keylist TYPE STANDARD TABLE OF e071k.
lt_alv = gt_alv.
DELETE lt_alv WHERE cbox = ''.
IF lt_alv IS INITIAL.
MESSAGE 'Please select any line and try again'(m08) TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
DELETE lt_alv WHERE t_text IS INITIAL.
IF lt_alv IS INITIAL.
MESSAGE 'The object is still untranslated and cannot be transferred'(m09) TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
READ TABLE lt_alv TRANSPORTING NO FIELDS WITH KEY devclass = '$TMP'.
IF sy-subrc = 0.
MESSAGE 'Local object cannot be transferred'(m10) TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
* Get translation log
SELECT *
INTO TABLE lt_lxe_log
FROM lxe_log
FOR ALL ENTRIES IN lt_alv
WHERE custmnr = gc_custmnr
AND targlng = p_targ
AND objtype = lt_alv-obj_type
AND objtype <> cl_lxe_constants=>c_objtype_dems
AND objname = lt_alv-objname
AND uname IN s_auth.
CHECK lt_lxe_log IS NOT INITIAL.
* Select or Create a TR
CALL FUNCTION 'TR_REQUEST_CHOICE'
EXPORTING
iv_request_types = 'TK'
IMPORTING
es_request = ls_request
EXCEPTIONS
invalid_request = 1
invalid_request_type = 2
user_not_owner = 3
no_objects_appended = 4
enqueue_error = 5
cancelled_by_user = 6
recursive_call = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE 'S'
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
DISPLAY LIKE 'E'.
RETURN.
ENDIF.
LOOP AT lt_lxe_log INTO ls_lxe_log.
CALL FUNCTION 'LXE_OBJ_CREATE_TRANSPORT_ENTRY'
EXPORTING
language = p_targ
custmnr = gc_custmnr
objtype = ls_lxe_log-objtype
objname = ls_lxe_log-objname
tabkey = ls_lxe_log-tabkey
* ADD_TADIR = ''
IMPORTING
* TADIR_OBJECT =
* TADIR_OBJ_NAME =
pstatus = lv_pstatus
TABLES
ex_e071 = lt_objlist
ex_e071k = lt_keylist.
IF lv_pstatus = 'S'.
CALL FUNCTION 'TR_REQUEST_CHOICE'
EXPORTING
iv_suppress_dialog = 'X'
iv_request_types = 'TK'
iv_request = ls_request-trkorr
it_e071 = lt_objlist
it_e071k = lt_keylist
iv_with_error_log = 'X'
iv_no_owner_check = 'X'
* IMPORTING
* ES_REQUEST =
EXCEPTIONS
invalid_request = 1
invalid_request_type = 2
user_not_owner = 3
no_objects_appended = 4
enqueue_error = 5
cancelled_by_user = 6
recursive_call = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE 'S'
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
DISPLAY LIKE 'E'.
RETURN.
ENDIF.
ENDIF.
ENDLOOP.
MESSAGE 'Successfully added to the request list'(m11) TYPE 'S'.
ENDFORM.
SAP程序开发过程的翻译任务
可以对程序标题进行翻译(即程序属性翻译)
输入翻译内容后会变黄.
对于一些程序中使用的文本换成文本元素使用
添加进文本元素后激活
后面继续goto 中点翻译进入界面会自动添加
注意当翻译文本过长会出现翻译报错
解决办法提高文本元素自身长度
实现结果
创想ALV的列标题,字段值都用文本元素替代实现ALV不同语言系统不同ALV.
对gui状态栏进行翻译
点击翻译后进入
进入
其中红灯表示还没有翻译
保存
颜色变为黄.
状态栏/screen自绘界面也可以翻译 在se80
消息类中文本翻译
数据元素的翻译描述
zstudent_hq_02为数据库表.
数据元素描述,短文本-长文本翻译.
翻译内容的传输
SAP ABAP修改字段描述(翻译及传输)_abap翻译传输-CSDN博客
如何翻译事务代码(tcode)描述-SE63 | 摆渡SAP
所有翻译后的内容,最后通过sap专门的翻译工具单独生成翻译传输请求后再进行传输,否则可能导致增强部分内容无法正常传输到测试系统。
方法一、使用Report:RS_LXE_RECORD_TORDER,T-Code:SLXT
(1)执行事务码:SLXT
(2)点执行按钮
(3)SE63,或SE38翻译相关程序,用SE01,可以看到请求号:R3DK916560
1, 找到transaction对象
SE63点击short texts按钮
在弹出的窗口内找到transaction对象,
双击transactions行
2, 编辑翻译语言
在屏幕上输入tcode和需要翻译的语言,点击edit按钮进入编辑界面,
翻译后,保存,
需要注意的事,这个tcode翻译需要手动通过tcode SLXT添加到传输请求(TR)上,详细参照-->
(4)SE09里面可以看到对应的请求号
方法二:自己创建一个请求并添加,Program ID为:LANG
效果如下:
翻译常见问题
问题描述:中韩双语配置的时候,发现SE51翻译屏幕的时候,找不到中文的文本,具体情况如下,查看了很多的地方,找不到问题的原因,还是翻了一下之前的文档才发现了不对。
要翻译的界面如下
问题说明:
(1)通过SE51找到对应的屏幕
注意一下下面的位置,只有是F或者为空的时候才可以翻译文本。
注意一下下面的位置,只有是F或者为空的时候才可以翻译文本。
(2)修改后进入
修改完成后,记得激活一下。
(3)保存传输后,效果如下:
SAP文本修改
干货!SAP业务顾问也会的增强——标准字段文本修改的4种方法-CSDN博客
SAP文本分为4种(仅个人观点):
1.界面文本(Interface text),如图1中的1;(GUI文本)
2.屏幕文本(Screen Text),如图1中的2;(选择屏幕文本)
图1
3.区域菜单,如图2中的3,根据需要,调整区域菜单的描述;
图2
4.事务代码文本,如图3。
图3
修改界面文本的方法
采购订单显示界面(事务代码:ME23N)抬头文本为“标准采购订单”+订单号+“已被”+用户名+“创建”,如果想要修改描述,鼠标点击当前界面(如行项目),点击F1,点击“技术信息”。
从下图中可以看出此界面是在程序:SAPLMEGUI中,GUI状态为:NORMAL_EXT。
双击“NORMAL_EXT”,或者在SE80中选择“程序”,输入SAPLMEGUI,回车。
找到GUI状态:NORMAL_EXT。双击NORMAL_EXT。转到->翻译,输入源语言和目标语言。回车或打钩。
双击界面文本下的“MEGUI”
找到文本,修改,保存,保存,后退,激活GUI状态。
重新查看采购订单,看到界面文本已修改。
2
修改屏幕文本的方法
屏幕文本分为2种,第一种是屏幕字段的文本来源于屏幕字段对应的数据元素的文本,这种修改元素的文本即可。第二种是屏幕字段的文本直接在屏幕中定义,此时需要修改屏幕。
以采购订单(ME23N)中的“税码”(第一种)和“基于收货的发票校验”(第二种)字段为例。
选中“基于收货的发票校验”字段,点击F1,然后选中技术信息。
字段对应的屏幕是程序:SAPLMEGUI,屏幕编号:1317,字段对应的数据元素WEBRE,对应的屏幕字段为:MEPO1317-WEBRE。双击屏幕编号“1317”,跳转到屏幕制作器中。
MEPO1317-MWSKZ(税码)屏幕字段的字典属性为2,1~4表示字段的屏幕文本取自字段对应的数据元素中的文本。MEPO1317-WEBRE(基于收货的发票校验)屏幕字段的字典属性为F,表示该字段的屏幕文本直接在屏幕中定义。
2.1税码的修改方法(含增强)
事务代码:CMOD,转到->转到->文本增强->关键字->更改
输入数据元素:MWSKZ,因为字典属性为2,因此修改中字段标签。
重新查看订单,税码描述已修改。
2.2基于收货的发票校验字段修改方法(F类型)
选中MEPO1317-WEBRE字段,转到->翻译,选择翻译的语言,本例选“ZH”,
双击SRT1的MEGUI,
找到“基于收货的发票校验”并单击,修改描述,此例中故意将两个描述设为不同,保存,后退,保存,激活。
重新查看订单,“基于收货的发票校验”描述改为“基于收货的发票校验TEST1”,当光标放在“基于收货的发票校验TEST1”处时,显示“基于收货的发票校验TEST2”。因此可以看出上述图中的2个描述,一个是文本描述,一个是工具提示的描述。
3
修改区域菜单的方法
如果想修改区域菜单的文本,如下图想修改“业务伙伴”,选中“业务伙伴”,点击“附加”->“技术明细”,找到对应的区域菜单“VS00”
进入事务代码:SE43,区域菜单中输入上一步得到的“VS00”->“实例程序”->“翻译”。
选择语言
找到业务伙伴,换成想要的描述即可,保存即可。
回到菜单栏,看到区域菜单描述已修改。
4
修改事务代码文本的方法
首先,创建事务代码:SE93,输入事务代码及程序名,保存。
如果是同语言的事务代码描述修改,直接在SE93中修改,保存即可。如果需要依据登陆系统语言展示不同事务代码描述,即翻译功能,使用事务代码:SE63,“短文本”。
查找“TRAN”,双击“TRAN 事务”
“对象名称”中输入事务代码,选择源语言及目标语言,回车或点击“编辑”
输入在目标语言系统的描述,点击“保存”
回到主页