ABAP-MFBF

FUNCTION zpp_fm_mfbf.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IN_WERKS) TYPE  WERKS_D
*"     REFERENCE(IN_BKTXT) TYPE  BKTXT
*"     REFERENCE(IN_BLDAT) TYPE  BLDAT
*"     REFERENCE(IN_BUDAT) TYPE  BUDAT
*"     REFERENCE(IN_MATNR) TYPE  MATNR18
*"     REFERENCE(IN_CHARG) TYPE  CHARG_D
*"     REFERENCE(IN_LGORT) TYPE  LGORT_D
*"     REFERENCE(I_MENGE) TYPE  SA_ERFMG
*"     REFERENCE(IN_VERID) TYPE  VERID
*"     REFERENCE(IN_MDV01) TYPE  MDV01
*"  EXPORTING
*"     REFERENCE(OUT_TYPE) TYPE  BAPI_MTYPE
*"     REFERENCE(OUT_MSG) TYPE  BAPI_MSG
*"----------------------------------------------------------------------

  DATA: messtab TYPE TABLE OF  bdcmsgcoll WITH HEADER LINE.

  DATA:ctu_params     TYPE  ctu_params.
  DATA:return TYPE TABLE OF bapiret2 WITH HEADER LINE.
  DATA:l_char    TYPE char255,
       l_line(2) TYPE n.
  DATA:in_menge TYPE string.
  "错误信息
  DATA:p_type       TYPE bapi_mtype,
       p_message    TYPE bapi_msg,
       l_error_flag TYPE c.
  DATA: BEGIN OF i_bdcdata OCCURS 100.
      INCLUDE STRUCTURE bdcdata.
  DATA: END OF i_bdcdata.

  in_menge = i_menge.
  REFRESH:i_bdcdata,messtab.

  PERFORM bdc_dynpro  TABLES i_bdcdata    USING 'SAPLBARM' '0800'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_CURSOR'
                                'RM61B-BKTXT'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_OKCODE'
                                '=GOON'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-RB_BAUGR'
                                'X'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BUDAT'
                                in_budat."'2019.10.29'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BLDAT'
                                in_bldat."'2019.10.29'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BKTXT'
                                IN_BKTXT."'CESHI'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-MATNR'
                                in_matnr."'400000000181'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-WERKS'
                                in_werks."'1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-VERID'
                                in_verid."'AQ01'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-PLWERK'
                                in_werks."'1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ACHARG'
                                in_charg."'1DS19A1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-MDV01'
                                in_mdv01."'1000FF01'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ERFMG'
                                in_menge."'1.000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ERFME'
                                '片'.
  PERFORM bdc_dynpro  TABLES i_bdcdata    USING 'SAPLBARM' '0800'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_OKCODE'
                                '=PARA'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-RB_BAUGR'
                                'X'.
  PERFORM bdc_field    TABLES i_bdcdata   USING 'RM61B-BUDAT'
                                in_budat."'2019.10.29'.
  PERFORM bdc_field    TABLES i_bdcdata   USING 'RM61B-BLDAT'
                                in_bldat."'2019.10.29'.
  PERFORM bdc_field    TABLES i_bdcdata   USING 'RM61B-BKTXT'
                                IN_BKTXT."'CESHI'.
  PERFORM bdc_field    TABLES i_bdcdata   USING 'RM61B-MATNR'
                                in_matnr."'400000000181'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-WERKS'
                                in_werks."'1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-VERID'
                                in_verid."'AQ01'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-PLWERK'
                                in_werks."'1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ALORT'
                                in_lgort."'1501'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ACHARG'
                                in_charg."'1DS19A1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-MDV01'
                                in_mdv01."'1000FF01'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_CURSOR'
                                'RM61B-ERFMG'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ERFMG'
                                in_menge."'1.000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ERFME'
                                '片'.
  PERFORM bdc_dynpro  TABLES i_bdcdata    USING 'SAPLBARM' '0150'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_CURSOR'
                                'RM61B-LBOFF'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_OKCODE'
                                '=GOON'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-LBOFF'
                                'X'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-LBSTD_P'
                                ''.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-RADIOFR'
                                'X'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWAWE'
                                '131'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWAWA'
                                '261'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWAWEM'
                                '571'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWAWAM'
                                '572'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWACR'
                                '291'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWASC'
                                '551'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BWACO'
                                '531'.
  PERFORM bdc_dynpro  TABLES i_bdcdata    USING 'SAPLBARM' '0800'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_OKCODE'
                                '=POST'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-RB_BAUGR'
                                'X'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BUDAT'
                                in_budat."'2019.10.29'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BLDAT'
                                in_bldat."'2019.10.29'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-BKTXT'
                                IN_BKTXT."'CESHI'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-MATNR'
                                in_matnr."'400000000181'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-WERKS'
                                in_werks."'1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-VERID'
                                in_verid."'AQ01'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-PLWERK'
                                in_werks."'1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ALORT'
                                in_lgort."'1501'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ACHARG'
                                in_charg."'1DS19A1000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-MDV01'
                                in_mdv01."'1000FF01'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'BDC_CURSOR'
                                'RM61B-ERFMG'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ERFMG'
                                in_menge."'1.000'.
  PERFORM bdc_field   TABLES i_bdcdata    USING 'RM61B-ERFME'
                                '片'.

  "模式
  ctu_params-dismode = 'N'.
*  ctu_params-dismode = 'A'.
  ctu_params-defsize = 'X'.
  ctu_params-updmode = 'S'.
  ctu_params-racommit = 'X'.

  "TCODE
  CALL TRANSACTION 'MFBF'  USING i_bdcdata
                                 OPTIONS FROM ctu_params
                                 MESSAGES INTO messtab.

  "MESSAGE
  CLEAR:p_type,p_message,l_error_flag,return[].
  CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
    TABLES
      imt_bdcmsgcoll = messtab[]
      ext_return     = return.

  READ TABLE return WITH KEY type = 'S' ID = 'RM' NUMBER = '187' TRANSPORTING NO FIELDS.
  IF sy-subrc = 0.
    p_type = 'S'.     
LOOP AT return.       
CONCATENATE p_message return-message ';' INTO p_message.     
ENDLOOP.     
"p_message = '入库成功'.   
ELSE.     
LOOP AT return.       l_error_flag 
= 'X'.       p_type 
= 'E'.       
CONCATENATE p_message return-message ';' INTO p_message.     
ENDLOOP.   
ENDIF.   out_type 

FORM bdc_dynpro TABLES i_bdcdata USING program dynpro .
  DATA:l_bdcdata TYPE bdcdata.
  CLEAR l_bdcdata.
  l_bdcdata-program  program.
  l_bdcdata-dynpro   dynpro.
  l_bdcdata-dynbegin 'X'.
  APPEND  l_bdcdata TO i_bdcdata.
ENDFORM.

FORM bdc_field TABLES i_bdcdata USING fnam fval.
  DATA:l_bdcdata TYPE bdcdata.
  CLEAR l_bdcdata.
  l_bdcdata-fnam = fnam.
  l_bdcdata-fval = fval.
  APPEND l_bdcdata TO i_bdcdata.

ENDFORM.



= p_type.   out_msg  
= '收货阶段:' &&  p_message.



ENDFUNCTION.

原文地址:https://www.cnblogs.com/eagle-dtq/p/11757801.html