顯示具有 SELECTION-SCREEN 標籤的文章。 顯示所有文章
顯示具有 SELECTION-SCREEN 標籤的文章。 顯示所有文章

2014年4月29日 星期二

How to read Report selection screen field values before PAI field transport

Function: DYNP_VALUES_READ

How to got the field value when you still in selection screen manipulating, example code as below:
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vbeln.
*--- Update P_VSTEL
  dyfields-fieldname 'P_VSTEL'.
  APPEND dyfields.
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname     sy-cprog
      dynumb     sy-dynnr
    TABLES
      dynpfields dyfields.
  READ TABLE dyfields INDEX 1.

  IF dyfields-fieldvalue IS INITIAL.
    MESSAGE i899 WITH 'Please enter Shipping Point first!'.
    EXIT.
  ELSE.
    CLEARgr_vstel,  gr_vstel[],
           gt_lipov,  gt_lipov[],
           gt_dn,     gt_dn[].
    gr_vstel-sign   'I'.
    gr_vstel-option 'EQ'.
    gr_vstel-low    dyfields-fieldvalue.
    APPEND gr_vstel.
  ENDIF.

2013年2月4日 星期一

[Code] How to catching selection criteria

How to catching selection criteria

Example: 
  DATAselection_table LIKE rsparams OCCURS 0  WITH HEADER LINE.

  CLEAR selection_tableREFRESH selection_table.

* Get selection criteria
  CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'

[Code] How to reference whole itab by name

How to reference whole itab by name

Example: clearing all selection criteria
FORM screen_clearing_all .
  DATAselctab         LIKE rsscr    OCCURS 20 WITH HEADER LINE,
        itabname        TYPE c        LENGTH 30.

  FIELD-SYMBOLS<para> TYPE ANY,
                 <sele> TYPE ANY TABLE.

  CLEAR selctabREFRESH selctab.

* Get selection screen

2011年3月30日 星期三

[Link] Display images (like company logo) on the selection-screen

By Gaurab Banerji, Capgemini India (Example Program: SAP_PICTURE_DEMO, SAP_PICTURE_DEMO_DRAG_DROP, SAP_PICTURE_DEMO_ICON )

[Code] SubScreen

Defines the selection screen as tabbed views as subscreen
* ----------------
* SELECTION-SCREEN
* ----------------
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
  <put parameters or select-options in here>
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
  <put parameters or select-options in here>
SELECTION-SCREEN END OF SCREEN 200.

SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 6 LINES,
                  TAB (20) text-t02 USER-COMMAND push1
                                   DEFAULT SCREEN 100,
                  TAB (20) text-t03 USER-COMMAND push2
                                   DEFAULT SCREEN 200,
                  END OF BLOCK mytab.

* --------------
* INITIALIZATION
* --------------
INITIALIZATION.
  IMPORT gv_flag FROM MEMORY ID 'ZPROGRAM'.
  IF gv_flag = '2'.
    mytab-dynnr = 200.
    mytab-activetab = 'PUSH2'.
  ELSE.
    gv_flag = '1'.
    mytab-dynnr = 100.
    mytab-activetab = 'PUSH1'.
  ENDIF.

* -------------------
* AT SELECTION-SCREEN
* -------------------
AT SELECTION-SCREEN.
  IF sscrfields-ucomm = 'PUSH1'.
    gv_flag = '1'.
  ELSEIF sscrfields-ucomm = 'PUSH2'.
    gv_flag = '2'.
  ENDIF.
  EXPORT gv_flag TO MEMORY ID 'ZPROGRAM'.

[Code] RADIOBUTTON

SELECTION-SCREEN RADIOBUTTON Example code
Example:
SELECTION-SCREEN BEGIN  OF LINE.
PARAMETERS: R_1A RADIOBUTTON GROUP RG1.
SELECTION-SCREEN COMMENT 6(30) FOR FIELD R_1A .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R_1B RADIOBUTTON GROUP RG1.
SELECTION-SCREEN COMMENT 6(30) FOR FIELD R_1B .
SELECTION-SCREEN END OF LINE.

[Code] Search Help For KSCHL

Customizing KSCHL search help with your request in report.

Defination:
DATA: BEGIN OF gt_t685 OCCURS 0,
kschl LIKE t685-kschl,
vtext LIKE t685t-vtext,
END OF gt_t685 .

DATA gw_dfies LIKE dfies .

DATA BEGIN OF gt_dfies OCCURS 0.
INCLUDE STRUCTURE dfies .
DATA END OF gt_dfies .

DATA BEGIN OF gt_dfies2 OCCURS 0.
INCLUDE STRUCTURE dfies .
DATA END OF gt_dfies2 .

DATA gv_repid LIKE sy-repid .
INITIALIZATION:
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_t685
FROM t685t
WHERE spras = sy-langu
AND kvewe = 'A'
AND kappl = 'V'
AND kschl IN gr_kschl.

gv_repid = sy-repid .

CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'T685T'
fieldname = 'KSCHL'
langu = sy-langu
TABLES
dfies_tab = gt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT gt_dfies INTO gw_dfies .
gw_dfies-position = 1 .
gw_dfies-offset = 0 .
APPEND gw_dfies TO gt_dfies2 .
ENDLOOP .

CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'T685T'
fieldname = 'VTEXT'
langu = sy-langu
TABLES
dfies_tab = gt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT gt_dfies INTO gw_dfies .
gw_dfies-position = 2 .
gw_dfies-offset = 4 .
APPEND gw_dfies TO gt_dfies2 .
ENDLOOP .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kschl-low:
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KSCHL'
dynpprog = gv_repid
dynpnr = '1000'
dynprofield = 'S_KSCHL-LOW'
value_org = 'S'
TABLES
value_tab = gt_t685[]
field_tab = gt_dfies2[]
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kschl-high:
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KSCHL'
dynpprog = gv_repid
dynpnr = '1000'
dynprofield = 'S_KSCHL-HIGH'
value_org = 'S'
TABLES
value_tab = gt_t685[]
field_tab = gt_dfies2[]
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.



Multi-Selection Search Help:
DATA: gt_return LIKE ddshretval OCCURS 0 WITH HEADER LINE,
gt_dfies LIKE dfies OCCURS 0 WITH HEADER LINE,
gt_dfies2 LIKE dfies OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF gt_brsch OCCURS 0,
brsch LIKE t016t-brsch,
brtxt LIKE t016t-brtxt,
kunnr LIKE komg-kunnr,
END OF gt_brsch.

DEFINE append_brsch.
clear: gt_brsch.
gt_brsch-brsch = &1.
gt_brsch-brtxt = &2.
gt_brsch-kunnr = &3.
append: gt_brsch.
END-OF-DEFINITION.



SELECT-OPTIONS:
s_brsch FOR komg-brsch NO INTERVALS.



*----------------
* INITIALIZATION
*----------------
INITIALIZATION.
gv_vrm_id = 'P_BRSCH'.
append_brsch 'K001' '中華' 'C1'.
append_brsch 'K002' '台哥大' 'C2'.
append_brsch 'K003' '遠傳' 'C3'.

* 設定產業碼 F4
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'T016T'
fieldname = 'BRSCH'
langu = sy-langu
TABLES
dfies_tab = gt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT gt_dfies.
gt_dfies-position = 1 . " 第一個欄位
gt_dfies-offset = 0 .
APPEND gt_dfies TO gt_dfies2 .
ENDLOOP .

CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'T016T'
fieldname = 'BRTXT'
langu = sy-langu
TABLES
dfies_tab = gt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT gt_dfies.
gt_dfies-position = 2 . " 第二個欄位
gt_dfies-offset = 4 . " 位置
APPEND gt_dfies TO gt_dfies2 .
ENDLOOP .


*--------------------
* AT SELECTION-SCREEN
*--------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_brsch-low.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BRSCH'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_BRSCH'
value_org = 'S'
multiple_choice = 'X' " 多重選取
TABLES
value_tab = gt_brsch
field_tab = gt_dfies2
return_tab = gt_return.
READ TABLE gt_return INDEX 1.
IF sy-subrc = 0.
CLEAR: s_brsch, s_brsch[].
s_brsch-sign = 'I'.
s_brsch-option = 'EQ'.
SORT gt_return DESCENDING.
LOOP AT gt_return.
s_brsch-low = gt_return-fieldval.
APPEND s_brsch.
ENDLOOP.
SORT s_brsch.
ENDIF.

2011年3月24日 星期四

[Code] Directory selection popup window


Folder selection window.
DATA: gv_path TYPE string.

CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = '選擇下載目錄:'
initial_folder = gv_path
CHANGING
selected_folder = gv_path.

[ABAP] Get Filename


取得上傳或下載的路徑及檔案名稱
FUNCTION 'KD_GET_FILENAME_ON_F4'
SELECTION-SCREEN BEGIN OF BLOCK z1 WITH FRAME TITLE text-t01.
PARAMETER: p_local LIKE rlgrap-filename OBLIGATORY
                   DEFAULT '\\COMPUTERNAME\UPLOAD'.
SELECTION-SCREEN END OF BLOCK z1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_local.
  gv_local = p_local.
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    CHANGING
      file_name = p_local.
FUNCTION 'F4_FILENAME'
SELECTION-SCREEN BEGIN OF BLOCK z1 WITH FRAME TITLE text-t01.
PARAMETER: p_local LIKE ibipparms-path OBLIGATORY
                   DEFAULT '\\COMPUTERNAME\UPLOAD'.
SELECTION-SCREEN END OF BLOCK z1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_local.
  gv_local = p_local.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      field_name    = 'P_LOCAL'
    IMPORTING
      file_name     = p_local.

[Code] Modify Selection Screen


Example code for for modifying Selection screen from within ABAP code
一定要放在 Event: AT SELECTION-SCREEN OUTPUT 底下:
*  
* AT SELECTION-SCREEN OUTPUT  
*  
AT SELECTION-SCREEN OUTPUT.
  LOOP AT screen.
    IF screen-name = '%_S_AUART_%_APP_%-TEXT'  OR
      screen-name = 'S_AUART-LOW'  OR
      screen-name = 'S_AUART-HIGH' OR
      screen-name = '%_S_AUART_%_APP_%-VALU_PUSH'.
      IF gv_incl = 'X'.
        screen-input = '0'.
        screen-intensified = '0'.
        screen-display_3d  = '0'.
      ELSE.
        screen-input = '1'.
        screen-intensified = '1'.
        screen-display_3d  = '1'.
      ENDIF.
      MODIFY screen.
    ENDIF.
  ENDLOOP.
另外可以在定義 SELECT-OPTIONS 用 MODIF ID 來設定 screen-group1 ,可以比較方便的來判斷一整個欄位群組, 但是因為上面的例子使用了 screen-display_3d ,如果使用 screen-group1 來判斷時,執行 screen-display_3d = '1' 的時候,連同 OPTI_PUSH 欄位都會浮現出來,就不是很完美。
除了 screen-group1 之外,還可以用 screen-group3 來判斷,group3 的內容如下
BLK for SELECTION-SCREEN ... BLOCK ...: Block 
COF for SELECTION-SCREEN COMMENT ... FOR FIELD ...: Field-related comment 
COM for SELECTION-SCREEN COMMENT: Comment 
HGH for SELECTION-OPTIONS: Interval upper limit 
ISX for PARAMETERS ... AS SEARCH PATTERN: Komplex selection 
LOW for SELECTION-OPTIONS: Interval lower limit 
OPU for SELECTION-OPTIONS: Selection option icons 
PAR for PARAMETERS: Parameters 
PBU for SELECTION-SCREEN PUSHBUTTON ...: Pushbutton 
TAB for SELECTION-SCREEN TAB: Tab title 
TOT for SELECTION-OPTIONS: Text of interval upper limit 
TST for SELECTION-SCREEN ... TABBED ...: Tabstrip 
TXT for PARAMETERS, SELECT-OPTIONS: Selection text 
ULI for SELECTION-SCREEN ULINE: Horizontal Line 
VPU for SELECT-OPTIONS: Pushbutton for multiple selection

如果想在程式工具列加一個 Button 的話:
TABLES: sscrfields.

DATA: li_exclude  TYPE TABLE OF rsexfcode,
      lwa_exclude TYPE rsexfcode.

PARAMETERS: p_kunnr TYPE kunnr.

SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.
  MOVE 'Text' TO sscrfields-functxt_01.
  lwa_exclude-fcode = 'ONLI'.
  APPEND lwa_exclude TO li_exclude.

AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC01'.
** Coding here >>
ENDIF.

AT SELECTION-SCREEN OUTPUT.
  CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
    EXPORTING
      p_status  = '%_00'
      p_program = 'RSSYSTDB'
    TABLES
      p_exclude = li_exclude.

Parameters 和 select-options 的 low 欄位可以用 memory id 來記錄欄位的值,但是 select-options 的 high 欄位呢?
可以在 AT SELECTION-SCREENAT SELECTION-SCREEN OUTPUT EVENT 裡來處理:
SELECT-OPTIONS:
s_vkbur FOR vbrp-vkbur MEMORY ID vkb,
s_vtweg FOR vbrk-vtweg MEMORY ID vtw,
s_kunag FOR vbrk-kunag MEMORY ID vag.

* -------------------
* AT SELECTION-SCREEN
* -------------------
AT SELECTION-SCREEN .
SET PARAMETER ID 'VKBH'          FIELD s_vkbur-high.
SET PARAMETER ID 'VTWH'          FIELD s_vtweg-high.
SET PARAMETER ID 'VAGH'          FIELD s_kunag-high.

AT SELECTION-SCREEN OUTPUT.
* 
GET PARAMETER ID 'VKB'           FIELD s_vkbur-low.
GET PARAMETER ID 'VKBH'          FIELD s_vkbur-high.
IF s_vkbur-low NE space.
COLLECT s_vkbur.
ENDIF.
* 
GET PARAMETER ID 'VTW'           FIELD s_vtweg-low.
GET PARAMETER ID 'VTWH'          FIELD s_vtweg-high.
IF s_vtweg-low NE space.
COLLECT s_vtweg.
ENDIF.
* 
GET PARAMETER ID 'VAG'           FIELD s_kunag-low.
GET PARAMETER ID 'VAGH'          FIELD s_kunag-high.
IF s_kunag-low NE space.
COLLECT s_kunag.
ENDIF.

2011年3月23日 星期三

[Code] Selection Screen - Drop Down List


TYPE-POOLS: vrm.

DATA: gt_vrm TYPE vrm_values,
          gw_vrm TYPE LINE OF vrm_values,
          gv_vrm_id TYPE vrm_id.

DEFINE append_vrm.
    clear: gw_vrm.
    gw_vrm-key = &1.
    gw_vrm-text = &2.
    append gw_vrm to gt_vrm.
END-OF-DEFINITION.


PARAMETERS:
    p_brsch LIKE komg-brsch AS LISTBOX VISIBLE LENGTH 7
                                          MODIF ID b1b.

*----------------
* INITIALIZATION
*----------------
INITIALIZATION.
  gv_vrm_id = 'P_BRSCH'.
  append_vrm 'K001' '中華'.
  append_vrm 'K002' '台哥大'.
  append_vrm 'K003' '遠傳'.

*--------------------
* AT SELECTION-SCREEN
*--------------------
AT SELECTION-SCREEN OUTPUT.
* Set Drop Down List
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id = gv_vrm_id
      values = gt_vrm.