Select on a view containing a function
Hi,
I have a problem with my production user (LABO): he's trying to access a view on another schema ( METAP ). This view use a function on another schema ( APPDATA ).
The view:
CREATE OR REPLACE VIEW metap.foreg_best AS
select
TX, TN, TG, WW, WW_1, WW_2, WW_EVOL,
from
FOREG_11REGIONS
where
TIMESTAMP_BEGIN > local_time(SYSDATE)
AND CODE in(6407,6447,6476,6479,6480);
LABO has the right to see the table FOREG_11REGIONS and also the right to execute the function LOCAL_TIME. If labo tries the query, it works, if he access the view with the same query : ORA-01031: insufficient privileges .
When metap select the view, no problem, when I do( with DBA role), no problem.
I've already tried a grant execute on appdata.local_time to labo, but it doesn't change anything.
Thanks for your help.
Thank you so much Yoann !!
I have to admit I didn't had enough read what is " with grant option": I swear I'll read more about it in the next days.
Thank you for the quick answer !
Stephane.
Similar Messages
-
How to select option to the particular view container
Hi All,
I am working on ALV , i have view container for search parameters, here i want to add select option in to the same view container.. anyone help me to achive the same.
Thanks
RamAs Tamil said above, you have to put the select options in the view that you are embedding in the view container. For help on how to use select options in webdynpro, you can have a look at the tutorial in the following link...
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/c09fec07-0dab-2a10-dbbe-c9a26bdff03e -
Embedding view in view container UI element
Hello,
I have a requirement which is given below:
I have a MAIN view where there is a view container UI element. This container holds one of 3 views(VIEW1,VIEW2 and VIEW3) depending on user input. Initially VIEW1 is displayed (this is set as the default view). Then the user navigates to VIEW2 and enters some selection criteria and confirms. Then VIEW3 is displayed with the entered selection criteria. Then the user clicks on search on the MAIN view and the RESULT view is displayed. When the user clicks on back functionality in the RESULT view,MAIN view is again displayed but the view container has VIEW1. The user wants to see VIEW3 in the viewcontainer in MAIN view.
Please let me know if there is anyway to achieve this.
Regards
NilanjanHi Nilanjan,
Create three context attributes V1,V2,V3 of type char1.
Default value for V1 is 'X'.
Bind the visible property of each view container to the above attributes like
View1-V1
View2-V2
View3-V3
When you run the application, defaul View1 displays, coz its default values set as 'X'.
Now depends up on the logic, change the value of each attribute as 'X' or SPACE .
Eg:
DATA lo_el_context TYPE REF TO if_wd_context_element.
DATA ls_context TYPE wd_this->Element_context.
DATA lv_v1 TYPE wd_this->Element_context-v1.
DATA lv_v2 TYPE wd_this->Element_context-v2.
DATA lv_v3 TYPE wd_this->Element_context-v3.
* get element via lead selection
lo_el_context = wd_context->get_element( ).
* @TODO handle not set lead selection
IF lo_el_context IS INITIAL.
ENDIF.
* set single attribute
lo_el_context->set_attribute(
name = `V1`
value = 'X' ).
* set single attribute
lo_el_context->set_attribute(
name = `V2`
value = '' ).
* set single attribute
lo_el_context->set_attribute(
name = `V3`
value = '' ).
or
* set single attribute
lo_el_context->set_attribute(
name = `V1`
value = '' ).
* set single attribute
lo_el_context->set_attribute(
name = `V2`
value = 'X' ).
* set single attribute
lo_el_context->set_attribute(
name = `V3`
value = '' ).
or
* set single attribute
lo_el_context->set_attribute(
name = `V1`
value = '' ).
* set single attribute
lo_el_context->set_attribute(
name = `V2`
value = '' ).
* set single attribute
lo_el_context->set_attribute(
name = `V3`
value = 'X' ).
Regards,
Amarnath S -
Refreshing the Data from a embed view in a view container
Hi everybody
I would like to know how can I do to refresh all data from a View with a view container the problem is:
that I have a window that has a view at the same time this has a view container. The Main view brings the data of editable elements when I select one element of the main view the view container brings a list for that element (dependencies) but only the first time a choose an element loads the correct data, when I choose another one it brings the same old data and doesn't make the call for the wdDoInit() method.
The question is:
How do I force the view to refresh all the data or call again the wdDoInit() method?
Thank you for your helpAida,
Lets say you have two components C1 and C2 and you want method from C1 to be available in C2 then follow these steps:-
1) Goto the Interface Controller of C1 and create a method there lets say doSomething
2) Then goto C2. There you can see Used Web Dynpro Components --> Right click Add Used Component --> Give some name say C1Comp --> Click browse and select C1 --> Click Finish.
3) Next goto Component Controller of C2 --> Properties --> Click Add and check if C1 is added. If not then select the checkbox and select OK.
4) Now goto Implementation tab of C2 and lets say wdDoInit you can write following code:-
wdThis.wdGetC1CompInterface().doSomething();
Chintan -
Problem with embeding the same view in dynamically created view container
Hello Experts,
I am getiing a dump when i try to embed the same view inside the dynamically created view container of
dynamically created tabs of a tabstrip
The requirement go like this, i have 2 views in which i have have to embed the 2nd view to view1 where i have an empty
tabstrip without tabs. During runtime i create tabs as well as view containers accordingly and then try to embed view2 in tabs.
I have put the below mentioned code in HANDLEIN,
DATA: lref_vcntlr TYPE REF TO if_wd_view_controller,
lref_comp TYPE REF TO if_wd_component_usage,
lv_embed_pos TYPE string.
lref_vcntlr = wd_this->wd_get_api( ).
lv_embed_pos = 'FILE_PERS_EDIT/VC_GENERAL'.
TRY.
CALL METHOD lref_vcntlr->do_dynamic_navigation
EXPORTING
source_window_name = 'FILE_PERSISTENCE_WND' " Window
source_vusage_name = 'FILE_PERS_EDIT_USAGE_1' " Source View usage
source_plug_name = 'TO_EDIT_LAYOUT' " Outbound plug
target_view_name = 'PERS_EDIT_LAYOUT' " Second view to be embedded
target_plug_name = 'IN' " Second view inboun plug
target_embedding_position = lv_embed_pos
RECEIVING
component_usage = lref_comp.
CATCH cx_wd_runtime_repository .
ENDTRY.
wd_this->fire_to_edit_layout_plg( ).
This works fine for the first time.
However onaction tab select i change the embeding position( 'FILE_PERS_EDIT/view container name of different tab') of the view2 an try to embed view2 in a different tab.
At this point i get a dump stating View2 already present in the window 'FILE_PERSISTENCE_WND' of component.
I think, the view2 embediing has to be removed before i add the view2 in a different tab
Kindly let me know how to remove view2 embedding from tab1 before i add a view2 to a different tab or is there any other
means to handle this problem?
Thanks & Best Regards,
Srini.Hello Srini,
I found a solution to your problem, because I had a similar task.
In WDDOINIT I changed the method do_dynamic_navigation to if_wd_navigation_services_new~prepare_dynamic_navigation:
DATA:
l_view_controller_api TYPE REF TO if_wd_view_controller.
l_view_controller_api = wd_this->wd_get_api( ).
TRY.
CALL METHOD l_view_controller_api->if_wd_navigation_services_new~prepare_dynamic_navigation
EXPORTING
source_window_name = 'WDW_MAIN'
source_vusage_name = 'VW_SUB_USAGE_1'
source_plug_name = 'TO_VW_CONTENT'
target_component_name = 'ZTEST_DYNAMIC'
target_view_name = 'VW_CONTENT'
target_plug_name = 'DEFAULT'
target_embedding_position = 'VW_MAIN/VC_TAB.VW_SUB/TAB1_VC'
RECEIVING
repository_handle = wd_this->g_rep_handle.
CATCH cx_wd_runtime_repository .
ENDTRY.
wd_this->fire_to_vw_content_plg( param1 = 'TAB1' ).
In the action I first deleted the navigation targets, then navigated to the empty-view and last I called my target view:
DATA:
lv_position TYPE string,
l_view_controller_api TYPE REF TO if_wd_view_controller,
lr_view_usage TYPE REF TO if_wd_rr_view_usage,
lr_view_***_t TYPE wdrr_vca_objects,
lr_view_*** LIKE LINE OF lr_view_***_t.
l_view_controller_api = wd_this->wd_get_api( ).
lr_view_usage = wd_this->g_view->get_view_usage( ).
lr_view_usage->delete_all_navigation_targets( plug_name = 'TO_VW_CONTENT' ).
CLEAR lv_position.
CONCATENATE 'VW_MAIN/VC_TAB.VW_SUB/' old_tab '_VC' INTO lv_position.
TRY.
l_view_controller_api->if_wd_navigation_services_new~do_dynamic_navigation(
source_window_name = 'WDW_MAIN'
source_vusage_name = 'VW_SUB_USAGE_1'
source_plug_name = 'TO_EMPTYVIEW'
target_component_name = 'ZTEST_DYNAMIC'
target_view_name = 'EMPTYVIEW'
target_plug_name = 'DEFAULT'
target_embedding_position = lv_position ).
CATCH cx_wd_runtime_repository.
ENDTRY.
CLEAR lv_position.
CONCATENATE 'VW_MAIN/VC_TAB.VW_SUB/' tab '_VC' INTO lv_position.
TRY.
wd_this->g_rep_handle = l_view_controller_api->if_wd_navigation_services_new~prepare_dynamic_navigation(
source_window_name = 'WDW_MAIN'
source_vusage_name = 'VW_SUB_USAGE_1'
source_plug_name = 'TO_VW_CONTENT'
target_component_name = 'ZTEST_DYNAMIC'
target_view_name = 'VW_CONTENT'
target_plug_name = 'DEFAULT'
target_embedding_position = lv_position ).
CATCH cx_wd_runtime_repository.
ENDTRY.
wd_this->fire_to_vw_content_plg( param1 = tab ).
Ann.: I my example, I had 3 views: VW_MAIN which embedds VW_SUB. VW_SUB has the tabs in it and VW_SUB embedds VW_CONTENT.
BR,
Roland -
Select a specific view in MM02/MM01
Hi Abappers,
I am doing a BDC on MM01 transaction and want to just select the accounting view and extend materials for different valuation types. But the position of accounting view is coming different on different material and my BDC recording is failing to select the accounting view. Does anyone has any idea how we can pinpoint and select the accounting view?
Thanks,
David.SELECTION_VIEWS_FIND - This FM Will work depends on material type..
in your case this FM Is not required and you need to have Accounting view.
Any way See below program and you will get some idea and uploaded data into Material master change mode and it is applicable to user defined view
REPORT zjpmuim306 NO STANDARD PAGE HEADING LINE-SIZE 250 MESSAGE-ID
zjpm001.
*& I N B O U N D V I A A B A P : Batch input Session method *
*& Development ID: IM_DD_306_LJP *
*& Report : ZJPMUIM306 *
*& The Purpose of the Object is to interface Create Input Record *
*& for SAP Migration from the Material master of BPCS All the *
*& information received at BPCS is collected into a single record. *
*& By using session method upload data from file ,one item is
*& created for one record *
*& Change Log: *
*& Init Who Date Text *
*& MALIKDH1 Seshu Reddy 26-07-2003 Initial Version *
Constants *
CONSTANTS:c_vkorg(4) type c value 'JP20', " Sales Organization
c_vtweg(2) type c value 'TR' , " Distribution Channel
c_werks(4) Type c value 'JP01' , " Plant
c_viewlist(15) VALUE 'KDEALBSZXVPCFQG'," View list
c_scm_view TYPE msichtausw-dytxt VALUE 'SCM View',
c_sd_view TYPE msichtausw-dytxt VALUE 'SD View',
c_seq_code(2) VALUE 'Z1', " Sequential Code
c_keep(1) TYPE c VALUE 'X', " Keep
c_group LIKE apqi-groupid VALUE 'IM306', " Session Name
c_tcode LIKE tstc-tcode VALUE 'MM02', " Transaction Code
c_blank(1) VALUE ' ', " Blank
c_intls(1) VALUE 'N'. " Logistic Status
Variables *
DATA: g_flag1(1), " Variable to hold
g_flag(1), " Variable to hold
g_file LIKE rlgrap-filename VALUE
'C:\Documents and Settings\seshur\Desktop\HCLT123.CSV'. " File name
Internal tables/ Work area *
Internal Table for Delimter
DATA : BEGIN OF t_delim OCCURS 0,
text(1000),
END OF t_delim.
Internal table for BDC processing
DATA : t_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
Internal table for holding the data which has to be uploaded.
DATA: BEGIN OF t_bpcs OCCURS 0,
matnr(15) TYPE c, " material no
dosage(40) TYPE c, " Dosage form(Local)
appearance(40) TYPE c, " Appearance
idcode(6) TYPE c, " Identification Code
prostformno(10) TYPE c, "SOP
weitab(7) TYPE c, " Weight/tablet
uom1(2) TYPE c, " UOM of Carton
uom2(2) TYPE c, " UOM of Case
carsize(14) TYPE c, " Carton size
cassize(14) TYPE c, " Case size
rupqty(11) TYPE c, " Round up
abvname(3) TYPE c, " Product short name
END OF t_bpcs.
*Internal table for t_bpcs
DATA: BEGIN OF t_mdata OCCURS 0,
matnr LIKE marc-matnr, " Material number
zzjp_dos_frm LIKE marc-zzjp_dos_frm, " Dosage form(Local)
zzjp_aprn LIKE marc-zzjp_aprn, " Appearance
zzjp_con_id LIKE marc-zzjp_con_id," Identification Code
zzjp_nyu_sop LIKE marc-zzjp_nyu_sop,"SOP
zzjp_wei_tab(10) type c , " Weight/tablet
zzjp_bio LIKE marc-zzjp_bio,"Biologics Indicator
zzjp_itf LIKE marc-zzjp_itf, " ITF code
zzjp_car(2) type c, " UOM of Carton
zzjp_cas(2) type c, " UOM of Case
zzjp_car_size(11) type c," Carton size
zzjp_cas_size(11) type c, " Case size
zzjp_rupqty(11) type c, " Round up
zzjp_init_ls LIKE marc-zzjp_init_ls, " Logistic Status
zzjp_re1 LIKE marc-zzjp_re1, "Document type(Local)
zzjp_re2 LIKE marc-zzjp_re2, "Report type
zzjp_re3 LIKE marc-zzjp_re3, "Shipping report type
zzjp_pro_id LIKE mvke-zzjp_pro_id," Product output sequence
zzjp_bu_id LIKE mvke-zzjp_bu_id, " Business unit indicator
zzjp_abv_name LIKE mvke-zzjp_abv_name," Product short name
zzjp_abv_id1 LIKE mvke-zzjp_abv_id1," Product short name output
zzjp_abv_id2 LIKE mvke-zzjp_abv_id2," Product short name internal
zzjp_spl_id LIKE mvke-zzjp_spl_id, " Sample internal order
END OF t_mdata.
Internal table for Mara Table
DATA: BEGIN OF t_mara OCCURS 0,
matnr LIKE mara-matnr, " material Number
vpsta LIKE mara-vpsta, " Maintenance status of complete material
pstat like mara-pstat, " Maintenance status
END OF t_mara.
Internal table for Material Master View Selection Screens
DATA: BEGIN OF t_bildtab OCCURS 0.
INCLUDE STRUCTURE mbildtab.
DATA: END OF t_bildtab.
internal table for T_bildtab
DATA: t_bildtab_dup LIKE t_bildtab OCCURS 0 WITH HEADER LINE.
*Work area for T_bildtab internal table(Views Selection)
DATA: BEGIN OF w_data,
flag1 type c,
anzd70 TYPE i,
field1(20) type c,
field2(20) type c,
field3(20) type c,
field4(20) type c,
count(2) TYPE c,
END OF w_data.
Main Processing *
START-OF-SELECTION.
Store data from file into internal table
PERFORM f_uplaod_data.
Transfer the uploaded data into t_mdata internal Table
PERFORM f_process_data.
Selecting The views based on Material number
PERFORM f_view_list.
Open a BDC Session
PERFORM f_bdc_open.
*Selecting the fields from mara table
SELECT matnr
vpsta
pstat
FROM mara
INTO TABLE t_mara
FOR ALL ENTRIES IN t_mdata
WHERE matnr = t_mdata-matnr.
SORT t_mara BY matnr.
SORT t_mdata BY matnr.
Transfer the uploaded data into BDCDATA structure
PERFORM f_process_bdc.
Close The BDC Session
PERFORM f_close_group.
*& Form F_VIEW_LIST *
Routine to used for Calling the function module *
Selection_views_find *
FORM f_view_list.
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
bildsequenz = c_seq_code
pflegestatus = c_viewlist
TABLES
bildtab = t_bildtab
EXCEPTIONS
call_wrong = 1
empty_selection = 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.
ENDFORM. " F_VIEW_LIST
*& Form f612_view_sort *
Routine to used for Selecting The views based on Material Number *
FORM f612_view_sort.
t_bildtab_dup[] = t_bildtab[].
Reading the Internal table t_mara
READ TABLE t_mara WITH KEY matnr = t_mdata-matnr.
TRANSLATE t_mara-pstat USING ' $'.
CLEAR: w_data-flag1, w_data-anzd70.
LOOP AT t_bildtab_dup.
IF t_bildtab_dup-pstat CA t_mara-pstat.
w_data-anzd70 = w_data-anzd70 + 1.
IF t_bildtab_dup-kzanz IS INITIAL.
t_bildtab_dup-kzanz = 'X'.
w_data-flag1 = 'X'.
MODIFY t_bildtab_dup.
ENDIF.
ELSE.
IF NOT t_bildtab_dup-kzanz IS INITIAL.
CLEAR t_bildtab_dup-kzanz.
w_data-flag1 = 'X'.
MODIFY t_bildtab_dup.
ENDIF.
ENDIF.
ENDLOOP.
TRANSLATE t_mara-pstat USING '$ '.
IF NOT w_data-flag1 IS INITIAL.
SORT t_bildtab_dup BY kzanz DESCENDING idxbd ASCENDING.
ENDIF.
*Reading The internal table for T_bildtab_dup
READ TABLE t_bildtab_dup WITH KEY dytxt = c_scm_view.
IF t_bildtab_dup-kzanz = 'X'.
WRITE sy-tabix TO w_data-count.
w_data-count = w_data-count + 2.
IF w_data-anzd70 > 18.
w_data-count = w_data-count - 18.
ENDIF.
CONCATENATE 'MSICHTAUSW-DYTXT(' w_data-count ')' INTO w_data-field1.
CONCATENATE 'MSICHTAUSW-KZSEL(' w_data-count ')' INTO w_data-field2.
ENDIF.
READ TABLE t_bildtab_dup WITH KEY dytxt = c_sd_view.
IF t_bildtab_dup-kzanz = 'X'.
WRITE sy-tabix TO w_data-count.
IF w_data-anzd70 > 18.
w_data-count = w_data-count + 2.
w_data-count = w_data-count - 18.
ENDIF.
CONCATENATE 'MSICHTAUSW-DYTXT(' w_data-count ')' INTO w_data-field3.
CONCATENATE 'MSICHTAUSW-KZSEL(' w_data-count ')' INTO w_data-field4.
ENDIF.
ENDFORM. " f612_view_sort
*& Form f_uplaod_data *
Routine to used for Uploading the data from file to Internal table *
FORM f_uplaod_data.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = g_file
filetype = 'DAT'
TABLES
data_tab = t_delim
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF t_bpcs IS INITIAL.
LOOP AT t_delim.
SPLIT t_delim-text AT ',' INTO t_bpcs-matnr
t_bpcs-dosage
t_bpcs-appearance
t_bpcs-idcode
t_bpcs-prostformno
t_bpcs-weitab
t_bpcs-uom1
t_bpcs-uom2
t_bpcs-carsize
t_bpcs-cassize
t_bpcs-rupqty
t_bpcs-abvname.
APPEND t_bpcs.
ENDLOOP.
ENDIF.
ENDFORM. " f_uplaod_data
*& Form F_BDC_OPEN
Routine to create BDC Session to be processed
FORM f_bdc_open.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = c_group
keep = c_keep
user = sy-uname
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
MESSAGE S000 WITH 'Batch input session is created successfully'(T02).
ENDIF.
ENDFORM. " F_BDC_OPEN
*& Form F_PROCESS_BDC
Processing of BDCDATA Structure
FORM f_process_bdc.
LOOP AT t_mdata.
PERFORM f612_view_sort.
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM f_bdc_field USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=AUSW'.
PERFORM f_bdc_field USING 'RMMG1-MATNR'
t_mdata-matnr.
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM f_bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
IF w_data-anzd70 > 18.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=P+'.
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM f_bdc_field USING 'BDC_OKCODE' '/00'.
ENDIF.
reading the t_bildtab internal table
READ TABLE t_bildtab_dup WITH KEY dytxt = c_scm_view.
IF t_bildtab_dup-kzanz = 'X'.
PERFORM f_bdc_field USING 'BDC_CURSOR'
w_data-field1.
PERFORM f_bdc_field USING w_data-field2 'X'.
g_flag = 'X'.
ENDIF.
reading the t_bildtab internal table
READ TABLE t_bildtab_dup WITH KEY dytxt = c_sd_view.
IF sy-subrc EQ 0.
g_flag = 'X'.
ENDIF.
IF t_bildtab_dup-kzanz = 'X'.
PERFORM f_bdc_field USING 'BDC_CURSOR'
w_data-field3.
PERFORM f_bdc_field USING w_data-field4 'X'.
g_flag1 = 'X'.
ENDIF.
IF g_flag = 'X' AND g_flag1 = 'X'.
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0080'.
PERFORM f_bdc_field USING 'BDC_CURSOR'
'RMMG1-VTWEG'.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM f_bdc_field USING 'RMMG1-WERKS'
c_werks.
PERFORM f_bdc_field USING 'RMMG1-VKORG'
c_vkorg.
PERFORM f_bdc_field USING 'RMMG1-VTWEG'
c_vtweg.
CLEAR g_flag.
CLEAR g_flag1.
ELSE.
IF g_flag = 'X'.
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0080'.
PERFORM f_bdc_field USING 'RMMG1-WERKS'
c_werks.
PERFORM f_bdc_field USING 'BDC_OKCODE' '/00'.
ELSE.
IF g_flag1 = 'X'.
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0080'.
PERFORM f_bdc_field USING 'BDC_CURSOR'
'RMMG1-VTWEG'.
PERFORM f_bdc_field USING 'RMMG1-WERKS'
c_werks.
PERFORM f_bdc_field USING 'RMMG1-VKORG'
c_vkorg.
PERFORM f_bdc_field USING 'RMMG1-VTWEG'
c_vtweg.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=ENTR'.
ENDIF.
ENDIF.
ENDIF.
*Processing of SCM View
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM f_bdc_field USING 'BDC_CURSOR' 'MARC-ZZJP_DOS_FRM'.
PERFORM f_bdc_field USING 'MARC-ZZJP_DOS_FRM'
t_mdata-zzjp_dos_frm.
PERFORM f_bdc_field USING 'MARC-ZZJP_APRN'
t_mdata-zzjp_aprn.
PERFORM f_bdc_field USING 'MARC-ZZJP_CON_ID'
t_mdata-zzjp_con_id.
PERFORM f_bdc_field USING 'MARC-ZZJP_NYU_SOP'
t_mdata-zzjp_nyu_sop.
PERFORM f_bdc_field USING 'MARC-ZZJP_WEI_TAB'
t_mdata-zzjp_wei_tab.
PERFORM f_bdc_field USING 'MARC-ZZJP_CAR'
t_mdata-zzjp_car.
PERFORM f_bdc_field USING 'MARC-ZZJP_CAS'
t_mdata-zzjp_cas.
PERFORM f_bdc_field USING 'MARC-ZZJP_CAR_SIZE'
t_mdata-ZZJP_CAR_SIZE.
PERFORM f_bdc_field USING 'MARC-ZZJP_CAS_SIZE'
t_mdata-ZZJP_CAS_SIZE.
PERFORM f_bdc_field USING 'MARC-ZZJP_RUPQTY'
t_mdata-ZZJP_RUPQTY.
PERFORM f_bdc_field USING 'MARC-ZZJP_BIO'
t_mdata-zzjp_bio.
PERFORM f_bdc_field USING 'MARC-ZZJP_ITF'
t_mdata-zzjp_itf.
PERFORM f_bdc_field USING 'MARC-ZZJP_INIT_LS'
t_mdata-zzjp_init_ls.
PERFORM f_bdc_field USING 'MARC-ZZJP_RE1'
t_mdata-zzjp_re1.
PERFORM f_bdc_field USING 'MARC-ZZJP_RE2'
t_mdata-zzjp_re2.
PERFORM f_bdc_field USING 'MARC-ZZJP_RE3'
t_mdata-zzjp_re3.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'/00'.
*Processing of SD View
PERFORM f_bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM f_bdc_field USING 'BDC_CURSOR' 'MVKE-ZZJP_PRO_ID'.
PERFORM f_bdc_field USING 'MVKE-ZZJP_PRO_ID'
t_mdata-zzjp_pro_id.
PERFORM f_bdc_field USING 'MVKE-ZZJP_BU_ID'
t_mdata-zzjp_bu_id.
PERFORM f_bdc_field USING 'MVKE-ZZJP_ABV_NAME'
t_mdata-zzjp_abv_name.
PERFORM f_bdc_field USING 'MVKE-ZZJP_ABV_ID1'
t_mdata-zzjp_abv_id1.
PERFORM f_bdc_field USING 'MVKE-ZZJP_ABV_ID2'
t_mdata-zzjp_abv_id2.
PERFORM f_bdc_field USING 'MVKE-ZZJP_SPL_ID'
t_mdata-zzjp_spl_id.
PERFORM f_bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM f_bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=YES'.
perform f_bdc_insert.
REFRESH T_BDCDATA.
ENDLOOP.
ENDFORM. " F_PROCESS_BDC
*& Form f_bdc_dynpro
p_prog is the program name to which data is passed *
p_dyno is the screen number to which the data is passed
Routine for populating the BDCDATA structure with the
Screen related information
FORM f_bdc_dynpro USING p_prog
p_dyno.
t_bdcdata-program = p_prog.
t_bdcdata-dynpro = p_dyno.
t_bdcdata-dynbegin = 'X'.
APPEND t_bdcdata.
CLEAR t_bdcdata.
ENDFORM. " F_bdc_dynpro
*& Form F_BDC_FIELD
p_fnam is the field name to which value is passed
p_fval is the field value which is passed
p_fnam is the field name to which value is passed
p_fval is the field value which is passed
FORM f_bdc_field USING p_fnam
p_fval.
t_bdcdata-fnam = p_fnam.
t_bdcdata-fval = p_fval.
APPEND t_bdcdata.
CLEAR t_bdcdata.
ENDFORM. " F_bdc_field
*& Form F_PROCESS_DATA *
Routine to used for moving data from T_bpcs internal table to *
t_mdata Internal Table *
FORM f_process_data.
LOOP AT t_bpcs.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = t_bpcs-matnr
IMPORTING
output = t_mdata-matnr.
MOVE t_bpcs-dosage TO t_mdata-zzjp_dos_frm.
MOVE t_bpcs-appearance TO t_mdata-zzjp_aprn.
MOVE t_bpcs-idcode TO t_mdata-zzjp_con_id.
MOVE t_bpcs-prostformno TO t_mdata-zzjp_nyu_sop.
MOVE t_bpcs-weitab TO t_mdata-zzjp_wei_tab.
MOVE c_blank TO t_mdata-zzjp_bio.
MOVE c_blank TO t_mdata-zzjp_itf.
MOVE t_bpcs-uom1 TO t_mdata-zzjp_car.
MOVE t_bpcs-uom2 TO t_mdata-zzjp_cas.
MOVE t_bpcs-carsize TO t_mdata-zzjp_car_size.
MOVE t_bpcs-cassize TO t_mdata-zzjp_cas_size.
MOVE t_bpcs-rupqty TO t_mdata-zzjp_rupqty.
MOVE c_intls TO t_mdata-zzjp_init_ls.
MOVE c_blank TO t_mdata-zzjp_re1.
MOVE c_blank TO t_mdata-zzjp_re2.
MOVE c_blank TO t_mdata-zzjp_re3.
MOVE c_blank TO t_mdata-zzjp_pro_id.
MOVE c_blank TO t_mdata-zzjp_bu_id.
MOVE t_bpcs-abvname TO t_mdata-zzjp_abv_name.
MOVE c_blank TO t_mdata-zzjp_abv_id1.
MOVE c_blank TO t_mdata-zzjp_abv_id2.
MOVE c_blank TO t_mdata-zzjp_spl_id.
APPEND t_mdata.
ENDLOOP.
ENDFORM. " F_PROCESS_DATA
*& Form f_bdc_close
Routine to close the BDC Session
FORM f_close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_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.
ENDFORM. " f_close_group
*& Form f_bdc_insert
routine to input batch data into the Transaction MM02 from the
session created
FORM f_bdc_insert.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = c_tcode
TABLES
dynprotab = t_bdcdata
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_bdc_insert
Reward Points if it is helpful
Thanks
Seshu -
How to nevigate from view in view container to another view
Hello experts
I want to nevigate from one view which is present in the view container to another view which should not be displayed in the view container
instead it should be displayed in window .Case1:
WINDOW1
VIEWCONTAINER1.
VIEW1
VIEW2
Case 2:
WINDOW1
VIEWCONTAINER1
VIEW1
VIEW2
VIEW2
In the scenario 1 I have mentioned above, If VIEW2 is only embedded in WINDOW1 then it will open only in the WINDOW1 and not in VIEWCONTAINER1.
However in Case2 if the view is embedded in both WINDOW1 and VIEWCONTAINER1 then when creating the navigation link, Press f4 on destination view. There you will see VIEW2 two times, specifying the VIEW2 to be opened in WINDOW1 and VIEW2 to be opened in WINDOW1.VIEWCONTAINER1.
Here you can select where you want your VIEW2 to be opened. -
SAP RM: How can I update the open record view container
Hi,
I add a custom method to import a document in to the record tree. Every thing works fine, but only the open record view is not updated. So I stll see the model node and not the instance node.
I think I forgot a action after I replace the node with the instance. But I don't found a method for this.
When I close the record and open it again. The view of the tree is correct.
Regards
Thomas Fanninger
Code-Example:
CALL METHOD ME->CREATE_INSTANCE_CHILD
EXPORTING
GID = gid
ACTION = 'ADD'
CHILD_SPSID = 'Z_RM_PS_SPS_DOCUMENT_TEMPLATE'
IMPORTING
NEW_GID = new_gid
EXCEPTIONS
NOT_FOUND = 1
CANCELLED = 2
CARDCHECK_FAILED = 3
NOT_ALLOWED = 4
INTERNAL_ERROR = 5
NOT_COMPATIBLE = 6
SUBTREE_NOT_COMPATIBLE = 7
others = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
doc_role_line = '*'.
APPEND doc_role_line to doc_role_tab.
CALL METHOD GLOB_INSTANCE_XMLDOM->REPLACE_ELEMENT_BY_GID
EXPORTING
ELEMENT_GID = new_gid
DESCRIPTION_TAB = doc_descr_tab
AREA_POID_TAB = tab_area_poid
SRM_POID_TAB = tab_srm_poid
SP_POID_TAB = tab_sp_poid
SPSID = str_sps_id
ROLE_TAB = doc_role_tab
RELA_TAB = doc_rela_tab
EXCEPTIONS
REPLACE_FAILED = 1
others = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.Hi Thomas,
ViewContainer is used to hold the views which have to share the same
screen area..
That is, If you more than two vies and want to show one view to be visible
for an operation you will use this ViewContainer.
You can specify a view to be displayed, bu using Plugs.
wdThis.wdFire<PlugtoView>();
pls check these examples:
Example :
Updating fields
swc_set_element wi_container 'ORDER_NO' rbselbest-ebeln.
Modify container
CALL FUNCTION 'SWW_WI_CONTAINER_MODIFY'
EXPORTING
wi_id = wi_id "Workitem ID
do_commit = 'X'
TABLES
wi_container = wi_container. "New container merged with the workflow container.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
That's strange because If I try to update directly in the method it works !!
swc_set_element wi_container 'ORDER_NO' '123132132'.
This MF works in 4.6B but not in ECC6.0 ???
Answer: There are lot of changes mainly with respect to SWW_WI* function modules when you move from 4.6 to ECC 6.0.
Some of these SWW_WI* doesnt gurantee the correct behavioud and we did face this problem. Please change all your SWW_WI* function modules with SAP_WAPI* equivalents.
I knew SWW_WI* are working fine in some scenario's in ECC but it doesnt gurantee the behaviour always and even if you raise a message to SAP, SAP came back saying from ECC onwards developers should use SAP_WAPI* and SWW_WI* may not be supported !!
Better please replace your SWW_WI* FMs with equivalent SAP_WAPI. We have all equivalents. For SWW_WI_CONTAINER_MODIFY equiavalent is SAP_WAPI_WRITE_CONTAINER. Check for all SAP_WAPI in SE37 for a list of all SAP_WAPI FMs.
hope this helps u.
kindly reward if found helpful.
cheers,
Hema. -
Create a View with Aggregation Function (COUNT)
I've been looking up and down for a way to create a view with a few basic fields and some other fields containing aggregation function.
For instance:
To display a view that contain all the Contract Agreement and the corresponding count of the PO releases.
Agreement Nbr, Total PO releases
I need this view so that I can create a search help with this view.
I found something about the "CREATE VIEW" statement, but I don't have any idea how to use it.
Any helps toward this matter is very much appreciated, thanks.Hello Aldern
I guess you have read about the SQL statement "CREATE VIEW". When we create a view in the dictionary this SQL statement is finally called to create the view on the DB. Thus, since we do not have any aggregation options in views you cannot achieve what you want using views.
The solution for your problem is to create a <b>search help</b> having a <b>search help exit</b>. Within the exit you can do your aggregation functions and add these values to the displayed search help data.
Regards
Uwe -
Select data from view ( V_T856 ).
Hi All,
i need to download transaction type and text from V_T856 , but the data is not selected from V_T856 view.
how to select data from a view, is there any special conditions.
i declared V_T856 in tables statement, even though select statement not exicuted.
pls suggest me with relevant information..
thank you
Regards
Ramesh.hi ramesh,
using Select statement you cannot retrieve the data from view.
use the FM - VIEW_GET_DATA.
call function 'VIEW_GET_DATA' " func. mod to get data from maintenance view.
exporting
view_name = view
tables
data = gt_data.
Regards,
Sakthi. -
ORA-01446 when selecting ROWID from View with Union
I have a View that uses a Union to select from 3 tables. I would like the View to return the ROWID for the record that is returned so that I can update it in my form. The View compiles fine but when I select from the View I get ORA-01446 error.
Example of my view:
SELECT ROWID, col_a, col_b, col_c
FROM tab_a
UNION ALL
SELECT ROWID, col_a, col_b, col_c
FROM tab_b
UNION ALL
SELECT ROWID, col_a, col_b, col_c
FROM tab_c
I need the ROWID because my tables do not contain UNIQUE/PRIMARY key constraints. In my form I want to update the view with an underlying INSTEAD OF database trigger.
Any suggestions?I think it will work if you give the column an alias (ie a name after the first rowid) and select that instead.
You will probably also need another column in your view indicating which table the row came from if you want to update it. -
Function in a view where the function owner is different that the view
we have a function that is in schema b which is used by a view in schema a. I am able to see the data in the view, but when the schema a user selects for the view he gets a view not found message. The view owner has execute on the function, and the function owner has full rights on the tables in the view?
In your scenario, it user "A" wants to select from the view, he should not receive any error like "table or view does not exist".
If you receive this error shilw connected to user "B", you must grant "SELECT ON view_name" privilege to the user "B".
Please use USER_TAB_PRIVS to see if you have SELECT privileges on this view. Please also p[aste exact error message
Thaks
Salman -
Idoc View link with Function Module ?
Hello All,
I have a n Idoc View . I want to know what is the outbound Function Module for this IDoc View .
Usually the process code contains the Function Module but when the idoc View is used the Process code is not maintained in the Message control of the Partner Profiles.So how to know which Function Module is used for this Idoc View ?
Can anyone tell me ?
Regards,
Deepu.KHi,
Are you looking this FM EDI_DOCUMENT_TREE_DISPLAY?
Regards,
Ferry Lianto -
Dynamically changing attributes of a field in view container UI element
In the layout of the web dynpro component I have added a view container UI element. I am populating the fields in the view container UI element in methods in component controller using the following code
*--Adding a Checkbox
lv_str = wd_assist->if_wd_component_assistance~get_text( '009' ).
CALL METHOD wd_this->att_wd_handler->add_parameter_field
EXPORTING
i_id = 'CHB_DOWNLOAD_CHECKBOX'
i_description = lv_str
i_value = lv_chb_download_checkbox
i_as_checkbox = abap_true.
*--Adding a Parameter
lv_str = wd_assist->if_wd_component_assistance~get_text( '010' ).
CALL METHOD wd_this->att_wd_handler->add_parameter_field
EXPORTING
i_id = 'CHB_DOWNLOAD_PATH'
i_description = lv_str
i_value = lv_chb_download_path
i_as_checkbox = abap_false.
Now based on the checkbox selection I want to make the field CHB_DOWNLOAD_PATH mandatory and also on F4 for CHB_DOWNLOAD_PATH I want a method to be called. Where must i write the coding for the above conditions and how? Please help.hi
In your method there would be a parameter ie ON_TOGGLE where you can write the name of your event .
Whenever your checkbox will be clicked that event wil be called.
You can write your code in that event itself.
Regards
Kuldeep -
Faster to replace numerous Select stmnts with indv calls to functions.
I'm trying to streamline a package that contains many select statements that are just checking for a row return > 0. The tests performed after the "select into v_var" statements are just IF v_var > 0 THEN ...'move on to the next SELECT stmnt'.
Would it be faster if I moved these select statements out to individually called functions that would return a BOOLEAN value or would the call to a function just slow processing down even more instead? The functions would be part of the same package of course.I have said it before, and quite recently too, that counting records is about the worst way to determine existence. If you only care that a record exists, you should do it something like:
BEGIN
SELECT 1 INTO v_exists_ha_ss
FROM associate_assignments aa, associate_office_records aor,
assoc_sched_set_hme_asmnts assha, assoc_sched_set_ha_details asshd
WHERE aa.associate_office_record_id = i.aor_id and
aa.associate_office_record_id = aor.associate_office_record_id and
aor.associate_office_record_id = assha.associate_office_record_id and
assha.assoc_sched_set_hme_asmnt_id = v_assocaiterotationweekid and
assha.assoc_sched_set_hme_asmnt_id = asshd.assoc_sched_set_hme_asmnt_id and
aa.is_home_assignment = 'Y' and
rownum = 1;
<<do whatever you do after setting v_chk := TRUE;>>
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- 1. No HA, so log it as an error
Pkg_Pre_Sched_Audit.ins_pre_sched_audit(pin_office_id, i.aor_id,
pin_sched_week_id, 1);
Pkg_Pre_Sched_Audit.ins_pre_sched_audit(pin_office_id, i.aor_id,
pin_sched_week_id, 2);
v_chk := FALSE;
END;Minimally, you need to restrict it to only one row, and by returning a constant, you have a better chance that the optimizer can avoid table accesses altogether.
It might be neater to encapsulate the query in a function, particularly if you call the same query at multiple places in the code. If you do encapsulate the query in a function. the function should look something like:
FUNCTION exists_ha_ss(pin_aor_id IN NUMBER) RETURN BOOLEAN IS
v_exists_ha_ss NUMBER;
BEGIN
SELECT 1 INTO v_exists_ha_ss
FROM associate_assignments aa, associate_office_records aor,
assoc_sched_set_hme_asmnts assha, assoc_sched_set_ha_details asshd
WHERE aa.associate_office_record_id = i.aor_id and
aa.associate_office_record_id = aor.associate_office_record_id and
aor.associate_office_record_id = assha.associate_office_record_id and
assha.assoc_sched_set_hme_asmnt_id = v_assocaiterotationweekid and
assha.assoc_sched_set_hme_asmnt_id = asshd.assoc_sched_set_hme_asmnt_id and
aa.is_home_assignment = 'Y' and
rownum = 1;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END;and, unless you expect the query to fail in the vast majority of cases, then I would call it more like:
v_chk := pkg_pre_sched_audit.exists_ha_ss(pin_aor_id);
IF v_chk THEN
<< Do your processing >>
ELSE
<<log the errors>>
END IF;and, if you don't actually need v_chk antwhere else, you could even do:
IF pkg_pre_sched_audit.exists_ha_ss(pin_aor_id);
<< Do your processing >>
ELSE
<<log the errors>>
END IF;HTH
John
Maybe you are looking for
-
Field Descriptions without TOP OF PAGE
Hi Experts, I have one Z report and this was written somebody long back. This report was normal standard report i.e just writing the table values to screen using WRITE statement. Eventhogh there is no TOP OF PAGE event in the report, field names wer
-
Music and pictures not in Touchsmart
Hi, Any idea how to get the music and pictures back into my Touchsmart? The computer seems to have a mind of its own, and was going to delete the music and photos altogether from the Touchsmart. I still have my Music and Photos in the Library of the
-
When I initially connected my 4S to my computer, I backed it up to the wrong existing device. How can I change it?
-
Can't re-install apps using creative cloud app on mac osx 10.7.5
I uninstalled all apps by dragging them into the trash. now I want to reinstall but the creative cloud app says "up to date" how can I refresh it so that it looks on my HD?
-
Hi, on FSCM 91, on Win 2008, Tools 8.52, DB Oracle 11g. is there any rule to name des indexes (in Oracle DB)for PeopleSoft ? What is it ? Thanks.