如何处理此错误:ASSIGN_BASE_WRONG_ALIGNMENT

2020-08-30 11:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,SAP专业人士,在表维护源代码中包括LSVIMF44第14行,我尝试在视图集群事件03中编写与它相同的代码,但发生上述错误:

数据:L_VIEWNAME C型长度20。
 数据:LS_IT TYPE YVIT_FOOD,
  YVIT_FOOD的LT_IT类型表,
  LS_TJ类型YTTJ_FOOD。
 数据:eflag类型为vcl_flag_type。
 FIELD-SYMBOLS: TYPE ANY,
   TYPE ANY,
   TYPE ANY。
 L_VIEWNAME ='YVIT_FOOD'。
 使用'YVIT_FOOD'更改EFLAG,执行VCL_SET_TABLE_ACCESS_FOR_OBJ。
 将初始行追加到分配。
 分配:铸造类型c。
 分配铸造类型(L_VIEWNAME)。  " -------------- >>>>错误行

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,SAP专业人士,在表维护源代码中包括LSVIMF44第14行,我尝试在视图集群事件03中编写与它相同的代码,但发生上述错误:

数据:L_VIEWNAME C型长度20。
 数据:LS_IT TYPE YVIT_FOOD,
  YVIT_FOOD的LT_IT类型表,
  LS_TJ类型YTTJ_FOOD。
 数据:eflag类型为vcl_flag_type。
 FIELD-SYMBOLS: TYPE ANY,
   TYPE ANY,
   TYPE ANY。
 L_VIEWNAME ='YVIT_FOOD'。
 使用'YVIT_FOOD'更改EFLAG,执行VCL_SET_TABLE_ACCESS_FOR_OBJ。
 将初始行追加到分配。
 分配:铸造类型c。
 分配铸造类型(L_VIEWNAME)。  " -------------- >>>>错误行
付费偷看设置
发送
6条回答
小c菟菟
1楼 · 2020-08-30 12:13.采纳回答

这可能是由于您的表或视图YVIT_FOOD可能包含除类似字符的类型C,D,N和T以外的其他类型(始终指向字符表(C))。/p>

实际上,是一个通用容器,其行为C,但在内部使用以下类型进行映射(此处用于表或视图YVIT_FOOD,但将取决于当前的活动表或视图) 集群)

类型为ty_yvit_food的开始。
 包括类型yvit_food。
 包括类型vimflagtab。
 ty_yvit_food类型结束。

您不能直接转让或分配。 相反,您必须将源和目标都转换为字节(X),以允许传输(与CL_ABAP_CONTAINER_UTILITIES类的FILL_CONTAINER_C和READ_CONTAINER_C方法相同):

 DATA line_of_yvit_food类型ty_yvit_food。
 FIELD-SYMBOLS: TYPE x,
                 TYPE x。

 ASSIGN line_of_yvit_food至铸造。

 环聊分配铸造。
    = 。
   line_of_yvit_food-yourcolumn1 = VALUE#()。
   line_of_yvit_food-yourcolumn2 = VALUE#()。
    = 。
 ENDLOOP。
追夢秋陽
2楼-- · 2020-08-30 12:32

嗨,

您可以尝试使用以下代码。

 DATA:ls_yvit_food类型yvit_food类型。
 ASSIGN 铸造类型ls_yvit_food。

字段符号-转换文档

注意

Mukhtar

d56caomao
3楼-- · 2020-08-30 12:12

错误详细信息如下

在当前程序" YV_FOOD_PROG"中,使用ASSIGN或ASSIGNING(可能与CASTING附加项组合)设置字段符号" "时发生错误。 在转换字段符号" "的基本条目(基本表中的编号:33040)时,系统检测到目标类型需要内存对齐4。但是,源数据对象具有无效的内存对齐方式,因为它不能被整除 例如,如果要将结构的子字段分配给字段符号,则从结构开始的偏移量应为4的倍数。结构还应包含至少具有对齐方式4的类型。

小灯塔
4楼-- · 2020-08-30 12:14

嗨,Mukhtar,仍然出现错误。 并且代码应为LIKE而不是TYPE。

 ASSIGN 铸造ls_yvit_food。

三十六小时_GS
5楼-- · 2020-08-30 12:28

是的,这是个好话,我也不知道为什么,在文档中也没有找到解释。

区别在于,ABAP在分配内部表的行和结构之间的反应有所不同,如您在此处看到的:

类型:BEGIN OF ty_target,
            补偿TYPE I,
          结束于ty_target。
   FIELD-SYMBOLS  TYPE ty_target。
   类型:开始于ty_line,
            第(2048)行TYPE C,
          结束于ty_line。
   类型:ty_table ty_line的TYPE STANDARD TABLE。
   数据表类型ty_table。
   数据行TYPE ty_line。
   将初始行添加到itab。
   将行分配到铸造。  " <===效果很好
   将itab [1]分配到铸造。  " <===语法错误
   FIELD-SYMBOLS <行>类型ANY。
   将itab [1]分配到。
   将分配到铸造。  " <===简短的转储ASSIGN_BASE_WRONG_ALIGNMENT 
SAP小黑
6楼-- · 2020-08-30 12:29

您需要发送有关您的问题的更多信息

我们需要您的Field-使用的所有对象结构 符号

我们无法根据视图/表/字段的名称来帮助您

一周热门 更多>