SF-CPI-SAP问题收集24:集成地址信息的村里字段无法页面显示问题
导读
地址信息:地址信息是SAP的一个多语言的信息类型,不同国家信息类型显示的字段不一样,本来是一个很简单的信息类型,今天遇到一个奇怪的问题,通过CPI集成的时候,数据一直无法保存,但是直接在0006信息类型维护却没有问题。
作者:vivi,来源:osinnovation
1 故事背景
最近遇到一个台湾地址信息类型保存的问题,这个就和大陆的省市县一样,需要一层一层维护,每层有级联关系。台湾地区的邮政编码有特殊含义,输入邮政编码会自动带出区域、县相关的信息。但是现在嘉义市存在多个邮政编码存在多对一的情况,所以现在只有能过增强去解决此问题。增强的代码如下:0006-pstlz=601的时候,需要把字段拆分出另外字段,但是实际情况一直无法保存。
2 技术实现
通过上图看到台湾的地址有做一些特殊处理,我们看到LOCAT的字段是同时赋值给多个0006信息类型的字段,这里有很大的文章,为什么我通过上图的增强数据不能保存。仔细分析上述的源代码,因为是从第十个字段开始,所以我是否需要在前面设置10个空字符,这样数据前面数据即使保存也没影响。所以代码的95行中,我把东区前面加上10个空格。
IF infotype = '0006'..
MOVE pnnnn_primary_tab TO lt_p0006 .
CLEAR pnnnn_primary_tab.
LOOP AT lt_p0006 INTO lwa_p0006 .
IF lwa_p0006-pstlz = '601'.
CONCATENATE ' 東區' lwa_p0006-LOCAT into lwa_p0006-LOCAT .
lwa_p0006-pstlz = '600'.
ENDIF.
IF lwa_p0006-pstlz = '3011'.
CONCATENATE ' 東北' lwa_p0006-LOCAT into lwa_p0006-LOCAT .
lwa_p0006-pstlz = '300'.
ENDIF.
IF lwa_p0006-pstlz = '3012'.
CONCATENATE ' 香山' lwa_p0006-LOCAT into lwa_p0006-LOCAT .
lwa_p0006-pstlz = '300'.
ENDIF.
MODIFY lt_p0006 FROM lwa_p0006 .
ENDLOOP.
MOVE lt_p0006 TO pnnnn_primary_tab.
ls_field_PRIM_tab-erp_fld_id = 'LOCAT'.
APPEND ls_field_PRIM_tab TO ERP_FIELD_PRIM_TAB.
ls_field_PRIM_tab-erp_fld_id = 'PSTLZ'.
APPEND ls_field_PRIM_tab TO ERP_FIELD_PRIM_TAB.
CLEAR lwa_p0006.
REFRESH lt_p0006.
ENDIF.
3 实现效果