ABAP-本地文件上载到SAP 服务器
SAP批导入处理教程2024新版

适用范围及场景
场景举例
定期更新或维护主数据时,批量 导入修改后的数据。
适用范围:适用于所有需要使用 SAP系统处理大量数据的场景,如 物料主数据、客户主数据、供应 商主数据等的批量导入。
初始化系统时,批量导入基础数 据。
与其他系统集成时,通过批导入 实现数据的交换和同步。
批导入流程简介
1. 准备数据
05
常见问题与解决方案
数据格式问题
数据格式不匹配
确保导入文件的数据格式与SAP 系统要求的数据格式一致,包括
字段分隔符、文本标识符等。
数据编码问题
检查文件的编码格式,通常SAP 系统使用UTF-8编码,需要确保 导入文件也是相同的编码格式。
非法字符处理
移除或替换导入文件中的非法字 符,避免在导入过程中造成错误
5. 检查和处理错误
05 检查导入过程中出现的错误,
并进行相应的处理。
6. 确认导入结果
06 确认数据已成功导入到SAP系
统中,并进行必要的后续处理 。
02
数据准备与格式要求
数据来源及格式规范
外部系统导出
如Excel、CSV、XML等。
手工录入
通过SAP界面手动输入。
数据来源及格式规范
01
02
设置会话参数
根据实际需求,设置会话参数,如处 理模式、错误处理方式等。
创建新的批输入会话
点击“创建”按钮,输入会话名称、 描述、用户等信息,选择所需的事务 代码。
上传数据文件
准备数据文件
01
确保数据文件格式正确,包含所需字段,且符合SAP系统要求
。
进入事务代码SM37
02
在SAP系统中输入事务代码SM37,进入批输入数据上传界面。
用ABAP实现webservice,发布SAP的xlm地址

创建的流程是:创建的步骤:1.使用向导创建一个web serviceA:SE80,找一个package,右键Create →Enterprise Service / WebService →Web Service.2.进入向导页面:继续:根据自己的情况选择:主要是根据需求来定的,如果是个function,就可以选择function继续:选择自己需要的BAPI,注意:需要增加BAPI Commit/Rollback2.释放定义的WEB SERVICEA:TCODE:WSCONFIG输入创建的名字及变式,点击创建,然后保存就可以了B:TCODE:WSADMIN找到自己的创建web名字,点击左上角的Web service--WSDL就可以打开,但这个需要在host及主机上配置,所以不再这里演示-------------------------------------ABAP 创建并调用WebService(原创)2010-04-28 16:51一. 创建Webservice有两种方式创建webservice,一种是在se80中使用wizard生成,另一种是直接在se37中给予function生成,具体操作如下:1.se80中Create-->Enterprise Service/Web Service --> Web Servcie维护service名,选择一个poit type(type point为一个功能点:如,Bapi中的Method,FunctionGroup中的一个function,一个function或者Message Interface:XI)2.se37 Utility--> More Utility --> Create WebService -->From the Function Module在创建完成的时候可以选择立刻release,否则需要在wsconfig中进行release。
abap 数据传输流程

abap 数据传输流程Data transmission in ABAP is a crucial process that enables the exchange of information between different systems and applications. This process involves sending, receiving, and processing data in a secure and efficient manner. ABAP provides various methods fordata transmission, such as remote function calls (RFC), web services, and data exchange using files or databases.ABAP 数据传输是一个至关重要的过程,它使不同系统和应用程序之间的信息交换成为可能。
这个过程涉及以安全有效的方式发送,接收和处理数据。
ABAP提供了各种数据传输方法,例如远程函数调用(RFC),web服务,以及使用文件或数据库进行数据交换。
Remote Function Calls (RFC) is a common method used in ABAP for data transmission between SAP systems or between SAP and non-SAP systems. RFC allows for the execution of functions or programsin a remote system by invoking remote function modules. This method enables real-time communication between different systems and ensures the seamless transfer of data.远程函数调用(RFC)是ABAP中常用的一种方法,用于在SAP系统之间或在SAP和非SAP系统之间进行数据传输。
ABAP批导库存程序SAP

ABAP批导库存程序SAP*&---------------------------------------------------------------------**& Report Z_PIDAOKUCUN3*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT z_pidaokucun3.TABLES: mkpf,mseg,prps,seri,proj,equi,mbew.DATA: BEGIN OF alv_itab OCCURS0,bldat(10) TYPE c, "凭证中的凭证日期budat(10) TYPE c, "凭证中的过帐日期bwart(3) TYPE c, "移动类型sobkz(1) TYPE c, "特殊库存标志lifnr(10) TYPE c, "供应商kunnr(10) TYPE c, "客户pspnr(24) TYPE c, "WBS元素werks(4) TYPE c, "工厂lgort(4) TYPE c, "库存地点matnr(18) TYPE c, "物料号erfmg(13) TYPE c, "数量erfme(3) TYPE c, "单位ebeln(10) TYPE c, "采购订单号ebelp(5) TYPE c, "采购订单行项目exbwr(13) TYPE c, "'本地币计金额 sernr(24) TYPE c, ""序列号messa(100) TYPE c, "用于存储检测消息END OF alv_itab.DATA: BEGIN OF temp_itab OCCURS0,bldat(10) TYPE c, "凭证中的凭证日期 budat(10) TYPE c, "凭证中的过帐日期 bwart(3) TYPE c, "移动类型sobkz(1) TYPE c, "特殊库存标志lifnr(10) TYPE c, "供应商kunnr(10) TYPE c, "客户pspnr(24) TYPE c, "WBS元素werks(4) TYPE c, "工厂lgort(4) TYPE c, "库存地点matnr(18) TYPE c, "物料号erfmg(13) TYPE c, "数量erfme(3) TYPE c, "单位ebeln(10) TYPE c, "采购订单号ebelp(5) TYPE c, "采购订单行项目exbwr(13) TYPE c, "'本地币计金额sernr(24) TYPE c, ""序列号END OF temp_itab.TYPE-POOLS:slis.DATA: ss_fname TYPE string.DATA:it_bdc LIKE bdcdata OCCURS0WITH HEADER LINE. "内表定义DATA layout TYPE slis_layout_alv .DATA fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE . DATA fact LIKE LINE OF fieldcat.*DATA:bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE. "内表定义SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1. SELECTION-SCREEN:SKIP1.PARAMETERS: p_test AS CHECKBOX.SELECTION-SCREEN:SKIP2.PARAMETERS:s_fname LIKE rlgrap-filename OBLIGATORY. SELECTION-SCREEN:SKIP1.SELECTION-SCREEN END OF BLOCK b1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fname.PERFORM get_s_fname.INITIALIZATION.t1 = '文件路径(去抬头的TXT文件)'.START-OF-SELECTION.PERFORM upload_to_itab. "把数据导入内表LOOP AT temp_itab.CALL FUNCTION'CONVERSION_EXIT_ALPHA_OUTPUT'"去掉物料号的前导0EXPORTINGinput = temp_itab-matnrIMPORTINGoutput = temp_itab-matnr.ENDLOOP .IF p_test = 'X'.PERFORM output. ""检查数据并ALV显示ELSE.CASE temp_itab-bwart.WHEN'561'or'562' ."当移动类型是561时,继续判断是哪种类型IF temp_itab-sobkz = ' ' .IF temp_itab-sernr = ' '.PERFORM call_mb1c_561. "当移动类型为561,特殊移动类型为空,无序列号ELSE.PERFORM call_mb1c_561_sernr. "当移动类型为561,特殊移动类型为空,有序列号ENDIF.ELSEIF temp_itab-sobkz = 'Q'.IF temp_itab-sernr = ' '.PERFORM call_mb1c_561_q. "当移动类型为561,特殊移动类型为Q,无序列号ELSE.PERFORM call_mb1c_561_q_sernr. "当移动类型为561,特殊移动类型为Q,有序列号ENDIF.ENDIF.WHEN'101'or'102'."执行 MB01PERFORM call_mb01_101.ENDCASE.ENDIF.*&---------------------------------------------------------------------**& Form get_s_fname*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM get_s_fname. "获取文件路径CALL FUNCTION'WS_FILENAME_GET'EXPORTINGdef_filename = '*.TXT 'def_path = 'C:\ 'mask = ',*.TXT 'mode = 'O 'title = '请选择要上传的文件 ' IMPORTINGfilename = s_fnameEXCEPTIONSinv_winsys = 1no_batch = 2selection_cancel = 3selection_error = 4OTHERS = 5.IF sy-subrc <> 0.ENDIF.ENDFORM. "get_s_fname*把数据导入到内表里面FORM upload_to_itab.CALL FUNCTION'WS_UPLOAD' EXPORTINGcodepage = '8400'filename = s_fname filetype = 'DAT' TABLES data_tab = temp_itab EXCEPTIONSfile_open_error = 1file_read_error = 2no_batch = 3gui_refuse_filetransfer = 4invalid_type = 5no_authority = 6unknown_error = 7bad_data_format = 8header_not_allowed = 9separator_not_allowed = 10header_too_long = 11unknown_dp_error = 12access_denied = 13dp_out_of_memory = 14disk_full = 15dp_timeout = 16OTHERS = 17.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.DELETE temp_itab WHERE matnr = ' '.ENDFORM. "upload_to_itab*&---------------------------------------------------------------------**& Form output*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM output.DATA: stprs TYPE mbew-stprs .data: sernr type EQUI-sernr .data: sernp type marc-sernp.data: mmsta type marc-mmsta.DATA: messa1(50) TYPE c,messa2(50) TYPE c,messa3(50) TYPE c,messa4(50) TYPE c,messa5(50) TYPE c.LOOP AT temp_itab.APPEND temp_itab TO alv_itab.ENDLOOP.LOOP AT alv_itab.CALL FUNCTION'CONVERSION_EXIT_ALPHA_INPUT'"加上物料号的前导0EXPORTINGinput = alv_itab-matnrIMPORTINGoutput = alv_itab-matnr.CALL FUNCTION'CONVERSION_EXIT_GERNR_INPUT'"加上序列号的前导0EXPORTINGinput = alv_itab-SERNRIMPORTINGoutput = alv_itab-SERNR.SELECT SINGLE * FROM mseg WHERE mseg~matnr = alv_itab-matn r AND mseg~werks = 2100. "判断2100工厂中是否存在该物料号IF sy-subrc <> 0.messa1 = '工厂2100中不存在该物料号,'.else.select single marc~mmsta into mmsta from marc where mar c~matnr = alv_itab-matnr.IF mmsta = 'D'.messa1 = '未做成本估算'.ENDIF.ENDIF.SELECT SINGLE * FROM mseg WHERE mseg~lgort = alv_itab-lgor t AND mseg~werks = '2100'."判断2100工厂中是否存在该库存地点IF sy-subrc <> 0.messa2 = '工厂2100中不存在该库存地点,'.ENDIF.IF alv_itab-pspnr IS NOT INITIAL .SELECT SINGLE * FROM proj WHERE proj~pspid = alv_itab-psp nr AND proj~vbukr = '2100'.IF sy-subrc <> 0.messa3 = '公司2100中不存在该WBS元素,'.ENDIF.ENDIF.SELECT SINGLE mbew~stprs INTO stprs FROM mbew WHERE mbew~ matnr = alv_itab-matnr.IF stprs IS INITIAL.messa4 = '该物料价格没有维护,'.SELECT SINGLE marc~sernp INTO sernp from marc where marc~mat nr = alv_itab-matnr.IF sernp IS INITIAL.IF alv_itab-sernr is not INITIAL .messa5 = '该物料不能有序列号'.ENDIF.elseif sernp = 'Z012'.IF alv_itab-sernr is NOT INITIAL .SELECT equi~sernr INTO sernr FROM EQUI WHERE EQUI ~matnr = alv_itab-matnr and equi~sernr = alv_itab-sernr ."" 取物料号的时候有很多符合条件的序列号值,怎样才能找到想要的那个序列号IF sernr is initial.messa5 = '物料不存在该序列号'.ENDIF.ENDSELECT.ELSEIF alv_itab-sernr IS INITIAL.messa5 = '物料需要填写序列号'.endif.* IF alv_itab-sernr is not INITIAL .CALL FUNCTION'CONVERSION_EXIT_GERNR_OUTPUT'"去掉序列号的前导0EXPORTINGinput = alv_itab-SERNRIMPORTINGoutput = alv_itab-SERNR.** ENDIF.* ENDIF.CONCATENATE messa1 messa2 messa3 messa4 messa5 INTO alv_ita b-messa .MODIFY alv_itab.CLEAR: messa1,messa2,messa3,messa4,messa5.ENDLOOP.PERFORM frm_alv_display.layout-colwidth_optimize = 'X'.CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = sy-repidis_layout = layoutit_fieldcat = fieldcat[]TABLESt_outtab = alv_itabEXCEPTIONSprogram_error = 1OTHERS = 2.IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.ENDFORM. "output*&---------------------------------------------------------------------**& Form frm_alv_display*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM frm_alv_display.PERFORM frm_alv_evt USING: 'MESSA''检测消息','BLDAT''凭证日期','BUDAT''过账日期','BWART''移动类型','SOBKZ''特殊库存标志','LIFNR''供应商','KUNNR''客户','PSPNR''WBS元素','WERKS''工厂','LGORT''库存地点','MATNR''物料号','ERFMG''数量','ERFME''单位','EBELN''采购订单号','EBELP''采购订单航项目','EXBWR''本地币计金额','SERNR''序列号'.ENDFORM. "frm_alv_display*&---------------------------------------------------------------------**& Form frm_alv_evt*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_VALUE text* -->P_NAME text*----------------------------------------------------------------------*FORM frm_alv_evt USING p_value p_name.fact-fieldname = p_value.fact-seltext_l = p_name.APPEND fact TO fieldcat.CLEAR fact.ENDFORM. "frm_alv_evt*&---------------------------------------------------------------------**& Form call_mb1c_561*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM call_mb1c_561. "561移动类型的库存导入CLEAR it_bdc[].PERFORM frm_bdc_dynpro USING: 'SAPMM07M''0400'.PERFORM frm_bdc_field USING: 'BDC_CURSOR''RM07M-LGORT','BDC_OKCODE''/00','MKPF-BLDAT' temp_itab-bldat,'MKPF-BUDAT' temp_itab-budat,'RM07M-BWARTWA' temp_itab-bwart,'RM07M-WERKS' temp_itab-werks,'RM07M-LGORT' temp_itab-lgort,'XFULL'' ','RM07M-WVERS2''X'. PERFORM frm_bdc_dynpro USING: 'SAPMM07M''0421'.PERFORM frm_bdc_field USING: 'BDC_CURSOR''MSEG-ERFMG(01)','BDC_OKCODE''=PF02','MSEG-MATNR(01)' temp_itab-matn r,'MSEG-ERFMG(01)' temp_itab-erfm g.PERFORM frm_bdc_dynpro USING: 'SAPMM07M''0410'.PERFORM frm_bdc_field USING: 'BDC_CURSOR''MSEG-EXBWR','BDC_OKCODE''=BU','MSEG-ERFMG' temp_itab-erfmg,'MSEG-EXBWR' temp_itab-exbwr. CALL TRANSACTION'MB1C'USING it_bdc MODE'E'. ENDFORM. "call_mb1c_561。
SAP数据导入方案

SAP数据导入方案1. 引言数据导入是在SAP系统中常见的任务之一,它允许用户将外部系统中的数据导入到SAP系统中。
在本文档中,我们将讨论SAP数据导入的方案和最佳实践。
2. 数据导入方法在SAP系统中,有多种方法可供选择来导入数据。
以下是一些常见的方法:2.1 ABAP数据上传ABAP数据上传是一种通过编写ABAP代码来实现数据导入的方法。
它允许用户根据自己的需求和要求在SAP系统中创建自定义的导入程序。
这种方法适用于复杂的数据导入任务,但需要具备编程知识。
2.2 SAP数据迁移对象 (DMO)SAP数据迁移对象 (DMO) 是一个SAP提供的数据导入工具。
它允许用户使用预定义的数据对象将外部系统中的数据导入到SAP系统中。
用户只需配置适当的映射关系和转换规则,然后将数据文件上传到SAP系统即可。
2.3 第三方数据导入工具除了SAP提供的工具之外,还有许多第三方工具可用于数据导入。
这些工具通常具有更友好的用户界面和更丰富的功能,可以更轻松地导入和转换数据。
一些流行的第三方工具包括IDoc导入工具、LSMW和BDC。
3. 数据准备在进行数据导入之前,必须确保数据已经准备好并符合SAP系统的要求和限制。
以下是一些数据准备的最佳实践:3.1 数据清洗在导入数据之前,应该先对数据进行清洗。
这包括去除重复数据、修复格式错误、填充缺失的数据等。
数据清洗可以提高数据质量并减少错误。
3.2 数据映射在将数据导入到SAP系统之前,必须确定外部系统中的数据如何映射到SAP系统中的字段和对象。
这通常涉及到定义映射规则和配置转换逻辑。
确保正确的数据映射可以防止数据丢失或错误。
3.3 数据验证在导入数据之前,应该先对数据进行验证。
这包括检查数据的完整性、一致性和有效性。
确保数据的正确性可以提高SAP系统的数据质量和准确性。
4. 数据导入过程在实际进行数据导入时,需要按照以下步骤来执行:4.1 创建数据导入任务首先,需要在SAP系统中创建一个数据导入任务。
本地开发的SAPUI5应用,部署到ABAP服务器执行出错的问题分析

本地开发的SAPUI5应用,部署到ABAP服务器执行出错的问题分析我使用 SAP UI5 Tools 的CLI 工具,运行命令 npm run deploy 将Visual Studio Code 里开发的SAP UI5 应用,部署到ABAP 服务器后,成功生成了 url:https://er9.sap:44300/sap/bc/ui5_ui5/sap/zjerrypureui5?sap -client=001但是浏览器打不开:错误消息:ICF Node NOT found!登录后台执行事物码 sicf,确实没有在路径 ui5_ui5 下面发现 zjerrypureui5 这个节点。
下面的url 是我之前这篇文章本地开发好的SAP Fiori Elements 应用,如何部署到ABAP 服务器上?成功部署到ER9 系统后生成的url:https://er9:44300/sap/bc/bsp/sap/jerryfioriapp/index.html 一些常见的错误HTTP Status 504 - An internal application error occurred 如果应用程序包含一个相当大的文件,并且HTML5 dispatcher (位于从 SAP Web IDE 到 SAP 系统的 route 上)在尝试 dispatch 时出现超时,则可能会发生这种情况。
有时,HTML5 dispatcher 的超时时间 (30s) 比 ABAP 系统本身(5m) 更短。
发生这种情况时,ABAP 系统实际上能够处理大文件的上传,但 HTML5 调度程序会在此过程中引发超时。
解决方法是增加 HTML5 Dispatcher 的超时时间。
为此,请按照访问REST 服务中目标属性下的说明进行操作,并将超时增加到最大值 300 秒。
如果您在提高超时后仍然遇到此错误,您可能需要执行 ICM 硬关机。
ICM (Internet Communication Manager) 处理所有 inbound HTTP/HTTPS/SMTP 连接。
ABAP-文件操作
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
ENDLOOP.
CLOSE DATASET gdf_filepath.
读取服务器文件
使用ABAP的OPEN DATASET带FOR INPUT语句打开文件;
使用READ DATASET语句读取文件;
使用CLOSE DATASET关闭文件。
PARAMETERS p_file TYPE dxfile-filename.
在SAP的ABAP编程中,经常涉及到文件的处理,SAP的按照不同分类,有服务端文件和客户端文件,文本文件和二进制文件(EXE文件,Office文件,PDF文件等)。
服务器文件的浏览
可以是用TCode:AL11查看服务器的文件夹和文件,可以点击配置“Configure”创建和管理文件夹。
创建和修改服务器文件
如何使用Search Help
使用'F4_DXFILENAME_4_DYNP'函数
PARAMETERS p_file TYPE dxfile-filename.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_DXFILENAME_4_DYNP'
l_filename TYPE string,
l_fullpath TYPE string,
l_path TYPE string.
MOVE filename TO filename_new.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
ABAP DOWNLOAD & UPLOAD
中
小 订阅
1.UPLOAD
将所需要的资料从其它系统"上载"到SAP系统叫"UPLOAD",目前,我们在使用时,都是将资料转成文本文件(.TXT FILE),然后CALL FUNCTION将此文本文件读到internal table中.
NAME = 'D:\TEMP\TESTA.TXT'.
TYPA = 'DAT'.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
CODEPAGE = 'TESTA'
FILENAME = NAME
FILETYPE = TYPA
ITEM = '读入文件'
TABLES
DATA_TAB = MAN1
EXCEPTIONS
CONVERSION_ERROR = 1
INVAIL_TABLE_WIDTH = 2
INVAIL_TYPE = 3.
TABLES
DATA_TAB = <Internal table>
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
OTHERS = 8.
其中:
<filename>是已经准备好的TEXT FILE;
abap 文件上传下载例子
结果截图代码:*&---------------------------------------------------------------------* *& Report Z_HANDLE_LOCAL_FILE*& wangfupeng 20150320*&---------------------------------------------------------------------* *&服务器文件与本地文件之间的上传下载*&---------------------------------------------------------------------*REPORT Z_HANDLE_LOCAL_FILE.SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.PARAMETERS:P_UP RADIOBUTTON GROUP GP1 DEFAULT 'X',P_DOWN RADIOBUTTON GROUP GP1.SELECTION-SCREEN BEGIN OF LINE.PARAMETERS P_FILE TYPE STRING.SELECTION-SCREEN POSITION 50.SELECTION-SCREEN COMMENT (20) P_COMM FOR FIELD P_FILE. SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK BLK1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .PERFORM FRM_GETFILEPATH.* PERFORM FRM_GETFILEPATH2.AT SELECTION-SCREEN .PERFORM FRM_CHECKFILE.PERFORM FRM_GETFILE_SIZE.INITIALIZATION.P_COMM = ''.START-OF-SELECTION.IF P_UP = 'X'.PERFORM FRM_UPLOAD_FILE.ELSEIF P_DOWN = 'X'.PERFORM FRM_DOWN_FILE.ENDIF.*&---------------------------------------------------------------------**& Form FRM_UPLOAD_FILE*&---------------------------------------------------------------------** 上传文件到服务器*----------------------------------------------------------------------* FORM FRM_UPLOAD_FILE ."TCODE CG3Z 上传文件到服务器CG3Y 下载文件到本地"上传文件的文件路径必须是服务中已经存在的文件"AL11查看服务器中的文件"上传文件中有汉字可能会出现乱码"CALL FUNCTION 'C13Z_FILE_DOWNLOAD_ASCII'CALL FUNCTION 'C13Z_FILE_UPLOAD_ASCII'EXPORTINGI_FILE_FRONT_END = P_FILE "本地文件路径I_FILE_APPL = 'C:\usr\sap\1.txt'"服务器路径I_FILE_OVERWRITE = ESP1_TRUE "是否覆盖EXCEPTIONSFE_FILE_NOT_EXISTS = 1FE_FILE_READ_ERROR = 2AP_NO_AUTHORITY = 3AP_FILE_OPEN_ERROR = 4AP_FILE_EXISTS = 5AP_CONVERT_ERROR = 6OTHERS = 7.IF SY-SUBRC = 0.MESSAGE 'UPLOAD SUCCESS' TYPE 'S'.ELSE.MESSAGE 'UPLOAD FAILURE' TYPE 'S' DISPLAY LIKE 'E'.ENDIF.ENDFORM. " FRM_UPLOAD_FILE*&---------------------------------------------------------------------**& Form FRM_UPLOAD_FILE*&---------------------------------------------------------------------** 从服务器下载文件*----------------------------------------------------------------------* FORM FRM_DOWN_FILE .CALL FUNCTION 'C13Z_FILE_DOWNLOAD_ASCII'EXPORTINGI_FILE_FRONT_END = P_FILE "本地文件路径I_FILE_APPL = 'C:\usr\sap\1.txt'"服务器路径I_FILE_OVERWRITE = ESP1_TRUE "是否覆盖EXCEPTIONSFE_FILE_OPEN_ERROR = 1FE_FILE_EXISTS = 2FE_FILE_WRITE_ERROR = 3AP_NO_AUTHORITY = 4AP_FILE_OPEN_ERROR = 5AP_FILE_EMPTY = 6AP_PATH_ERROR = 7OTHERS = 8.IF SY-SUBRC = 0.MESSAGE 'DOWNLOAD SUCCESS' TYPE 'S'.ELSE.MESSAGE 'DOWNLOAD FAILURE' TYPE 'S' DISPLAY LIKE 'E'.ENDIF.ENDFORM. " FRM_UPLOAD_FILE*&---------------------------------------------------------------------**& Form FRM_GETFILEPATH*&---------------------------------------------------------------------** 获得文件路径*----------------------------------------------------------------------* FORM FRM_GETFILEPATH .DATA:LT_FILE TYPE FILETABLE WITH HEADER LINE,FILE_NUM TYPE I ,ACTION TYPE I,ENCODING TYPE ABAP_ENCOD.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTINGWINDOW_TITLE = 'Title'DEFAULT_EXTENSION = '*.*'FILE_FILTER = '文本文件(*.TXT)|*.TXT|Excel 文件(*.XLS)|*.XLS;*.XLSX|所有文件(*.*)|*.*|' WITH_ENCODING = 'X'INITIAL_DIRECTORY = 'D:\'MULTISELECTION = 'X'CHANGINGFILE_TABLE = LT_FILE[]RC = FILE_NUMUSER_ACTION = ACTION "OK CANCELFILE_ENCODING = ENCODINGEXCEPTIONSFILE_OPEN_DIALOG_FAILED = 1CNTL_ERROR = 2ERROR_NO_GUI = 3NOT_SUPPORTED_BY_GUI = 4OTHERS = 5.IF ACTION = 0 AND SY-SUBRC = 0 .READ TABLE LT_FILE INDEX 1.P_FILE = LT_FILE-FILENAME.ENDIF.ENDFORM. " FRM_GETFILEPATH*&---------------------------------------------------------------------**& Form FRM_CHECKFILE*&---------------------------------------------------------------------** 检查文件路径是否存在*----------------------------------------------------------------------* FORM FRM_CHECKFILE .DATA:LV_FILENAME TYPE STRING,"文件路径LV_RESULT TYPE C. "是否找到LV_FILENAME = P_FILE.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXISTEXPORTINGFILE = LV_FILENAME RECEIVINGRESULT = LV_RESULTEXCEPTIONSCNTL_ERROR = 1WRONG_PARAMETER = 3NOT_SUPPORTED_BY_GUI = 4OTHERS = 5.IF LV_RESULT = ''.MESSAGE E000(OO) WITH '文件' LV_FILENAME '不存在!' .ENDIF.ENDFORM. " FRM_CHECKFILE*&---------------------------------------------------------------------* *& Form FRM_GETFILEPATH2*&---------------------------------------------------------------------* * 获得文件路径F4_FILENAME*----------------------------------------------------------------------* FORM FRM_GETFILEPATH2 .DATA LV_FILEPATH TYPE IBIPPARMS-PATH.CALL FUNCTION 'F4_FILENAME'EXPORTINGPROGRAM_NAME = SYST-CPROGDYNPRO_NUMBER = SYST-DYNNRFIELD_NAME = ' 'IMPORTINGFILE_NAME = LV_FILEPATH.P_FILE = LV_FILEPATH.ENDFORM. " FRM_GETFILEPATH2*&---------------------------------------------------------------------* *& Form FRM_GETFILE_SIZE*&---------------------------------------------------------------------* * 获得文件大小*----------------------------------------------------------------------* FORM FRM_GETFILE_SIZE .DATA LV_SIZE TYPE I.DATA LV_TEMP TYPE STRING.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_GET_SIZEEXPORTINGFILE_NAME = P_FILEIMPORTINGFILE_SIZE = LV_SIZEEXCEPTIONSFILE_GET_SIZE_FAILED = 1CNTL_ERROR = 2NOT_SUPPORTED_BY_GUI = 4OTHERS = 5.CALL METHOD CL_GUI_CFW=>FLUSH.DATA LV_I TYPE I.IF LV_SIZE < 1024.LV_TEMP = LV_SIZE.CONCATENATE LV_TEMP 'B' INTO LV_TEMP.P_COMM = LV_TEMP.ELSEIF LV_SIZE < ( 1024 ** 2 ).LV_TEMP = LV_SIZE / 1024.CONCATENATE LV_TEMP 'KB' INTO LV_TEMP.P_COMM = LV_TEMP.ELSE."IF LV_SIZE < ( 1024 ** 3 ).LV_I = LV_SIZE / ( 1024 ** 2 ).LV_TEMP = LV_I .CONCATENATE LV_TEMP 'MB' INTO LV_TEMP.P_COMM = LV_TEMP.ENDIF.ENDFORM. " FRM_GETFILE_SIZE。
sap服务器安装
虚拟机下Windows+oracle+SAP ECC 5.0+MSCS双机安装配置文档一、安装前言1.宿主机硬盘需求:本次安装宿主机硬盘需使用251G建立虚拟磁盘,分别为:虚拟机nodea:70G,需求分别为操作系统,oracle+sap 安装软件,以及oracle应用软件+oracle补丁+OFS 虚拟机nodeb:同nodea虚拟共享磁盘(即阵列柜):共111G,此次需要4个共享虚拟磁盘,用途分别为:1G 仲裁盘,80G sap 建库后的数据文件,20G sap应用程序,10G sap系统所产生的归档日志2.宿主机内存需求:大于3G,分别两个虚拟机的内存分配为1G,共使用2G。
3.软件状况及版本宿主机及两台虚拟机的操作系统均使用windows 2003企业版,升级至sp2以上虚拟机软件此次使用VMware Server 1.0.6Oracle和SAP:此次使用SAP Ecc 5.0以及SAP自带的oracle,补丁,OFSJdk:版本必须为大版本号为1.4.2中的一个,此条件为重中之重二、虚拟机的建立关于两台虚拟机以及虚拟共享磁盘的建立方法,可参照文档〈〈虚拟机下windows下oracle双机安装文档〉〉,这里着重讲磁盘空间如何分配以及安装之前的准备工作:安装完windows 2003之后,打开计算机管理✍磁盘管理,开始分区,分区的方法,也可参照oracle 双机文档,这里只描述分多少个区,分多大1.将70G的本地硬盘分为C:15G,E:F:G:分别5G 共15G,H:40G2.将80G的虚拟共享磁盘分为I:10G,J:35G,K:35G3.剩下三个虚拟共享磁盘分别为Q:1G,L:20G,M:20G分区完成后,将除了系统盘外的所有逻辑驱动器进行格式化,之后将oracle和sap的安装文件拷贝到H:盘注:系统盘C:的空间分配可在安装操作系统时做好,以上操作是两个节点均需要进行的配置完成后,可以看到如下2图所示状况:三、安装前的准备工作1.配置页面文件(两个节点均需要此操作)右键点击我的电脑✍属性✍高级✍性能✍设置✍高级✍虚拟内存✍更改,之后如下图:分别点击E:✍自定义大小✍初始大小输入4000,最大值输入4096✍点击设置根据上面的方法,对F:G:做相同处理,之后如下图点击确定✍确定✍确定,设置页面文件完毕2.安装j2sdk,以及配置参数(两个节点均需此操作)进入j2sdk1-4-2安装程序目录下,双击安装图标,点击运行开始安装,如下图:选择接受许可,点击next,继续可以选择安装路径,但是最好安装在本地硬盘上,比如C:,点击next继续:点击Install开始安装,之后一路默认,直到安装完毕j2sdk安装完毕后,需要进行设置环境变量,如下操作:右键我的电脑✍属性✍高级✍环境变量✍系统变量✍新建输入变量名和变量值如下:点击确定,之后选中Path,点击编辑在变量值的最后输入’:%JAVA_HOME%’,如下图:点击确定✍确定✍确定,JAVA的安装和环境变量设置完毕。