点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好。
我将从46C转到ECC6,我有更多程序可以读取后台打印文件,有时它们会更改它们。 通常我使用" SUBMIT rspolst2 EXPORTING LIST TO MEMORY",然后调用" LIST_FROM_MEMORY"以获取ABAPLIST。 最后,从这个ABAPLIST中,我从LIST_TO_ASCI中获得一个内部表,直接将ABAPLIST的整个结构放入一个char字段中。 它工作正常。
在46C中,我始终尝试其他两种方法进行最后一步:使用ABPLLIST结构中的SPLIT到分隔符'|'的字符串字段中 并使用FM" LIST_TO_TXT"。 " SPLIT"可以正常工作,而FM" LIST_TO_TXT"可以工作,但是由于所有行都是串联的,因此它不是很有用。
现在,在ECC6中,我必须将unicode标志放在我的Zprogram上,然后,三种方法中的任何一种都不被接受。 我无法从整个结构ABAPLIST传递到字符串字段(或char字段)。
SPLIT仅与RFCRECORD字段一起使用,但是通过这种方式,我丢失了前四个字符。 使用FM HR_KR_XSTRING_TO_STRING的方法相同:我丢失了前四个字符,但是我想得到它们。
我该怎么办?
这是一个测试这三种方式的示例程序:" mem_tab"是ABAPLIST,在注释中,我指定了FIRST,SECOND和THIRD METHOD。
在ECC6中,"第一"和"第二"不被接受,我无法激活程序,相反,通过第三种方法,我可以激活它,但是如果我运行它,则会收到" UC_OBJECTS_NOT_CHAR"错误。
------
报告Zmassimiliano NO标准页面标题。 表格:zmail_spool。 类型:t_zmspool的开始, 代理类型为lfa1-lifnr, nrspool类型zmail_spool-nrspool, rqcretime TYPE zmail_spool-rqcretime, rqowner TYPE zmail_spool-rqowner, chiave TYPE zmail_spool-chiave, note TYPE zmail_spool-note, dtultmail类型zmail_spool-dtultmail, orultmail TYPE zmail_spool-orultmail, utultmail TYPE zmail_spool-utultmail, t_zmspool的结尾。 数据:wa_zmspool TYPE t_zmspool, it_zmspool t_zmspool的类型标准表。 *类型:t_asci的开头, *包括abaplist类型, * t_asci的结尾。 类型:tt的开头, 线(202), tt结束。 数据:abaplist的v_asci类型标准表, wa_asci类型abaplist, it_xtext tt的标准类型表, wa_xtext TYPE tt, f_xtext1 TYPE字符串, f_xtext2 TYPE字符串。 数据:abaplist的mem_tab类型标准表, wa_tab TYPE线条, it_tab类型标准线表, 尺寸TYPEI。 数据:f_nrspool类型zmail_spool-nrspool, f_numsp(10)TYPE n, f_chiave TYPE zmail_spool-chiave, wa_tsp01 TYPE tsp01, it_tsp01 tsp01的标准类型表, f_mt(10)C型, f_st(30)C型, f_avdipa C型, f_agedes(30)C型, f_codage(6)C型, f_codag(10)N型, f_alleg TYPE zmail_def-alleg, f_divid(1)C型, f_filename TYPE STRING, wa_zmail TYPE zmail_spool, f_str(200)C型, f_x TYPEI。 * ------------------------------------------------- ------------------- * SELEZIONI INIZIALI * ------------------------------------------------- ------------------- 带有框架标题text-001的块datibase的选择屏幕开始。 选择屏幕行的开始。 SELECTION-SCREEN COMMENT(30)文本-usr。 参数s_user类型zmail_spool-rqowner缺省sy-uname。 选择屏幕行尾。 选择屏幕行的开始。 选择屏幕注释(27)text-dta。 SELECT_OPTIONS s_data用于zmail_spool-rqcretime。 选择屏幕行尾。 SELECT数据库的块结尾。 * ------------------------------------------------- ------------------- *选择开始 * ------------------------------------------------- ------------------- 选择开始。 * Nella tabella it carico solo gli spool nongiàpresenti *在zmail_spool中 选择* INTO wa_tsp01 来自tsp01 rqcretime在s_data中且rqowner = s_user。 * AND rq0name ='SAP08'。 f_numsp = wa_tsp01-rqident。 f_nrspool = f_numsp。 从zmail_spool中选择单个chiave INTO到f_chiave 其中nrspool = f_nrspool。 将wa_tsp01插入表it_tsp01。 *写:/wa_tsp01-rqident。 出口。 ENDSELECT。 循环到it_tsp01并进入wa_tsp01。 *写:/'循环',wa_tsp01-rqident。 提交rspolst2出口清单以存储并返回 与rqident = wa_tsp01-rqident WITH first ='1'。 通话功能" LIST_FROM_MEMORY" 桌子 listobject = mem_tab 例外情况 not_found = 1 其他= 2。 *写:/'sy-subrc',sy-subrc。 如果不是mem_tab []是初始的。 刷新v_asci。 通话功能" LIST_TO_ASCI" 桌子 listasci = v_asci listobject = mem_tab 例外情况 empty_list = 1 list_index_invalid = 2 其他= 3。 清除f_x。 */////第一种方法:直接//////////////// 环聊v_asci INTO wa_asci。 wa_tab-tdline = wa_asci。 写:/wa_tab-tdline。 f_x = f_x + 1。 如果f_x = 15。 出口。 万一。 结局。 写:/'************************************************'。 */////第二种方法:通过分割//////////////// 清除f_x。 环聊v_asci INTO wa_asci。 分割wa_asci AT'|' INTO f_xtext1 f_xtext2。 写:/f_xtext1。 *写:/f_xtext2。 f_x = f_x + 1。 如果f_x = 15。 出口。 万一。 结局。 写:/'************************************************'。 */////第三种方法:LIST_TO_TXT//////////////// 通话功能" LIST_TO_TXT" *出口 * LIST_INDEX ='1' 桌子 listtxt = it_xtext LISTOBJECT = mem_tab 例外情况 EMPTY_LIST = 1 LIST_INDEX_INVALID = 2 其他= 3。 清除f_x。 循环到it_xtext进入wa_xtext。 写:/wa_xtext-line。 写:/'-'。 f_x = f_x + 1。 如果f_x = 15。 出口。 万一。 结局。 万一。 结局。
对于Unicode,必须将C类型(字符)的变量与X类型(字节)的变量区分开,因为一个" SAP Unicode字符"为2个字节(在Unicode之前没有问题,因为一个字符存储在一个字符中) 字节)。
在您的代码中,使用变量V_ASCI调用LIST_TO_ASCI,变量V_ASCI是ABAPLIST表,其中包含X类型。 您只能使用C类型。
它与LIST_TO_TXT一起使用,因为IT_XTEXT的类型为C。
您应该发布完整的简短转储文件(将TXT压缩),以便我们能够准确了解错误的位置和原因。
+1代表耶琳娜。
我不明白这个问题了。 看起来很复杂。 您能否提出一个包含所有细节的新问题? (和图片,如果可能的话)
为了使其他通过Internet搜索引擎到达此处的人受益,以下函数调用会将ABAP列表从内部格式直接转换为字符串表:
因此,最初的发布者已经非常接近已经有了正确的解决方案(假设从那以后SAP尚未更改功能模块的参数)。
一周热门 更多>