on 12-12-2008 4:01 AM
Hi,
I am trying to access some data in my structure CRMA_PARTNER.
On doing this i am getting an error:
Field CRMA_PARTNER-PARTNER_NO is unknown.
Following is my code:
method INIT_CHANGEHISTORY.
DATA: lr_ent TYPE REF TO if_bol_bo_property_access,
ls_adminh TYPE crmst_adminh_btil,
lt_ch TYPE crmt_cdorder_alv_tab,
lr_ch TYPE REF TO crmt_cdorder_alv,
ls_ch TYPE crmt_cdorder_alv,
lv_value_node1 TYPE REF TO cl_bsp_wd_value_node,
lv_value_node TYPE REF TO cl_bsp_wd_value_node.
lr_ent = me->typed_context->btadminh->collection_wrapper->get_current( ).
CHECK lr_ent IS BOUND.
lr_ent->get_properties( IMPORTING es_attributes = ls_adminh ).
CALL FUNCTION 'CRM_CDORDER_DISPLAY'
EXPORTING
iv_header_guid = ls_adminh-guid
iv_object = ls_adminh-object_id
iv_bus = ls_adminh-object_type
i_no_dialogue = abap_true
IMPORTING
ausg = lt_ch.
CALL FUNCTION 'CRM_LOG_READ_EXTENDED'
EXPORTING
iv_header_guid = ls_adminh-guid
CHANGING
et_cdorder = lt_ch.
* removing all item related change logs
DELETE lt_ch WHERE number_int IS NOT INITIAL.
* show newest entry first
SORT lt_ch BY udate DESCENDING utime DESCENDING.
* clear old collection
me->typed_context->changehistoryvn->collection_wrapper->clear( ).
DATA :
LV_TABNAME TYPE STRING.
* create new entities and add them to the collection
CREATE DATA lr_ch.
LOOP AT lt_ch INTO ls_ch.
CREATE OBJECT lv_value_node
EXPORTING
iv_data_ref = lr_ch.
lv_value_node->if_bol_bo_property_access~set_properties( ls_ch ).
LV_TABNAME = LV_VALUE_NODE->GET_PROPERTY_AS_STRING( IV_ATTR_NAME = 'TABNAME' ).
IF LV_TABNAME = 'CRMA_PARTNER'.
LV_PARTNER = CRMA_PARTNER-PARTNER_NO.
ENDIF.
me->typed_context->changehistoryvn->collection_wrapper->add( lv_value_node ).
ENDLOOP.
me->typed_context->changehistoryvn->sort( ). " keep the sorting
endmethod.
Please help!
Any pointers would be highly appreciated.
Thanks and Regards
Shilpi
Edited by: Matt on Dec 12, 2008 10:05 AM - please use tags around your abap
Hello Shilpi
I have no experience with BSP applications yet it might be that your data objects should reflect a table type on your BSP application.
data: ldo_data TYPE REF TO data.
FIELD-SYMBOLS:
<lt_itab> TYPE table,
<ls_struct> TYPE any,
<ld_fld> TYPE any.
...
LV_TABNAME = LV_VALUE_NODE->GET_PROPERTY_AS_STRING( IV_ATTR_NAME = 'TABNAME' ).
IF LV_TABNAME = 'CRMA_PARTNER'.
ldo_data = LV_VALUE_NODE->GET_PROPERTY( iv_attr_name = 'CRMA_PARTNER' ).
" ASSIGN ldo_data->* TO <ls_struct>.
ASSIGN ldo_data->* TO <lt_itab>.
LOOP AT <lt_Itab> ASSIGNING <ls_struct>.
ASSIGN COMPONENT 'PARTNER_NO' OF STRUCTURE <ls_struct>
TO <ld_fld>.
IF ( syst-subrc = 0 ).
lv_partner = <ld_fld>.
ENDIF.
ENDLOOP.
" LV_PARTNER = CRMA_PARTNER-PARTNER_NO.
ENDIF.
...
Regards
Uwe
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Shilpi
I assume that you logic should look like this: the instance returns a data reference to your structure (or even directly to the structure component) and you need to de-reference it.
data: ldo_data TYPE REF TO data.
FIELD-SYMBOLS:
<ls_struct> TYPE any,
<ld_fld> TYPE any.
...
LV_TABNAME = LV_VALUE_NODE->GET_PROPERTY_AS_STRING( IV_ATTR_NAME = 'TABNAME' ).
IF LV_TABNAME = 'CRMA_PARTNER'.
ldo_data = LV_VALUE_NODE->GET_PROPERTY( iv_attr_name = 'CRMA_PARTNER' ).
" Or: 'CRMA_PARTNER-PARTNER_NO'
ASSIGN ldo_data->* TO <ls_struct>.
ASSIGN COMPONENT 'PARTNER_NO' TO <ld_fld>.
IF ( syst-subrc = 0 ).
lv_partner = <ld_fld>.
ENDIF.
" LV_PARTNER = CRMA_PARTNER-PARTNER_NO.
ENDIF.
...
Regards
Uwe
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Uwe,
Thanks for the reply.
I wrote the following code:
data: ldo_data TYPE REF TO data,
LV_PARTNER TYPE STRING.
FIELD-SYMBOLS:
<ls_struct> TYPE any,
<ld_fld> TYPE any.
lv_value_node->if_bol_bo_property_access~set_properties( ls_ch ).
LV_TABNAME = LV_VALUE_NODE->GET_PROPERTY_AS_STRING( IV_ATTR_NAME = 'TABNAME' ).
IF LV_TABNAME = 'CRMA_PARTNER'.
Ldo_data = lv_value_node->get_property( IV_ATTR_NAME = 'TABNAME' ).
ASSIGN ldo_data->* to <ls_struct>.
ASSIGN COMPONENT 'PARTNER_NO' OF STRUCTURE <LS_STRUCT> TO <LD_FLD>.
IF SY-SUBRC EQ 0.
LV_PARTNER = <LD_FLD>.
ENDIF.
Now when i debug:
The LDO_DATA only consists of string CRMA_PARTNER.
It does not give me the data:(
what is the possible reason?
Thanks and Regards
Shilpi
Edited by: Matt on Dec 12, 2008 10:06 AM - please use tags around your ABAP
User | Count |
---|---|
5 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.