从数据库检索数据作为SmartEdit中的值列表

2020-08-26 10:31发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 我们如何从数据库中检索数据作为...

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

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


我们如何从数据库中检索数据作为SmartEdit for Preview and Maintenance中下拉组件的值列表?

当前,我们要求根据客户所访问的国家/地区,以不同的形式维护内容页面。

例如,如果某个客户正在访问国家A的站点,他们将看到一个页面,其中包含为国家A维护的内容。相似的另一客户在访问国家X的站点时也会看到相同的页面,但内容不同。

基于此,我们将国家进一步分类为不同的"区域"(称为内容区域),例如,国家A,B和C位于区域1下,X,Y和Z位于区域2下。目标是 基于"区域"维护有不同"版本"(页面上具有不同内容)的单个页面。

为了更好地遵守SmartEdit中的预览功能,我们将使用自定义类型的页面限制(称为区域限制)在每个"区域"中创建不同的页面。 由于用户可以自行引入新区域,因此我们希望从数据库中检索所有可用区域,并在用户出现时显示为值列表。

  • 在SmartEdit中将"区域"限制定义为页面级别限制

  • 选择要在SmartEdit中预览的"区域"

为此,我们想了解如何在SmartEdit中从数据库中检索数据(即可用区域列表),以便可以将其用作上述情况下SmartEdit中的值列表? 是否需要在SmartEdit中使用对Hybris后端的API调用?

看看是否可以提供帮助。

p.s。,当前我们使用的是1811版。

谢谢。

塞恩

5条回答
clasier
2020-08-26 11:30

嗨,肖恩,

我希望你做得很好。

有三种方法可以解决您正在谈论的问题:

  1. 选项1:静态如果您希望下拉列表中的值是静态的(例如,不是来自数据库),则可以为您的字段创建一个枚举。 有了SmartEdit,它将可以处理所有事情。

  2. 选项2:来自DB-URI如果希望值是动态的(例如,来自DB),则可以为遵循分页协定的REST服务指定URI( https://help.sap.com/viewer/86dd1373053a4c2da8f9885cc9fbe55d/b181768 )。

      <!-注册属性。  ->
      
                  
                      <设置>
                          
                          
                          
                          
                      
                  
              
     
          <!-此字段将结构类型设置为" EditableDropdown"。  SmartEdit将呈现为下拉列表。  ->
          
                
          
     
          <!-您在此处注册URI->
          
              
          
    
      
    • 选项3:从数据库-自定义填充器如果要从不遵循分页协定的后端检索值,或者需要在前端进一步处理值,则可以使用此选项 (根据您的屏幕截图,我认为这是您遵循的方法)。 这是必需的代码:

    • 后端配置:

        <!-注册属性。  ->
        
                
                    <设置>
                        
                        
                        
                    
                
            
      
        <!-此字段将结构类型设置为" EditableDropdown"。  SmartEdit将呈现为下拉列表。  ->
        
              
        
      
        
  • 前端代码(在打字稿中):

    ... @SeInjectable()导出类PreviewDatapageZoneDropdownPopulator扩展了DropdownPopulatorInterface {

     构造函数(
              公共lodash:lo.LoDashStatic,
              私人$ q:angular.IQService,
              公共languageService:LanguageService
          ){
              超级(lodash,languageService);
          }
     
          populate(payload:DropdownPopulatorPayload):angular.IPromise  {
              const options = [
                  {
                      id:" zone1",
                      标签:" Zone1"
                  },
                  {
                      id:" zone2",
                      标签:" Zone2"
                  },
                  {
                      id:" zone3",
                      标签:" Zone3"
                  }
              ];
     
              返回this。$ q.when(options);
          }
      }
      ...
    
      

注意:系统期望Angular拥有名称为PreviewDatapageZoneDropdownPopulator的服务(必须与此大小写匹配)。 您可以在打字稿中这样注册它

  ...
  @SeModule({
      进口:[
          ...
      ],
      提供者:[
          ...
          {
              提供:" PreviewDatapageZoneDropdownPopulator",
              useClass:PreviewDatapageZoneDropdownPopulator
          }
 
      ]
  })
  导出类YourModule {}

  

希望这对您有帮助,亚历杭德罗

一周热门 更多>