如何从MCDOK表检索指定条件的PRT类型PDF附件数据?
解决方案与学习指导
一、核心查询需求实现方案
方案1:用SAP Query(SQ01/SQ02/SQ03)构建查询
这是最贴合你当前学习路径的方案,步骤如下:
- 创建用户组(SQ03):若没有专属用户组,新建一个并将自己的用户添加进去,用于关联后续的信息集和查询。
- 创建信息集(SQ02):
- 添加关联表:
DRAW(文档主数据)、DRAO(文档-原始文件关联)、MCDOK(附件详情) - 建立表关联:
DRAW与DRAO:通过DOKNR(文档编号)、DOKAR(文档类型)、DOKTL(文档部分)、DOKVR(文档版本)字段关联DRAO与MCDOK:通过OBJID(对象ID)字段关联
- 若找不到
MCDOK表,直接联系Basis申请该表的查询权限。
- 添加关联表:
- 创建查询(SQ01):
- 基于上述信息集,添加筛选条件:
DRAW-DOKAR = 'PRT'(文档类型为PRT)DRAW-TRANSAC = 'CV01N'(通过CV01N创建)MCDOK-FILE_EXTENSION = 'PDF'(附件为PDF格式)MCDOK-FILE_DESCRIPTION IN ('ISSUE123', '')(附件描述为ISSUE123或为空)
- 选择需要输出的字段(如文档编号、文档描述、附件名称等),执行查询即可获取结果。
- 基于上述信息集,添加筛选条件:
方案2:ABAP简易报告(需开发权限)
如果SAP Query因权限无法添加MCDOK,可以用以下简易ABAP程序实现:
REPORT Z_PRT_PDF_ATTACHMENTS. SELECT d~doknr d~dokar d~doktl d~dokvr d~doktx m~file_name m~file_description FROM draw AS d INNER JOIN drao AS o ON o~doknr = d~doknr AND o~dokar = d~dokar AND o~doktl = d~doktl AND o~dokvr = d~dokvr INNER JOIN mcdok AS m ON m~objid = o~objid WHERE d~dokar = 'PRT' AND d~transac = 'CV01N' AND m~file_extension = 'PDF' AND (m~file_description = 'ISSUE123' OR m~file_description IS INITIAL) INTO TABLE @DATA(lt_result). IF lt_result IS NOT INITIAL. cl_demo_output=>display( lt_result ). ELSE. WRITE: / '未找到匹配的文档'. ENDIF.
用SE38执行该程序即可,若无开发权限,可找开发同事协助运行。
方案3:CV04N事务码手动筛选(临时应急)
- 打开CV04N,输入基础筛选条件:文档类型
PRT,创建事务码CV01N(在“更多选择”中找到对应字段) - 执行后得到文档列表,逐个点击“原始文件”查看附件并筛选描述,此方法效率较低,仅适合小范围数据查询。
二、权限问题解决
你遇到的无法在SQVI中JOIN、无法SE16N打开MCDOK表的问题,均为权限不足导致,联系Basis申请以下权限:
- 表
MCDOK的查询权限(权限对象S_TABU_NAM,字段TABNAME = MCDOK) - SQVI的JOIN操作权限(权限对象
S_QUERY相关字段) - SAP Query的创建、修改权限(权限对象
S_QUERY)
三、学习方向指导
- 深耕SAP Query:掌握
SQ03(用户组)→ SQ02(信息集)→ SQ01(查询)全流程,重点学习表关联逻辑、筛选条件设置、字段输出配置,这是SAP中最常用的无开发查询工具。 - 熟悉DMS核心表:重点掌握
DRAW(文档主数据)、DRAO(原始文件关联)、MCDOK(附件详情)、DRAD(文档关联对象)的结构与关联关系,这是DMS数据查询的基础。 - 基础ABAP学习:学习
SELECT语句、内表处理等基础语法,能快速编写简易报告解决复杂查询需求,提升问题解决效率。 - 权限知识补充:了解SAP权限对象的基本逻辑,遇到操作受限的情况,能准确向Basis描述权限需求。
内容的提问来源于stack exchange,提问作者Konstantin-007
相关产品推荐
相关产品推荐

