zoukankan      html  css  js  c++  java
  • F4搜索帮助~出口函数

    FUNCTION ZF4IF_SHLP_EXIT_BANZU_TEST.
    *"----------------------------------------------------------------------
    *"*"本地接口:
    *"  TABLES
    *"      SHLP_TAB TYPE  SHLP_DESCT
    *"      RECORD_TAB STRUCTURE  SEAHLPRES
    *"  CHANGING
    *"     VALUE(SHLP) TYPE  SHLP_DESCR
    *"     VALUE(CALLCONTROL) LIKE  DDSHF4CTRL STRUCTURE  DDSHF4CTRL
    *"----------------------------------------------------------------------
    
    * EXIT immediately, if you do not want to handle this step
      DATA: BEGIN OF GT_TAB OCCURS 0,
               KUNNR TYPE ZSD15-KUNNR,
               MATNR TYPE ZSD15-MATNR,
               SPRAS TYPE ZSD15-SPRAS,
               MAKTX TYPE MAKT-MAKTX,
    
            END OF GT_TAB.
      DATA R_KUNNR     TYPE RANGE OF ZSD15-KUNNR WITH HEADER LINE.
      DATA R_MATNR     TYPE RANGE OF ZSD15-MATNR WITH HEADER LINE.
      DATA R_SPRAS     TYPE RANGE OF ZSD15-SPRAS WITH HEADER LINE.
      DATA R_MAKTX     TYPE RANGE OF MAKT-MAKTX WITH HEADER LINE.
    
      IF CALLCONTROL-STEP <> 'SELONE' AND
         CALLCONTROL-STEP <> 'SELECT' AND
         " AND SO ON
         CALLCONTROL-STEP <> 'DISP'.
         EXIT.
      ENDIF.
    
    
    
    *"----------------------------------------------------------------------
    * STEP SELONE  (Select one of the elementary searchhelps)
    *"----------------------------------------------------------------------
    * This step is only called for collective searchhelps. It may be used
    * to reduce the amount of elementary searchhelps given in SHLP_TAB.
    * The compound searchhelp is given in SHLP.
    * If you do not change CALLCONTROL-STEP, the next step is the
    * dialog, to select one of the elementary searchhelps.
    * If you want to skip this dialog, you have to return the selected
    * elementary searchhelp in SHLP and to change CALLCONTROL-STEP to
    * either to 'PRESEL' or to 'SELECT'.
      IF CALLCONTROL-STEP = 'SELONE'.
    *   PERFORM SELONE .........
        EXIT.
      ENDIF.
    
    *"----------------------------------------------------------------------
    * STEP PRESEL  (Enter selection conditions)
    *"----------------------------------------------------------------------
    * This step allows you, to influence the selection conditions either
    * before they are displayed or in order to skip the dialog completely.
    * If you want to skip the dialog, you should change CALLCONTROL-STEP
    * to 'SELECT'.
    * Normaly only SHLP-SELOPT should be changed in this step.
      IF CALLCONTROL-STEP = 'PRESEL'.
    *   PERFORM PRESEL ..........
        EXIT.
      ENDIF.
    *"----------------------------------------------------------------------
    * STEP SELECT    (Select values)
    *"----------------------------------------------------------------------
    * This step may be used to overtake the data selection completely.
    * To skip the standard seletion, you should return 'DISP' as following
    * step in CALLCONTROL-STEP.
    * Normally RECORD_TAB should be filled after this step.
    * Standard function module F4UT_RESULTS_MAP may be very helpfull in this
    * step.
      IF CALLCONTROL-STEP = 'SELECT'.
    *   PERFORM STEP_SELECT TABLES RECORD_TAB SHLP_TAB
    *                       CHANGING SHLP CALLCONTROL RC.
    *   IF RC = 0.
    *     CALLCONTROL-STEP = 'DISP'.
    *   ELSE.
    *     CALLCONTROL-STEP = 'EXIT'.
    *   ENDIF.
    
        LOOP AT SHLP-SELOPT INTO DATA(WA_SELOPT) . .
           CASE WA_SELOPT-shlpfield.
               WHEN 'KUNNR'.
              MOVE-CORRESPONDING wa_selopt TO R_KUNNR.
              APPEND R_KUNNR .
               WHEN  'MATNR'.
              MOVE-CORRESPONDING wa_selopt TO R_MATNR.
              APPEND R_MATNR.
             WHEN 'SPRAS' .
              MOVE-CORRESPONDING wa_selopt TO R_SPRAS.
              APPEND R_SPRAS .
             WHEN 'MAKTX' .
              MOVE-CORRESPONDING wa_selopt TO R_MAKTX.
              APPEND R_SPRAS.
               WHEN OTHERS.
           ENDCASE.
    
        ENDLOOP.
        SELECT KUNNR
               ZSD15~MATNR
               zsd15~SPRAS
               MAKTX
    
              FROM ZSD15
              INNER JOIN MAKT ON ZSD15~MATNR = MAKT~MATNR UP TO 100 ROWS
           INTO CORRESPONDING FIELDS OF TABLE  GT_TAB
          WHERE KUNNR IN R_KUNNR AND
                zsd15~MATNR IN R_MATNR AND
                zsd15~SPRAS IN R_spras AND
                MAKTX IN R_MAKTX.
    
    *
    *    CALL FUNCTION 'F4UT_PARAMETER_ALLOCATE'
    *      EXPORTING
    *        PARAMETER   = 'ZHS'
    **        DEALLOCATE  = '1'
    *      TABLES
    *        SHLP_TAB    = SHLP_TAB
    *        RECORD_TAB  = RECORD_TAB
    *         source_tab  = GT_TAB
    *      CHANGING
    *        SHLP        = SHLP
    *        CALLCONTROL = CALLCONTROL.
      callcontrol-step   =   'DISP'.
        CALL FUNCTION 'F4UT_RESULTS_MAP'
          TABLES
            shlp_tab    = shlp_tab
            record_tab  = record_tab
            source_tab  = GT_TAB
          CHANGING
            shlp        = shlp
            callcontrol = callcontrol .
    
    
    
        EXIT. "Don't process STEP DISP additionally in this call.
      ENDIF.
    
    
    *"----------------------------------------------------------------------
    * STEP DISP     (Display values)
    *"----------------------------------------------------------------------
    * This step is called, before the selected data is displayed.
    * You can e.g. modify or reduce the data in RECORD_TAB
    * according to the users authority.
    * If you want to get the standard display dialog afterwards, you
    * should not change CALLCONTROL-STEP.
    * If you want to overtake the dialog on you own, you must return
    * the following values in CALLCONTROL-STEP:
    * - "RETURN" if one line was selected. The selected line must be
    *   the only record left in RECORD_TAB. The corresponding fields of
    *   this line are entered into the screen.
    * - "EXIT" if the values request should be aborted
    * - "PRESEL" if you want to return to the selection dialog
    * Standard function modules F4UT_PARAMETER_VALUE_GET and
    * F4UT_PARAMETER_RESULTS_PUT may be very helpfull in this step.
      IF CALLCONTROL-STEP = 'DISP'.
    *   PERFORM AUTHORITY_CHECK TABLES RECORD_TAB SHLP_TAB
    *                           CHANGING SHLP CALLCONTROL.
    *      callcontrol-step   =   'DISP'.
           SORT RECORD_TAB .
           DELETE ADJACENT DUPLICATES FROM RECORD_TAB COMPARING ALL FIELDS . "zsecond.
    
    
        EXIT.
      ENDIF.
    ENDFUNCTION.




  • 相关阅读:
    C# Net 合并int集合为字符串,如:输入1,2,3,4,8 输出1~4,8
    sql server 安装出现需要sqlncli.msi文件,错误为 microsoft sql server 2012 native client
    C# Form 实现桌面弹幕
    C# Net 去除图片白边
    SQL common keywords examples and tricks
    Excel formula and tricks
    HIghcharts cheatsheet
    CSS common keywords examples and tricks
    小白终于弄懂了:c#从async/await到Task再到Thread
    LeetCode 2: single-number II
  • 原文地址:https://www.cnblogs.com/hdchen/p/9418953.html
Copyright © 2011-2022 走看看