【ABAP】 常见abap 7.5 新语法构造

目录

1、双重表赋值

2、不同结构表赋值

3、转18位物料

4、去空格

5、获取内表符合条件的行数

6、更改内表指定的某个值字段

7、判断内表包含

8、增删前导0

9、 是否判断

10、拼接字符强制各字符占有原位数

11、自适应赋值 部分字段

12、具有符合条件的数据丢进新表

13、数值的处理

14、取制定X-N列的值

15、 取内表指定行

1、双重表赋值

ls_data VALUE #head  VALUE #( ( mblnr  ls_header-mblnr

                                      mjahr  ls_header-mjahr )

                                  ) ).

ls_data-head[ linesls_data-head ]-item lt_item.

2、不同结构表赋值

    lt_item = CORRESPONDING #( DEEP is_input-data-item[] ).

3、转18位物料

  lv_matnr CONV wty_matnr18|{ ls_alv-tl_matnr ALPHA IN }| ).

  lv_matnr |{ lv_mantr1 WIDTH 18 ALIGN RIGHT PAD '0' }|.

4、去空格

replace( val = CONV rspos( lv_tabix ) sub = ` ` with = `` )

5、获取内表符合条件的行数

DATA(lv_lines2) = REDUCE iINIT FOR gs_tabkp IN gt_tab WHERE chk abap_true ) NEXT x )

6、更改内表指定的某个值字段

MODIFY _t_purchasereq FROM VALUE #banfn l_banfn  ) TRANSPORTING banfn WHERE banfn_o is_purchasereq-banfn_o.

7、判断内表包含

IF line_existsgt_display[ box 'X' icon icon_led_red ] ).

    MESSAGE '选中内容存在错误数据,不可导入TYPE 'S' DISPLAY LIKE 'E'.

ENDIF.

8、增删前导0

DATA(ls_in_matnr) = |{ ls_matnr ALPHA IN }|" '000000000015000042'.

DATA(gs_out_matnr) = |{ gs_matnr ALPHA OUT }|."'15000042'

9 是否判断

COND #( WHEN LS_OUT-MESSAGE =SPACE THEN LS_RETURN-MESSAGE ELSE |{ LS_OUT-MESSAGE }/{ LS_RETURN-MESSAGE }| ).

10、拼接字符强制各字符占有原位数

CONCATENATE lv_matnr abap_true abap_true INTO ls_bapiparexx-valuepart1 RESPECTING BLANKS.

11、自适应赋值 部分字段

lt_list = CORRESPONDING #( _t_alv_9003 MAPPING zscx = zscx wemng = wemng ).

12、具有符合条件的数据丢进新表

lt_temp = VALUE #( FOR wa IN _t_alv_9000 WHERE ( sel = abap_true ) ( wa ) ) .

13、数值的处理

lv_weeks roundval lv_days dec mode cl_abap_math=>round_up )    1.5 转后 2.0

LV_QTY |Quantity{ im_record-psmng SIGN LEFT }|.              转换前:原500-   转换后:  -500

LV_QTY |Quantity{ im_record-psmng SIGN RIGHT }|.             转换前:原500-   转换后:500-

LV_QTY |Quantity{ im_record-psmng DECIMALS  }|.            转换前:原500   转换后:500.00

LV_QTY |Quantity{ im_record-psmng CURRENCY 'USD'  }|.                  转换前:原500   转换后:500  

14、取制定X-N列的值

    DO lv_tabix TIMES"计算循环次数(M-5+1

      ASSIGN COMPONENT sy-index OF STRUCTURE <fs_tab> TO FIELD-SYMBOL(<val>). "从第5列开始

      IF sy-subrc AND <val> IS ASSIGNED.

        <fs_tab>-plnmg <fs_tab>-plnmg + <val>.

      ENDIF.

    ENDDO.

15 取内表指定行

DATA(ls_safe_copy) = gt_table[ ]

 

 

 

ABAP/4 Introduction Introduction ABAP/4(Advanced Business Application Programming)是SAP/R3目前唯一的系统发展工具, 属 4GL, 语比较近似Visual Basic或JAVA, 和传统third-generation 语言, 如C,PASCAL 有很大不同, 在程序模块(Program Structure Module)可分以 下三个部分: 1.Sequential coding within processing block 与一般语言语近似, 如IF,WHILE等, 但并没有GOTO叙述 2.Reports 呼叫一个独立的事件(Depending Event), 读取database 产生数据列表 3.Dialog 屏幕参数输入的对话框, 专门处理database 读取或异动的tranaction process Basic Languange Overview 1.data element 宣告方式, 如数值, 字符数据变量宣告 2.操作数(operate)使用, 如 + - * / 3.Control element使用, 如Boolean 值 4.特殊数据格式, 如日期与时间 5.字符串字料处理function, 如部分字符串的截取 6.子程序或自定函数的呼叫 7.SQL使用 8.数据结构的使用, 如process internal table的宣告与使用 Reports Overview 1.Reports Task, 如报表屏幕预览或打印机打印的选择 2.Reports 模块是一个Stand-along 程序, 3.database读取方式, 如可定义logical database(与磁盘的physical storage对映) 4.报表数据的计算与产生 5.报表的输出 Dialog Overview 1.专处理database 的读取与异动, 如使用SQL 指令 2.Dialog 不是一个Stand-Along Progarm, 使用transaction code来产生屏幕对话框 3.由flow logic 控制, flow logic分成PBO(Process Before Output)与PAI(Process After Input) 2.Begin To Programming 2.1 ABAP/4 Editor Creating ABAP/4 Program 使用ABAP Workbench撰写程序(Choose Tools->ABAP/4 Workbench, Transaction Code: S001), 萤 幕如下: 可分成: 1.ABAP/4 Editor :针对简单的报表或程序, 仅使用几个组件或不使用 2.Obiect Browser :针对复杂的报表或程序, 如Dialog Transaction Module 撰写 使用ABAP/4 Editor 撰写程序 1.ABAP/4 Editor 画面如下(Transaction Code:SE38): 2.输入程序名称, 如果是新程序, 按下”Create”, 如果修改已存在程序, 则按下”Change”或F6键 在命名规则上, Reports程序为 Yaxxxxxx或Zaxxxxxx, a表application module简称, 如s表SD Dialog程序为SAPMYxxx或SAPMZxxx 3.输入程序Attribute (1).Title:程序描述或功能说明 (2).Type:Execute mode: 1: Stand-along Program 如Reports I: Include Program M: Module Pool F: Function Group S: Subroutine Pool (3).Status:Program development status: P: SAP standard production program K: Customer productio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ramos丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值