2006 Jul 25 7:44 AM
I got 3 select options like this:
Tables : VBRK.
*---------------------------------------------------------------------*
*SELECTION SCREEN GUI
*---------------------------------------------------------------------*
SELECT-OPTIONS:
so_fkdat FOR vbrk-fkdat OBLIGATORY,
so_fkart FOR vbrk-fkart,
so_vbeln FOR vbrk-vbeln.Now In the title of my alv I want to show
what user hav input in these 3 select-options. (the alv part is okay)
FORM form_so_title
USING itab_so TYPE ANY TABLE
it_so
CHANGING p_ls_line_info TYPE slis_entry.
LOOP AT itab_so into it_so.
* this is not working with type any
* so i hav to loop instead of read line
* READ TABLE it_so INDEX 1.
EXIT.
ENDLOOP.
*When i am trying to access it_so-low, i m getting error
l_describe = cl_abap_typedescr=>describe_by_data( it_so-low ).
IF l_describe->type_kind EQ 'D'.
WRITE it_so-high TO p_ls_line_info DD/MM/YYYY.
ELSE.
p_ls_line_info = it_so-high.
ENDIF.
* this routine is complex but i am only posting
* certain part of it
ENDFORM.
Here is how I am calling the routines
ls_line-key = 'Billing Date'.
PERFORM form_so_title USING so_fkdat[] so_fkdat
CHANGING ls_line-info.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing No.'.
CLEAR ls_line-info.
PERFORM form_so_title USING so_vbeln[] so_vbeln
CHANGING ls_line-info.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing Type'.
CLEAR ls_line-info.
PERFORM form_so_title USING so_fkart[] so_fkart
CHANGING ls_line-info.
APPEND ls_line TO lt_top_of_page.P.S.
I got 3 select options like this:
Tables : VBRK.
*---------------------------------------------------------------------*
*SELECTION SCREEN GUI
*---------------------------------------------------------------------*
SELECT-OPTIONS:
so_fkdat FOR vbrk-fkdat OBLIGATORY,
so_fkart FOR vbrk-fkart,
so_vbeln FOR vbrk-vbeln.Now In the title of my alv I want to show
what user hav input in these 3 select-options. (the alv part is okay)
FORM form_so_title
USING itab_so TYPE ANY TABLE
it_so
CHANGING p_ls_line_info TYPE slis_entry.
LOOP AT itab_so into it_so.
* this is not working with type any
* so i hav to loop instead of read line
* READ TABLE it_so INDEX 1.
EXIT.
ENDLOOP.
*When i am trying to access it_so-low, i m getting error
l_describe = cl_abap_typedescr=>describe_by_data( it_so-low ).
IF l_describe->type_kind EQ 'D'.
WRITE it_so-high TO p_ls_line_info DD/MM/YYYY.
ELSE.
p_ls_line_info = it_so-high.
ENDIF.
* this routine is complex but i am only posting
* certain part of it
ENDFORM.
Here is how I am calling the routines
ls_line-key = 'Billing Date'.
PERFORM form_so_title USING so_fkdat[] so_fkdat
CHANGING ls_line-info.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing No.'.
CLEAR ls_line-info.
PERFORM form_so_title USING so_vbeln[] so_vbeln
CHANGING ls_line-info.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing Type'.
CLEAR ls_line-info.
PERFORM form_so_title USING so_fkart[] so_fkart
CHANGING ls_line-info.
APPEND ls_line TO lt_top_of_page.P.S.
2006 Jul 25 7:52 AM
not able to understand what ur asking.....but u can directly loop at so_vbeln/so_fkdat/so_fkart to get the data in select options.
Not sure y ur using itab_so....wat is the structure of itab_so??!!
-Aarthi.
2006 Jul 25 8:12 AM
@Aarthi:
the idea is to do it dynamically,
i want to reuse the code,
as i wrote in my subroutine, its 100 line of code
and i dont want to repeat them
itab_so has got no strucute
@Manoj Gupta :
I want to use the same subroutines for all the three select-options
@Naimesh Patel :
Macro is nice work around, but i need to use it in other programs
2006 Jul 25 8:58 AM
*&---------------------------------------------------------------------*
*& Report ZT_SO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zt_so.
*---------------------------------------------------------------------*
* ALV
*---------------------------------------------------------------------*
TYPE-POOLS: slis, kkblo.
*---------------------------------------------------------------------*
*TABLES
*---------------------------------------------------------------------*
TABLES: usr01, sscrfields, vbrk.
TABLES: thead, "Textheader
tline. "Textline
DATA:
it_vbrk LIKE TABLE OF vbrk.
*---------------------------------------------------------------------*
*SELECTION SCREEN GUI
*---------------------------------------------------------------------*
SELECT-OPTIONS:
so_fkdat FOR vbrk-fkdat OBLIGATORY,
so_fkart FOR vbrk-fkart,
so_vbeln FOR vbrk-vbeln.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'ONLI'.
PERFORM form_extract_data.
WHEN OTHERS.
MESSAGE s001(00) WITH '' sscrfields-ucomm.
ENDCASE.
START-OF-SELECTION.
PERFORM form_show.
*&---------------------------------------------------------------------*
*& Form form_so_title
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SO_FKDAT[] text
* <--P_LS_LINE_INFO text
*----------------------------------------------------------------------*
FORM form_so_title
USING itab_so TYPE ANY TABLE
CHANGING
it_so
p_ls_line_info TYPE slis_entry.
FIELD-SYMBOLS:
<fs_low> TYPE ANY, <fs_high> TYPE ANY,
<fs_option> TYPE ANY, <fs_sign> TYPE ANY.
DATA comp_low(3) TYPE c VALUE 'LOW'.
DATA comp_high(4) TYPE c VALUE 'HIGH'.
DATA comp_sign(4) TYPE c VALUE 'SIGN'.
DATA comp_option(6) TYPE c VALUE 'OPTION'.
LOOP AT itab_so INTO it_so.
EXIT.
ENDLOOP.
DATA:
str_where(255), str_low(10), str_high(10), str_option(50), typ1.
DATA l_describe TYPE REF TO cl_abap_typedescr.
ASSIGN COMPONENT comp_low OF STRUCTURE it_so TO <fs_low>.
ASSIGN COMPONENT comp_high OF STRUCTURE it_so TO <fs_high>.
ASSIGN COMPONENT comp_sign OF STRUCTURE it_so TO <fs_sign>.
ASSIGN COMPONENT comp_option OF STRUCTURE it_so TO <fs_option>.
l_describe = cl_abap_typedescr=>describe_by_data( <fs_low> ).
typ1 = l_describe->type_kind.
IF <fs_high> IS NOT INITIAL
AND <fs_low> IS NOT INITIAL.
IF typ1 = 'D'.
WRITE <fs_low> TO str_low DD/MM/YYYY.
WRITE <fs_high> TO str_high DD/MM/YYYY.
ELSE.
str_low = <fs_low>.
str_high = <fs_high>.
ENDIF.
* "BT", "NB"
IF <fs_option> = 'BT'.
str_option = 'between'.
ELSEIF <fs_option> = 'NB'.
str_option = ' not between'.
ENDIF.
CONCATENATE str_option str_low 'and' str_high INTO p_ls_line_info
SEPARATED BY space.
ELSEIF <fs_high> IS NOT INITIAL.
IF typ1 = 'D'.
WRITE <fs_high> TO p_ls_line_info DD/MM/YYYY.
ELSE.
p_ls_line_info = <fs_high>.
ENDIF.
ELSEIF <fs_low> IS NOT INITIAL.
* "EQ", "NE", "GE", "GT", "LE", "LT", "CP" and "NP"
CASE <fs_option>.
WHEN 'EQ'.
str_option = ''.
WHEN 'NE'.
str_option = 'not equal to'.
WHEN 'GE'.
str_option = 'greater than or equal to'.
WHEN 'GT'.
str_option = 'greater than'.
WHEN 'LE'.
str_option = 'less than or equal to'.
WHEN 'LT'.
str_option = 'less than'.
WHEN 'CP'.
str_option = 'like'.
WHEN 'NP'.
str_option = 'not like'.
ENDCASE.
IF typ1 = 'D'.
WRITE <fs_low> TO str_low DD/MM/YYYY.
ELSE.
str_low = <fs_low>.
ENDIF.
CONCATENATE str_option str_low INTO p_ls_line_info
SEPARATED BY space.
ENDIF.
ENDFORM. " form_so_title
*&---------------------------------------------------------------------*
*& Form form_extract_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM form_extract_data .
SELECT SINGLE * FROM vbrk.
APPEND vbrk TO it_vbrk.
ENDFORM. " form_extract_data
*&---------------------------------------------------------------------*
*& Form form_show
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM form_show .
DATA:
gt_list_top_of_page TYPE slis_t_listheader,
wa_gt LIKE LINE OF gt_list_top_of_page.
*"List Header for Top-Of-Page
PERFORM comment_build USING gt_list_top_of_page[].
FORMAT COLOR COL_TOTAL.
LOOP AT gt_list_top_of_page INTO wa_gt.
FORMAT INTENSIFIED ON.
WRITE:/ wa_gt-key.
FORMAT INTENSIFIED OFF.
WRITE wa_gt-info.
ENDLOOP.
FORMAT COLOR OFF.
FORMAT COLOR COL_KEY.
LOOP AT it_vbrk INTO vbrk.
WRITE:/ vbrk-vbeln.
WRITE vbrk-fkdat.
ENDLOOP.
FORMAT COLOR OFF.
ENDFORM. " form_show
*&---------------------------------------------------------------------*
*& Form comment_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LT_TOP_OF_PAGE text
*----------------------------------------------------------------------*
FORM comment_build USING lt_top_of_page TYPE
slis_t_listheader.
DATA: ls_line TYPE slis_listheader,
str_select TYPE string,
str_where(255), str_low(10), str_high(10), str_option(50).
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'SDN BLOG'.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Form report'.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
CLEAR str_where.
ls_line-typ = 'S'.
ls_line-key = 'Report generated on'.
WRITE sy-datum TO ls_line-info DD/MM/YYYY.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing Date'.
PERFORM form_so_title USING so_fkdat[]
CHANGING so_fkdat ls_line-info.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing No.'.
CLEAR ls_line-info.
PERFORM form_so_title USING so_vbeln[]
CHANGING so_vbeln ls_line-info.
APPEND ls_line TO lt_top_of_page.
*
ls_line-key = 'Billing Type'.
CLEAR ls_line-info.
PERFORM form_so_title USING so_fkart[]
CHANGING so_fkart ls_line-info.
APPEND ls_line TO lt_top_of_page.
ENDFORM. "comment_build
2006 Jul 25 7:54 AM
Hello,
It is not possible to pass the different select-options into same parameter in the subroutine.
Try to do it with MACRO.
define disp.
here you can access components like &1-low, &1-high...
end-of-defination.
*use it
disp so_fkdat.
Regards,
Naimesh
2006 Jul 25 7:54 AM
Hi,
Do this
FORM form_so_title
tables itab_so like so_fkdat
CHANGING p_ls_line_info TYPE slis_entry.Note : - so_fkdat should be globally declared.
<b>or</b>
make a global varaible like this
data : lt_fkdat type ranges of fkdat.
then this
FORM form_so_title
tables itab_so like lt_fkdat
CHANGING p_ls_line_info TYPE slis_entry.NOTE :- It will not recognize the variable until u type cast it. always define type of variable in form aparameter.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |