ABAP开发总结_sap要放弃ABAP

ABAP开发总结_sap要放弃ABAP一、RANGE使用注意事项:-1.range语句在SQL中一般用IN,不用等于

ABAP开发总结_sap要放弃ABAP——————–一、RANGE使用注意事项:————————————-

1.range 语句在SQL 中一般用IN, 不用等于。

2.EQ(等于)/LE(小于等于)/GE(大于等于)

3. 使用前清空表头和表体。( CLEAR:emp,emp[])

*”单值

*CLEAR G_ranges[].

*G_ranges-sign = ‘I’.

*G_ranges-option = ‘EQ’.

*G_ranges-low = ‘AA’.

*APPEND G_ranges.

“区间

CLEAR g_ranges[].

g_ranges-sign = ‘I’.

g_ranges-option = ‘BT’.

g_ranges-low = ‘AA’.

g_ranges-high = ‘HH’.

APPEND g_ranges.

*选项介绍:

*1.SIGN  值为 I 和 E 。 I是包含, E是排除, 一般使用I。

*2.OPTION 如果HIGH 为空 ,为单值选择 。有 EQ、NE、GT、LE、LT等逻辑操作  对于*的  CP包含  NP是排除

*                  如果HIGH 不为空 为区间选择 有BT,NB可选

*3.LOW     低值

*4.HIGH    高值

————————二、有无HEADER LINE的内表的区别:————————————-

*对于有HEADER LINE的内表,可以通过填充HEADER LINE数据后或通过 外部Work Area 向内表存储空间中追加数据。

*对于没有HEADER LINE的内表,只能通过 外部Work Area来传递数据:

TABLES: employee.

 

TYPES: BEGIN OF emp,

    id  LIKE employee-id,

    name1   LIKE employee-name1,

    country LIKE employee-country,

       END OF emp.

 

* 有 HEADER LINE 的内表

DATA: emptab  TYPE STANDARD TABLE OF emp INITIAL SIZE 10 WITH HEADER LINE.

 

* 没有 HEADER LINE 的内表

DATA: emptab2 TYPE STANDARD TABLE OF emp INITIAL SIZE 10,        

 

* Work Area

      emptab_wa TYPE emp.                                                                          

 

SELECT * FROM employee.

 

    MOVE-CORRESPONDING employee TO emptab.

    APPEND emptab.

 

    MOVE-CORRESPONDING employee TO emptab_wa.

    APPEND emptab_wa TO emptab2.

 

ENDSELECT.

————————————三、FOR ALL ENTRIES IN 的用法:————————————-

SELECT F1 F2 .. Fn INTO IT_TAB(插入的子表) FROM MSEG 

  FOR ALL ENTRIES IN IT_TAB2(主表数据)

  WHERE Fi = IT_TAB2-Fi(主表条件)

    AND Fj = IT_TAB2-Fj(主表条件)

*多条数据的查询,避免了使用LOOP….AT.




1. IT_TAB2需要排序,并删除重复数据 

2. IT_TAB2数据两很大时,会降低效率 

3. 使用FOR ALL ENTRIES IN 时,from 的表要把主键都写在select后。

   如果主键没有全部加到WHERE条件后,FOR ALL ENTRIES IN 会自动删除重复行,造成数据丢失。

   INTO CORRESPONDING FIELDS OF TABLE 后的这个表中不含这字段就行了。

4. 在ABAP开发中,对于不能使用join的聚集表或者需要使用SELECT 的内表

 ,我们一般使用for all entries in 语句将该表与内表串联,查询出需要的数据,

 例如:BSEG聚集表为例.

 

 

  

  DATA:  SUPPLIER_IN  TYPE ZMM_STRUC_SUPPLIER_01.[声明传入数据类型]


   

  DATA:  SUPPLIER_RETURN  TYPE ZMM_INT_SUPPLIER_RETURN.[声明传出数据类型]

 

  PERFORM FRM_DESERIALIZE USING   SUPPLIER_IN.[反序列化 将jason转换为OBJECT类型入参]

 ( /UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON   = REQUEST

                                 ASSOC_ARRAYS     = ABAP_TRUE

                                 ASSOC_ARRAYS_OPT = ABAP_TRUE

                                 PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE

                                 CHANGING DATA    =  SUPPLIER_IN ).

 

 PERFORM FRM_GET_SUPPLIER_ASSESSMENT USING ZNUM   SUPPLIER_IN  CHANGING RETURN SUPPLIER_RETURN.[传入传出数据处理]

 

 PERFORM FRM_DESERIALIZE USING   SUPPLIER_IN.[序列化操作,object格式转换成jason格式]

 (  

  ASSIGN SUPPLIER_RETURN[] TO <FS>.

 IF <FS> IS ASSIGNED.

    RESPONSE = /UI2/CL_JSON=>SERIALIZE( DATA             = <FS>

                                        ASSOC_ARRAYS     = ABAP_TRUE

                                        ASSOC_ARRAYS_OPT = ABAP_TRUE

                                       ).

    RESPONSE = ‘{“RESPONSE”:’ && RESPONSE && ‘}’.

    UNASSIGN <FS>.)







——————EXCEL 宏代码————————————-


Sub copy(rg As String)



‘ copy Sheet2选中行到Sheet1





    Sheets(“Sheet2”).Select

    Sheet2.Rows(“1:25”).Select

    Selection.copy

    Sheets(“Sheet1”).Select

    Sheet1.Range(rg).Select

    Sheet1.Paste

    ‘Selection.Insert Shift:=xlDown

End Sub







——————SAP删除数据表中的数据————————————-

方法一:ABAP语言中OPEN SQL 有从数据库中删除记录的语句。故可采用此方法来编写程序删除数据表中的记录。

此方法不够直接,存在风险,对有些不易取到的数据,可能不太有效。

方法二:使用事务码-SE16N;

输入自己要修改的表名,回车,然后输入事务码-&sap_edit来激活编辑状态。回车,点击运行,即可进行修改。

此方法好像不能修改主键,所以使用范围比较小。 

方法三:使用事务码-SE16;

使用事务码SE38打开程序LSETBF01,查找字符‘SHOW’设置断点。

使用事务码SE16打开要修改的数据表。输入事务码’/H‘ 激活调试模式,查出要删除的数据。点击查看按钮,

进入调试环境,程序停在CODE处,双击CODE 修改其值为’DELE’,然后点击运行进入下一屏幕,点击删除数据即可。

删除以后点下一条,可以删除其它选中的记录。

此方法,比较冒险,少用。

 


———————————————–  

 

 ABAP中加上前导零、去除前导零的function module

*加上p_in的前导零

  CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’

    EXPORTING

      input  = p_in

    IMPORTING

      output = p_in.

 CONVERSION_EXIT_MATN1_INPUT

*去除p_out的前导零

  CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’

    EXPORTING

      input  = p_out

    IMPORTING

     output = p_out.

 

   

*四舍五入法

   CALL FUNCTION ‘HR_NZ_ROUNDING_DECIMALS’

  EXPORTING

    VALUE_IN                 = L_DATA1

    CONV_DEC                 = 0      ” 设置保留几位小数

  IMPORTING

    VALUE_OUT                = L_DATA1

  EXCEPTIONS

    no_rounding_required     = 1

    decimals_greater_than_10 = 2

    rounding_error           = 3

    OTHERS                   = 4.

 

*ABAP 动态查询条件  select* from  table where().

REPORT demo_select_dynamic_conditions .

DATA: cond(72) TYPE c,

      itab LIKE TABLE OF cond.

PARAMETERS: city1(10) TYPE c, city2(10) TYPE c.

DATA wa TYPE spfli-cityfrom.

CONCATENATE ‘CITYFROM = ”’ city1 ”” INTO cond.

APPEND cond TO itab.

CONCATENATE ‘OR CITYFROM = ”’ city2 ”” INTO cond.

APPEND cond TO itab.

CONCATENATE ‘OR CITYFROM = ”’ ‘BERLIN’ ”” INTO cond.

APPEND cond TO itab.

LOOP AT itab INTO cond.

  WRITE cond.

ENDLOOP.

SKIP.

SELECT  cityfrom

  INTO  wa

  FROM  spfli

  WHERE (itab).

  WRITE / wa.

ENDSELECT.

 

//保护EXCEL 不被修改内容

  LS_OPTIONS-PROTECT_DOCUMENT = ”.

//   获取当前月份第一天.


 CONCATENATE sy-datum+0(6) ’01’ INTO g_first   

//   获取当前月份最后一天.


DATA: date TYPE vtbbewe-dvalut,

      flag TYPE trff_flg,

      days TYPE trff_type_n_2,

      g_first   TYPE  sy-datum.

CALL FUNCTION ‘FIMA_DATE_CREATE’

  EXPORTING

    i_date                  = ‘20140101’ “输入日期

    i_flg_end_of_month      = ‘ ‘

    i_years                 = 2       “两年后的日期. 即输入日期的年加2所得日期,可为负数,表示前两年

    i_months                = 1       “一个月后的日期.即输入日期的月加1所得日期,可为负数,表示前一个月

    i_days                  = 23      “23天后的日期。可为负数,表示23天前的日期

    i_calendar_days         = 10      “10天后的日历。同I_DAYS参数。

    i_set_last_day_of_month = ‘X’     “返回的日期为当前月份的最后一天

  IMPORTING

    e_date                  = date    “返回的日期为当前月份的最后一天

    e_flg_end_of_month      = flag    “如果输入参数I_SET_LAST_DAY_OF_MONTH设置’X’了,则返回值为’X’。

    e_days_of_i_date        = days.   “返回输入日期的i_calendar_days字段与I_DAYS字段的和。

WRITE : days, flag,date  .


今天的文章ABAP开发总结_sap要放弃ABAP分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/70946.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注