我需要跟踪大量自定义的边框脚本和smartforms中使用特定标准文本(SO10)的位置。
除了“检查每个打印脚本的代码”之外,我还没有找到一个可行的在线解决方案。有什么建议吗?
发布于 2015-12-14 13:50:42
在发帖后,我找到了一个部分解决方案。下面的代码将搜索皂苷脚本中的标准文本,而不是smartforms。
PARAMETERS: p_sttxt LIKE stxh-tdname.
DATA: BEGIN OF t_stxh OCCURS 0,
tdname LIKE stxh-tdname,
tdspras LIKE stxh-tdspras,
END OF t_stxh.
DATA t_lines LIKE tline OCCURS 0 WITH HEADER LINE.
SELECT tdname tdspras FROM stxh INTO TABLE t_stxh
WHERE tdobject = 'FORM'
AND tdid = 'TXT'
AND tdspras = 'E'.
LOOP AT t_stxh.
REFRESH t_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'TXT'
language = t_stxh-tdspras
name = t_stxh-tdname
object = 'FORM'
TABLES
lines = t_lines
EXCEPTIONS
id = 0
language = 0
name = 0
not_found = 0
object = 0
reference_check = 0
wrong_access_to_archive = 0
OTHERS = 0 .
SEARCH t_lines FOR p_sttxt.
IF sy-subrc EQ 0.
WRITE:/ t_stxh-tdname, t_stxh-tdspras.
ENDIF.
ENDLOOP.
这是在这里找到的代码的(固定)版本:http://scn.sap.com/thread/179142
发布于 2017-06-03 19:57:21
与SmartForms有关的是,你不能。你不能随心所欲地找到它。
不幸的是,在SmartForms这样的̶g̶o̶o̶d̶̶o̶l̶‘̶遗留技术中,一切都是传统的方式,而标准文本只是硬编码的。是的,这看起来很尴尬,但它们确实是硬编码的,每次重新生成这些名称都会被写入SmartForm FM代码。
所以这里唯一的解决办法就是分析代码。
有一个包含所有表单及其包含的D010INC
表。这里的要点是,所有SmartForm FMs都以/1BCDWB/
前缀开头。
主要逻辑在包含中,因此我们需要为目标表单查找对应的包含。
它可以通过几种方式完成:通过CL_RECA_RS_SERVICES
类,通过表REPOSRC
,但最简单的方法是ABAP语句READ REPORT
。
SO10
文本元素名称STXFADMI
表完成,如下面的片段所示,但更正确的方法是SSF_FUNCTION_MODULE_NAME
FM。是的,它是垃圾,不优雅和尴尬,但谁说它应该是这样的?
https://stackoverflow.com/questions/34268377
复制相似问题