问题
Is there any way to view the details in Item Text tab in Purchase Order ME23N in a report form or table form? I have tried to search in many places but I couldn't find the table. Table EKKO/EKPO doesn't seem to help in this.
回答1:
There are tables STXH (for header) and STXL (for lines) but they are not readable out-of-the-box.
Usually reading texts is made by READ_TEXT
FM:
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'F01'
language = 'E'
name = %PO_number% + %PO_pos%
object = 'EKPO'
To find out ID/name of necessary text one should enter edit mode and press Goto >> Header where one should check correspondent fields
UPDATE: mass extraction of texts based on the above example
TYPES: BEGIN OF ty_stxl_raw,
clustr TYPE stxl-clustr,
clustd TYPE stxl-clustd,
END OF ty_stxl_raw,
BEGIN OF ty_stxl,
tdname TYPE stxl-tdname,
clustr TYPE stxl-clustr,
clustd TYPE stxl-clustd,
END OF ty_stxl.
DATA: t_stxl_raw TYPE STANDARD TABLE OF ty_stxl_raw,
t_stxl TYPE TABLE OF ty_stxl,
w_stxl_raw TYPE ty_stxl_raw.
DATA: t_tline TYPE STANDARD TABLE OF tline.
FIELD-SYMBOLS: <tline> TYPE tline,
<stxl> LIKE LINE OF t_stxl.
SELECT l~tdname l~clustr l~clustd
INTO CORRESPONDING FIELDS OF TABLE t_stxl
FROM stxl AS l
JOIN stxh AS h
ON h~tdobject = l~tdobject
AND h~tdname = l~tdname
AND h~tdid = l~tdid
WHERE l~relid = 'TX' "standard text
AND h~tdobject = 'EKPO'
AND h~tdname = '450001216400010'
AND h~tdid = 'F01'
AND l~tdspras = sy-langu.
LOOP AT t_stxl ASSIGNING <stxl>.
CLEAR: t_stxl_raw[], t_tline[].
APPEND VALUE ty_stxl_raw( clustr = <stxl>-clustr clustd = <stxl>-clustd ) TO t_stxl_raw.
IMPORT tline = t_tline FROM INTERNAL TABLE t_stxl_raw.
LOOP AT t_tline ASSIGNING <tline>.
"do anything
ENDLOOP.
ENDLOOP.
来源:https://stackoverflow.com/questions/42270566/extracting-purchase-order-texts-in-sap