WebDynproABAP入门教程:设计与开发原理

需积分: 9 2 下载量 32 浏览量 更新于2024-07-16 收藏 2.25MB PDF 举报
"CD161_CN.pdf - 详细介绍Web Dynpro ABAP的开发原理和思路,适合初学者学习WDA设计和技术,以便快速掌握相关技能。" 本文档深入讲解了Web Dynpro ABAP(WDA),这是一个用于构建企业级应用程序的强大工具,特别适用于SAP系统。Web Dynpro ABAP是SAP提供的一个面向对象的开发框架,它允许开发者创建丰富的、交互式的Web用户界面。以下是Web Dynpro ABAP的关键知识点: 1. **Web Dynpro ABAP的定位**: Web Dynpro ABAP是SAP用户界面策略的重要组成部分,旨在提供高度结构化和可维护的开发环境,以支持复杂的业务流程。它与其他UI技术(如SAP GUI, SAP Fiori, 或HTML5-based UIs)并存,但专注于提供企业级的业务应用界面。 2. **Web Dynpro ABAP家族和目标**: Web Dynpro ABAP是Web Dynpro家族的一员,专为ABAP开发者设计。它的主要目标是简化开发过程,提供强大的布局管理、数据绑定和业务逻辑集成能力,同时确保性能和可扩展性。 3. **Web Dynpro ABAP编程模型**: 基于Model-View-Controller (MVC)架构,Web Dynpro ABAP将应用程序分解为独立的组件,便于管理和维护。模型负责处理数据,视图负责显示用户界面,控制器协调两者之间的交互。 4. **MVC组件模型**: - **模型(Model)**:存储和管理业务数据,可以与后端系统的ABAP业务逻辑直接交互。 - **视图(View)**:定义用户界面布局和元素,通过控件(Controllers)与模型进行数据绑定。 - **控制器(Controller)**:作为模型和视图的桥梁,处理用户输入,调用业务逻辑,更新视图显示。 5. **其他关键特性**: - **Context**:数据上下文,用于在组件内传递和管理数据。 - **Event Handling**:支持事件驱动的编程,允许对用户交互作出响应。 - **Algorithms and Loops**:内建支持算法和循环,简化复杂业务逻辑的实现。 - **Reuse**:组件和控件的可重用性,促进代码复用和模块化开发。 - **Integration**:能够无缝集成到SAP NetWeaver环境中,与SAP业务流程和其他服务交互。 6. **学习路径**: 对于初学者,理解Web Dynpro ABAP的基础概念和组件模型至关重要。之后,通过实践项目和实例,逐步熟悉开发流程,包括设计视图、配置控制器、编写业务逻辑和调试等步骤。 7. **未来发展方向**: 虽然文档可能提及了SAP的未来战略,但请注意,SAP可能会根据市场和技术变化调整其产品路线图。持续关注SAP官方更新,以获取最新信息和最佳实践。 Web Dynpro ABAP提供了一个高效且灵活的平台,让开发者能够构建功能丰富的SAP应用程序。通过深入学习和实践,初学者可以逐渐掌握这个强大的工具,并在企业级应用开发中发挥重要作用。

#-*- coding:utf-8 -*- import os #from win32com.client import Dispatch, constants, gencache, DispatchEx import win32api import win32com.client def pdf_xls(root,filename,name): if(filename.find('.xlsx')>=0): pdfname = root+os.sep+filename.replace(".xlsx", ".pdf") else: pdfname = root+os.sep+filename.replace(".xls", ".pdf") xlApp=win32com.client.Dispatch('Excel.Application') xlApp.Visible = 0 xlApp.DisplayAlerts = 0 books = xlApp.Workbooks.Open(name,False) for sh in books.Sheets: sh.PageSetup.Orientation = 1 sh.PageSetup.Zoom = False sh.PageSetup.FitToPagesWide= 1 books.ExportAsFixedFormat(0, pdfname) books.Close() print('保存 PDF 文件:', pdfname) xlApp.Quit() def pdf_doc(root,filename,name): if(name.find('.docx')>=0): pdfname =root+os.sep+filename.replace(".docx", ".pdf") else: pdfname = root+os.sep+filename.replace(".doc", ".pdf") print(pdfname) #print(pdfwj) exec_tool = 'kwps.application' word = win32com.client.DispatchEx(exec_tool) word.Visible = 0 word.DisplayAlerts = 0 password='666666' doc = word.Documents.Open(name,True,False,False,password,password,Visible=False) doc.SaveAs(pdfname,FileFormat=17) #doc.ExportAsFixedFormat(0,pdfname) doc.Close() word.Quit() if __name__ == "__main__": path=input('输入文档路径') for root, directories, files in os.walk(path): n=0 for fileList in files: name=root+ os.sep+fileList #文件名 if (name.find('.doc')>=0): print(name+"开始执行") try: pdf_doc(root,fileList,name) print(name+"已完成执行") except Exception as re: f=open("error_data.txt","a",encoding='UTF-8') f.write(str(name)+str(re)+"\n") f.close() if name.find('.xls')>=0: print(name+"开始执行") try: pdf_xls(root,fileList,name) #root 目录 fileList 文档名称 name 文件加文档名 except Exception as re: f=open("error_data.txt","a",encoding='UTF-8') f.write(name+str(re)+"\n") f.close()这个程序怎么用

2023-06-08 上传

将下列代码改为对上海证券交易所网站公告爬取from concurrent.futures import ThreadPoolExecutor import requests headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.159 Safari/537.36" } def download_pdf(url, code, num, date): print(f'开始下载 data/{code}_{date}_{num}.pdf') resp = requests.get(url, headers=headers) with open(f'E:/深交所pdf/{code}_{date}_{num}.pdf', 'wb') as f: f.write(resp.content) resp.close() print(f'E:/深交所pdf/{code}_{date}_{num}.pdf 下载完毕!') if __name__ == '__main__': domain = 'http://www.sse.cn' with ThreadPoolExecutor(30) as t: with open('target.csv', 'r') as f: lines = f.readlines() for line in lines: param = list(line.split()) form = { 'seDate': [param[3], param[3]], 'stock': [param[0]], 'channelCode': ['listedNotice_disc'], 'pageSize': '50', 'pageNum': '1' } # 获取文件列表的url get_file_list_url = 'http://www.sse.com.cn/disclosure/listedinfo/announcement/json/announce_type.json?v=0.9715488799747511' resp = requests.post(get_file_list_url, headers=headers, json=form) # resp.encoding = 'utf-8' # print(resp.json()) js = resp.json() resp.close() tot = 0 for data in js['data']: tot += 1 download_url = domain + f'/api/disc/info/download?id={data["id"]}' t.submit(download_pdf, url=download_url, code=param[0], num=tot, date=param[3]) print("下载完毕!!!") # doc_id = '' # download_url = domain + f'/api/disc/info/download?id={"c998875f-9097-403e-a682-cd0147ce10ae"}' # resp = requests.get(download_url, headers=headers) # with open(f'{"c998875f-9097-403e-a682-cd0147ce10ae"}.pdf', 'wb') as f: # f.write(resp.content) # resp.close()

2023-06-03 上传