知识点2

1.  DUMMY是否是检查全部的类型的权限呢?
    PS:不是,dummy的意思是虚拟的意思,就是说权限检查的时候有这个权限检查字段,可是不对该字段作权限检查。
         AUTHORITY-CHECK  OBJECT  'Z_BRAND'
              ID  'ACTVT'  DUMMY
            
  ID  'BRAND'  FIELD  p_brand . 
   
  IF  sy -  subrc <>  0 . 
     
  MESSAGE  e001 ( 00  )  WITH  '无品牌'  p_brand  '的权限' . 
   
  ENDIF  .
 
2. BKK_DOMAIN_TEXTS_READ读取域文本的内容,并存放到内表中,
        DATA :  lt_text  TYPE  bkkdc_t_domain_text , "抬头
            lw_text
  TYPE  bkkdc_s_domain_text  ."工做区
     
  CALL FUNCTION  'BKK_DOMAIN_TEXTS_READ'
       
  EXPORTING 
          i_langu       
  =  sy - langu
          i_domname     
  =  'ZD_HZDLX' 
       
  IMPORTING 
          et_domain_text  =  lt_text[]  .    
     方式二:
      DATA :  lt_domain  TYPE STANDARD TABLE OF  dd07v  WITH HEADER LINE  .
      CALL FUNCTION  'DD_DOMVALUES_GET'
     
  EXPORTING 
        domname  
  =  'ZD_ZAPPSEX'
       
  text       =  'X'
        langu    
  =  sy  - langu
     
  TABLES 
        dd07v_tab
  =  lt_domain .
   方式三:
      DATA: lt_values_tab  TYPE TABLE OF dd07v.
        CALL FUNCTION 'GET_DOMAIN_VALUES'
          EXPORTING
            domname         = 'ZE_ZZSTA'
*           TEXT            = 'X'
*           FILL_DD07L_TAB  = ' '
          TABLES
            values_tab      = lt_values_tab
*           VALUES_DD07L    =
          EXCEPTIONS
            no_values_found = 1
            OTHERS          = 2.
        IF sy-subrc <> 0.
          REFRESH lt_values_tab.
        ENDIF.
 
3.使用消息,便面DUMP掉。
   CALL FUNCTION  'REUSE_ALV_GRID_DISPLAY' 
   
  EXPORTING 
      i_callback_program      
  =  w_repid
      i_callback_pf_status_set
  =  'FRM_SET_PF_STATUS'
      i_callback_user_command 
  =  'FRM_USER_COMMAND'
      is_layout               
  =  w_layout
      it_fieldcat             
  =  it_fieldcat[]
      i_save                  
  =  'A'
   
  TABLES 
      t_outtab                
  =  gt_fhhzd[]
   
  EXCEPTIONS 
      program_error           
  =  1 
     
  OTHERS                    =  2 . 

 
  IF  sy -  subrc <>  0 . 
   
  MESSAGE  e001 ( 00  )  WITH  '函数REUSE_ALV_GRID_DISPLAY错误!'  .
 
  ENDIF .
4. 调用SUBMIT获取数据
   SUBMIT  zhzd_process
         
  WITH  p_hzd  EQ  l_hzd
         
  WITH  p_lx  EQ  'M' 
         
  AND RETURN  .

 
  IMPORT  msg  =  gt_fhhzd - msg subrc  =  sy -  subrc  FROM MEMORY ID  'ZHZD_PROCESS' .
 
REPORT  zhzd_process . 

DATA :  msg  TYPE  char255 . 
PARAMETERS  p_hzd  TYPE  ze_hzd .
PARAMETERS  p_lx  TYPE c  .

CASE  p_lx . 
 
  WHEN  'F' . 
   
  CALL FUNCTION  'Z_JSLHZD_PROCESS'
 
  EXPORTING
    hzd          
  =  p_hzd
 
  IMPORTING
    msg          
  =  msg
 
  EXCEPTIONS
    process_error
  =  1
   
  OTHERS         =  2 . 
 
  WHEN  'T' . 
   
  CALL FUNCTION  'Z_JSLTHZD_PROCESS'
 
  EXPORTING
    hzd          
  =  p_hzd
 
  IMPORTING
    msg          
  =  msg
 
  EXCEPTIONS
    process_error
  =  1
   
  OTHERS         =  2 . 
 
  WHEN  'M' . 
   
  CALL FUNCTION  'Z_MDHZD_PROCESS'
 
  EXPORTING
    hzd          
  =  p_hzd
 
  IMPORTING
    msg          
  =  msg
 
  EXCEPTIONS
    process_error
  =  1
   
  OTHERS         =  2 . 
ENDCASE .

EXPORT  msg  =  msg subrc  =  sy  - subrc  TO MEMORY ID  'ZHZD_PROCESS' .
 
5. 默认值,可是不显示
       PARAMETERS : p_jsdlx  LIKE  ztjsd  - jsdlx  DEFAULT  'W'  NO - DISPLAY  .
6. 用来匹配模式与逻辑表达式 "p_num CO '0123456789.'  p_num NA 'A....'"
   1. CO / CN contains only or not      :  只包含  不包含
CA / NA contains any or not any :包含任何一个  不包含任何一个
CS / NS contain string or not      :包含string     不包含string
CP / NP contains pattern or not  : 包含模式       不包含模式
      IF  g_fiuser  =  space .  "非财务用户 
      r_werks
-  sign  =  'I'  .
      r_werks
-  option  =  'NP'  .
      r_werks
-  low  =  '*'  .  "所有门店
     
  APPEND  r_werks .
     
  CLEAR  r_werks .
   
  ELSE  .
      r_werks
-  sign  =  'I'  .
      r_werks
-  option  =  'CP'  .
      r_werks
-  low  =  '*'  .  "所有门店
     
  APPEND  r_werks
     
  CLEAR  r_werks .
   
  ENDIF 
   2.逻辑表达式
     EQ或=          等于
     NE或<>或><     不等于
     LT或<          小于
     LE或<=          小于等于
     GT或>          大于
     GE或>=          大于等于
 
7. 将特定的值查询后直接赋值到指定的变量中。
SELECT SINGLE  name1 jyfs mdxz  INTO  ( g_name1 ,  g_jyfs , g_mdxz  )  FROM  t001w  WHERE  werks  =  p_werks .
 

8. DIV除以后,取的是整数部分,舍弃了小数部分的内容。若是想保留小数部分,须要使用‘/’dom

 
9. ON_CHANGE_OF 用来分组排序,在不一样的组内进行排序。
      LOOP AT  gt_data  ASSIGNING  <fs_a> .
       ON CHANGE OF  <fs_a> - clas1  .  
         CLEAR  :  l_pm . 
       ENDON  .  
      l_pm  =  l_pm +  1 . 
      <fs_a> -  pm  =  l_pm  .  
     ENDLOOP  .
10. *删除F8按钮.
   APPEND  'CRET'  TO  gt_exclude .
 
  CALL FUNCTION  'RS_SET_SELSCREEN_STATUS'
   
  EXPORTING 
      p_status 
  =  sy - pfkey
   
  TABLES 
      p_exclude
  =  gt_exclude .
     
11.BCALV_EDIT_04:使用INFORM来展现数据
   * first check airline and connection
   select single  *  from  spfli  into  gs_spfli  where  carrid  =  g_carrid  and  connid  =  g_connid .
 
  if  sy -  subrc  ne  0  .
   
  call function  'POPUP_TO_INFORM'
        
  exporting 
              titel
  =  text  - i01
              txt1 
  =  text  - i02
              txt2 
  =  text  - i03
              txt3 
  =  text  - i04
              txt4 
  =  text  - i05 . 
 
  else .
* §0.Lock your database table according to CARRID and CONNID 
   
  perform  lock_sflight  changing  g_success  .
   
  if  g_success  eq  'X' .
     
  call screen  100 .
   
  else  .
     
  message  i000 ( 0k  )  with text -  i10 .
   
  endif  .
 
  endif .
12. * 数量四舍五入  向上取值与向下取值 1.
     1. CALL FUNCTION  'HR_NZ_ROUNDING_DECIMALS'
       EXPORTING 
        value_in 
  =  gv_max  " Input field with decimals
        conv_dec 
  =  0    " i    Number of desired decimals for conversion
     
  IMPORTING 
        value_out
  =  gv_max   " Output field with rounded decimals
    2.  a = 1.36   b = 1.34
       CEIL( a/b ).   "2
       FLOOR( a/b ).  "1
     ABS( dobj ) 返回参数绝对值
     SIGN( dobj )返回参数符号:正数返回1,0返回0,负数返回-1.
     TRUNC( dobj )返回参数的整数部分
     FRAC( dobj )返回参数的小数部分
     CEIL( dobj )返回不小于输入参数的最小整数值
     FLOOR( dobj )返回不大于输入参数的最大整数值
     SQRT 平方根
     注意:函数名与左括号间不能有空格,括号与参数间必须有空格.
 
13.检查必须为数字
      "折扣检查 
    l_str_len
  =  strlen (  gt_tab  - netpr  ). 
   
  CLEAR  l_do_index .
   
  DO  l_str_len  TIMES  .
     
  IF NOT  '0123456789.'  CA  gt_tab - netpr+l_do_index (  1 ).
       
  CONCATENATE  gt_tab - msg   '折扣必须为数字!'  INTO  gt_tab - msg .
     
  ENDIF  .
      l_do_index
  =  l_do_index +  1 . 
   
  ENDDO  .
      "最好的方法定义一个P类型的,用Catch来把字符串(去掉空格后)赋值给这个P类型,若是返回值为0,就说明是数字~
 
14.ZFC_RT024:若是BAPI调用出错,直接跳出本次的调用PERFORM 则使用RETURN。程序块:FORM,MODULE,EVENT等。
 
1. CHECK: 后面跟一个表达式,当表达式的值为假(false),CHECK发生做用,退出循环LOOP或者处理程序 Processing Block.
          若是CEHCK在循环中,则退出当前的一次循环,从下一次循环继续执行,相似于CONTINUE.
          若是CHECK出如今循环外,则发生做用时,退出的是当前执行的程序块 Processing Block,如:FORM METHOD or EVENT.
2. EXIT:  EXIT出如今循环中,退出整个循环,程序从循环结束处开始继续执行。 
          EXIT出如今循环外,退出的是当前的程序块:processing Block,如:FORM METHOD or EVENT。与RETURN相似。
3. RETURN:使用RETURN来退出当前执行的程序块,无论是在LOOP中仍是在Processing Block中,
   PS:    建议只在循环中使用EXIT,而不使用RETURN,在外部退出Processing Block中,使用RETURN。
4. LEAVE PROGRAM: 直接退出当前程序。
5. CONTINUE: 与CHECK相似,CHECK是有条件终止,CONTINUE是无条件终止。在循环中,结束此轮循环,继续下一轮循环。

     6. STOP:结束当前块,从下一个块开始执行。这里的块指的是语句快。直接到END-OF-SELECTION.函数


15. 初始化field-symbols :
     UNASSIGN <fs_gw_eban>  .
 
16. 在界面显示正在执行的动做.
   if  SY  - BATCH  is initial  .  "SY-BATCH 正在后台执行程序
   
  call function  'SAPGUI_PROGRESS_INDICATOR'
     
  exporting 
       
  TEXT  =  '正在迁移中间数据...' .
 
  endif .
17. 解决筛选时出现筛选输入字段没有实际表中的字段那么长的问题。 定义参照的表和字段,对于自定义的字段使用intlen属性来设置
   CLEAR :  ls_fieldcat .
 
  LOOP AT  gt_fieldcat  INTO  ls_fieldcat .
   
  CASE  ls_fieldcat - fieldname  .
     
  WHEN  'MATNR' .
        ls_fieldcat
-  ref_table  =  'MARA'  .
        ls_fieldcat
-  ref_field  =  'MATNR'  .
*        ls_fieldcat-intlen    = 18. 
   
  ENDCASE  .
   
  MODIFY  gt_fieldcat  FROM  ls_fieldcat  .
 
  ENDLOOP .
18.单位转换函数: 
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
  EXPORTING
  input =  lv_in"输入的英文单位
  IMPORTING
  output =  lv_out."输出的中文单位
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
  EXPORTING
  input = lv_in"输入的中文单位
  IMPORTING
  output = lv_out."输出的英文单位
19.RENAMING WITH SUFFIX suffix
TYPES: BEGIN OF t_day,
         work TYPE c LENGTH 8,
         free TYPE c LENGTH 16,
       END OF t_day.
DATA BEGIN OF week.
  INCLUDE TYPE t_day AS monday    RENAMING WITH SUFFIX _mon.
  INCLUDE TYPE t_day AS tuesday   RENAMING WITH SUFFIX _tue.
  INCLUDE TYPE t_day AS wednesday RENAMING WITH SUFFIX _wed.
  ...
DATA END OF week.
 
20.ABAP的Parameter ID ,用来get/set值

Parameter ID 一般用于 Data element中,经过set/get方法存取它的值, 那么到底Parameter ID 在哪儿进行维护的呢? 要注意的是这个Parameter ID 是跨Client的,因此维护的时候要注意。ui

记住可维护表:TPARA 是有必要的
 
21.查询用户的权限列表: SUIM  OR S_BCE_68001400
 
22.      四舍五入函数:
    CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS'
        EXPORTING           value_in  = l_p                    " Input field with decimals           conv_dec  = 0                         " i    Number of desired decimals for conversion         IMPORTING           value_out = l_p                " Output field with rounded decimals *       EXCEPTIONS *         NO_ROUNDING_REQUIRED             = 1        " No rounding required. (CONV_DEC > VALUE_IN dec) *         DECIMALS_GREATER_THAN_10       = 2        " Conversion only possible with decimals <= 10 *         ROUNDING_ERROR                          = 3        " An error occurred during the decimal conversion *         OTHERS                                           = 4.
相关文章
相关标签/搜索