• 【ABAP】知识点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除之后,取的是整数部分,舍弃了小数部分的内容。如果想保留小数部分,需要使用‘/’

     
    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的,所以维护的时候要注意。

    记住可维护表: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.
     
     
     
     
     
     

       
     
     
     
     
     
     
  • 相关阅读:
    springboot controller传参,对象映射
    将已有的lng lat 字段转换成point类型字段
    导入csv 到mysql数据库
    spring 数据库字段映射
    spring restTemplate使用方法
    mongo 大数据量更新注意事项
    mongo大数据量更新服务端超时解决: Cursor not found, cursor id: 82792803897
    JS 判断是否为null
    JS 日期格式化
    杨氏矩阵:查找x是否在矩阵中,第K大数
  • 原文地址:https://www.cnblogs.com/colorstory/p/3802593.html
Copyright © 2020-2023  润新知