点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我正在处理日语字符偏移。 以下是示例数据。
JP34HE38理论健康保険料(総报酬)
以下是我用于拆分上述字符串的逻辑:
"获取数据的抽象类型 lo_typedescr = cl_abap_typedescr => describe_by_data(wa_upload_file)。 lo_structdescr?= lo_typedescr。 lt_components_in = lo_structdescr-> get_components()。 在lt_components_in INTO ls_component中循环。 UNASSIGN。 将结构ls_component-name分配给结构wa_upload_file TO 。 如果lv_input_data是INITIAL。 lv_input_data = 。 其他。 CONCATENATE lv_input_data INTO lv_input_data。 万一。 结局。 清除:lo_typedescr,lo_structdescr。 lo_typedescr = cl_abap_typedescr => describe_by_data(wa_kyuyono)。 lo_structdescr?= lo_typedescr。 lt_components_out = lo_structdescr-> get_components()。 清除:lv_offset,lv_offset_str。 循环至lt_components_out INTO ls_component。 l_tabix = sy-tabix。 清除:lo_elemdescr,lv_offset_data。 lo_elemdescr?= ls_component-type。 如果为lo_elemdescr-> type_kind EQ'D'。 l_length ='8'。 其他。 l_length = lo_elemdescr-> output_length。 万一。 cl_abap_list_utilities => read_from_display_layout( 出口 display_data = lv_input_data display_offset = lv_total_offset display_length = l_length 输入 字段= lv_offset_data)。 lv_offset = l_length。 将lv_offset添加到lv_total_offset。 "将数据分配给结构 UNASSIGN 。 将结构wa_kyuyono的ls_component-name分配给 。 如果已分配 。 = lv_offset_data。 万一。 万一。 结局。
下面是它应该如何分割,
Var1是4个字符,Var2是3个字符,Var3是1个字符,Var4是20个字符。
问题:
Var4为20个字符。 但是,方法cl_abap_list_utilities => read_from_display_layout仅返回10个字符。 这是因为所占用的字符宽度大于20。
对于这些类型的字符,我们如何使用偏移? 假设,如果我们还有另一个变量,那将是一个问题。
提前谢谢!
BR,
Kiran Kerudi
你好,基兰,
有两个原因。
首先,您需要检查SAP环境中的编码,如果不使用unicode环境,则需要
。第二,如果您使用unicode环境,请尝试创建您自己类型的结构。
使用move语句,然后将前4个字符移动到结构的第一个字段,依此类推。
这将解决多语言问题。
此致
Ankit Mahajan
为什么不简单地使用代码页8000读取文件? (SJIS)
如果不使用代码页8000,我将无法读取SJIS文件。 因此它已经就位。
在这里,问题与文件无关。 我的内部表中已经有内容。
这是我最初的问题的目标,就是要了解您要实现的目标。 因此,您的问题不是关于读取文件,而是关于将WA_UPLOAD_FILE传输到WA_KYUYONO。
由于您具有Unicode系统,每个日语字符都是一个字符(2个字节),因此WA_UPLOAD_FILE + 8(20)将占用20个字符,例如20个日语字符或20种任何类型的字符,所以我不 不了解您的复杂算法。 似乎没用。
问题是:此转移的目标是什么?
PS:cl_abap_list_utilities => read_from_display_layout返回ABAP列表的20列中显示的日语文本的10个字符是正常的。 您到底需要什么?
我还测试了您的代码+添加了变量声明,最后WA_KYUYONO等于WA_UPLOAD_FILE,这就是为什么我说我不明白您的目标是什么(将可编译代码复制到此处进行进一步讨论):
您好,Kiaran,
那我想我们有一个解决方案。
鉴于前8个字符为EN,我们需要移动8(20)作为Japanease。
我们知道在Unicode中,所有字符都是全角的八分之一。
对于日语,它将始终为全角。
所以使用8(40)代替8(20)。
一周热门 更多>