CONVERT_BDCMSGCOLL_TO_BAPIRET2,这个BAPI不错,可以把BDC的多行返回参数返回为一行,还是最后的文本在MESSAGE中。
下面是例子代码:
PERFORM bdc_dynpro USING 'SAPMV13A' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RV13A-DATAB'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SICH'.
PERFORM bdc_field USING 'KONH-KZUST' gs_info-kzust.
PERFORM bdc_dynpro USING 'SAPMV13A' '0305'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RV13A-DATAB'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SICH'.
PERFORM bdc_field USING 'KONP-ZTERM' gs_info-ZTERM.
CALL TRANSACTION 'ME12'
USING gt_bdc
MODE lv_mode "Background performance
UPDATE 'S' "local updata
MESSAGES INTO lt_bdcmsg. "all message table
DATA: lt_bapi_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
TABLES
imt_bdcmsgcoll = lt_bdcmsg
ext_return = lt_bapi_return.
gs_info-icon_light_info = ''.
gs_info-message_info = ''.
LOOP AT lt_bapi_return INTO DATA(ls_bapi_return) WHERE TYPE = 'E'.
gs_info-icon_light_info = 'E'.
gs_info-message_info = '失败!' && ls_bapi_return-MESSAGE.
ENDLOOP.
IF gs_info-icon_light_info = ''.
gs_info-icon_light_info = 'S'.
read TABLE lt_bapi_return INTO ls_bapi_return INDEX 1.
gs_info-message_info = '成功!' && ls_bapi_return-MESSAGE.
ENDIF.
FORM bdc_dynpro USING PROGRAM DYNPRO ##PERF_NO_TYPE.
CLEAR gs_bdc.
gs_bdc-PROGRAM = PROGRAM.
gs_bdc-DYNPRO = DYNPRO.
gs_bdc-dynbegin = 'X'.
APPEND gs_bdc TO gt_bdc.
ENDFORM. "BDC_DYNPRO
FORM bdc_field USING fnam fval ##PERF_NO_TYPE.
CLEAR gs_bdc.
gs_bdc-fnam = fnam.
gs_bdc-fval = fval.
APPEND gs_bdc TO gt_bdc .
ENDFORM. "BDC_FIELD