*&---------------------------------------------------------------------*
*& Report ZCALLRFC
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zcallrfc.
PARAMETERS i_mat TYPE c LENGTH 50.
DATA: ld_i_material TYPE mgv_rfc_matnr, " 物料号
ld_e_return TYPE cad_return-value, " 返回码
ld_e_message TYPE message-msgtx, " 返回信息
it_sap_field_data TYPE STANDARD TABLE OF rfcdmsdata, " 物料数据内表
wa_sap_field_data LIKE LINE OF it_sap_field_data, " 物料数据工作区
it_dms_class_data TYPE STANDARD TABLE OF cls_charac, " 分类数据内表
wa_dms_class_data LIKE LINE OF it_dms_class_data. " 分类数据工作区
* 1. 填充导入参数:指定要读取的物料号
ld_i_material = i_mat.
* 2. 调用函数模块
CALL FUNCTION 'RFC_GET_MATERIAL_DATA'
EXPORTING
i_material = ld_i_material
IMPORTING
e_return = ld_e_return
e_message = ld_e_message
TABLES
sap_field_data = it_sap_field_data
dms_class_data = it_dms_class_data.
* 3. 处理返回结果
IF ld_e_return = '0'.
PERFORM display_alv(zcallrfc).
" 调用成功,处理 it_sap_field_data 中的数据
LOOP AT it_sap_field_data INTO wa_sap_field_data.
" wa_sap_field_data-fieldname 包含字段名,如 'MATNR'
" wa_sap_field_data-fieldvalue 包含对应的值
" wa_sap_field_data-fieldmulti 包含语言相关的描述
WRITE: / wa_sap_field_data-fieldname, wa_sap_field_data-fieldvalue.
ENDLOOP.
ELSE.
" 调用失败,显示错误信息
MESSAGE ld_e_message TYPE 'E'.
ENDIF.
DATA: a TYPE i,
b TYPE i,
c TYPE i.
a = 100.
b = 200.
c = 1000.
WRITE:/ sy-uline.
DATA i_tabb TYPE table of t001.
CALL FUNCTION 'ZRFC_GETT001'
EXPORTING
bukrs = '北京'
ort01 = '上海'
TABLES
e_table = i_tabb
EXCEPTIONS
FIND_NO_DATA = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF sy-subrc = 0.
cl_demo_output=>display( i_tabb ).
ENDIF.
WRITE:/ sy-uline.
PERFORM gett001data USING a b c .
FORM display_alv.
DATA: lo_alv TYPE REF TO cl_salv_table,
lo_events TYPE REF TO cl_salv_events_table.
IF it_sap_field_data IS INITIAL.
RETURN.
ENDIF.
TRY.
cl_salv_table=>factory(
IMPORTING r_salv_table = lo_alv
CHANGING t_table = it_sap_field_data
).
lo_alv->get_columns( )->set_optimize( abap_true ).
lo_alv->display( ).
CATCH cx_salv_msg INTO DATA(lx).
MESSAGE lx->get_text( ) TYPE 'E'.
ENDTRY.
ENDFORM.
FORM gett001data USING a b c.
c = a + b.
WRITE: / c.
ENDFORM.