1.t-code:
SHDB将操作录下来
2.在程序中包含下BDC子程序,只需复制粘贴即可使用,
具体代码如下:
* 包含BDC用子程序
INCLUDE zbdcrecx.
INCLUDE zbdcrecx.
zbdcecx内容:
*----------------------------------------------------------------------*
* Include ZBDCRECX
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* 批输入数据定义
* 数据定义
* BDC调用相关的数据
DATA: wbdc TYPE bdcdata,
itbdc TYPE TABLE OF bdcdata.
DATA: fnbdc TYPE fnam_____4,
fvbdc TYPE bdc_fval.
DATA: wopt TYPE ctu_params.
DATA: wmsg TYPE bdcmsgcoll,
itmsg TYPE TABLE OF bdcmsgcoll.
DATA: nodata_character VALUE '/'.
*&---------------------------------------------------------------------*
*& Form bdc_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdc_init.
CLEAR wbdc.
CLEAR itbdc.
CLEAR wmsg.
CLEAR itmsg.
ENDFORM. "bdc_init
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR wbdc.
wbdc-program = program.
wbdc-dynpro = dynpro.
wbdc-dynbegin = 'X'.
APPEND wbdc TO itbdc.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING unam TYPE fnam_____4
uval TYPE any.
DATA: fval TYPE bdc_fval.
WRITE uval TO fval LEFT-JUSTIFIED.
IF fval NE nodata_character.
CLEAR wbdc.
wbdc-fnam = unam.
* wbdc-fval = fval.
wbdc-fval = fval.
APPEND wbdc TO itbdc.
ENDIF.
ENDFORM. "BDC_FIELD
* Include ZBDCRECX
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* 批输入数据定义
* 数据定义
* BDC调用相关的数据
DATA: wbdc TYPE bdcdata,
itbdc TYPE TABLE OF bdcdata.
DATA: fnbdc TYPE fnam_____4,
fvbdc TYPE bdc_fval.
DATA: wopt TYPE ctu_params.
DATA: wmsg TYPE bdcmsgcoll,
itmsg TYPE TABLE OF bdcmsgcoll.
DATA: nodata_character VALUE '/'.
*&---------------------------------------------------------------------*
*& Form bdc_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdc_init.
CLEAR wbdc.
CLEAR itbdc.
CLEAR wmsg.
CLEAR itmsg.
ENDFORM. "bdc_init
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR wbdc.
wbdc-program = program.
wbdc-dynpro = dynpro.
wbdc-dynbegin = 'X'.
APPEND wbdc TO itbdc.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING unam TYPE fnam_____4
uval TYPE any.
DATA: fval TYPE bdc_fval.
WRITE uval TO fval LEFT-JUSTIFIED.
IF fval NE nodata_character.
CLEAR wbdc.
wbdc-fnam = unam.
* wbdc-fval = fval.
wbdc-fval = fval.
APPEND wbdc TO itbdc.
ENDIF.
ENDFORM. "BDC_FIELD
3.参照SHDB记录的操作指令,调用代码:
PERFORM bdc_init.
*VA01屏幕
PERFORM
bdc_dynpro
USING
'SAPMV45A'
'0101'.
PERFORM bdc_field USING 'BDC_CURSOR' 'VBAK-AUART'.
PERFORM bdc_field USING 'BDC_CURSOR' 'VBAK-AUART'.
PERFORM
bdc_field
USING
'VBAK-VKORG' ufpr-vkorg.
PERFORM
bdc_field
USING
'BDC_OKCODE'
'/00'.
* 调用事务码完成明细录入和保存,保存后执行后续操作
CALL TRANSACTION 'VA01' USING itbdc OPTIONS FROM wopt MESSAGES INTO itmsg.//该步骤可以设置是否立即提交
CALL TRANSACTION 'VA01' USING itbdc OPTIONS FROM wopt MESSAGES INTO itmsg.//该步骤可以设置是否立即提交
* 获得生成的虚拟退货订单号
GET PARAMETER ID 'AUN' FIELD cfp3-svbfpr.
GET PARAMETER ID 'VL' FIELD cfp3-slbfpr.
GET PARAMETER ID 'AUN' FIELD cfp3-svbfpr.
GET PARAMETER ID 'VL' FIELD cfp3-slbfpr.