后勤模块的数据例如采购订单、销售订单等都涉及到表头文本,但是表头文本不存在底表中,这时如果想取表头文本需要用到READ_TEXT函数。下面以取采购订单表头文本为例。
输入事务代码:ME23N。选中表头中文本tab页的抬头文本部分,然后双击下图红色框部分;
在菜单栏选中转到-->表头。其他凭证,如销售订单的表头文本获取方法类似。
read_text完整示例
REPORT ztest05.
TYPES : BEGIN OF ty_ekko ,
ebeln TYPE ekko-ebeln,
tdline TYPE tline-tdline,
END OF ty_ekko.
DATA:lt_ekko TYPE TABLE OF ty_ekko,
ls_ekko TYPE ty_ekko.
DATA: il_tline LIKE tline OCCURS 0 WITH HEADER LINE.
SELECT
ebeln "采购凭证号
INTO TABLE lt_ekko
FROM ekko
UP TO 20 ROWS.
DATA : vl_tdname LIKE thead-tdname.
LOOP AT lt_ekko INTO ls_ekko.
vl_tdname = ls_ekko-ebeln.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'F01' " 文本ID的值
language = '1' " 语言的值 1表示中文
name = vl_tdname " 文本名的值
object = 'EKKO' " 文本对象的值
TABLES
lines = il_tline
EXCEPTIONS
" EXCEPTIONS必须写,否则表头文本为空时程序将dump
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
ELSE.
LOOP AT il_tline.
CONCATENATE ls_ekko-tdline il_tline-tdline INTO ls_ekko-tdline.
ENDLOOP.
MODIFY lt_ekko FROM ls_ekko.
ENDIF.
ENDLOOP.
SORT lt_ekko BY ebeln.
* 输出
DATA: i_table TYPE REF TO cl_salv_table.
DATA: lr_columns TYPE REF TO cl_salv_columns_table.
DATA: lr_functions TYPE REF TO cl_salv_functions.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = i_table
CHANGING
t_table = lt_ekko ).
CATCH cx_salv_msg.
ENDTRY.
" 功能按钮
lr_functions = i_table->get_functions( ).
lr_functions->set_all( abap_true ).
" 列自适应
lr_columns = i_table->get_columns( ).
lr_columns->set_optimize( 'X').
" alv输出
i_table->display( ).
-END-
更多经验请关注公众号“菜鸟之家”,每周分享顾问经验,绝对干货满满!
长按二维码关注我们,收获更多干货满满的SAP教学。
小手点一点关注,顾问路上不迷路!
图文来源:Lisa
图文编辑:Yannick
精选知识