通过bdc批量创建销售订单(多个销售订单)
2013-12-11 15:58
393 查看
report Z_VA01_BDC.
types:
begin of ty_tab,
header_id type i,
po_num type BSTKD,
sold_to type KUNNR,
ship_to type KUNNR,
material type MATNR,
quantity type char10,
end of ty_tab.
data:
it_tab type standard table of ty_tab,
wa_tab type ty_tab,
it_bdc like bdcdata occurs 0 with header line.
*** End generated data section ***
start-of-selection.
perform upload_data.
perform batch_data.
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form UPLOAD_DATA .
field-symbols:<fs>.
data:
l_answer(1) type c,
it_exc type alsmex_tabline occurs 0 with header line.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = 'C:\Users\x.zheng\Desktop\练习\va01.XLSX'
i_begin_col = 1
i_begin_row = 2
i_end_col = 50
i_end_row = 5000
tables
intern = it_exc
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
else.
IF it_exc[] is initial.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
diagnosetext1 = 'No data in excel'
textline1 = 'Please check data in excel'
titel = 'Confirm'
IMPORTING
ANSWER = l_answer.
else.
sort it_exc by row col value.
LOOP AT it_exc.
assign component it_exc-col of structure wa_tab to <fs>.
move it_exc-value to <fs>.
at end of row.
append wa_tab to it_tab.
clear wa_tab.
endat.
ENDLOOP.
ENDIF.
ENDIF.
endform. " UPLOAD_DATA
form batch_data.
clear it_bdc.
data:
s_kwmeng type string,
s_mabnr type string,
str type n,
l_time type string,
l_po type char10,
l_sold type char10,
l_ship type char10.
concatenate sy-uzeit+0(2) ':' sy-uzeit+2(2) into l_time.
LOOP AT it_tab into wa_tab.
str = str + 1.
s_kwmeng = 'RV45A-KWMENG(0'.
s_mabnr = 'RV45A-MABNR(0'.
concatenate s_kwmeng str ')' into s_kwmeng.
concatenate s_mabnr str ')' into s_mabnr.
l_po = wa_tab-po_num.
l_sold = wa_tab-sold_to.
l_ship = wa_tab-ship_to.
at new header_id.
write: / wa_tab-header_id,l_po,l_sold,l_ship.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
'OR'.
perform bdc_field using 'VBAK-VKORG'
'1000'.
perform bdc_field using 'VBAK-VTWEG'
'10'.
perform bdc_field using 'VBAK-SPART'
'00'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BSTKD'.
perform bdc_field using 'VBKD-BSTKD'
l_po.
perform bdc_field using 'KUAGV-KUNNR'
l_sold.
perform bdc_field using 'RV45A-KETDAT'
'2013/12/25'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
sy-datum.
perform bdc_field using 'VBKD-OIC_TIME'
l_time.
endat.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
wa_tab-po_num.
perform bdc_field using 'KUAGV-KUNNR'
wa_tab-sold_to.
perform bdc_field using 'KUWEV-KUNNR'
wa_tab-ship_to.
perform bdc_field using 'RV45A-KETDAT'
'2013/12/25'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
sy-datum.
perform bdc_field using 'VBKD-OIC_TIME'
l_time.
perform bdc_field using 'VBKD-ZTERM'
'ZB01'.
perform bdc_field using 'VBKD-INCO1'
'CIP'.
perform bdc_field using 'VBKD-INCO2'
'Düsseldorf'.
perform bdc_field using 'BDC_CURSOR'
s_kwmeng.
perform bdc_field using s_mabnr
wa_tab-material.
perform bdc_field using s_kwmeng
wa_tab-quantity.
at end of header_id.
str = 0.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
l_po.
perform bdc_field using 'KUAGV-KUNNR'
l_sold.
perform bdc_field using 'KUWEV-KUNNR'
l_ship.
perform bdc_field using 'RV45A-KETDAT'
'2013/12/25'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
sy-datum.
perform bdc_field using 'VBKD-OIC_TIME'
l_time.
perform bdc_field using 'VBKD-ZTERM'
'ZB01'.
perform bdc_field using 'VBKD-INCO1'
'CIP'.
perform bdc_field using 'VBKD-INCO2'
'Düsseldorf'.
* perform bdc_field using 'BDC_CURSOR'
* 'RV45A-MABNR(02)'.
CALL TRANSACTION 'VA01'
USING it_bdc
MODE 'A'
UPDATE 'S'.
clear it_bdc[].
endat.
ENDLOOP.
endform.
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0067 text
* -->P_0068 text
*----------------------------------------------------------------------*
form BDC_DYNPRO using program dynpro.
clear it_bdc.
it_bdc-program = program.
it_bdc-dynpro = dynpro.
it_bdc-dynbegin = 'X'.
append it_bdc.
endform. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0072 text
* -->P_0073 text
*----------------------------------------------------------------------*
form BDC_FIELD using fnam fval.
IF fval <> ' '.
clear it_bdc.
it_bdc-fnam = fnam.
it_bdc-fval = fval.
append it_bdc.
ENDIF.
endform. " BDC_FIELD
types:
begin of ty_tab,
header_id type i,
po_num type BSTKD,
sold_to type KUNNR,
ship_to type KUNNR,
material type MATNR,
quantity type char10,
end of ty_tab.
data:
it_tab type standard table of ty_tab,
wa_tab type ty_tab,
it_bdc like bdcdata occurs 0 with header line.
*** End generated data section ***
start-of-selection.
perform upload_data.
perform batch_data.
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form UPLOAD_DATA .
field-symbols:<fs>.
data:
l_answer(1) type c,
it_exc type alsmex_tabline occurs 0 with header line.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = 'C:\Users\x.zheng\Desktop\练习\va01.XLSX'
i_begin_col = 1
i_begin_row = 2
i_end_col = 50
i_end_row = 5000
tables
intern = it_exc
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
else.
IF it_exc[] is initial.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
diagnosetext1 = 'No data in excel'
textline1 = 'Please check data in excel'
titel = 'Confirm'
IMPORTING
ANSWER = l_answer.
else.
sort it_exc by row col value.
LOOP AT it_exc.
assign component it_exc-col of structure wa_tab to <fs>.
move it_exc-value to <fs>.
at end of row.
append wa_tab to it_tab.
clear wa_tab.
endat.
ENDLOOP.
ENDIF.
ENDIF.
endform. " UPLOAD_DATA
form batch_data.
clear it_bdc.
data:
s_kwmeng type string,
s_mabnr type string,
str type n,
l_time type string,
l_po type char10,
l_sold type char10,
l_ship type char10.
concatenate sy-uzeit+0(2) ':' sy-uzeit+2(2) into l_time.
LOOP AT it_tab into wa_tab.
str = str + 1.
s_kwmeng = 'RV45A-KWMENG(0'.
s_mabnr = 'RV45A-MABNR(0'.
concatenate s_kwmeng str ')' into s_kwmeng.
concatenate s_mabnr str ')' into s_mabnr.
l_po = wa_tab-po_num.
l_sold = wa_tab-sold_to.
l_ship = wa_tab-ship_to.
at new header_id.
write: / wa_tab-header_id,l_po,l_sold,l_ship.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
'OR'.
perform bdc_field using 'VBAK-VKORG'
'1000'.
perform bdc_field using 'VBAK-VTWEG'
'10'.
perform bdc_field using 'VBAK-SPART'
'00'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BSTKD'.
perform bdc_field using 'VBKD-BSTKD'
l_po.
perform bdc_field using 'KUAGV-KUNNR'
l_sold.
perform bdc_field using 'RV45A-KETDAT'
'2013/12/25'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
sy-datum.
perform bdc_field using 'VBKD-OIC_TIME'
l_time.
endat.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
wa_tab-po_num.
perform bdc_field using 'KUAGV-KUNNR'
wa_tab-sold_to.
perform bdc_field using 'KUWEV-KUNNR'
wa_tab-ship_to.
perform bdc_field using 'RV45A-KETDAT'
'2013/12/25'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
sy-datum.
perform bdc_field using 'VBKD-OIC_TIME'
l_time.
perform bdc_field using 'VBKD-ZTERM'
'ZB01'.
perform bdc_field using 'VBKD-INCO1'
'CIP'.
perform bdc_field using 'VBKD-INCO2'
'Düsseldorf'.
perform bdc_field using 'BDC_CURSOR'
s_kwmeng.
perform bdc_field using s_mabnr
wa_tab-material.
perform bdc_field using s_kwmeng
wa_tab-quantity.
at end of header_id.
str = 0.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
l_po.
perform bdc_field using 'KUAGV-KUNNR'
l_sold.
perform bdc_field using 'KUWEV-KUNNR'
l_ship.
perform bdc_field using 'RV45A-KETDAT'
'2013/12/25'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
sy-datum.
perform bdc_field using 'VBKD-OIC_TIME'
l_time.
perform bdc_field using 'VBKD-ZTERM'
'ZB01'.
perform bdc_field using 'VBKD-INCO1'
'CIP'.
perform bdc_field using 'VBKD-INCO2'
'Düsseldorf'.
* perform bdc_field using 'BDC_CURSOR'
* 'RV45A-MABNR(02)'.
CALL TRANSACTION 'VA01'
USING it_bdc
MODE 'A'
UPDATE 'S'.
clear it_bdc[].
endat.
ENDLOOP.
endform.
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0067 text
* -->P_0068 text
*----------------------------------------------------------------------*
form BDC_DYNPRO using program dynpro.
clear it_bdc.
it_bdc-program = program.
it_bdc-dynpro = dynpro.
it_bdc-dynbegin = 'X'.
append it_bdc.
endform. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0072 text
* -->P_0073 text
*----------------------------------------------------------------------*
form BDC_FIELD using fnam fval.
IF fval <> ' '.
clear it_bdc.
it_bdc-fnam = fnam.
it_bdc-fval = fval.
append it_bdc.
ENDIF.
endform. " BDC_FIELD
相关文章推荐
- 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)
- 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)
- 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)
- 创建销售订单-用外部给号的方法步骤
- 创建采购订单和销售订单
- ME21N采购订单创建后自动通过IDOC发送至ORACLE数据库
- Linux中通过fork()同时创建多个进程
- SAP创建生产订单时要求输入销售订单
- 【南京】根据销售订单创建交货单并自动拣配、过账发货程序
- 销售订单表头批量创建(BDC)
- 解决在创建销售订单时出现工厂日历CN等错误提示问题
- 如何创建一个SAP的销售订单
- 通过克隆虚拟机来创建多个虚拟机
- 如何用代码的方式取出SAP C4C销售订单创建后所有业务伙伴的数据
- 【原创】2011.09.19 问题记录——销售订单合并交货创建交货单
- 无法通过工作流正常关闭的销售订单问题解决
- 创建多个svn仓库并通过http访问
- Magento通过订单id修改订单创建时间的sql
- BAPI:BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单
- SAP无法创建销售订单 装运点没有数据 装运条件有误