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 事务”

“对象名称”中输入事务代码,选择源语言及目标语言,回车或点击“编辑”

输入在目标语言系统的描述,点击“保存”

回到主页

2261

被折叠的 条评论
为什么被折叠?



