我正在开发我的第一个webdynpro应用程序.我使用向导从我的componentcontroller调用一个功能模块.我使用另一个向导从视图方法调用componentcontroller方法.之后我尝试使用节点属性作为参数,但是我得到了标题中的错误.错误指向第一个参数(Activestatus).
这是view方法的代码.
method DOREFRESHDATA .
DATA lo_nd_filternode TYPE REF TO if_wd_context_node.
DATA lo_el_filternode TYPE REF TO if_wd_context_element.
lo_nd_filternode = wd_context->get_child_node( name = wd_this->wdctx_filternode ).
lo_el_filternode = lo_nd_filternode->get_element( ).
DATA lo_componentcontroller TYPE REF TO ig_componentcontroller .
lo_componentcontroller = wd_this->get_componentcontroller_ctr( ).
lo_componentcontroller->execute_getorders(
activestatus = lo_el_filternode->get_attribute( name = 'ACTIVESTATUS' )
batch = GETFILTERSTRING( ATTRIBUTENAME = 'BATCH' )
cancelstatus = lo_el_filternode->get_attribute( name = 'CANCELSTATUS' )
completestatus = lo_el_filternode->get_attribute( name = 'COMPLETESTATUS' )
confirmstatus = lo_el_filternode->get_attribute( name = 'CONFIRMSTATUS' )
enddate = lo_el_filternode->get_attribute( name = 'STARTDATEENDDATE' )
endtime = lo_el_filternode->get_attribute( name = 'STARTDATEENDTIME' )
equipment = GETFILTERSTRING( ATTRIBUTENAME = 'EQUIPMENT' )
financialstatus = lo_el_filternode->get_attribute( name = 'FINANCIALSTATUS' )
materialdescription = GETFILTERSTRING( ATTRIBUTENAME = 'MATERIALDESCRIPTON' )
materialnumber = GETFILTERSTRING( ATTRIBUTENAME = 'MATERIALDESCRIPTION' )
order = GETFILTERSTRING( ATTRIBUTENAME = 'ORDERNUMBER' )
orderplopo = lo_el_filternode->get_attribute( name = 'ORDERTYPE' )
ordertype = GETFILTERSTRING( ATTRIBUTENAME = 'PROCESAREA' )
plannedstatus = GETFILTERSTRING( ATTRIBUTENAME = 'PLANNEDSTATUS' )
startdate = lo_el_filternode->get_attribute( name = 'STARTDATESTARTDATE' )
starttime = lo_el_filternode->get_attribute( name = 'STARTDATESTARTTIME' )
technicalstatus = lo_el_filternode->get_attribute( name = 'TECHNICALSTATUS' )
).
endmethod.
Run Code Online (Sandbox Code Playgroud)
将函数作为参数调用是非法的,我是否必须为每个参数创建一个局部变量,否则就会出现其他问题.
我是ABAP和Webdynpro的新手.谢谢您的帮助.
1)您似乎正在使用ABAP的旧版本(在7.02之前),您不能将方法指示为参数的参数(或者由于下面的问题,编译器会给出错误的消息))
2)而且,GET_ATTRIBUTE不是一个功能方法,例如你不能做类似的操作variable = instance->method( ... ); 您必须使用IMPORTING字来获取属性值.
解决方案:您可以编写类似这样的代码(lv_activestatus使用正确的类型声明):
lo_el_filternode->get_attribute( EXPORTING name = 'ACTIVESTATUS'
IMPORTING value = lv_activestatus ).
lo_componentcontroller->execute_getorders(
activestatus = lv_activestatus
...
Run Code Online (Sandbox Code Playgroud)