SAP CODE DEMO:查找AL11 指定路径下文件中的内容
有时候需要查找某个具体的内容,在哪个文件内。数据量大的时候可以利用程序查找
选择界面:

路径,和文件名都可以模糊搜查
search string:你要查找的信息。
代码参考如下:
report z00R010 NO STANDARD PAGE HEADING MESSAGE-ID zzLINE-COUNT 65 LINE-SIZE 255.*-----------------------------------------------------------------------
* Tables
*-----------------------------------------------------------------------
tables: z00files.*-----------------------------------------------------------------------
* Selection Screen
*-----------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .PArameters: p_Dir type z00files-zto_dir default '/SAPINTER/AG'.
parameters: p_File type z00files-zto_name obligatory.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002 .
parameters: p_text(50) type c obligatory.
SELECTION-SCREEN END OF BLOCK b2.
*Write no text - only file name
parameters: p_ntxt radiobutton group rb1.
*Write First text
parameters: p_ftxt radiobutton group rb1.
*WRite All text
parameters: p_atxt radiobutton group rb1.DATA: gv_infile(200) TYPE c,gv_lines type i,gv_split type c value '/',gv_commndl(500).*internal table for storing filenames to be processed.
data: begin of i_filetab occurs 10,name(500),date(8),time(8),end of i_filetab.data: begin of i_comtab occurs 10,name(500),date(8),time(8),end of i_comtab.data: ipath(100) occurs 0.constants: gc_x value 'X',gc_R value 'R',gc_Y value 'Y',gc_N value 'N'.*-----------------------------------------------------------------------
* Initialization
*-----------------------------------------------------------------------
initialization.
*------------include z01init.
*-----------------------------------------------------------------------
* Start of selection
*-----------------------------------------------------------------------
at SELECTION-SCREEN.if p_file co '* '.message e001 with 'Enter full or partial file name'.endif.start-of-selection.
*----------------WRite: / 'Search Directory:', p_Dir.WRite: / 'Search File Name:', p_file.write: / 'Search Text :', p_Text.if p_nTxt = gc_X.write: / 'Do not display any results - only file names'.elseif p_Ftxt = gc_X.write: / 'Display only first result found'.else.write: / 'Display all results'.endif.*Explore path nameperform open_files.*Check if any founddescribe table i_filetab lines gv_lines.write: / 'Files to check :', gv_lines.*Process files and search for given textif gv_lines > 0.perform process_files.endif.*&---------------------------------------------------------------------*
*& Form open_files
*&---------------------------------------------------------------------*
form open_files.data: lv_fil(50).*find files from given directoryrefresh i_filetab.clear i_filetab.concatenate '\' p_file into lv_fil.concatenate 'find' p_Dir '-name' lv_fil '-printf''''%TY%Tm%Td\t%p\n'''into gv_commndl separated by space.* write :/ gv_commndl.call 'SYSTEM' id 'COMMAND' field gv_commndlid 'TAB' field i_filetab-*sys*.endform. " open_files
*&---------------------------------------------------------------------*
*& Form process-files
*&---------------------------------------------------------------------*
form process_files.data: lv_len type i.data: lv_restname(500) type c.data: lv_name(100) type c.*End of File indicatordata: lv_eof type c.data: lv_open type c.data: lv_Count type i.data: lv_found type c.data: lv_pos type i.data: lv_msg(50) type c.DATA: istring TYPE string.*==================*
*EXPLORE SUBFOLDERS
*==================*
*only consider exact path (ignore main folder)lv_len = strlen( p_dir ) + 1.loop at i_filetab.*No spaces allowed in input file path
* lv_len = strlen( gv_infile ).lv_len = strlen( i_filetab-name ).i_filetab-date = i_filetab-name(8).gv_infile = i_filetab-name+9(lv_len).lv_len = strlen( gv_infile ).if gv_infile(lv_len) ca ' '.lv_msg = 'infile contains spaces'(013).write: / lv_msg, gv_infile.message s001 with lv_msg gv_infile.continue.endif.*======================*
*CHECK STATUS OF INFILE -
*======================*lv_Eof = gc_N.lv_Found = gc_N.open dataset gv_infile for input in text modeencoding default with smart linefeed ignoring conversion errors.if sy-subrc = 0.
*SEarch for text in the file and list if founddo.read dataset gv_infile into istring.if sy-subrc > 0.exit.endif.if istring cs p_text.
*LIst file name firs timeif lv_Found = gc_n.
*underline for text to followif not p_nTxt = gc_X.uline.endif.lv_Found = gc_Y.add 1 to lv_count.write: / 'File Date=', i_filetab-date, 'Name=', gv_Infile.endif.if not p_ntxt = gc_X.write: / istring.endif.*EXit after first record foundif p_ftxt = gc_x.lv_Eof = gc_Y.exit.endif.endif.enddo.close dataset gv_infile.endif.endloop.uline.write: / 'Results found in ', lv_count, 'Files'.uline.endform. " process-files
table:
| Field | Data element | Data type | length | decimal | description |
| MANDT | MANDT | CLNT | 3 | 0 | Client |
| WERKS | WERKS_D | CHAR | 4 | 0 | Plant |
| ZFILE | CHAR | 40 | 0 | File description | |
| ZFROM_DIR | Z00_DIRECTORY | CHAR | 100 | 0 | Directory Path |
| ZTO_DIR | Z00_DIRECTORY | CHAR | 100 | 0 | Directory Path |
| ZFROM_NAME | CHAR | 50 | 0 | From File name | |
| ZTO_NAME | CHAR | 50 | 0 | To File name | |
| ZDIRECTION | Z00_DIRECTION | CHAR | 1 | 0 | Interface Direction |
| ZEXPLORE | CHAR | 1 | 0 | Include subfolders | |
| ZTIMESTAMP | CHAR | 1 | 0 | Timestamp new file | |
| ZAPPEND | CHAR | 1 | 0 | Append to existing file | |
| ZREPLACE | CHAR | 1 | 0 | Replace existing file | |
| ZSKIP | CHAR | 1 | 0 | Skip if duplicate found | |
| ZOWNER | CHAR | 12 | 0 | Notify owner if problems | |
| ZSTART | CHAR | 1 | 0 | Start program immediately | |
| ZJOBGRP | BTCJOBGRP | CHAR | 12 | 0 | Summary of jobs for a group |
| ZJOB | BTCJOB | CHAR | 32 | 0 | Background Job Name |
| ZPROG | BTCREP | CHAR | 40 | 0 | Name of internal report for batch job |
| ZVAR | BTCVARIANT | CHAR | 14 | 0 | Name of variant within a step |
| ZFILE_PAR | CHAR | 8 | 0 | Input file parm in Variant | |
| ZBATCH | CHAR | 12 | 0 | Batch User | |
| ZINACTIVE | CHAR | 1 | 0 | Set as inactive | |
| ZEOF | CHAR | 10 | 0 | End of File indicator | |
| ZSAPRET | Z00_SAPRET | NUMC | 4 | 0 | SAPINTER Retention Period |
| ZARCH | Z00_ARCH_IND | CHAR | 1 | 0 | Archive Indicator |
| ZARCHRET | Z00_ARCHRET | NUMC | 2 | 0 | Archive Retention Period |
相关文章:
SAP CODE DEMO:查找AL11 指定路径下文件中的内容
有时候需要查找某个具体的内容,在哪个文件内。数据量大的时候可以利用程序查找 选择界面: 路径,和文件名都可以模糊搜查 search string:你要查找的信息。 代码参考如下: report z00R010 NO STANDARD PAGE HEADING…...
【华为HCIP实战课程二十四】中间到中间系统协议IS-IS配置实战,网络工程师
一、IS-IS整体架构 将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2路由器部署在骨干区域。 每一个非骨干区域都通过Level-1-2路由器与骨干区域相连! 1、在IS-IS中,每个链路可以属于不同的区域,OSPF中每个链路属于同一个区域 2、在IS-IS中,单个区域没有物理…...
【工具】新手礼包之git相关环境包括中文的一套流程{收集和整理},gitlab的使用
【工具】新手礼包之git相关环境包括中文的一套流程{收集和整理} git Git 详细安装教程(详解 Git 安装过程的每一个步骤) TortoiseGit 【TortoiseGit】TortoiseGit安装和配置详细说明...
篇章十一 打包构建工具
文章目录 一、gulp1. 流2. gulp 的作用3. gulp 的安装、检测和卸载 二、webpack1. 打包样式资源2. 打包 html 资源3. 打包图片资源4. 压缩 html 代码5. 生产环境基本配置 三、vite 打包构建工具,都是依赖于 node 环境进行开发,底层封装的内容就是 node 里…...
青少年编程与数学 02-002 Sql Server 数据库应用 06课题、数据库操作
青少年编程与数学 02-002 Sql Server 数据库应用 06课题、数据库操作 课题摘要:一、数据库的文件组成二、系统数据库三、创建数据库四、数据库配置1. 修改数据库文件大小和增长设置2. 添加或移除数据文件3. 设置数据库选项4. 配置数据库的恢复模型5. 管理数据库的访问权限6. 使…...
MacOS下载安装Logisim(图文教程)
本章教程主要介绍如何在MacOS系统中安装Logisim。 一、Logisim是什么? Logisim是一个用于电子逻辑门电路模拟的教育工具软件。它允许用户通过图形界面构建和测试复杂的数字逻辑电路,如加法器、解码器、编码器、寄存器、内存等,从而帮助学生理解计算机硬件的工作原理。 二、如…...
Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案
Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案 准备准备 Flink Standalone 集群准备 docker compose为 MySQL 准备记录使用 Flink CDC CLI 提交作业 同步架构和数据更改路由变更清理 本教程将展示如何使用 Flink CDC 快速构建从 MySQ…...
一次元空间FullGC导致OOM问题分析
原文,作者:kkyeer 原文需要翻墙,所以转载。 现象 观测平台告警:FullGC次数大于阈值,5分钟内大于11次,频次大概1-2周有一次 告警后服务概率性会自动恢复,控制台打印 Exception: java.lang.OutOf…...
Web前端开发工具和依赖安装
各种安装: node.js https://nodejs.org/zh-cn/ 安装完node.js 可以使用npm,npm跟随nodejs一起安装 node --version 查看已安装node.js的版本,确认是否安装nodejs npm -v 查看npm版本npm install <Module Name> 安装模块 npm insta…...
【学习心得】远程root用户访问服务器中的MySQL8
一、Ubuntu下的MySQL8安装 在Ubuntu系统中安装MySQL 8.0可以通过以下步骤进行1. 更新包管理工具的仓库列表: sudo apt update 2. 安装MySQL 8.0,root用户默认没有密码: sudo apt install mysql-server sudo apt install mysql-client 【…...
lust变频器维修电梯变频器CDD34.014.W2.1LSPC1
LUST伺服在安装时须注意,不可有任何的铁屑、螺丝、导线等掉人驱动器内。在安装完成后应作基本的检测动作,如对地阻抗,和短路检测等。 所有的安装及使用事项需要符合安全规定,并且也需要符合当地的相关规定和灾害预防措施。DC BUS…...
跨越地域限制:在线原型设计软件的自由与便捷
网络原型设计软件因其便捷性和灵活性,在现代设计工作中扮演着至关重要的角色。与传统的桌面端软件相比,网络原型设计工具无需安装,不受地域限制,且兼容各种操作系统,无论是Linux、Solaris、Mac还是Windows,…...
flash-waimai:高仿饿了么外卖平台,使用他轻松打造自己的外卖平台
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和工作学习方法 flash-waimai 是一个完整的外卖平台解决方案,包括手机端、后台管理端和 API 服务。该项目仿照了饿了么的外卖服务,为用户提供了一个…...
2.5 塑性力学—应变状态
个人专栏—塑性力学 1.1 塑性力学基本概念 塑性力学基本概念 1.2 弹塑性材料的三杆桁架分析 弹塑性材料的三杆桁架分析 1.3 加载路径对桁架的影响 加载路径对桁架的影响 2.1 塑性力学——应力分析基本概念 应力分析基本概念 2.2 塑性力学——主应力、主方向、不变量 主应力、主…...
1.机器人抓取与操作介绍-深蓝学院
介绍 操作任务 操作 • Insertion • Pushing and sliding • 其它操作任务 抓取 • 两指(平行夹爪)抓取 • 灵巧手抓取 7轴 Franka 对应人的手臂 6轴 UR构型去掉一个自由度 课程大纲 Robotic Manipulation 操作 • Robotic manipulation refers…...
六,Linux基础环境搭建(CentOS7)- 安装HBase
Linux基础环境搭建(CentOS7)- 安装HBase 大家注意以下的环境搭建版本号,如果版本不匹配有可能出现问题! 一、HBase下载及安装 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“…...
《计算机网络网络层:连接虚拟世界的关键桥梁》
一、网络层概述 网络层在计算机网络中占据着至关重要的地位,它作为连接不同网络的关键层次,起着承上启下的作用。网络层的主要任务是实现网络互连,将数据设法从源端经过若干个中间节点传送到目的端,为分组交换网上的不同主机提供通…...
【AIGC】2024-arXiv-CtrLoRA:一种可扩展且高效的可控图像生成框架
2024-arXiv-CtrLoRA: An Extensible and Efficient Framework for Controllable Image Generation CtrLoRA:一种可扩展且高效的可控图像生成框架摘要1. 引言相关工作3. 方法3.1 准备工作3.3 有效适应新条件3.4 条件嵌入网络的设计 4. 实验4.1 实验设置4.2 与现有方法…...
立仪光谱共焦在玻璃上奥秘与应用
在现代工业和科学研究中,玻璃因其透明、坚硬和易加工的特性被广泛应用于各个领域。然而,玻璃的厚度测量一直是困扰业界的一大难题。传统的千分尺或电容式传感器虽然在一定程度上能满足生产需求,但在精度、效率以及适用范围上存在明显的局限。…...
【天气识别系统】Python+卷积神经网络算法+人工智能+深度学习+TensorFlow+算法模型训练+Django网页界面
一、介绍 天气识别系统,以Python作为主要编程语言,通过收集了4种常见的天气图像数据集(多云、雨天、晴天、日出),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练,最后得到一个识…...
labelme安装在D盘【详细教程】
github地址 https://github.com/Wkentaro/labelme 一、安装步骤(CMD 直接复制执行) 以管理员身份打开 CMD(WinR 输入 cmd 回车,右键以管理员运行)依次执行下面的命令,每一行输完按回车: # 1. 进…...
基因组调查实战:KMC+GenomeScope2.0多倍体分析全流程解析
1. 为什么需要基因组调查? 当你第一次拿到一个未知物种的测序数据时,最头疼的问题往往是:这个基因组到底有多大?复杂度如何?该投入多少测序量才够用?这就好比装修房子前要先量尺寸,基因组调查就…...
从零学NLP:自然语言处理完整学习路线
从零学NLP:自然语言处理完整学习路线 标签:#自然语言处理、#人工智能、#大模型、#大模型实战、#transformer、#机器学习、#深度学习 自然语言处理行业价值、核心应用场景 2026年,自然语言处理(NLP)已是AI最普适的技术&…...
新手必看:在快马平台三步生成mobaxterm中文设置图文指南
今天想和大家分享一个超级实用的技巧——如何把Mobaxterm的界面设置成中文。作为一个过来人,我特别理解新手面对全英文界面的那种手足无措感。不过别担心,跟着下面这几个步骤操作,五分钟就能搞定! 下载安装时就要注意 在官网下载安…...
OpenClaw电商运营助手:千问3.5-35B-A3B-FP8批量处理商品图并生成详情页文案
OpenClaw电商运营助手:千问3.5-35B-A3B-FP8批量处理商品图并生成详情页文案 1. 为什么需要自动化电商运营工具 去年帮朋友打理一家小众饰品网店时,我深刻体会到电商运营的重复劳动痛点。每天要手动下载平台商品图,用PS调整尺寸,…...
鼎捷T100程序开发实战:从核心类型到高效开发全解析
1. 鼎捷T100程序开发入门指南 第一次接触鼎捷T100系统开发时,我被它复杂的架构搞得晕头转向。记得当时接到一个采购单维护的需求,连最基本的程序类型都分不清楚,结果在开发过程中反复修改了好几次。经过这些年的实战,我总结出一套…...
基于深度学习的手把手学习 YOLOv8-Pose 关键点检测实战:杂草根茎关键点标注与训练全流程指南
YOLOv8-Pose 关键点检测实战:杂草根茎关键点标注与训练全流程指南 作者:张教授(计算机视觉与农业AI实验室主任) 引言在精准农业和智能除草领域,杂草根茎关键点检测技术具有重要意义。传统YOLO系列主要关注目标检测&…...
NopeCHA验证码扩展缓存机制详解:提升验证码识别速度的10个关键优化技巧
NopeCHA验证码扩展缓存机制详解:提升验证码识别速度的10个关键优化技巧 【免费下载链接】nopecha-extension Automated CAPTCHA solver for your browser. Works with Selenium, Puppeteer, Playwright, and more. 项目地址: https://gitcode.com/gh_mirrors/no/n…...
算法岗面试避坑指南:从运动控制到ROS实战的思维跃迁
1. 运动控制算法岗面试的核心痛点 运动控制算法岗位的面试往往聚焦于候选人对复杂系统的理解能力。很多同学在准备这类面试时容易陷入两个极端:要么死磕公式推导却说不清实际应用场景,要么堆砌项目经历但缺乏技术深度。我在面试实习生时经常遇到这样的情…...
工业自动化通信选型指南:为什么HSLCommunication比传统Modbus更适合你的项目?
工业自动化通信协议深度解析:HSLCommunication如何重塑设备互联标准 在工业4.0时代背景下,设备间的实时数据交互已成为智能制造系统的生命线。作为系统架构师,我曾参与多个大型自动化项目,亲眼见证过通信协议选型不当导致的产线瘫…...
