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

2020-08-26 10:31发布

         点击此处--->   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版。

谢谢。

塞恩

         点击此处--->   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条回答
浮生未央
1楼-- · 2020-08-26 11:10

嗨,肖恩,SmartEdit中显示的所有数据都是通过API检索的。 就是说,有两种方法可以获取可用区域列表,具体取决于您的区域类型层次结构。

  1. 如果区域类型扩展了CMSItem类型模型,则可以使用现有的CMS项目搜索API

  2. 否则,您将需要公开一个新的API以返回可用区域的列表。

灬番茄
2楼-- · 2020-08-26 11:30

嗨,我在查看1905 SmartEdit下拉选择器中的语言和产品目录时遇到问题。 有人可以让我知道我是否想念什么。

Aaron 3364
3楼-- · 2020-08-26 11:34

嗨,Chhunry,

感谢您的反馈,我们是否可以进一步阐明如何(1)在SmartEdit中调用API,然后(2)将作为值列表检索的数据填充到SmartEdit中的UI控件?

例如,如果您参考所附的屏幕截图,我们希望将数据填充到新的下拉框中,如图所示。 实际上,我们要实现的功能与"预览"对话框上的其他OOTB控件(例如"目录"和"目录版本")相似吗?

替代文字

我们可以了解如何自定义SmartEdit来实现这一点吗?

此外,除了下拉框之外,SmartEdit中是否还有用于文本框输入字段的OOTB UI控件?

谢谢。

Sean

clasier
4楼-- · 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 {}

  

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

Alawn_Xu
5楼-- · 2020-08-26 11:15

您好,亚历杭德罗,我们已经尝试了第二个选项,并且可以使用!

感谢您的支持!

一周热门 更多>