*----------------------------------------------------------------------*
* Program name : ZSD_BDC_ORDERITEM_NEW Date written: 07-11-10 *
* Author's name: HouZhiYu Last update : *
* Program title: 销售订单行项目批量导入 *
*----------------------------------------------------------------------*
REPORT ZSD_BDC_ORDERITEM.
TABLES: VBAK,"销售凭证:抬头数据
VBAP,"销售凭证:项目数据
VBEP,"销售凭证:细目数据
TVAP,"销售凭证:项目类别
KONV."条件(事务数据)
*****************************************************************
* INTERNAL TABLES
*****************************************************************
DATA: BEGIN OF L_VBAK OCCURS 0,
VBELN LIKE VBAP-VBELN, "订单号
POSNR LIKE VBAP-POSNR, "项目号
MATNR LIKE RV45A-MABNR, "物料编号
KWMENG(15) TYPE C, "数量
KDMAT LIKE VBAP-KDMAT, "客户物料编号
PSTYV LIKE VBAP-PSTYV, "项目类型
UEPOS LIKE VBAP-UEPOS, "上层项
PR01_KBETR(11) TYPE C, "PR01价格
PR01_KOEIN(5) TYPE C, "PR01币种
ETDAT LIKE RV45A-ETDAT, "首次日期
PS_PSP_PNR(24) TYPE C,"WBS元素
PN00_KBETR(11) TYPE C, "PN00价格
PN00_KOEIN(5) TYPE C, "PN00币种
* PN002_KBETR(5) TYPE C, "PN00价格
* PN002_KOEIN LIKE RV45A-KOEIN, "PN00币种
ZP01_KBETR(11) TYPE C, "ZP01价格
ZP01_KOEIN(5) TYPE C, "ZP01币种
ZP21_KBETR(11) TYPE C, "ZP21价格
ZP21_KOEIN(5) TYPE C, "ZP21币种
ZP03_KBETR(11) TYPE C, "ZP03价格
ZP03_KOEIN(5) TYPE C, "ZP03币种
ZP23_KBETR(11) TYPE C, "ZP23价格
ZP23_KOEIN(5) TYPE C, "ZP23币种
ZP05_KBETR(11) TYPE C, "ZP05价格
ZP05_KOEIN(5) TYPE C, "ZP05币种
ZP25_KBETR(11) TYPE C, "ZP25价格
ZP25_KOEIN(5) TYPE C, "ZP25币种
ZP08_KBETR(11) TYPE C, "ZP08价格
ZP08_KOEIN(5) TYPE C, "ZP08币种
ZP28_KBETR(11) TYPE C, "ZP28价格
ZP28_KOEIN(5) TYPE C, "ZP28币种
ZP09_KBETR(11) TYPE C, "ZP09价格
ZP09_KOEIN(5) TYPE C, "ZP09币种
ZP29_KBETR(11) TYPE C, "ZP29价格
ZP29_KOEIN(5) TYPE C, "ZP29币种
ZP11_KBETR(11) TYPE C, "ZP11价格
ZP11_KOEIN(5) TYPE C, "ZP11币种
ZP31_KBETR(11) TYPE C, "ZP31价格
ZP31_KOEIN(5) TYPE C, "ZP31币种
ZTERM LIKE VBKD-ZTERM,"付款方式
S_PARTNER LIKE SDPARTNERLIST-PARTNER,"送达方
JUMING(50) TYPE C, "局名
IHREZ LIKE VBKD-IHREZ,"售达方中您的参考
POSEX LIKE VBAP-POSEX,"售达方中采购订单项目
IHREZ_E LIKE VBKD-IHREZ_E,"送达方中您的参考
END OF L_VBAK.
*---bdc专用-------------------------
DATA:T_BDC LIKE STANDARD TABLE OF BDCDATA INITIAL SIZE 0
WITH HEADER LINE. "STANDARD BDC TABLE
DATA: BEGIN OF MESSTAB OCCURS 0."输出消息号
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MESSTAB.
REFRESH T_BDC.
DATA: MODE TYPE C.
*-------输出错误信息内表--------------------------
DATA: BEGIN OF ITAB_MESSTAB OCCURS 0.
INCLUDE STRUCTURE L_VBAK.
DATA: FLAG(10)."错误标记
DATA: MESSAGE(100)."信息
DATA: END OF ITAB_MESSTAB.
*--------------------------------------------
DATA: IT_UPLOAD LIKE L_VBAK OCCURS 0 WITH HEADER LINE.
DATA: IT_UPLOAD_SO LIKE L_VBAK OCCURS 0 WITH HEADER LINE.
DATA: P_VBELN LIKE VBAK-VBELN.
DATA L_NAME LIKE THEAD-TDNAME.
RANGES: R_PSTYV FOR VBAP-PSTYV.
DATA: SUM TYPE I.
*----------alv所需变量定义----------------------------------------------
TYPE-POOLS: SLIS.
DATA:
V_REPID LIKE SY-REPID,
I_PERIOD TYPE STRING.
DATA:
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
"ALV 字段
V_ALV_LAYOUT TYPE SLIS_LAYOUT_ALV. "ALV 样式
DATA GIT_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA GIT_EVENTS TYPE SLIS_T_EVENT.
*****************************************************************
* SELECTION-SCREEN
*****************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R1 TYPE C
RADIOBUTTON GROUP MOD.
SELECTION-SCREEN COMMENT 3(20) TEXT-005 FOR FIELD R1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R2 TYPE C
RADIOBUTTON GROUP MOD.
SELECTION-SCREEN COMMENT 3(20) TEXT-006 FOR FIELD R2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: R3 TYPE C
RADIOBUTTON GROUP MOD DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(20) TEXT-007 FOR FIELD R3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLOCK1.
*&-------------------------------------------------------------------*
* AT SELECTION-SCREEN
*&-------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILENAME USING P_FILE.
*&-------------------------------------------------------------------*
* START-OF-SELECTION
*&-------------------------------------------------------------------*
START-OF-SELECTION.
IF R1 = 'X'.
MODE = 'A'.
ENDIF.
START-OF-SELECTION.
IF R2 = 'X'.
MODE = 'E'.
ENDIF.
START-OF-SELECTION.
IF R3 = 'X'.
MODE = 'N'.
ENDIF.
PERFORM MAIN.
*&---------------------------------------------------------------------*
*& Form main
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAIN.
PERFORM UPOLOAD_FILE.
SORT IT_UPLOAD_SO BY VBELN.
SORT IT_UPLOAD BY VBELN.
LOOP AT IT_UPLOAD_SO.
*--检查订单是否存在--------------------------
P_VBELN = IT_UPLOAD_SO-VBELN.
*-------------在P_VBELN前面补零-----
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_VBELN
IMPORTING
OUTPUT = P_VBELN.
CLEAR VBAK.
SELECT SINGLE VBELN FROM VBAK
INTO VBAK-VBELN
WHERE VBELN = P_VBELN.
IF SY-SUBRC <> 0.
MOVE-CORRESPONDING IT_UPLOAD_SO TO ITAB_MESSTAB.
ITAB_MESSTAB-FLAG = '失败'."错误标记
ITAB_MESSTAB-MESSAGE = '该订单没有被创建,无法更新ITEM!!'."信息
APPEND ITAB_MESSTAB.
DELETE IT_UPLOAD WHERE VBELN = IT_UPLOAD_SO-VBELN.
DELETE IT_UPLOAD_SO WHERE VBELN = IT_UPLOAD_SO-VBELN.
CONTINUE.
ENDIF.
*-----将外部数据赋值给要执行BDC的内表-------
LOOP AT IT_UPLOAD WHERE VBELN = IT_UPLOAD_SO-VBELN.
MOVE-CORRESPONDING IT_UPLOAD TO L_VBAK.
APPEND L_VBAK.
ENDLOOP.
*----判断当前表头合作伙伴个数-----------------
SELECT COUNT( DISTINCT PARVW ) FROM VBPA
INTO SUM
WHERE VBELN = P_VBELN
AND POSNR = '000000'.
*--数据检查如果没有问题则执行BDC------------------
PERFORM CHECK_INPUT.
CLEAR: L_VBAK[],IT_UPLOAD,L_VBAK,P_VBELN,
SUM.
ENDLOOP.
*---输出日志信息-----------
PERFORM OUTPUT_LOG.
ENDFORM. " main
*&---------------------------------------------------------------------*
*& Form check_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_INPUT.
SORT L_VBAK BY VBELN POSNR.
LOOP AT L_VBAK.
*---数据检查-------
*以下数据为必填项,如果为空则报系统错误---------
*订单行项目/物料/数量/项目类型/首次日期/送达方/送达方中您的参考
IF L_VBAK-POSNR = ''."订单行项目
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
ITAB_MESSTAB-FLAG = '失败'."错误标记
ITAB_MESSTAB-MESSAGE = '订单行项目不能为空'."信息
APPEND ITAB_MESSTAB.
DELETE L_VBAK WHERE VBELN = L_VBAK-VBELN
AND POSNR = L_VBAK-POSNR.
CONTINUE.
ENDIF.
IF L_VBAK-MATNR = ''."物料
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
ITAB_MESSTAB-FLAG = '失败'."错误标记
ITAB_MESSTAB-MESSAGE = '物料不能为空'."信息
APPEND ITAB_MESSTAB.
DELETE L_VBAK WHERE VBELN = L_VBAK-VBELN
AND POSNR = L_VBAK-POSNR.
CONTINUE.
ENDIF.
IF L_VBAK-KWMENG = ''."数量
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
ITAB_MESSTAB-FLAG = '失败'."错误标记
ITAB_MESSTAB-MESSAGE = '数量不能为空'."信息
APPEND ITAB_MESSTAB.
DELETE L_VBAK WHERE VBELN = L_VBAK-VBELN
AND POSNR = L_VBAK-POSNR.
CONTINUE.
ENDIF.
IF L_VBAK-PSTYV = ''."项目类型
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
ITAB_MESSTAB-FLAG = '失败'."错误标记
ITAB_MESSTAB-MESSAGE = '项目类型不能为空'."信息
APPEND ITAB_MESSTAB.
DELETE L_VBAK WHERE VBELN = L_VBAK-VBELN
AND POSNR = L_VBAK-POSNR.
CONTINUE.
ENDIF.
IF L_VBAK-ETDAT = ''."首次日期
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
ITAB_MESSTAB-FLAG = '失败'."错误标记
ITAB_MESSTAB-MESSAGE = '首次日期不能为空'."信息
APPEND ITAB_MESSTAB.
DELETE L_VBAK WHERE VBELN = L_VBAK-VBELN
AND POSNR = L_VBAK-POSNR.
CONTINUE.
ENDIF.
* IF L_VBAK-IHREZ_E = ''."送达方中您的参考
* MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
* ITAB_MESSTAB-FLAG = '失败'."错误标记
* ITAB_MESSTAB-MESSAGE = '送达方中您的参考不能为空'."信息
* APPEND ITAB_MESSTAB.
* DELETE L_VBAK WHERE VBELN = L_VBAK-VBELN
* AND POSNR = L_VBAK-POSNR.
* CONTINUE.
* ENDIF.
*&数量 ,价格处理。
CONDENSE L_VBAK-KWMENG NO-GAPS.
CONDENSE L_VBAK-PR01_KBETR NO-GAPS.
CONDENSE L_VBAK-PN00_KBETR NO-GAPS.
* CONDENSE L_VBAK-PN002_KBETR NO-GAPS.
CONDENSE L_VBAK-ZP01_KBETR NO-GAPS. "ZP01价格
CONDENSE L_VBAK-ZP21_KBETR NO-GAPS. "ZP21价格
CONDENSE L_VBAK-ZP03_KBETR NO-GAPS. "ZP03价格
CONDENSE L_VBAK-ZP23_KBETR NO-GAPS. "ZP23价格
CONDENSE L_VBAK-ZP05_KBETR NO-GAPS. "ZP05价格
CONDENSE L_VBAK-ZP25_KBETR NO-GAPS. "ZP25价格
CONDENSE L_VBAK-ZP08_KBETR NO-GAPS. "ZP08价格
CONDENSE L_VBAK-ZP28_KBETR NO-GAPS. "ZP28价格
CONDENSE L_VBAK-ZP09_KBETR NO-GAPS. "ZP09价格
CONDENSE L_VBAK-ZP29_KBETR NO-GAPS. "ZP29价格
CONDENSE L_VBAK-ZP11_KBETR NO-GAPS. "ZP11价格
CONDENSE L_VBAK-ZP31_KBETR NO-GAPS. "ZP31价格
*----取得带 billing plan 的Item category(项目类型)-----------------
MOVE: 'I' TO R_PSTYV-SIGN,
'EQ' TO R_PSTYV-OPTION,
'ZTAO' TO R_PSTYV-LOW.
APPEND R_PSTYV.
MOVE 'ZAO2'TO R_PSTYV-LOW.
APPEND R_PSTYV.
MOVE 'TAO'TO R_PSTYV-LOW.
APPEND R_PSTYV.
MOVE 'ZAO'TO R_PSTYV-LOW.
APPEND R_PSTYV.
MOVE 'YYAO'TO R_PSTYV-LOW.
APPEND R_PSTYV.
*---执行BDC---------
PERFORM RUN_BDC.
ENDLOOP.
ENDFORM. " check_input
*&---------------------------------------------------------------------*
*& Form upoload_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPOLOAD_FILE.
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = '8400'
* FILENAME = SOURCEFILE
FILENAME = P_FILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = IT_UPLOAD
EXCEPTIONS
OTHERS = 7.
SORT IT_UPLOAD BY VBELN.
REFRESH IT_UPLOAD_SO.
CLEAR IT_UPLOAD_SO.
MOVE IT_UPLOAD[] TO IT_UPLOAD_SO[].
SORT IT_UPLOAD_SO BY VBELN.
*--删除重复行-------
DELETE ADJACENT DUPLICATES FROM IT_UPLOAD_SO COMPARING VBELN.
ENDFORM. " upoload_file
*&---------------------------------------------------------------------*
*& Form get_filename
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_FILE1 text
*----------------------------------------------------------------------*
FORM GET_FILENAME USING P_P_FILE.
"出现打开文件的对话框
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',*.*,*.*.'
MODE = 'O'
IMPORTING
FILENAME = P_P_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
ENDFORM. " get_filename
*&---------------------------------------------------------------------*
*& Form RUN_BDC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM RUN_BDC.
REFRESH T_BDC.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '0102',
' ' 'BDC_CURSOR' 'VBAK-VBELN',
' ' 'BDC_OKCODE' '/00',
' ' 'VBAK-VBELN' L_VBAK-VBELN."订单号
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4001',
' ' 'BDC_OKCODE' '=POAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV45W',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_CURSOR' 'RV45A-MABNR(02)',
' ' 'BDC_SUBSCR' 'SAPMV45A'.
*----------行项目概览数据输出----------------
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4001',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV45W',
' ' 'BDC_SUBSCR' 'SAPMV45A ',
' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
' ' 'RV45A-MABNR(02)' L_VBAK-MATNR,"物料编号
' ' 'VBAP-POSNR(02)' L_VBAK-POSNR,"行项目
* ' ' 'RV45A-KWMENG(02)' '1',
' ' 'RV45A-KWMENG(02)' L_VBAK-KWMENG, "数量
' ' 'VBAP-PSTYV(02)' L_VBAK-PSTYV, "项目类型
' ' 'RV45A-ETDAT(02)' L_VBAK-ETDAT, "首次日期
' ' 'BDC_SUBSCR' 'SAPMV45A'.
*如果客户物料编号/WBS元素/上层物料编号/PR01价格/PR01币种为空则以默认显示
IF L_VBAK-KDMAT NE SPACE."客户物料编号
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4001',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV45W',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
' ' 'VBAP-KDMAT(02)' L_VBAK-KDMAT."客户物料编号
* ' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
IF L_VBAK-UEPOS NE SPACE."上层项
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4001',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV45W',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
' ' 'VBAP-UEPOS(02)' L_VBAK-UEPOS. "上层项
* ' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
IF L_VBAK-PS_PSP_PNR NE SPACE."WBS元素
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4001',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV45W',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
' ' 'VBAP-PS_PSP_PNR(02)' L_VBAK-PS_PSP_PNR. "WBS元素
* ' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
IF L_VBAK-PR01_KBETR NE SPACE. "PR01价格
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4001',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV45W',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
' ' 'KOMV-KBETR(02)' L_VBAK-PR01_KBETR. "PR01价格
* ' ' 'KOMV-KBETR(02)' '1000'.
* ' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
IF L_VBAK-PR01_KOEIN NE SPACE. "PR01币种
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4001',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV45W',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
' ' 'RV45A-KOEIN(02)' L_VBAK-PR01_KOEIN. "PR01币种
* ' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
*---付款方式输入-------------------------------
IF L_VBAK-ZTERM <> ''.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
' ' 'VBKD-ZTERM(02)' L_VBAK-ZTERM."付款条款
ENDIF.
*------------------原始代码-----------------------
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4001',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV45W',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(02)',
* ' ' 'RV45A-MABNR(02)' L_VBAK-MATNR,"物料编号
* ' ' 'VBAP-KDMAT(02)' L_VBAK-KDMAT,"客户物料编号
* ' ' 'VBAP-POSNR(02)' L_VBAK-POSNR,"行项目
* ' ' 'RV45A-KWMENG(02)' L_VBAK-KWMENG, "数量
* ' ' 'VBAP-PSTYV(02)' L_VBAK-PSTYV, "项目类型
* ' ' 'VBAP-UEPOS(02)' L_VBAK-UEPOS, "上层项
* ' ' 'KOMV-KBETR(02)' L_VBAK-PR01_KBETR, "PR01价格
* ' ' 'RV45A-KOEIN(02)' L_VBAK-PR01_KOEIN, "PR01币种
* ' ' 'RV45A-ETDAT(02)' L_VBAK-ETDAT, "首次日期
* ' ' 'VBAP-PS_PSP_PNR(02)' L_VBAK-PS_PSP_PNR, "WBS元素
* ' ' 'BDC_SUBSCR' 'SAPMV45A'.
*-------------------END OF--------------------------------------------
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4001',
' ' 'BDC_OKCODE' '=ITEM',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV45W',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_CURSOR' 'RV45A-MABNR(02)',
' ' 'BDC_SUBSCR' 'SAPMV45A'.
*----判断是否是带 billing plan 的Item category---------
IF NOT L_VBAK-PSTYV IN R_PSTYV.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=T/06',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_CURSOR' 'RV45A-KWMENG'.
ELSE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=T/07',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
*------------END OF-------------------------
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
*---------价格输入区------------------------
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
*--价格条件可以为空
IF L_VBAK-PN00_KBETR NE SPACE
AND L_VBAK-PN00_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'PN00',
' ' 'KOMV-KBETR(10)' L_VBAK-PN00_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-PN00_KOEIN.
ENDIF.
* IF L_VBAK-PN002_KBETR NE SPACE
* AND L_VBAK-PN002_KOEIN NE SPACE.
*
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
*
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* ' ' 'KOMV-KSCHL(10)' 'PN00',
* ' ' 'KOMV-KBETR(10)' L_VBAK-PN002_KBETR,
* ' ' 'RV61A-KOEIN(10)' L_VBAK-PN002_KOEIN.
* ENDIF.
IF L_VBAK-ZP01_KOEIN NE SPACE
AND L_VBAK-ZP01_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP01',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP01_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP01_KOEIN.
ENDIF.
IF L_VBAK-ZP21_KBETR NE SPACE
AND L_VBAK-ZP21_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP21',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP21_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP21_KOEIN.
ENDIF.
IF L_VBAK-ZP03_KBETR NE SPACE
AND L_VBAK-ZP03_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP03',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP03_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP03_KOEIN.
ENDIF.
IF L_VBAK-ZP23_KBETR NE SPACE
AND L_VBAK-ZP23_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP23',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP23_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP23_KOEIN.
ENDIF.
IF L_VBAK-ZP05_KOEIN NE SPACE
AND L_VBAK-ZP05_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP05',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP05_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP05_KOEIN.
ENDIF.
IF L_VBAK-ZP25_KBETR NE SPACE
AND L_VBAK-ZP25_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP25',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP25_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP25_KOEIN.
ENDIF.
IF L_VBAK-ZP08_KBETR NE SPACE
AND L_VBAK-ZP08_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=V69A_KOAN',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
' ' 'KOMV-KSCHL(10)' 'ZP08',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP08_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP08_KOEIN.
ENDIF.
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '=V69A_KOAN',
* ' ' 'BDC_SUBSCR' 'SAPMV45A ',
* ' ' 'BDC_SUBSCR' 'SAPLV69A ',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(10)',
* ' ' 'KOMV-KSCHL(02)' 'PN00',
* ' ' 'KOMV-KSCHL(03)' 'PN00',
* ' ' 'KOMV-KSCHL(04)' 'ZP01',
* ' ' 'KOMV-KSCHL(05)' 'ZP21',
* ' ' 'KOMV-KSCHL(06)' 'ZP03',
* ' ' 'KOMV-KSCHL(07)' 'ZP23',
* ' ' 'KOMV-KSCHL(08)' 'ZP05',
* ' ' 'KOMV-KSCHL(09)' 'ZP25',
* ' ' 'KOMV-KSCHL(10)' 'ZP08',
* ' ' 'KOMV-KBETR(02)' L_VBAK-PN00_KBETR,
* ' ' 'KOMV-KBETR(03)' L_VBAK-PN002_KBETR,
* ' ' 'KOMV-KBETR(04)' L_VBAK-ZP01_KBETR,
* ' ' 'KOMV-KBETR(05)' L_VBAK-ZP21_KBETR,
* ' ' 'KOMV-KBETR(06)' L_VBAK-ZP03_KBETR,
* ' ' 'KOMV-KBETR(07)' L_VBAK-ZP23_KBETR,
* ' ' 'KOMV-KBETR(08)' L_VBAK-ZP05_KBETR,
* ' ' 'KOMV-KBETR(09)' L_VBAK-ZP25_KBETR,
* ' ' 'KOMV-KBETR(10)' L_VBAK-ZP08_KBETR,
* ' ' 'RV61A-KOEIN(02)' L_VBAK-PN00_KOEIN,
* ' ' 'RV61A-KOEIN(03)' L_VBAK-PN002_KOEIN,
* ' ' 'RV61A-KOEIN(04)' L_VBAK-ZP01_KOEIN,
* ' ' 'RV61A-KOEIN(05)' L_VBAK-ZP21_KOEIN,
* ' ' 'RV61A-KOEIN(06)' L_VBAK-ZP03_KOEIN,
* ' ' 'RV61A-KOEIN(07)' L_VBAK-ZP23_KOEIN,
* ' ' 'RV61A-KOEIN(08)' L_VBAK-ZP05_KOEIN,
* ' ' 'RV61A-KOEIN(09)' L_VBAK-ZP25_KOEIN,
* ' ' 'RV61A-KOEIN(10)' L_VBAK-ZP08_KOEIN.
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)'.
IF L_VBAK-ZP28_KBETR NE SPACE
AND L_VBAK-ZP28_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KBETR(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)',
' ' 'KOMV-KSCHL(10)' 'ZP28',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP28_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP28_KOEIN.
ENDIF.
IF L_VBAK-ZP09_KBETR NE SPACE
AND L_VBAK-ZP09_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KBETR(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)',
' ' 'KOMV-KSCHL(10)' 'ZP09',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP09_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP09_KOEIN.
ENDIF.
IF L_VBAK-ZP29_KBETR NE SPACE
AND L_VBAK-ZP29_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KBETR(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)',
' ' 'KOMV-KSCHL(10)' 'ZP29',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP29_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP29_KOEIN.
ENDIF.
IF L_VBAK-ZP11_KBETR NE SPACE
AND L_VBAK-ZP11_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KBETR(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)',
' ' 'KOMV-KSCHL(10)' 'ZP11',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP11_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP11_KOEIN.
ENDIF.
IF L_VBAK-ZP31_KBETR NE SPACE
AND L_VBAK-ZP31_KOEIN NE SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KBETR(10)'.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)',
' ' 'KOMV-KSCHL(10)' 'ZP31',
' ' 'KOMV-KBETR(10)' L_VBAK-ZP31_KBETR,
' ' 'RV61A-KOEIN(10)' L_VBAK-ZP31_KOEIN.
ENDIF.
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '5003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV69A',
* ' ' 'BDC_CURSOR' 'KOMV-KBETR(06)',
* ' ' 'KOMV-KSCHL(02)' 'ZP28',
* ' ' 'KOMV-KSCHL(03)' 'ZP09',
* ' ' 'KOMV-KSCHL(04)' 'ZP29',
* ' ' 'KOMV-KSCHL(05)' 'ZP11',
* ' ' 'KOMV-KSCHL(06)' 'ZP31',
* ' ' 'KOMV-KBETR(02)' L_VBAK-ZP28_KBETR,
* ' ' 'KOMV-KBETR(03)' L_VBAK-ZP09_KBETR,
* ' ' 'KOMV-KBETR(04)' L_VBAK-ZP29_KBETR,
* ' ' 'KOMV-KBETR(05)' L_VBAK-ZP11_KBETR,
* ' ' 'KOMV-KBETR(06)' L_VBAK-ZP31_KBETR,
* ' ' 'RV61A-KOEIN(02)' L_VBAK-ZP28_KOEIN,
* ' ' 'RV61A-KOEIN(03)' L_VBAK-ZP09_KOEIN,
* ' ' 'RV61A-KOEIN(04)' L_VBAK-ZP29_KOEIN,
* ' ' 'RV61A-KOEIN(05)' L_VBAK-ZP11_KOEIN,
* ' ' 'RV61A-KOEIN(06)' L_VBAK-ZP31_KOEIN.
*---------------------END OF------------------------
*----判断是否是带 billing plan 的Item category---------
IF NOT L_VBAK-PSTYV IN R_PSTYV.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=T/09',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(07)'.
ELSE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '5003',
' ' 'BDC_OKCODE' '=T/10',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV69A',
' ' 'BDC_CURSOR' 'KOMV-KSCHL(07)'.
ENDIF.
*------------END OF-------------------------
*-------付款方和送达方的判断--------------------
* IF L_VBAK-F_PARTNER = '' "付款方
* AND L_VBAK-S_PARTNER = ''."送达方
IF L_VBAK-S_PARTNER = ''."送达方
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV09C'.
* ' ' 'BDC_CURSOR' 'GVS_TC_DATA-REC-PARTNER(06)',
* ' ' 'GV_FILTER' 'PARALL'.
* ' ' 'GVS_TC_DATA-REC-PARTNER(05)' L_VBAK-F_PARTNER,"付款方
* ' ' 'GVS_TC_DATA-REC-PARTNER(06)' L_VBAK-S_PARTNER."送达方
ELSE.
* 根据表头合作伙伴的行数来判断送达方的位置
IF SUM = 4.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV09C',
' ' 'BDC_CURSOR' 'GVS_TC_DATA-REC-PARTNER(04)',
' ' 'GV_FILTER' 'PARALL',
' ' 'GVS_TC_DATA-REC-PARTNER(04)' L_VBAK-S_PARTNER."送达方
ELSEIF SUM = 5.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV09C',
' ' 'BDC_CURSOR' 'GVS_TC_DATA-REC-PARTNER(05)',
' ' 'GV_FILTER' 'PARALL',
' ' 'GVS_TC_DATA-REC-PARTNER(05)' L_VBAK-S_PARTNER."送达方
ELSEIF SUM = 6.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '/00',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV09C',
' ' 'BDC_CURSOR' 'GVS_TC_DATA-REC-PARTNER(06)',
' ' 'GV_FILTER' 'PARALL',
' ' 'GVS_TC_DATA-REC-PARTNER(06)' L_VBAK-S_PARTNER."送达方
ENDIF.
* PERFORM FRM_ADD_BDC_TAB_RECORD USING:
* '1' 'SAPMV45A' '4003',
* ' ' 'BDC_OKCODE' '/00',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPMV45A',
* ' ' 'BDC_SUBSCR' 'SAPLV09C',
* ' ' 'BDC_CURSOR' 'GVS_TC_DATA-REC-PARTNER(06)',
* ' ' 'GV_FILTER' 'PARALL',
* ' ' 'GVS_TC_DATA-REC-PARTNER(05)' L_VBAK-F_PARTNER,"付款方
* ' ' 'GVS_TC_DATA-REC-PARTNER(06)' L_VBAK-S_PARTNER."送达方
ENDIF.
*------------------end of------------------------------------
*----判断是否是带 billing plan 的Item category---------
IF NOT L_VBAK-PSTYV IN R_PSTYV.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=T/11',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPLV70T'.
ELSE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=T/12',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A'.
ENDIF.
*-----------END OF-------------------------------
*--------采购订单数据的判断--------------------------------
*如果售达方中采购订单项目和售达方中您的参考都为空、送达方中您的参考
IF L_VBAK-POSEX = SPACE AND L_VBAK-IHREZ = SPACE
AND L_VBAK-IHREZ_E = SPACE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=SICH',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A ',
' ' 'BDC_CURSOR' 'VBKD-IHREZ_E'.
* ' ' 'VBAP-POSEX' L_VBAK-POSEX,"售达方中采购订单项目
* ' ' 'VBKD-IHREZ' L_VBAK-IHREZ,"售达方中您的参考
* ' ' 'VBKD-IHREZ_E' L_VBAK-IHREZ_E."送达方中您的参考
ELSEIF L_VBAK-POSEX = SPACE."售达方中采购订单项目
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=SICH',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A ',
' ' 'BDC_CURSOR' 'VBKD-IHREZ_E',
* ' ' 'VBAP-POSEX' L_VBAK-POSEX."售达方中采购订单项目
' ' 'VBKD-IHREZ' L_VBAK-IHREZ,"售达方中您的参考
' ' 'VBKD-IHREZ_E' L_VBAK-IHREZ_E."送达方中您的参考
ELSEIF L_VBAK-IHREZ = SPACE."售达方中您的参考
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=SICH',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A ',
' ' 'BDC_CURSOR' 'VBKD-IHREZ_E',
' ' 'VBAP-POSEX' L_VBAK-POSEX,"售达方中采购订单项目
' ' 'VBKD-IHREZ_E' L_VBAK-IHREZ_E."送达方中您的参考
ELSEIF L_VBAK-IHREZ_E = SPACE."送达方中您的参考
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=SICH',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A ',
' ' 'BDC_CURSOR' 'VBKD-IHREZ_E',
' ' 'VBAP-POSEX' L_VBAK-POSEX,"售达方中采购订单项目
' ' 'VBKD-IHREZ' L_VBAK-IHREZ."售达方中您的参考
* ' ' 'VBKD-IHREZ_E' L_VBAK-IHREZ_E."送达方中您的参考
ELSE.
PERFORM FRM_ADD_BDC_TAB_RECORD USING:
'1' 'SAPMV45A' '4003',
' ' 'BDC_OKCODE' '=SICH',
' ' 'BDC_SUBSCR' 'SAPMV45A',
' ' 'BDC_SUBSCR' 'SAPMV45A ',
' ' 'BDC_CURSOR' 'VBKD-IHREZ_E',
' ' 'VBAP-POSEX' L_VBAK-POSEX,"售达方中采购订单项目
' ' 'VBKD-IHREZ' L_VBAK-IHREZ,"售达方中您的参考
' ' 'VBKD-IHREZ_E' L_VBAK-IHREZ_E."送达方中您的参考
ENDIF.
CLEAR: R_PSTYV[],R_PSTYV.
*-------------------------------------------------------
* CALL TRANSACTION 'VA02' USING T_BDC MODE 'E'.
PERFORM SUB_TRANSFER_DATA USING 'VA02'.
*--处理日志信息-----------------------
*----->message inf.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
*-----表示肯定成功了
ITAB_MESSTAB-MESSAGE = '该行项目已成功导入!'.
ITAB_MESSTAB-FLAG = '成功'.
APPEND ITAB_MESSTAB.
*--创建文本--------------------------------------
PERFORM CREATE_TEXT USING L_VBAK-VBELN L_VBAK-POSNR L_VBAK-JUMING.
ELSE.
MOVE-CORRESPONDING L_VBAK TO ITAB_MESSTAB.
LOOP AT MESSTAB WHERE MSGTYP = 'E'.
ITAB_MESSTAB-FLAG = '失败'.
SELECT SINGLE TEXT
FROM T100
INTO ITAB_MESSTAB-MESSAGE
WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = MESSTAB-MSGID
NO = MESSTAB-MSGNR
IMPORTING
MSG = ITAB_MESSTAB-MESSAGE.
ENDLOOP.
IF SY-SUBRC NE 0."没有E类型信息
LOOP AT MESSTAB WHERE MSGTYP = 'S'.
ITAB_MESSTAB-FLAG = '失败'.
SELECT SINGLE TEXT
FROM T100
INTO ITAB_MESSTAB-MESSAGE
WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = MESSTAB-MSGID
NO = MESSTAB-MSGNR
IMPORTING
MSG = ITAB_MESSTAB-MESSAGE.
ENDLOOP.
ELSE.
LOOP AT MESSTAB WHERE MSGTYP = 'S'.
ITAB_MESSTAB-FLAG = '成功'.
ITAB_MESSTAB-MESSAGE = '行项目更新成功!'.
ENDLOOP.
*--创建文本--------------------------------------
PERFORM CREATE_TEXT USING L_VBAK-VBELN L_VBAK-POSNR L_VBAK-JUMING.
ENDIF.
APPEND ITAB_MESSTAB.
ENDIF.
COMMIT WORK AND WAIT.
REFRESH MESSTAB.
CLEAR MESSTAB.
ENDFORM. " RUN_BDC
*---------------------------------------------------------------------*
* FORM SUB_TRANSFER_DATA *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> T_CODE *
*---------------------------------------------------------------------*
FORM SUB_TRANSFER_DATA USING T_CODE.
CALL TRANSACTION T_CODE
USING T_BDC
MODE MODE " 'N'-Do not display
* MODE 'A' " 'A'-Display the screens
UPDATE 'S'
MESSAGES INTO MESSTAB.
ENDFORM. " sub_transfer_data
*&---------------------------------------------------------------------*
* FORM FRM_ADD_BDC_TAB_RECORD *
*&---------------------------------------------------------------------*
* FILL BDC *
*&---------------------------------------------------------------------*
FORM FRM_ADD_BDC_TAB_RECORD USING:TMP_FLAG
TMP_VAR1
TMP_VAR2.
CLEAR T_BDC.
IF TMP_FLAG = '1'.
T_BDC-PROGRAM = TMP_VAR1.
T_BDC-DYNPRO = TMP_VAR2.
T_BDC-DYNBEGIN = 'X'.
ELSE.
T_BDC-FNAM = TMP_VAR1.
T_BDC-FVAL = TMP_VAR2.
ENDIF.
APPEND T_BDC.
ENDFORM. "
*&---------------------------------------------------------------------*
*& Form output_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM OUTPUT_LOG.
SORT ITAB_MESSTAB BY VBELN.
PERFORM ALV_DISPLAY."ALV输出
ENDFORM. " output_LOG
*&---------------------------------------------------------------------*
*& Form ALV_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_DISPLAY .
DATA L_TMP TYPE LVC_TITLE.
* PERFORM FRM_GET_EVENTS."alv表头所用
* PERFORM FRM_COMMENT_BUILD."alv表头所用
* v_alv_layout-colwidth_optimize = 'X'.
* v_alv_layout-info_fieldname = 'COLOR'.
PERFORM INIT_FIELDCAT.
* 调用ALV函数显示
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_GRID_TITLE = L_TMP
IS_LAYOUT = V_ALV_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
I_SAVE = 'X'
* IS_VARIANT =
* IT_EVENTS = GIT_EVENTS[]"alv表头赋值
* i_callback_user_command = 'FRM_UCOMM'"ALV事件
TABLES
T_OUTTAB = ITAB_MESSTAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " ALV_DISPLAY
*&---------------------------------------------------------------------*
*& Form INIT_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM INIT_FIELDCAT .
GT_FIELDCAT-FIELDNAME = 'VBELN'.
GT_FIELDCAT-SELTEXT_L = '订单号'.
GT_FIELDCAT-SELTEXT_S = '订单号'.
GT_FIELDCAT-SELTEXT_M = '订单号'.
APPEND GT_FIELDCAT.
CLEAR GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'POSNR'.
GT_FIELDCAT-SELTEXT_L = '项目号'.
GT_FIELDCAT-SELTEXT_S = '项目号'.
GT_FIELDCAT-SELTEXT_M = '项目号'.
APPEND GT_FIELDCAT.
CLEAR GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'KWMENG'.
GT_FIELDCAT-SELTEXT_L = '数量'.
GT_FIELDCAT-SELTEXT_S = '数量'.
GT_FIELDCAT-SELTEXT_M = '数量'.
APPEND GT_FIELDCAT.
CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'KDMAT'.
* GT_FIELDCAT-SELTEXT_L = '客户物料编号'.
* GT_FIELDCAT-SELTEXT_S = '客户物料编号'.
* GT_FIELDCAT-SELTEXT_M = '客户物料编号'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'PSTYV'.
* GT_FIELDCAT-SELTEXT_L = '项目类型'.
* GT_FIELDCAT-SELTEXT_S = '项目类型'.
* GT_FIELDCAT-SELTEXT_M = '项目类型'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'UEPOS'.
* GT_FIELDCAT-SELTEXT_L = '上层项'.
* GT_FIELDCAT-SELTEXT_S = '上层项'.
* GT_FIELDCAT-SELTEXT_M = '上层项'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'PR01价格'.
* GT_FIELDCAT-SELTEXT_L = 'PR01_KBETR'.
* GT_FIELDCAT-SELTEXT_S = 'PR01_KBETR'.
* GT_FIELDCAT-SELTEXT_M = 'PR01_KBETR'.
** gt_fieldcat-hotspot = 'X'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'PR01币种'.
* GT_FIELDCAT-SELTEXT_L = 'PR01_KOEIN'.
* GT_FIELDCAT-SELTEXT_S = 'PR01_KOEIN'.
* GT_FIELDCAT-SELTEXT_M = 'PR01_KOEIN'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'ETDAT'.
* GT_FIELDCAT-SELTEXT_L = '首次日期'.
* GT_FIELDCAT-SELTEXT_S = '首次日期'.
* GT_FIELDCAT-SELTEXT_M = '首次日期'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'PS_PSP_PNR'.
* GT_FIELDCAT-SELTEXT_L = 'WBS元素'.
* GT_FIELDCAT-SELTEXT_S = 'WBS元素'.
* GT_FIELDCAT-SELTEXT_M = 'WBS元素'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'PN00_KBETR'.
* GT_FIELDCAT-SELTEXT_L = 'PN00价格'.
* GT_FIELDCAT-SELTEXT_S = 'PN00价格'.
* GT_FIELDCAT-SELTEXT_M = 'PN00价格'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
* GT_FIELDCAT-FIELDNAME = 'PN00_KOEIN'.
* GT_FIELDCAT-SELTEXT_L = 'PN00币种'.
* GT_FIELDCAT-SELTEXT_S = 'PN00币种'.
* GT_FIELDCAT-SELTEXT_M = 'PN00币种'.
* APPEND GT_FIELDCAT.
* CLEAR GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'FLAG'.
GT_FIELDCAT-SELTEXT_L = '是否成功'.
GT_FIELDCAT-SELTEXT_S = '是否成功'.
GT_FIELDCAT-SELTEXT_M = '是否成功'.
APPEND GT_FIELDCAT.
CLEAR GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'MESSAGE'.
GT_FIELDCAT-SELTEXT_L = '备注'.
GT_FIELDCAT-SELTEXT_S = '备注'.
GT_FIELDCAT-SELTEXT_M = '备注'.
APPEND GT_FIELDCAT.
CLEAR GT_FIELDCAT.
ENDFORM. " INIT_FIELDCAT
*&---------------------------------------------------------------------*
*& Form CREATE_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_VBAK_VBELN text
* -->P_I_VBAK_POSNR text
*----------------------------------------------------------------------*
FORM CREATE_TEXT USING P_I_VBAK_VBELN
P_I_VBAK_POSNR
P_L_VBAK-JUMING.
DATA:L_TLINE LIKE TLINE OCCURS 0 WITH HEADER LINE.
****局名
L_TLINE-TDFORMAT = '01'.
L_TLINE-TDLINE = P_L_VBAK-JUMING.
APPEND L_TLINE.
*-------------在P_I_VBAK_VBELN前面补零-----
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_I_VBAK_VBELN
IMPORTING
OUTPUT = P_I_VBAK_VBELN.
*-------------在P_I_VBAK_POSNR前面补零-----
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_I_VBAK_POSNR
IMPORTING
OUTPUT = P_I_VBAK_POSNR.
* L_NAME = P_I_VBAK_VBELN.
CONCATENATE P_I_VBAK_VBELN P_I_VBAK_POSNR INTO L_NAME.
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
FID = 'Z003'
FLANGUAGE = '1'
FNAME = L_NAME
FOBJECT = 'VBBP'
SAVE_DIRECT = 'X'
FFORMAT = '*'
TABLES
FLINES = L_TLINE
EXCEPTIONS
NO_INIT = 1
NO_SAVE = 2
OTHERS = 3.
CLEAR: L_TLINE[],L_TLINE,L_NAME.
ENDFORM. " CREATE_TEXT