且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在SAP中提取采购订单文本

更新时间:2023-02-18 09:18:58

有表 STXH (用于标题)和 STXL (用于行),但是它们不可读开箱即用.
通常通过READ_TEXT FM来阅读文本:

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'

要找出必要文本的ID/名称,应进入编辑模式,然后按转到>>标头,其中应检查对应字段

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.