ABAP修改Domain域值
背景
最近MDG的项目,有个需求是通过接口传输过来的数据,修改Domain的域值(单值),需要通过ABAP代码实现
原理
通过调查和闻讯,得知函数组SDIF可以修改数据字典,包括修改域值、数据元素、结构、表&&视图、索引、搜索帮助等
我们使用到的函数如下
- DDIF_DOMA_GET:获取域值的信息
- DDIF_DOMA_PUT:修改域值的信息
- DDIF_DOMA_ACTIVATE:激活不活动的域,用于修改后使用
示例代码
*&---------------------------------------------------------------------*
*& 场景:维护域值的多个版本描述
*&----------------------------------------------------------------------
form sub_after_save.data:ls_domain type zmdgv_domain_i,lt_domain type table of zmdgv_domain_i,ls_domain_head_zh type dd01v,ls_domain_head_en type dd01v,lt_domain_value_zh type table of dd07v,lt_domain_value_en type table of dd07v,ls_domain_value type dd07v.loop at total assigning field-symbol(<fs_total>).clear ls_domain.ls_domain = <fs_total>.append ls_domain to lt_domain.endloop.sort lt_domain by zzdom_code.loop at lt_domain into ls_domain.at new zzdom_code.call function 'DDIF_DOMA_GET'exportingname = conv ddobjname( ls_domain-zzdom_code )langu = conv syst_langu( '1' )importing
* GOTSTATE =dd01v_wa = ls_domain_head_zhtablesdd07v_tab = lt_domain_value_zhexceptionsillegal_input = 1others = 2.if sy-subrc <> 0.continue.endif.call function 'DDIF_DOMA_GET'exportingname = conv ddobjname( ls_domain-zzdom_code )langu = conv syst_langu( 'E' )importing
* GOTSTATE =dd01v_wa = ls_domain_head_entablesdd07v_tab = lt_domain_value_enexceptionsillegal_input = 1others = 2.if sy-subrc <> 0.continue.endif.data(lv_zh_count) = conv i( lines( lt_domain_value_zh ) ).data(lv_en_count) = conv i( lines( lt_domain_value_en ) ).endat.if ls_domain-zzdel eq abap_true."域值已删除delete lt_domain_value_zh where domvalue_l eq ls_domain-zzdom_value.delete lt_domain_value_en where domvalue_l eq ls_domain-zzdom_value.else."中文描述read table lt_domain_value_zh into ls_domain_value with key domvalue_l = ls_domain-zzdom_valueddlanguage = '1' .if sy-subrc eq 0."修改ls_domain_value-ddtext = ls_domain-zzdom_t_cn.modify lt_domain_value_zh from ls_domain_value index sy-tabix.else."新增append initial line to lt_domain_value_zh assigning field-symbol(<fs_value>).<fs_value>-domname = ls_domain-zzdom_code.add 1 to lv_zh_count.<fs_value>-valpos = lv_zh_count.<fs_value>-domvalue_l = ls_domain-zzdom_value.<fs_value>-ddtext = ls_domain-zzdom_t_cn.<fs_value>-ddlanguage = '1'.endif."英文描述read table lt_domain_value_en into ls_domain_value with key domvalue_l = ls_domain-zzdom_valueddlanguage = 'E' .if sy-subrc eq 0.ls_domain_value-ddtext = ls_domain-zzdom_t_en.modify lt_domain_value_en from ls_domain_value index sy-tabix..else.append initial line to lt_domain_value_en assigning <fs_value>.<fs_value>-domname = ls_domain-zzdom_code.add 1 to lv_en_count.<fs_value>-valpos = lv_en_count.<fs_value>-domvalue_l = ls_domain-zzdom_value.<fs_value>-ddtext = ls_domain-zzdom_t_en.<fs_value>-ddlanguage = 'E'.endif.endif.at end of zzdom_code.call function 'DDIF_DOMA_PUT'exportingname = conv ddobjname( ls_domain-zzdom_code )dd01v_wa = ls_domain_head_zhtablesdd07v_tab = lt_domain_value_zhexceptionsdoma_not_found = 1name_inconsistent = 2doma_inconsistent = 3put_failure = 4put_refused = 5others = 6.if sy-subrc <> 0.continue.endif.call function 'DDIF_DOMA_PUT'exportingname = conv ddobjname( ls_domain-zzdom_code )dd01v_wa = ls_domain_head_entablesdd07v_tab = lt_domain_value_enexceptionsdoma_not_found = 1name_inconsistent = 2doma_inconsistent = 3put_failure = 4put_refused = 5others = 6.if sy-subrc <> 0.continue.endif.call function 'DDIF_DOMA_ACTIVATE'exportingname = conv ddobjname( ls_domain-zzdom_code )exceptionsnot_found = 1put_failure = 2others = 3.if sy-subrc <> 0.continue.endif.endat.endloop.endform.
ABAP修改Domain域值相关推荐
- 在程序中设置infopath中的整型等域值时出错解决方法
最近一直和infopath表单打交道,碰到的问题也比较多,刚刚就碰到一个在程序中修改infopath表单中域的内容时出错的问题,写出来与大家共享一下,我想这个问题,可能玩infopath的话,迟早会碰 ...
- 转载非原创:修改BB 的内容,回车后修改CC 的值
原文 http://blog.csdn.net/iamah/article/details/8438981 修改BB 的内容,回车后修改CC 的值 步骤: 1. 注册类为对类CL_GUI_ALV_GR ...
- 修改数组的值和多维数组排序
foreach($ret as $key => $value) { //将数组元素中为空地补0,且添加sum元素的计算,注意修改数组的值,需要$key定位到是数组的哪一个地方需要修改,而不能简单 ...
- VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题 参考文章: (1)VUE项目中使用this.$forceUpdate();解决 ...
- 学习旧岛小程序 (5) observer 函数中修改属性的值
不要在一个属性的 observer 函数中修改属性的值 不然会造成内存泄露 错误代码: properties: {/* 期刊号 */index: {type: String,observer: fu ...
- 为什么不使用volatile,其它线程也能得到当前线程修改后的值,不使用volatile也不存在可见性问题?原来解决可见性问题不一定需要volatile,println也可以
1. 为什么不使用volatile,其它线程也能得到变量修改后的值 实验代码分析: ①初始变量a=true,b=false: ②一个线程判断a或者b是否被改为相应逻辑,如果是,那么输出信息. ③修改a ...
- C# 【无法修改XX返回值,因为它不是变量】
C# [无法修改XX返回值,因为它不是变量] using UnityEngine; using System.Collections; using System.Xml.Linq; using Uni ...
- SqlServer 增加字段,修改字段名,删除字段,修改字段默认值
SqlServer 增加字段,修改字段名,删除字段,修改字段默认值 1:增加字段 语法:alter table 表名 add 新增字段名 字段类型 默认值- 2:修改字段名 语法:exec sp_re ...
- java反射设置属性值_Java反射如何有效的修改final属性值详解
前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...
最新文章
- Android studio 下 JNI 开发实例
- MySQL 深入浅出索引(上)
- Linux监控命令之==netstat
- HashSet与HashMap源代码深度剖析
- java wait方法_java wait方法
- IOS swift项目的单例模式.swift5以后的单例模式
- 怎么查看地址值_西门子S7-200 SMART PID回路控制,配置PID向导,查看项目组件
- linux 装windows软件,常用软件的安装(windows/linux)
- WingIDE中文乱码问题解决方法
- java反射机制中的getDeclaredField()
- 四则运算、数字与等式(数字游戏)
- Openlayer:学习笔记之图标与提示信息
- 计算机设计大赛作品开发文档
- 2021-07-13
- 如何删除双系统中的Linux系统
- 家用台式电脑计算机上的硬磁盘,台式电脑如何连接硬盘
- 如何用Mockplus快速做一个手风琴菜单?
- [vba]快速更新表格标题序号
- bilibili封面提取
- linux界面安装weblogic12c,Linux安装WebLogic12c