如何将多种修饰符值格式传递给impex中的属性?

2020-09-01 21:01发布

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

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


嗨,

我正在尝试将两种不同的格式" dd.MM.yyyy"和" dd.MM.yyyy hh:mm:ss"传递给在Datex文件中接受Date作为修饰符参数的属性。 因此,最终用户可以以" dd.MM.yyyy "或" dd.MM.yyyy hh:mm:ss "的格式提供值。 但它不起作用。

下面是Impex格式的示例。

  INSERT_UPDATE abc; code [unique = true]; exclusiveTill [dateformat =('dd.MM.yyyy'|'dd.MM.yyyy hh:mm:ss a')]]
  ; xxx_black; 23.02.2016
  ; xxx_grey; 14.02.2016 04:30:00
  ; xxx_yellow; 24.02.2016 04:30:00 PM
  

请帮助我...

感谢Bhaskar

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

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


嗨,

我正在尝试将两种不同的格式" dd.MM.yyyy"和" dd.MM.yyyy hh:mm:ss"传递给在Datex文件中接受Date作为修饰符参数的属性。 因此,最终用户可以以" dd.MM.yyyy "或" dd.MM.yyyy hh:mm:ss "的格式提供值。 但它不起作用。

下面是Impex格式的示例。

  INSERT_UPDATE abc; code [unique = true]; exclusiveTill [dateformat =('dd.MM.yyyy'|'dd.MM.yyyy hh:mm:ss a')]]
  ; xxx_black; 23.02.2016
  ; xxx_grey; 14.02.2016 04:30:00
  ; xxx_yellow; 24.02.2016 04:30:00 PM
  

请帮助我...

感谢Bhaskar

付费偷看设置
发送
2条回答
四川大学会员
1楼-- · 2020-09-01 21:47

嗨Bhaskar,

OOTB没有这种可能性。 我要么使用每种日期格式在单独的脚本中拆分记录,要么创建翻译器( Writing Own Translator ),将不同的格式转换为将在标头中使用的格式。

土豆飞人
2楼-- · 2020-09-01 21:34

要使其成为可能,您需要:

  1. 通过从AbstractValueTranslator扩展来创建自定义转换器。
  2. 要灵活,请将日期格式放入project(local).properties文件中。
  3. 通过添加自定义转换器来配置impex标头。

示例:

  • 自定义翻译器:
包com.project.test;

 导入de.hybris.platform.impex.jalo.translators.AbstractValueTranslator;
 导入de.hybris.platform.jalo.Item;
 导入de.hybris.platform.jalo.JaloInvalidParameterException;
 导入de.hybris.platform.util.Config;
 导入org.apache.commons.lang.StringUtils;
 导入org.apache.commons.lang3.time.DateUtils;
 导入org.apache.log4j.Logger;

 导入java.text.ParseException;
 导入java.util.Arrays;
 导入java.util.Date;
 导入java.util.Objects;

 公共类TestTranslator扩展AbstractValueTranslator {

     私有最终Logger LOGGER = Logger.getLogger(TestTranslator.class);

     @Override
     public Object importValue(String value,Item item)引发JaloInvalidParameterException {
         clearStatus();
         日期结果=空;

         final String dateFormats = Config.getString(" test.date.formats","");
         最终的String []格式= dateFormats.split(";");

         如果(!Objects.isNull(value)){
             尝试{
                 结果= DateUtils.parseDate(值,格式);
             } catch(ParseException e){
                 LOGGER.error(String.format("日期%s与任何格式都不匹配:%s",值,Arrays.toString(formats))));
             }
         }

         如果(Objects.isNull(result)){
             setError();
             LOGGER.error(String.format("日期%s与任何格式都不匹配:%s",值,Arrays.toString(formats))));
         }

         返回结果;
     }

     @Override
     公共字符串exportValue(对象值)抛出JaloInvalidParameterException {
         字符串结果= StringUtils.EMPTY;

         如果(!Objects.isNull(value)){
             最终日期日期=(日期)值;
             结果= date.toString();
         }

         返回结果;
     }
 } 
  • 属性文件:
 test.date.formats = yyyy-MM-dd HH:mm:ss; dd.MM.yyyy HH:mm:ss; dd.MM.yyyy; yyyy/dd/MM 
  • impex文件:
 INSERT_UPDATE MyItem; code [unique = true]; testDate [translator = com.project.test.TestTranslator];
 ; first; 13.09.2000 19:55:55;
 ; second; 13.09.2000;
 ; third; 2019-09-13 11:11:11;
 ;第四; 2000/13/09;
 

一周热门 更多>