abap 练习


*&---------------------------------------------------------------------*
*& REPORT  ZTESTNO1
*& 851
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTESTNO1.

WRITE 'ZTESTNO1!' .
WRITE: / .


**要计算数字字段之和或要确保内表中没有重复记录出现,请使用collect,它根据标准关键字处理行
**collect用法示例
write:/ 'collect 用法示例'.
data: begin of itab4 occurs 4,
  col1(3) type c,
  col2(2) type n,
  col3    type i,
  col4(5) type c,
end of itab4.

itab4-col1 = 'abc'. itab4-col2 = '12'. itab4-col3 = 3. itab4-col4 = 'xyz'.
collect itab4.
write:/ sy-tabix.

itab4-col1 = 'def'. itab4-col2 = '12'. itab4-col3 = 5.  itab4-col4 = 'xyz'.
collect itab4.
write:/ sy-tabix.

itab4-col1 = 'abc'. itab4-col2 = '12'. itab4-col3 = 15. itab4-col4 = 'xyz'.
collect itab4.
write:/ sy-tabix.

loop at itab4.
  write:/ itab4-col1,itab4-col2,itab4-col3,itab4-col4.
endloop.
message 'this is message test' type 'I'.
message I022.
*输出空白行
skip.

**要在内表现有行之前插入行,请使用insert
**insert 用法示例
write:/ 'insert 用法示例'.
*输出空白行
skip.
data: begin of itab5 occurs 10,
  col1 type i,
  col2 type i,
end of itab5.

do 3 times.
  itab5-col1 = sy-index * 10.
  itab5-col2 = sy-index * 20.
  append itab5.
enddo.

itab5-col1 = 100. itab5-col2 = 200.
insert itab5 index 2.

*REFRESH <itab>. 清空<itab>中的值.使用在没有 HEADER LINE 的 Internal
*Table中, 清除所有元素
*CLEAR <itab>. 清空<itab>的Header Line.使用在有 HEADER LINE 的 Int
*ernal Table中, 清除所有元素
*FREE <itab>. 释放记忆体空间.释放(Release) Internal Table所占的内存空
*间, 用在 REFRESH和 CLEAR指令之后

*free itab5.
loop at itab5.
  write:/ itab5-col1,itab5-col2.
endloop.

skip.
write:/ '指定读取内表行用法示例'.
read table itab5 index 3.
write:/ itab5-col1,itab5-col2.
skip.

exit.

data ie type i.
DATA: XNAME LIKE SY-UNAME.
DATA F_WORD TYPE  I  VALUE  100.
write:/ f_word.
f_word = 50.
write:/ f_word.
clear f_word.
write:/ '=======',f_word.
DATA  STRING(10)  TYPE  C   VALUE  'ABCDEFGHIJ'.
write:/ string.
SHIFT  STRING.  "得到 BCDEFGHIJ.
write:/ string.
SHIFT  STRING  BY  2  PLACES  RIGHT.  "得到 ABCDEFGH
write:/ string.
data: mdata type d.
mdata = sy-datum.
write:/ mdata.
mdata+6(2) ='1'.
write:/ mdata.
mdata = mdata - 1.
write:/ mdata.
data: tdata type t.
tdata = sy-uzeit.
write:/ tdata.
do 10 times.
  f_word = sy-index mod 2.
  if f_word = 1.
    continue.
  endif.
  write:/ sy-index.
enddo.

do 10 times.
  check sy-index between 2 and 4.
  write:/ sy-index.
enddo.

types: a type i occurs 10.

data: begin of line,
  col1 type i,
  col2 type i,
end of line.
data itab1 like line occurs 0.
do 11 times.
  line-col1 = sy-index.
  line-col2 = sy-index ** 2.
  append line to itab1.
enddo.

loop at itab1 into line.
  write:/ line-col1,line-col2.
endloop.

data: begin of itab2 occurs 1,
  col1 type i,
  col2 type i,
  end of itab2.

append lines of itab1 from 2 to 6 to itab2.

line-col1 = 3.
modify itab2 from line index 3 transporting col1.
*delete itab2 where col1 = 5.
collect itab2.
sort itab2 descending by col1.
loop at itab2. "where col1 >= 3
  write:/ itab2-col1,itab2-col2.
  endloop.
  data: v_len type i.
  describe table itab2 lines v_len.
  write:/ v_len.
  clear itab2[].
  free itab2.
  loop at itab2.
    write:/ itab2-col1.
    endloop.

  TableS  SPFLI.
  DATA  ITAB0  LIKE  SPFLI  OCCURS  10 with header line.
  SELECT *  FROM  SPFLI  INTO  ITAB0.
    write:/ itab0-mandt,itab0-carrid.
endselect.



exit. "dskfk
*sadjfkjasdlkfjksdjfkkljsdfkjlsdfdsfkjld
do 10 times.
  write:/'这是第',ie,'次'.
  ie = ie + 1.
  enddo.
write:'test'.
XNAME = SY-UNAME.
write:XNAME.
write:/ sy-uname.
write:/ sy-dbsys.
write:/ sy-opsys.
write:/ sy-sysid.
write:/ sy-tcode.
write:/ sy-saprl.
write:/ sy-abcde.
write:/ sy-host.
write:/ sy-datlo.
write:/ sy-tfill.
write:/ sy-linno.
write:/ sy-colno.
write:/ sy-datum.
write:/ sy-uzeit.
skip to line 50.
write 'pass1'.

DATA : BEGIN OF wa,
      a(4) TYPE c,
      b(4) TYPE c,
      c TYPE i,
      END OF wa.
DATA itab LIKE TABLE OF wa.
wa-a = '001'.
wa-b = '0101'.
wa-c = 100.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '002'.
wa-b = '0201'.
wa-c = 200.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '002'.
wa-b = '0201'.
wa-c = 100.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '003'.
wa-b = '0301'.
wa-c = 400.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '004'.
wa-b = '0401'.
wa-c = 500.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '005'.
wa-b = '0501'.
wa-c = 600.
*APPEND wa TO itab.
COLLECT wa INTO itab.
*do 20000 times.
*  ie = ie + 1.
*  wa-a = ie.
*wa-b = ie.
*wa-c = 600.
**APPEND wa TO itab.
*COLLECT wa INTO itab.
*enddo.
**
*LOOP AT itab INTO wa.
* WRITE : / wa-a,
*           wa-b,
*           wa-c.
*ENDLOOP.
*
write:/.
skip 5.
INCLUDE <SYMBOL>.
INCLUDE <ICON>.
WRITE: / 'Phone Symbol:', SYM_PHONE AS SYMBOL.
SKIP.
WRITE: / 'Alarm Icon: ', ICON_ALARM AS ICON.
write:/.
DATA: FLAG1 VALUE ' ',
FLAG2 VALUE 'X',
FLAG3(5) VALUE 'Xenon'.
write:/'flag 1',flag1 as checkbox,
      /'flag 2',flag2 as checkbox,
      /'flag 3',flag3 as checkbox.
uline at /10(10).
write at /5 sy-vline.
DATA col TYPE i VALUE 0.
DO 8 TIMES.
col = sy-index - 1.
FORMAT COLOR = col.
WRITE: / col COLOR OFF,
'INTENSIFIED ON' INTENSIFIED ON,
'INTENSIFIED OFF' INTENSIFIED OFF,
'INVERSE ON' INVERSE ON.
ENDDO.

*CALL FUNCTION 'WS_DOWNLOAD'
*EXPORTING
*codepage = '8400'
*filename = 'C:\test.xls'
*filetype = 'DAT'
*TABLES
*data_tab = ITAB
*EXCEPTIONS
*file_open_error = 1
*file_write_error = 2
*invalid_filesize = 3
*invalid_table_width = 4
*invalid_type = 5.

*********************************************************************

TABLES KNA1.

DATA:BEGIN OF ITAB  OCCURS 10,
      KUNNR LIKE KNA1-KUNNR,
      NAME1 LIKE KNA1-NAME1,
     END OF ITAB.

SELECT SINGLE  KUNNR NAME1 INTO CORRESPONDING FIELDS OF ITAB  FROM KNA1 .
APPEND ITAB.
WRITE: / '只显示一记录----ITAB-NAME1=',ITAB-NAME1.
CLEAR ITAB.

WRITE: / .
WRITE: / '将读取的结果放在INTERNAL TABLE ITAB中'.
SELECT   KUNNR NAME1 INTO CORRESPONDING FIELDS OF ITAB  FROM KNA1 WHERE KUNNR BETWEEN '0000000001' AND '0000000100'.
APPEND ITAB.
WRITE: / '循环显示----ITAB-NAME1=',ITAB-NAME1.
CLEAR ITAB.
ENDSELECT.

WRITE: / .
DATA:V_KUNNR LIKE KNA1-KUNNR,
     V_NAME1 LIKE KNA1-NAME1.

WRITE: / '查出结果传给变量'.
SELECT   KUNNR NAME1 INTO (V_KUNNR,V_NAME1)   FROM KNA1 WHERE KUNNR BETWEEN '0000000001' AND '0000000100' ORDER BY KUNNR DESCENDING.
WRITE: / '循环显示----V_NAME1=',V_NAME1.
ENDSELECT.

WRITE: /.
WRITE: / '游标'.
DATA:V_KNA1 LIKE KNA1,
      FLAG TYPE C VALUE 'Y',
     C1 TYPE CURSOR .
OPEN CURSOR C1 FOR SELECT  *  FROM KNA1 WHERE KUNNR BETWEEN '0000000001' AND '0000000100'.
DO.
  IF FLAG NE 'X'.
    FETCH NEXT CURSOR C1 INTO V_KNA1.
    IF SY-SUBRC <> 0 .
     CLOSE CURSOR C1.
     FLAG = 'X'.
    ELSE.
      WRITE:/ 'V_KNA1-KUNNR==',V_KNA1-KUNNR,'     V_KNA1-NAME1==',V_KNA1-NAME1.
    ENDIF.
  ENDIF.
  IF FLAG = 'X'.
    EXIT.
  ENDIF.
ENDDO.


***************************************************************************************************************************************
DATA col TYPE i VALUE 0.
DO 8 TIMES.
col = sy-index - 1.
FORMAT COLOR = col.
WRITE: / col COLOR OFF,
'INTENSIFIED ON' INTENSIFIED ON,
'INTENSIFIED OFF' INTENSIFIED OFF,
'INVERSE ON' INVERSE ON.
ENDDO.

DATA: T(10) VALUE 'abcdefghij',
STRING LIKE T,
STR(1) VALUE 'd'.
STRING = T.
WRITE STRING.
SHIFT STRING UP TO STR.
WRITE / STRING.

skip 1.
DATA TIME TYPE T VALUE '172545'.
WRITE TIME.
WRITE / TIME+2(2).
CLEAR TIME+2(4).
WRITE / TIME.



INCLUDE OLE2INCL.
*定义OLE变量
DATA:EXCEL TYPE OLE2_OBJECT,
     SHEET TYPE OLE2_OBJECT,
     CELL TYPE OLE2_OBJECT,
     WORKBOOK TYPE OLE2_OBJECT.

DATA:VAL1(30) TYPE C.
DATA: R1 TYPE I,
      R2 TYPE I.
*输入文件名参数
PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01.

*启动excel
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.

IF SY-SUBRC NE 0 .
  WRITE: / ''.
  STOP.
ENDIF.

CALL METHOD OF EXCEL 'WORKBOOKS' = WORKBOOK.
*使excel 可视
SET PROPERTY OF EXCEL 'VISIBLE' = 1.

*建立worksheet
SET PROPERTY OF EXCEL 'SHEETSINNEWWORKBOOK' = 1.          "如果是读取excel文件中的内容 则是直接打开工作簿第一页
CALL METHOD OF WORKBOOK 'ADD'.                             " 例如:CALL METHOD OF EXCEL 'WORKSHEETS'  = SHEET  EXPORTING #1 = 1.
*写前10行10列
DO 10 TIMES.
  R1 = SY-INDEX.
  VAL1+1(4) = '行:'.
  VAL1+6(4) =  R1.
  DO 10 TIMES.
    R2 = SY-INDEX.
    VAL1+15(4) = '列:'.
    VAL1+19(4) = R2.
*指定单元格,并写入值
   CALL METHOD OF EXCEL 'CELLS' = CELL  EXPORTING #1 = R1  #2 = R2.
   SET PROPERTY OF CELL 'VALUE' = VAL1.
  ENDDO.
ENDDO.


*存入文件
GET PROPERTY OF EXCEL 'ACTIVESHEET' = SHEET.      "激活工作簿
GET PROPERTY OF EXCEL 'ACTIVEWORKBOOK' = WORKBOOK.   "激活工作区
CALL METHOD OF WORKBOOK 'SAVEAS' EXPORTING #1 = FN1  #2 = 1.    "将excel文件保存为 FN1  路径
CALL METHOD OF WORKBOOK 'CLOSE'.           "关闭工作区
CALL METHOD OF EXCEL 'QUIT'.               " 退出excel
WRITE 'DONE'.                              "退出成功,输出done

FREE OBJECT SHEET.                      "释放操作
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.


Mini SAP 6.2 安装 ABAP/4 编程 一,准备   A),建议备份操作系统,如GHOST,安装失败后可快速恢复操作系统,再次安装; B),安装的目标分区格式必须是NTFS; C),联通局域网,如果是单机使用最好是(添加硬件→添加新的硬件设备→网络适配器)安装虚拟网卡Microsoft Loopback Adapter并设 置 IP、DNS; D),DAEMON Tools用于加载BIN格式的镜像文件,最好将虚拟的光驱设为Z ; E),在这个文件 C:\WINNT\system32\drivers\etc\services (Windows 2000) 或者 C:\Windows\system\32\drivers\etc\services (Windows XP) 中必须不含有端口为 3600 的一行(服务); F),在 Windows XP 上的特别要求 在 C:\Windows\system\32\drivers\etc\hosts 这个文件中,一般包含了这么一行 127.0.0.1 localhost 必须配置这么一行 ,并新添加 Open the network connectivity definition with start->control panel->network connections for defining the network connection. Select ->extended-> allow other users in network. Activate new configurations. Select remote desktop within extended configuration menu. G),以前安装有 sql server,安装 MiniSAP 前必须先予以 uninstall,并删除安装目录。  注:E、F、G项参考 廖巍 作《安装 Mini SAP 的注意事项》 ,我在之前的安装未做这三项也正常安装,因水平有限未发现系统 中有何影响。应该是版本不同的缘故! 二,安装 安装时需更换镜像文件,但安装界面无明显的提示,按如下步骤操作即可: A),DAEMON加载CD1,执行 X:\setup.bat 开始安装; B),进度25%时提示插入源文件,此时仍是 CD1; C),进度27%时提示插入源文件,此时仍是 CD1; D),进度41% 时提示插入源文件,更换为 CD2; E),进度44%时提示插入源文件,更换为 CD3; F),进度47%时 提示插入源文件,更换为 CD1; G),X:\resume_setup.bat,需要重装一遍,以激活licence(如果licence不能启动,可考虑这一步骤);    我安装完后出现5个warning,只要没有error就OK。 H),GUI安装,执行 X:\MINIGUI\setup.exe; 安装完成后桌面出现Start SAP ABAP Engine和SAPlogon两个快捷方式。 三,登录    A),“SAPlogon”,出现登录窗口(SAP Logon 620),点击【新(N)…】按钮 在“新增”窗口做如下配置: 说明:“任意填写” 应用服务器:(假设这是你的电脑名) SAP路由字符串:不填 SAP系统:选择R/3 系统编号:00 点击【确定】按钮,返回到登录窗口(SAP Logon 620) 此时在登录窗口(SAP Logon 620),选中“任意填写”,登录 Client User Password -------------- 000 BCUSER minisap 000 DDIC minisap 000 Sap* Pass BCUSER是普通用户;DDIC为管理员用 B),登录后窗口的工具栏上,点击倒数第3个按钮(generates a shoutcut on the desktop) 配置“New SAP GUI Shoutcut”窗口 system date: ----------------------- Description: “任意填写”(下拉列表中选择上一步中填的实际名称) system ID : BSP SAP GUI parmeter: logon date: ----------------------- client: 000 user name: BCUSER password:minisap language:EN-English(有中文选项,可惜并不支持,不知有没有办法把SAP 4.71的中文包挂进来) application: ----------------------- 不管 starting: ----------------------- 不管 配置完成后,点击【ok】,然后桌面上出现图标“ , MIN SAP Easy Access.sap” 以后每次先运行“Start SAP ABAP Engine”,然后再运行“ , MIN SAP Easy Access.sap” 四,ABAP/4编程 A),创建程序时程序以Z、Y、SAPMY、SAPMZ开头,并遵守以下规则,否则提示无法创建程序; 创建程序名称时遵循如下规则: • 使用至少1个但不超过8个字符(8个字符是4.6C标准,实际可以超过8位长度) • 不要使用下列字符 • 句点(.) • 逗号(,) • 空格() • 括号'('')' • 单引号(') • 双引号(") • 等号(=) • 星号(*) • 元音变音(_,_,_,_,_,_)和'_' • 百分号(%)和下划线(_):这些符号是SQL语句的通配符,所以也会导致问题。SAP建议在程序名称中不要使用它们。  创建程序名称时请遵守这些命名约定: • 报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。用任何有效字符替换x。注意SAP报表 程序遵守相似的命名约定:Raxxxxxx。 • 任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命 名约定:SAPMaxxx,其中a代表某应用程序区。 B),创建练习程序时 Package 最好选择 $TMP  (开发类)一项; C),菜单Environment→examples→ABAP examples中可有ABAP的实例,是学习研究的好东西; D),学习ABAP/4编程推荐《SAP ABAP/4 开发宝典中文版》约1.32M。 SAP NetWeaver 2004s SAP NetWeaver 7.0 ABAP/4 新ABAP编辑器 一,安装要求: • Windows XP Professional (Service Pack 2) 或 Windows Server 2003 • 机器名长度不超过13 • NTFS文件系统 • Internet Explorer 5.01 或更高, Firefox 1.0 或更高 • 最小 1G 物理内存 • Intel Pentium III/1.1 GHz 或 higher (or compatible) • 22G硬盘空间,安装文件临时硬盘空间10G • 显示分辨率(1024x768 or 更高, 256 色) • 安装网卡并设置IP、DNS,无网卡时安装虚拟网卡Microsoft Loopback Adapter并设置IP、DNS • 操作系统中无其他SAP系统 • 在这个文件 C:"WINDOWS"system32"drivers"etc"services (Windows 2003) 或者C:"Windows"system"32"drivers"etc"services (Windows XP) 中必须不含有端口为3200,3600,8000 的服务  下载地址:ftp://ftp.sap.com/pub/sdn/devkits/netweaver/abap/  源文件:SAPNW7.0ABAPTrialSP12 2RAR分卷 共2.52G 其他文件:404M    安装后:≈15G(不包括W2k3系统) 二,安装 安装时间约30分钟。    A),查看X:"SAPNW7.0ABAPTrialSP12"start.htm的提示操作或双击X:"SAPNW7.0ABAPTrialSP12"image"setup.exe开始安装,一路默认确定并设 置密码,约30分钟完成安装,; B),GUI安装,执行 X:"SAPNW7.0ABAPTrialSP12"SAPGUI"SapGuiSetup.exe; 安装完成后桌面出现SAP Management Console和SAPlogon两个快捷方式。 三,登录    A),“SAPlogon”,出现登录窗口(SAP Logon 710),点击“系统”选项卡,再点击【新建项目(N)…】按钮 “创建系统条目”界面,不理,直接下一步: “连接类型:”选“自定义应用程序服务器” 描述:“任意填写” 应用服务器:(假设这是你的电脑名) 系统编号:00 系统标识:000 “网络”、“代码页”选项卡用默认值。 点击【确定】按钮,返回到登录窗口(SAP Logon 710) 此时在登录窗口(SAP Logon 710),选中“任意填写”,登录 Client User Password -------------- 000 Sap* minisap 000 BCUSER minisap 000 DDIC minisap BCUSER是普通用户;DDIC为管理员用 B),BCUSER用户的环境修改建议。默认收藏夹中无SAP EDITOR一项,通过输入快捷代码 SE38 调用编辑器,这时可在TOOLS中 修改菜单项名称 。 四,ABAP/4编程 未获ACCESS KEY时创建程序的规则如下 A),创建程序时程序以Z、Y、SAPMY、SAPMZ开头,并遵守以下规则,否则提示无法创建程序; 创建程序名称时遵循如下规则: • 使用至少1个但不超过8个字符(8个字符是4.6C标准,实际可以超过8位长度) • 不要使用下列字符 • 句点(.) • 逗号(,) • 空格() • 括号'('')' • 单引号(') • 双引号(") • 等号(=) • 星号(*) • 元音变音(_,_,_,_,_,_)和'_' • 百分号(%)和下划线(_):这些符号是SQL语句的通配符,所以也会导致问题。SAP建议在程序名称中不要使用它们。  创建程序名称时请遵守这些命名约定: • 报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。用任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。 • 任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。 B),创建练习程序时 Package 最好选择 $TMP  (开发类)一项,; C),菜单Environment→examples→ABAP examples中可有ABAP的实例,是学习研究的好东西;    四,MaxDB数据库 安装 MaxDB Database Manager 和 SQL Studio 方法一:开始菜单中MaxDB下有安装图标 方法二:源文件直接安装 目录X:"SAPNW7.0ABAPTrialSP12"maxdbtools"DBM76.exe X:"SAPNW7.0ABAPTrialSP12"maxdbtools"SQLSTD76.exe Database Manager登录 Database Server: localhost Port:不填 Database Name: NSP User Name: control Password: 安装时设定的密码 SQL Studio登录 Database Server: localhost Database Name: NSP User Name: SAPNSP Password: 安装时设定的密码 MaxDB同MySql出自同一公司,但MaxDB的文档较少,慢慢找吧! 五,申请license key激活SAP*帐号 Sap*帐号登录。菜单第一项“SLICENSE-Administer SAP Licenses”按提示操作即可。注意项:安装SAP系统的电脑必须能上网,在申请Licenses的界面中系统类型选择“NSP - SAP NetWeaver 7.0/2004s (SP9 and higher)”,搞错了申请的文件就不能安装,提交后,邮件接收“NSP.txt”文件,649字节,按提示安装,使用期限3个月。此文件是与硬件和SAP系统的电脑关联一一对应,安装SAP系统的电脑不能上网就不能申请,别无他法。 六,ACCESS KEY破解 参考网上的ACCESS KEY 破确方法,初步了解了破解的原理,修改LSKEYF00文件等等,稍有并异,修改原文件加入SY-SUBRC =0代码也都成功,最后在开发时还是要示输入ACCESS KEY,希望有SAPNW7.0ABAPTrialSP12破解成功的朋友回个邮件给我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值