ABAP(笔记)
1.excel表格上传
*&---------------------------------------------------------------------*
** 程序名称:ZSDR0076
** 程序描述:
** 创建人 :ZHAIMING
** 创建日期:
*&---------------------------------------------------------------------*
** 修改记录:
** 序号:1 日期: 修改人:
** 描述:
*&---------------------------------------------------------------------*
REPORT ZSDR0076. *----------------------------------------------------------------------*
* SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BL1. *----------------------------------------------------------------------*
* AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM FRM_VALUE_REQUEST. *----------------------------------------------------------------------*
* START-OF-SELECTION. *
*----------------------------------------------------------------------*
START-OF-SELECTION. PERFORM FRM_UPLOAD_DATA.
PERFORM FRM_CALL_BAPI. *&---------------------------------------------------------------------*
*& Form FRM_VALUE_REQUEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_VALUE_REQUEST .
DATA: WA_FILETABLE TYPE FILE_TABLE,
IT_FILETABLE TYPE FILETABLE,
V_RC TYPE SY-SUBRC. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '请选择导入文件'
DEFAULT_EXTENSION = 'XLS'
CHANGING
FILE_TABLE = IT_FILETABLE
RC = V_RC
.
IF SY-SUBRC <> .
MESSAGE '读取EXCEL文件出错!' TYPE 'S'.
STOP.
ELSE.
READ TABLE IT_FILETABLE INTO WA_FILETABLE INDEX .
P_FILE = WA_FILETABLE-FILENAME.
ENDIF. IF P_FILE IS INITIAL.
MESSAGE '请选择导入的文件' TYPE 'S'.
STOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_UPLOAD_DATA .
DATA: BEGIN OF I_EXCEL OCCURS .
INCLUDE STRUCTURE ALSMEX_TABLINE.
DATA: END OF I_EXCEL.
DATA: L_ANSWER TYPE CHAR1.
DATA: L_COLUMN TYPE I.
DATA: L_PATHNAME LIKE RLGRAP-FILENAME.
DATA: C_BEGIN_ROW TYPE I VALUE , "Beginning row of excel file
C_BEGIN_COL TYPE I VALUE , "Beginning column of excel file
C_END_ROW TYPE I VALUE , "Ending row of excel file
C_END_COL TYPE I VALUE . "Ending column of excel file
FIELD-SYMBOLS: <FS>. MOVE P_FILE TO L_PATHNAME. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = L_PATHNAME
I_BEGIN_COL = C_BEGIN_COL
I_BEGIN_ROW = C_BEGIN_ROW
I_END_COL = C_END_COL
I_END_ROW = C_END_ROW
TABLES
INTERN = I_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS =
UPLOAD_OLE =
OTHERS = .
IF SY-SUBRC <> .
MESSAGE '读取EXCEL文件出错!' TYPE 'E'.
ELSE.
IF I_EXCEL[] IS INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DIAGNOSETEXT1 = '数据为空!'
TEXTLINE1 = '请检查文件是否正确'
TITEL = '警告'
IMPORTING
ANSWER = L_ANSWER
.
LEAVE TO SCREEN .
ELSE.
DELETE I_EXCEL WHERE ROW = ''.
SORT I_EXCEL BY ROW COL.
LOOP AT I_EXCEL.
MOVE I_EXCEL-COL TO L_COLUMN.
ASSIGN COMPONENT L_COLUMN OF STRUCTURE TO <FS>.
MOVE I_EXCEL-VALUE TO <FS>.
AT END OF ROW.
APPEND .
CLEAR .
ENDAT.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALL_BAPI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_CALL_BAPI . ENDFORM.
1.DESCRIBE TABLE itab LINES wrk_n.
将内表的行数赋值给wrk_n。
2.wrk_n = LINES( itab ).
内表作为函数LINES的参数,返回itab的行数给wrk_n。
注意,itab的前后各有一个空格,否则会提示LINES未定义的错误信息。
3.使用AT new f 是 f 必须为内表的第一个字段 ,AT NEW f 会判断 f 字段左边的字段是否为新值。
4. BDC更新模式
sy-cprog is the name of the calling program.
比如在一个Function里面设置断点,sy-repid的这个FM所在FunctionPool的名字,sy-cprog是调用这个FM的Report的程序名。
2. sy-repid 不可以人为更改,sy-cprog可以
div是用于取两数相除的商的,c = a div b,得到的c的值就是a除b的商。
2、/
/ 是用于取两数相除的结果的。c = a / b,如果c是i数据类型的,这个语法会进行四舍五入的。
3、mod
mod 是用于取两数相除的余数,c = a mod b,得到的c的值的就是a除b的余数。
ABAP(笔记)的更多相关文章
- ABAP笔记
ABAP程序开发,经常会遇到报表开发需求.使用ABAP的Report类型程序开发报表十分便利,用很少的代码就可以快速开发出一个报表.这种报表需求,抛开各种细枝末节,都可以归结为“三步走”:1.选择屏幕 ...
- ABAP知识点笔记
1,获取光标所在行 READ TABLE TD_ALV_DATA INTO TH_ALV_DATA INDEX RS_SELFIELD-TABINDEX. 2,获取alv可编辑单元格内容 DATA: ...
- SAP CRM 项目笔记(一) SOW(工作说明书)讨论
前记 前两天在搜索资料时,看到一个网友在博客里面记录下了自己参于项目中的所有笔记.我觉得这个想法很不错,所以决定开笔记录下SAP CRM整个项目的实施和开发过程. 之前参加集团的SAP ERP(FI/ ...
- Jerry的ABAP原创技术文章合集
我之前发过三篇和ABAP相关的文章: 1. Jerry的ABAP, Java和JavaScript乱炖 这篇文章包含我多年来在SAP成都研究院使用ABAP, Java和JavaScript工作过程中的 ...
- 使用ABAP批量下载有道云笔记中的图片
Jerry喜欢用有道云笔记这款软件做自己的知识管理和知识体系的构建. 当您看到一篇好的有道云笔记分享时,可能会想将其精美的图片下载到本地.作为程序猿,我们不会去手动一张张下载.写个程序帮我们自动下载吧 ...
- N个小时学SAP ABAP
接触SAP已将近3年了,期间ABAP资料也看了不少,都是东看一点.西看一点的,也没做个笔记之类的,很明显效果不是很好.今天突然间领悟到了一点:不能再这样漫无目的的学习了,应该一本书一本书的看,否则就太 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
随机推荐
- odoo 的 拉式 和 推式 库链
推式链的数据定义在 stock.location.path 表,视图定义在 “路线” 界面的 “push rules” 具体可参考 入库设置为 Receipt in 2 steps . push ...
- 【bzoj】1026: [SCOI2009]windy数
1026: [SCOI2009]windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间 ...
- Github readme语法-- markdown
README 该文件用来测试和展示书写README的各种markdown语法.GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为GitHub Flavored Mar ...
- 《Linux命令行大全》系列(三、Linux 系统)
在<Linux命令行大全>一书中,第3章名称是 Linux 系统. 概念太大,不过该节内容却是 Linux 系统最为核心的基础——查看 Linux 系统. ls 命令 显示目录自身信息或目 ...
- Java多线程初学者指南(8):从线程返回数据的两种方法
从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...
- BZOJ 1690: [Usaco2007 Dec]奶牛的旅行
Description 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城 ...
- tornado异步请求非阻塞
前言也许有同学很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛?但是我却发现不是torando不好,而是你用错了 比如最近发现一个事情:某网 前言 也许有同学很迷惑:tornado不是标榜异 ...
- 李洪强iOS开发Swift篇—10_方法
李洪强iOS开发Swift篇—10_方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开 ...
- [topcoder]NinePuzzle
http://community.topcoder.com/stat?c=problem_statement&pm=11225&rd=14427 http://apps.topcode ...
- Yii处理流程
Yii的应用程序处理流程 用户访问URL http://www.example.com/blog/index.php?r=site/contact 1.入口脚本被网站服务器执行以处理此请求. 2.一个 ...