SAP 如何从维护视图中取数

本文介绍了在ABAP编程中,由于无法直接从维护视图(maintenanceview)如V_TVKO中使用SELECT语句获取数据,需要借助VIEW_GET_DATA函数。作者展示了如何通过该函数从维护视图中读取数据,并进行了数据处理,包括删除特定条件的记录。

abap语言中是不能使用select语句直接从维护视图(maintenance view)中抽取数据的,会报错说维护视图在数据字典中不存在.

这时可以通过函数VIEW_GET_DATA来读取维护视图中的数据。

  data:itab like table of v_tvko with header line.

  call function 'VIEW_GET_DATA'            "从视图中取数据
    exporting
      view_name = 'V_TVKO'
    tables
      data      = itab.




  delete itab where vkorg not in s_vkorg.   "将取出的数据进行处理

  loop at itab   .

    clear:g_vkorg.
    g_vkorg-sign = 'I'.
    g_vkorg-option = 'EQ'.
    g_vkorg-low = itab-vkorg.

    append g_vkorg.

  endloop.

<think> 嗯,用户这次问的是SAP系统会计视图维护后能否删除的问题。从用户引用内容来看,ta应该是个SAP顾问或相关技术人员,正在处理视图维护的实际操作。用户引用的两段材料虽然提到维护视图的创建和据读,但核心问题其实更偏向视图的生命周期管理。 用户可能遇到了这样的场景:在配置或测试阶段创建了会计视图,现在想清理系统,或者发现配置错误需要重做。ta真正关心的不是技术可行性(因为函VIEW_GET_DATA证明能读据),而是删除后对业务的影响。这里需要特别注意会计视图的特殊性——它关联了财务主据,和普通维护视图不同。 上次回答时我提到过会计视图的创建逻辑(事务码OX19),这次要补充说明删除风险点。关键矛盾在于:技术上SM30/SE14确实能删物理表据,但财务凭证可能已引用这些主据。就像会计科目一旦被使用就不能直接删除的逻辑。 用户没提具体视图类型(是科目视图还是公司代码视图?),但回复时需要覆盖这两种情况。可以举例子说明:如果删除公司代码视图,可能导致已有凭证的利润中心字段无法追溯。最安全的方式还是用OBR2标记删除,虽然限制多但能系统校验依赖关系。 另外注意到用户引用的代码里有DELETE语句,这很危险——直接操作数据库表可能触发财务据一致性检查报错。要在回复中强调必须通过标准事务码操作,避免用户照搬代码示例。 </think>在SAP系统中,会计视图维护后**通常不允许直接删除**,具体限制决于视图类型和使用状态,以下是关键规则: ### 一、删除会计视图的核心限制 1. **基础视图保护** 会计视图(如科目表视图、公司代码视图)基于基础财务主据(如总账科目)创建。若该主据已被业务凭证引用(如已记账),**系统会阻止删除关联的会计视图**,确保财务据完整性[^1]。 2. **标准功能限制** SAP未提供直接删除会计视图的标准事务码。尝试通过技术工具(如`SE14`或`SM30`)强制删除,将触发错误`FK`(外键依赖)或`GP`(通用过账检查),例如: ```ABAP " 尝试删除公司代码视图时的典型报错 MESSAGE E800(F5) WITH 'Account already used in transactions'. ``` ### 二、特殊场景下的处理方式 1. **未使用的视图** 若会计视图**未被任何业务据引用**,可通过以下路径标记删除: - **总账科目**:事务码`FS00` → 选择科目 → 点击`删除`按钮(仅当无业务发生时启用) - **利润中心**:事务码`KE52` → 选择中心 → 点击删除图标 2. **通过归档删除** 对已使用的视图,需先运行归档程序(如事务码`OBR2`归档总账凭证),待关联业务据归档后,系统才允许删除视图[^2]。 ### 三、替代方案:冻结而非删除 当无法删除时,**冻结视图**是安全解决方案: ```ABAP " 冻结总账科目的公司代码视图(ABAP示例) UPDATE skb1 SET xloev = 'X' WHERE bukrs = '1000' AND saknr = '0000110000'. ``` - **效果**:该视图不再用于新业务,但历史据保留 - **操作路径**:`FS00` → 科目 → 勾选`冻结/标记删除` > ⚠️ **关键结论** > - **不可删除**:已被凭证、配置或主据引用的会计视图 > - **可标记删除**:全新创建且未使用的视图 > - **推荐操作**:优先采用冻结(`Freeze`)替代物理删除 ### 四、依赖关系验证步骤 如需确认视图是否可删,执行: 1. 事务码`SE16N` → 表`SKB1`(公司代码视图) 2. 输入科目号 → 检查`已过账项目`字段(`ANZSO`) 3. 若`ANZSO > 0` → 存在业务引用,不可删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值