设为首页 收藏本站
查看: 1291|回复: 0

[经验分享] SAP ABAP基础知识自学笔记二

[复制链接]
累计签到:39 天
连续签到:1 天
发表于 2015-9-21 13:34:15 | 显示全部楼层 |阅读模式
  三、各种定义
  基本格式
  DATA:XX TYPE YY VALUE'ZZ'
  各种来了
  *参照数据字典定义
  *参照数据元素定义
  data v9 type zdata_jg_20100325_01.
  *参照数据库表的字段定义
  data v10 type scarr-carrid.
  *定义常量
  CONSTANTS c1 TYPE i VALUE '1'.
  *定义单值选侧屏幕
  PARAMETERS p1(8) TYPE n default 'AA'.
  *参照自定义类型定义变量
  TYPES t1(10) TYPE c.
  DATA v9 TYPE t1.
  *参照自定义变量定义变量
  DATA v10 LIKE v9.
  *参照数据字典中的TYPE GROUP定义数据类型
  TYPE-POOLS zjg01 .
  data v20 type zjg01_z1.
  定义结构
  DATA : BEGIN OF wa,
         carrid TYPE spfli-carrid,
         connid TYPE spfli-connid,
         cityfrom TYPE spfli-cityfrom,
         cityto TYPE spfli-cityto,
         distance TYPE spfli-distance,
         distid TYPE string,
         END OF wa.
  根据结构定义内表
  DATA itab LIKE TABLE OF wa.
  流程控制-IF…ELSE
  IF a > 12.
   WRITE : '他比12大'.
  ELSE.
   WRITE : '他比12小'.
  ENDIF.
  循环
  DO 10 TIMES.
   WRITE: / '这是第',ie,'次'.
   ie = ie + 1.
  ENDDO.
  把内表循环到结构中
  LOOP AT itab INTO wa.
   WRITE : / wa-id.
  ENDLOOP.
  内表各种操作-collect
  在内表中一定有一个数值型的字段,而且其他字段均为字符型
  把数值型字段上的数加起来
  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.
  LOOP AT itab INTO wa.
   WRITE : / wa-a,
              wa-b,
              wa-c.
  ENDLOOP.
  内表各种操作-read
  LOOP AT itab1 INTO wa.
   READ TABLE itab2 INTO wa1 WITH KEY carrid = wa-carrid.
   IF sy-subrc <> 0.
   clear wa1.
      move-corresponding wa to wa1.
      append wa1 to itab2.
   ENDIF.
  ENDLOOP.
  根据结构修改内表
  modify itab from wa.
  SQL操作
  1、把SQL结果放入内表中
  SELECT carrid connid cityfrom cityto distance distid
  FROM spfli
  INTO CORRESPONDING FIELDS OF TABLE itab. 放到了内表中
  INTO CORRESPONDING FIELDS OF wa.放到了结构中
  2.1、多表查询
  SELECT scarr~carrid scarr~carrname spfli~connid spfli~cityfrom
  spfli~cityto
   FROM scarr INNER JOIN spfli
        ONscarr~carrid = spfli~carrid
     INTO CORRESPONDING FIELDS OF TABLE itab.
  2.2、更多表查询
  SELECT spfli~carrid spfli~connid spfli~cityfrom spfli~cityto
  sbook~fldate sbook~bookid sbook~customid sbook~custtype scustom~name
  scustom~street
     FROM spfli INNER JOIN sbook
        ON spfli~carrid = sbook~carrid AND spfli~connid = sbook~connid
            INNER JOIN scustom
               ON sbook~customid = scustom~id
                  INTO CORRESPONDING FIELDS OF TABLE itab.
  各种关键字
  APPEND wa TO itab.把结构搞到内表中
  MOVE TO 结构赋值
  modify itab from wa根据结构修改内表
  MOVE-CORRESPONDING str1 TO str3.同名字段赋值
  
  分支研究
  data:v1 type i value '1'.
  v2 type i.
  do 50 times.
  v2 = v1 ** 2.
  write : v1,v2.
  v1=v1 +1.
  enddo.
  函数来了
  字符串操作
  CONCATENATE wa-fldate wa-week INTO wa-www SEPARATED BY
  '/星期'.
  子程序
  三种类型:值传递,值传递并返回
  # 1.值传递-实参在传递过程中不发生改变,只是传递一个实参的拷贝,适用于值不能改变的单值,不适合内表参数传递。
  # 2.值传递并返回结果-传递一个实参的拷贝,实参的拷贝发生改变,返回给实参,适合于可以改变的单值传递,不适合内表参数传递。
  # 3.引用传递-传递实参,子程序运行结束后,实参根据子程序运行结果,适合单值也适合内表。
  看看代码就知道怎么用了
  DATA : a TYPE i,
         b TYPE i,
         c TYPE i.
  PERFORM x  USING a.这是值传递
  PERFORM y CHANGING b.这是值传递改变
  PERFORM z CHANGING c.这是引用传递
  PERFORM xyz USING a
              CHANGING b
                       c.连起来就是这么用滴
  *值传递和值传递引用改变需要写个value,引用传递不需要
  FORM xyz USING value(f1) TYPE i值传递
           CHANGING value(f2) TYPE i值传递改变
                    f3 TYPE i.引用传递
  ENDFORM.
  *如果传入的是内表,子程序中可以这么写
  FORM xyz CHANGING p-itab like itab.
  *也可以这么写
  FORM xyz CHANGING p-itab type itab.
  
  屏幕
  START-OF-SELECTION.    "主程序开始了!
   WRITE : / text-001,sy-lsind.
  AT LINE-SELECTION.
   CASE sy-lsind.
      WHEN '1'.
        WRITE : / '第一级详细列表',sy-lsind.
      WHEN '2'.
        WRITE : / '第二级详细列表',sy-lsind.
      WHEN '3'.
        WRITE : / '第三级详细列表',sy-lsind.
   ENDCASE.
  
  单值选择屏幕
  PARAMETER p1 TYPE scarr-carrid DEFAULT 'AA'.
  多重选择屏幕
  TABLES scarr.相当于data scarr type scarr.
  SELECT-OPTIONS pi FOR scarr-carrid. for后面不是类型是变量
  *下面是用法
  SELECT carrid carrname FROM scarr
   INTO CORRESPONDING FIELDS OF TABLE itab
   WHERE carrid IN pi.
  LOOP AT itab INTO wa.
   WRITE : / wa-carrid,
              wa-carrname.
  ENDLOOP.
  
  
  
  data : v1 type i value '1'.
  data : v2 type i value '1'.
  data : v3 type i value '2'.
  data : v4 type i value '3'.
  do v1 times.
  write : v1, '-' , v2.
  write : v1, '-' , v2.
  write : v1, '-' , v2.
  
  
  
  
  data : begin of wa1,
          ebeln(3) type c,
          dat type d,
          menge type i,
         end of wa1.
   data itab like table of wa1.
   wa1-ebeln = '001'.
   wa1-dat = '20070803'.
   wa1-menge = '10'.
   append wa1 to itab.
   clear wa1.
  
   wa1-ebeln = '001'.
   wa1-dat = '20070903'.
   wa1-menge = '20'.
   append wa1 to itab.
   clear wa1.
  
   wa1-ebeln = '002'.
   wa1-dat = '20080303'.
   wa1-menge = '20'.
   append wa1 to itab.
   clear wa1.
  
   wa1-ebeln = '003'.
   wa1-dat = '20080603'.
   wa1-menge = '30'.
   append wa1 to itab.
   clear wa1.
  
  loop at itab into wa1.
  write : / wa1-ebeln,
            wa1-dat,
            wa1-menge.
  
  endloop.
  
  
  uline.
  data : begin of wa2,
          ebeln(3) type c,
          menge type i,
          end of wa2.
     data itab2 like table of wa2.
  loop at itab into wa1.
  move-corresponding wa1 to wa2.
  collect wa2 into itab2.
  endloop.
  
  loop at itab2 into wa2.
  write : / wa2-ebeln,
            wa2-menge.
  endloop.
  
  
  
  sy-subrc    判断有没有东西
  
  condense 字符型    //去空格
  
  
  for all entries in 内表
  
  
  DATA wa LIKE LINE OF itab.   //参照内表建结构
  
  sort it by carrid connid fldate.
  delete adjacent duplicates from it comparing all fields.
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-116800-1-1.html 上篇帖子: SAP常用FM记录 下篇帖子: [SAP FI] Bank Master & Vendor Master Creation Related Knowledge
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表