Component Controller: DATA_LOAD

METHOD DATA_LOAD .
  " ALV 输出的结构定义 "
  DATA: lt_ZALV_ZPEFF_TOTAL   TYPE TABLE OF ZALV_ZPEFF_TOTAL,
        ls_ZALV_ZPEFF_TOTAL   TYPE ZALV_ZPEFF_TOTAL,
        lt_ZALV_PROD_EFF      TYPE TABLE OF ZALV_PROD_EFF,
        ls_ZALV_PROD_EFF      TYPE ZALV_PROD_EFF,
        lo_node               TYPE REF TO if_wd_context_node.
  "  选择屏幕数据的单属性定义 "
  DATA: lo_nd_zoption   TYPE REF TO if_wd_context_node,
        lo_el_zoption   TYPE REF TO if_wd_context_element,
        ls_zoption      TYPE wd_this->element_zoption,
        lv_p_total      TYPE wd_this->element_zoption-p_total,
        lv_p_detail     TYPE wd_this->element_zoption-p_detail. 
  " 选择屏幕数据的多属性定义 "
  DATA: RARBPL   TYPE REF TO data,
        RKOSTL   TYPE REF TO data,
        RAUFNR   TYPE REF TO data,
        RAUART   TYPE REF TO data,
        RBUDAT   TYPE REF TO data.
  FIELD-SYMBOLS:
        <RARBPL> TYPE table,
        <RKOSTL> TYPE table,
        <RAUFNR> TYPE table,
        <RAUART> TYPE table,
        <RBUDAT> TYPE table.
  DATA: l_name TYPE string.
  " 获取用户名:需要在Content Administration中配置 Application Para 'userid=<User.LogonUid>' "
  l_name = wdr_task=>client_window->if_wdr_client_info_object~get_parameter( 'USERID' ).
  TRANSLATE l_name TO UPPER CASE.
  " 选择屏幕数据的单属性获取 "
  lo_nd_zoption = wd_context->get_child_node( name = wd_this->wdctx_zoption ).
  lo_el_zoption = lo_nd_zoption->get_element( ).
  IF lo_el_zoption IS NOT INITIAL.
    lo_el_zoption->get_attribute(
      EXPORTING
        name =  'P_TOTAL'
      IMPORTING
        value = lv_p_total ).
    lo_el_zoption->get_attribute(
      EXPORTING
        name =  'P_DETAIL'
      IMPORTING
        value = lv_p_detail ).
  ENDIF.
  " 选择屏幕数据的多属性获取 "
  CALL METHOD wd_this->m_handler->get_range_table_of_sel_field
    EXPORTING
      i_id           = 'ARBPL'
    RECEIVING
      rt_range_table = RARBPL.
  ASSIGN RARBPL->* TO <RARBPL>.
  CALL METHOD wd_this->m_handler->get_range_table_of_sel_field
    EXPORTING
      i_id           = 'KOSTL'
    RECEIVING
      rt_range_table = RKOSTL.
  ASSIGN RKOSTL->* TO <RKOSTL>.
  CALL METHOD wd_this->m_handler->get_range_table_of_sel_field
    EXPORTING
      i_id           = 'AUFNR'
    RECEIVING
      rt_range_table = RAUFNR.
  ASSIGN RAUFNR->* TO <RAUFNR>.
  CALL METHOD wd_this->m_handler->get_range_table_of_sel_field
    EXPORTING
      i_id           = 'AUART'
    RECEIVING
      rt_range_table = RAUART.
  ASSIGN RAUART->* TO <RAUART>.
  CALL METHOD wd_this->m_handler->get_range_table_of_sel_field
    EXPORTING
      i_id           = 'BUDAT'
    RECEIVING
      rt_range_table = RBUDAT.
  ASSIGN RBUDAT->* TO <RBUDAT>.
  " 调用SAP Funciton 获取数据 "
  CALL FUNCTION 'Z_GET_ZPEFF' DESTINATION 'WIKR3'
    EXPORTING
      iv_total  = lv_p_total
      iv_detail = lv_p_detail
   TABLES
      IT_ARBPL = <RARBPL>
	  IT_KOSTL = <RKOSTL>
	  IT_AUFNR = <RAUFNR>
	  IT_AUART = <RAUART>
	  IT_BUDAT = <RBUDAT>
	  IT_TOTAL =  lt_ZALV_ZPEFF_TOTAL
	  IT_DETAIL = lt_ZALV_PROD_EFF.
  " 结果集的上下文节点绑定 "
  IF lv_p_total = 'X'.
    lo_node = wd_context->get_child_node( name = 'ZALV_ZPEFF_TOTAL' ).
    lo_node->bind_table( lt_ZALV_ZPEFF_TOTAL ).
  ENDIF.
  " Color field setting "
  LOOP AT lt_ZALV_PROD_EFF into ls_ZALV_PROD_EFF.
  	ls_ZALV_PROD_EFF-color = cl_wd_abstr_master_table_col=>e_cell_design-calendar_green.
    " ls_ZALV_PROD_EFF-color = '27'. "
    " ls_ZALV_PROD_EFF-color = '02'. "
    " ls_ZALV_PROD_EFF-color = cl_wd_abstr_master_table_col=>e_cell_design-badvalue_dark. "
    MODIFY lt_ZALV_PROD_EFF FROM ls_ZALV_PROD_EFF.
    CLEAR ls_ZALV_PROD_EFF.
  ENDLOOP.
  IF lv_p_detail = 'X'.
    lo_node = wd_context->get_child_node( name = 'ZALV_PROD_EFF' ).
    lo_node->bind_table( lt_ZALV_PROD_EFF ).
  ENDIF.
ENDMETHOD.