PO 审批及生成xml文件
- ***********************************************************************
- * Report : YTST_RAINY_MM2 *
- * Application : MM *
- * Subject : PO list *
- * Requested by : Rainy *
- * Execution : Online when required *
- * Ref no: : *
- * Author : *
- * Req Date : 20140722 *
- ***********************************************************************
- * 采购单审批信息查询 *
- ***********************************************************************
- * 设计主要逻辑与原理说明 *
- ***********************************************************************
- *1.取数:根据用户的输入单据编号、交货单类型、计划发货日期、实际发货日期*
- * *
- ***********************************************************************
- * MODIFICATIONS *
- * ------------------------------------------------------------------- *
- * REL DATE NAME (COMPANY) DESCRIPTION TASK-NO *
- * --- ---- ---- --------- ----------- ------- *
- ***********************************************************************
- REPORT YMM3 NO STANDARD PAGE HEADING MESSAGE-ID Z001.
- *----------------------------------------------------------------------
- * TYPE-POOLS
- *----------------------------------------------------------------------
- TYPE-POOLS: SLIS. "ALV
- TABLES:EKKO,
- EKPO,
- LFA1,
- MAKT.
- *&------------------------------------------------------------------*
- *& Internal Table Definition
- *&------------------------------------------------------------------*
- *&3000000004
- DATA:BEGIN OF GT_ALL OCCURS 0,
- EBELN LIKE EKKO-EBELN,"SAP-PO
- LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
- WAERS LIKE EKKO-WAERS,"交易幣別
- * TXJCD LIKE EKKO-TXJCD,"交易稅別
- STCEG LIKE EKKO-STCEG,"交易税别
- EBELP LIKE EKPO-EBELP, "项目号
- MATNR LIKE EKPO-MATNR, "材料编号
- MENGE LIKE EKPO-MENGE, "訂購數量
- NETPR LIKE EKPO-NETPR, "单价
- KZWI LIKE EKPO-KZWI5, "金额
- PLIFZ LIKE EKPO-PLIFZ, "預定交期
- NAME1 LIKE LFA1-NAME1,"廠商簡稱
- TELF1 LIKE LFA1-TELF1,"公司電話
- TELFX LIKE LFA1-TELFX,"公司傳真
- NAME2 LIKE LFA1-NAME2,"聯絡人
- SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
- ADRNR LIKE LFA1-ADRNR,"联系地址
- YUNSW TYPE STRING, "运送方式
- TEXT(100) TYPE C, "抬头備註
- MAKTX LIKE MAKT-MAKTX, "材料规格
- MEINS LIKE MARA-MEINS, "单位
- TEXTL(100) TYPE C, "项目備註
- SEL TYPE C,
- LIN TYPE I,
- END OF GT_ALL.
- *PO list
- DATA:BEGIN OF GT_PO OCCURS 0,
- LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
- NAME1 LIKE LFA1-NAME1,"廠商簡稱
- EBELN LIKE EKKO-EBELN,"SAP-PO
- TELF1 LIKE LFA1-TELF1,"公司電話
- TELFX LIKE LFA1-TELFX,"公司傳真
- NAME2 LIKE LFA1-NAME2,"聯絡人
- WAERS LIKE EKKO-WAERS,"交易幣別
- SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
- * TXJCD LIKE EKPO-TXJCD,"交易稅別
- STCEG LIKE EKKO-STCEG,"交易税别
- YUNSW TYPE STRING, "运送方式
- ADRNR LIKE LFA1-ADRNR,"联系地址
- TEXT(100) TYPE C, "抬头備註
- *&add
- EBELP LIKE EKPO-EBELP, "项目号
- MATNR LIKE EKPO-MATNR, "材料编号
- MAKTX LIKE MAKT-MAKTX, "材料规格
- MEINS LIKE MARA-MEINS, "单位
- MENGE LIKE EKPO-MENGE, "訂購數量
- NETPR LIKE EKPO-NETPR, "单价
- KZWI LIKE EKPO-KZWI5, "金额
- PLIFZ LIKE EKPO-PLIFZ, "預定交期
- TEXTL(100) TYPE C, "项目備註
- SEL TYPE C,
- LIN TYPE I,
- END OF GT_PO.
- TYPES:BEGIN OF TY_ITEM,
- EBELP LIKE EKPO-EBELP, "项目号
- MATNR LIKE EKPO-MATNR, "材料编号
- MAKTX LIKE MAKT-MAKTX, "材料规格
- MEINS LIKE MARA-MEINS, "单位
- MENGE LIKE EKPO-MENGE, "訂購數量
- NETPR LIKE EKPO-NETPR, "单价
- KZWI LIKE EKPO-KZWI5, "金额
- PLIFZ LIKE EKPO-PLIFZ, "預定交期
- TEXTL(100) TYPE C, "项目備註S
- END OF TY_ITEM.
- TYPES:IT_ITEM TYPE STANDARD TABLE OF TY_ITEM WITH DEFAULT KEY.
- DATA: IT_LINE TYPE STANDARD TABLE OF TY_ITEM WITH HEADER LINE,
- WA_LINE1 LIKE IT_LINE.
- TYPES:BEGIN OF TY_PO,
- LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
- NAME1 LIKE LFA1-NAME1,"廠商簡稱
- EBELN LIKE EKKO-EBELN,"SAP-PO
- TELF1 LIKE LFA1-TELF1,"公司電話
- TELFX LIKE LFA1-TELFX,"公司傳真
- NAME2 LIKE LFA1-NAME2,"聯絡人
- WAERS LIKE EKKO-WAERS,"交易幣別
- SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
- * TXJCD LIKE EKPO-TXJCD,"交易稅別
- STCEG LIKE EKKO-STCEG,"交易税别
- YUNSW TYPE STRING, "运送方式
- ADRNR LIKE LFA1-ADRNR,"联系地址
- TEXT(100) TYPE C, "抬头備註
- ITEM TYPE IT_ITEM,
- END OF TY_PO.
- DATA:IT_PO TYPE STANDARD TABLE OF TY_PO WITH HEADER LINE,
- WA_PO LIKE IT_PO.
- DATA:TMP_EBELN LIKE EKKO-EBELN.
- TYPES:BEGIN OF TY_HEAD,
- LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
- NAME1 LIKE LFA1-NAME1,"廠商簡稱
- EBELN LIKE EKKO-EBELN,"SAP-PO
- TELF1 LIKE LFA1-TELF1,"公司電話
- TELFX LIKE LFA1-TELFX,"公司傳真
- NAME2 LIKE LFA1-NAME2,"聯絡人
- WAERS LIKE EKKO-WAERS,"交易幣別
- SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
- * TXJCD LIKE EKPO-TXJCD,"交易稅別
- STCEG LIKE EKKO-STCEG,"交易税别
- YUNSW TYPE STRING, "运送方式
- ADRNR LIKE LFA1-ADRNR,"联系地址
- TEXT(100) TYPE C, "抬头備註
- END OF TY_HEAD.
- DATA:IT_HEAD TYPE STANDARD TABLE OF TY_HEAD WITH HEADER LINE.
- DATA:BEGIN OF TT_HEAD,
- LIFN1 TYPE STRING VALUE 'field1',
- LIFN2 TYPE STRING VALUE 'LIFNR',
- LIFN3 TYPE STRING VALUE 'SAP廠商編號',
- LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
- NAM1 TYPE STRING VALUE 'field3',
- NAM2 TYPE STRING VALUE 'NAME1',
- NAM3 TYPE STRING VALUE '廠商簡稱',
- NAME1 LIKE LFA1-NAME1,"廠商簡稱
- EBEL1 TYPE STRING VALUE 'field6',
- EBEL2 TYPE STRING VALUE 'EBELN',
- EBEL3 TYPE STRING VALUE 'SAP-PO',
- EBELN LIKE EKKO-EBELN,"SAP-PO
- TEL1 TYPE STRING VALUE 'field5',
- TEL2 TYPE STRING VALUE 'TELF1',
- TEL3 TYPE STRING VALUE '公司電話',
- TELF1 LIKE LFA1-TELF1,"公司電話
- TEF1 TYPE STRING VALUE 'field7',
- TEF2 TYPE STRING VALUE 'TELFX',
- TEF3 TYPE STRING VALUE '公司傳真',
- TELFX LIKE LFA1-TELFX,"公司傳真
- NAM6 TYPE STRING VALUE 'field8',
- NAM7 TYPE STRING VALUE 'NAME2',
- NAM8 TYPE STRING VALUE '聯絡人',
- NAME2 LIKE LFA1-NAME2,"聯絡人
- WAER1 TYPE STRING VALUE 'field9',
- WAER2 TYPE STRING VALUE 'WAERS',
- WAER3 TYPE STRING VALUE '交易幣別',
- WAERS LIKE EKKO-WAERS,"交易幣別
- SPER1 TYPE STRING VALUE 'field10',
- SPER2 TYPE STRING VALUE 'SPER3',
- SPER3 TYPE STRING VALUE '付款方式',
- SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
- * TXJCD LIKE EKPO-TXJCD,"交易稅別
- STCE1 TYPE STRING VALUE 'field11',
- STCE2 TYPE STRING VALUE 'STCEG',
- STCE3 TYPE STRING VALUE '交易稅別',
- STCEG LIKE EKKO-STCEG,"交易税别
- YUNS1 TYPE STRING VALUE 'field12',
- YUNS2 TYPE STRING VALUE 'YUNSW',
- YUNS3 TYPE STRING VALUE '運送方式',
- YUNSW TYPE STRING, "运送方式
- ADRN1 TYPE STRING VALUE 'field13',
- ADRN2 TYPE STRING VALUE 'ADRNR',
- ADRN3 TYPE STRING VALUE '聯繫地址',
- ADRNR LIKE LFA1-ADRNR,"联系地址
- TEXT1 TYPE STRING VALUE 'field14',
- TEXT2 TYPE STRING VALUE 'TEXT',
- TEXT3 TYPE STRING VALUE '備註',
- TEXT(100) TYPE C, "抬头備註
- *&附件
- FJIAN1 TYPE STRING,
- FJIAN2 TYPE STRING,
- FJIAN3 TYPE STRING,
- FJIAN4 TYPE STRING,
- *&BPM固定格式抬头部分信息
- ID TYPE STRING,
- APP TYPE STRING,
- START TYPE STRING,
- FINISH TYPE STRING,
- DATE TYPE STRING,
- END OF TT_HEAD.
- DATA:ST_HEAD LIKE TABLE OF TT_HEAD,
- WA_HEAD LIKE LINE OF ST_HEAD.
- DATA:BEGIN OF TT_LINE,
- EBEL1 TYPE STRING VALUE 'field99',
- EBEL2 TYPE STRING VALUE 'EBELP',
- EBEL3 TYPE STRING VALUE '项目',
- EBELP LIKE EKPO-EBELP, "项目号
- MATN1 TYPE STRING VALUE 'field1',
- MATN2 TYPE STRING VALUE 'MATNR',
- MATN3 TYPE STRING VALUE '材料編碼',
- MATNR LIKE EKPO-MATNR, "材料编号
- MAKT1 TYPE STRING VALUE 'field2',
- MAKT2 TYPE STRING VALUE 'MAKTX',
- MAKT3 TYPE STRING VALUE '材料規格',
- MAKTX LIKE MAKT-MAKTX, "材料规格
- MEIN1 TYPE STRING VALUE 'field3',
- MEIN2 TYPE STRING VALUE 'MEINS',
- MEIN3 TYPE STRING VALUE '單位',
- MEINS LIKE MARA-MEINS, "单位
- MENG1 TYPE STRING VALUE 'field4',
- MENG2 TYPE STRING VALUE 'MENGE',
- MENG3 TYPE STRING VALUE '訂購數量',
- MENGE LIKE EKPO-MENGE, "訂購數量
- NETP1 TYPE STRING VALUE 'field5',
- NETP2 TYPE STRING VALUE 'NETPR',
- NETP3 TYPE STRING VALUE '单价',
- NETPR LIKE EKPO-NETPR, "单价
- KZWI1 TYPE STRING VALUE 'field6',
- KZWI2 TYPE STRING VALUE 'KZWI',
- KZWI3 TYPE STRING VALUE '金额',
- KZWI LIKE EKPO-KZWI5, "金额
- PLIF1 TYPE STRING VALUE 'field7',
- PLIF2 TYPE STRING VALUE 'PLIFZ',
- PLIF3 TYPE STRING VALUE '預定交期',
- PLIFZ LIKE EKPO-PLIFZ, "預定交期
- TET1 TYPE STRING VALUE 'field8',
- TET2 TYPE STRING VALUE 'TEXTL',
- TET3 TYPE STRING VALUE '项目備註',
- TEXTL(100) TYPE C, "项目備註S
- END OF TT_LINE.
- DATA:ST_LINE LIKE TABLE OF TT_LINE,
- WA_LINE LIKE LINE OF ST_LINE.
- *&item data
- DATA:BEGIN OF GT_ITEM OCCURS 0,
- EBELP LIKE EKPO-EBELP, "项目号
- MATNR LIKE EKPO-MATNR, "材料编号
- MAKTX LIKE MAKT-MAKTX, "材料规格
- MEINS LIKE MARA-MEINS, "单位
- MENGE LIKE EKPO-MENGE, "訂購數量
- NETPR LIKE EKPO-NETPR, "单价
- KZWI LIKE EKPO-KZWI5, "金额
- PLIFZ LIKE EKPO-PLIFZ, "預定交期
- TEXTL(100) TYPE C, "项目備註
- END OF GT_ITEM.
- *&for XML
- TYPES: BEGIN OF XML_LINE,
- DATA(256) TYPE X,
- END OF XML_LINE.
- DATA: XML_TABLE TYPE TABLE OF XML_LINE,
- IN_TABLE TYPE TABLE OF XML_LINE,
- WA_TABLE LIKE LINE OF IN_TABLE,
- XML_SIZE TYPE I.
- DATA:BEGIN OF GT_FILES OCCURS 0,
- HEAD TYPE STRING,
- ITEM TYPE STRING,
- END OF GT_FILES.
- DATA: L_RVAL TYPE I.
- DATA: STR TYPE STRING .
- DATA: TMPEBELN LIKE EKKO-EBELN.
- DATA: L_IXML TYPE REF TO IF_IXML,
- L_ENCODING TYPE REF TO IF_IXML_ENCODING,
- L_COMMENT TYPE REF TO IF_IXML_COMMENT,
- L_DOC TYPE REF TO IF_IXML_DOCUMENT,
- L_ROOT TYPE REF TO IF_IXML_ELEMENT,
- L_PO TYPE REF TO IF_IXML_ELEMENT,
- L_POHEAD TYPE REF TO IF_IXML_ELEMENT,
- L_ITEM TYPE REF TO IF_IXML_ELEMENT,
- L_ELEMENT TYPE REF TO IF_IXML_ELEMENT,
- L_ATTRIBUTE TYPE REF TO IF_IXML_ATTRIBUTE,
- L_OSTREAM TYPE REF TO IF_IXML_OSTREAM,
- L_FACTORY TYPE REF TO IF_IXML_STREAM_FACTORY.
- *&Variant
- DATA:G_LEN TYPE I.
- DATA:S_SFILE LIKE RLGRAP-FILENAME.
- DATA: W_XML TYPE STRING,
- W_LEN TYPE I,
- XML_STRING TYPE STRING.
- DATA:BEGIN OF IT_XML OCCURS 0,
- LINE(100) TYPE C,
- END OF IT_XML.
- DATA:RESULT_XML TYPE STANDARD TABLE OF SMUM_XMLTB,
- RETURN TYPE STANDARD TABLE OF BAPIRET2,
- WA_XML TYPE SMUM_XMLTB.
- *&------------------------------------------------------------------*
- *& Global Variants Definition
- *&------------------------------------------------------------------*
- *DATA:GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
- * GS_FIELDCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV.
- *&------------------------------------------------------------------*
- *& ALV
- *&------------------------------------------------------------------*
- DATA:LS_LAYOUT TYPE SLIS_LAYOUT_ALV,
- LV_TITLE TYPE LVC_TITLE.
- DATA:G_PROGRAM TYPE SY-REPID,
- GW_LAYOUT TYPE SLIS_LAYOUT_ALV,
- GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
- WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
- GT_EVENT TYPE SLIS_T_EVENT,
- WA_EVENT TYPE SLIS_ALV_EVENT.
- ************************************************************************
- * Select Screen *
- ************************************************************************
- SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME.
- SELECT-OPTIONS:S_EBELN FOR EKPO-EBELN OBLIGATORY,
- S_LIFNR FOR LFA1-LIFNR.
- SELECTION-SCREEN SKIP 1.
- SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME.
- PARAMETERS:P_BD AS CHECKBOX DEFAULT 'X',
- P_FW AS CHECKBOX,
- P_FILE TYPE STRING DEFAULT 'C:\Users\ThinkPad\Desktop\生成文件\xml\'. "NO-DISPLAY."RLGRAP-FILENAME.
- PARAMETERS:P_SFILE LIKE RLGRAP-FILENAME DEFAULT '/tmp/job/in/',
- P_SFILE1 TYPE RLGRAP-FILENAME DEFAULT '/tmp/job/return/'.
- SELECTION-SCREEN END OF BLOCK BLK2.
- SELECTION-SCREEN END OF BLOCK BLK1.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
- *& 选择文件F4
- PERFORM FRM_FILE_OPEN_DIALOG CHANGING P_FILE.
- INITIALIZATION.
- AT SELECTION-SCREEN.
- * LOOP AT S_EKGRP WHERE SIGN = 'I'.
- * IF S_EKGRP-LOW(1) = 'P' OR S_EKGRP-HIGH(1) = 'P'.
- * MESSAGE E011 WITH '此输入不合条件。'.
- * ENDIF.
- * ENDLOOP.
- START-OF-SELECTION.
- *&查询
- PERFORM FRM_GET_DATA.
- IF P_BD EQ 'X'.
- *&显示
- PERFORM FRM_ALV_DISPLAY.
- ELSE.
- PERFORM FRM_DOWN_XML.
- ENDIF.
- END-OF-SELECTION.
- *&---------------------------------------------------------------------*
- *& Form FRM_FILE_OPEN_DIALOG
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * <--P_P_FILE text
- *----------------------------------------------------------------------*
- FORM FRM_FILE_OPEN_DIALOG CHANGING P_FILE TYPE STRING.
- DATA: LT_FILE TYPE TABLE OF FILE_TABLE,
- LS_FILE TYPE FILE_TABLE.
- DATA: LV_RC TYPE I,
- LV_TITLE TYPE STRING.
- LV_TITLE = SY-TITLE.
- *& 文件的F4
- CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
- EXPORTING
- WINDOW_TITLE = LV_TITLE
- FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
- CHANGING
- FILE_TABLE = LT_FILE
- RC = LV_RC
- EXCEPTIONS
- FILE_OPEN_DIALOG_FAILED = 1
- CNTL_ERROR = 2
- ERROR_NO_GUI = 3
- NOT_SUPPORTED_BY_GUI = 4
- OTHERS = 5.
- IF SY-SUBRC <> 0.
- *--open file failed, show error message
- MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- ELSE.
- *--open file successful, get file name
- READ TABLE LT_FILE INTO LS_FILE INDEX 1.
- IF SY-SUBRC = 0 .
- P_FILE = LS_FILE-FILENAME.
- ENDIF.
- ENDIF.
- ENDFORM. " FRM_FILE_OPEN_DIALOG
- *&---------------------------------------------------------------------*
- *& Form FRM_GET_DATA
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_GET_DATA .
- DATA:LT_LINE LIKE STANDARD TABLE OF TLINE,
- LWA_LINE LIKE LINE OF LT_LINE,
- LV_NAME LIKE THEAD-TDNAME,
- L_JHTXT TYPE STRING.
- *C~YUNSW
- *&取数据:
- SELECT A~EBELN
- A~LIFNR
- A~WAERS
- A~STCEG
- B~EBELP
- B~MATNR
- B~MENGE
- B~NETPR
- B~KZWI5 AS KZWI
- B~PLIFZ
- C~NAME1
- C~TELF1
- C~TELFX
- C~NAME2
- C~SPERZ
- C~ADRNR
- INTO CORRESPONDING FIELDS OF TABLE GT_PO
- FROM EKKO AS A
- JOIN EKPO AS B
- ON A~EBELN EQ B~EBELN
- JOIN LFA1 AS C
- ON A~LIFNR EQ C~LIFNR
- WHERE A~EBELN IN S_EBELN
- AND A~LIFNR IN S_LIFNR.
- G_LEN = LINES( GT_PO[] ).
- IF G_LEN EQ 0.
- MESSAGE S001 WITH '找不到数据!'.
- ENDIF.
- SORT GT_PO BY EBELN EBELP.
- LOOP AT GT_PO.
- GT_PO-LIN = SY-TABIX.
- * GT_PO-TEXT = 'PO head text'.
- * GT_PO-TEXTL = 'PO_item text'.
- CLEAR LV_NAME.
- MOVE GT_PO-EBELN TO LV_NAME.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- CLIENT = SY-MANDT
- ID = 'F01'
- LANGUAGE = SY-LANGU
- NAME = LV_NAME "GT_PO-EBELN
- OBJECT = 'EKKO'
- TABLES
- LINES = LT_LINE
- EXCEPTIONS
- ID = 1
- LANGUAGE = 2
- NAME = 3
- NOT_FOUND = 4
- OBJECT = 5
- REFERENCE_CHECK = 6
- WRONG_ACCESS_TO_ARCHIVE = 7
- OTHERS = 8.
- LOOP AT LT_LINE INTO LWA_LINE.
- SHIFT LWA_LINE-TDLINE LEFT DELETING LEADING ''.
- CONCATENATE LWA_LINE-TDLINE L_JHTXT INTO GT_PO-TEXT."l_jhtxt.
- ENDLOOP.
- IF GT_PO-TEXT IS INITIAL.
- GT_PO-TEXT = '抬头无备注'.
- ENDIF.
- CLEAR LV_NAME.
- CONCATENATE GT_PO-EBELN GT_PO-EBELP INTO LV_NAME.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- CLIENT = SY-MANDT
- ID = 'F02'
- LANGUAGE = SY-LANGU
- NAME = LV_NAME
- OBJECT = 'EKPO'
- TABLES
- LINES = LT_LINE
- EXCEPTIONS
- ID = 1
- LANGUAGE = 2
- NAME = 3
- NOT_FOUND = 4
- OBJECT = 5
- REFERENCE_CHECK = 6
- WRONG_ACCESS_TO_ARCHIVE = 7
- OTHERS = 8.
- LOOP AT LT_LINE INTO LWA_LINE.
- SHIFT LWA_LINE-TDLINE LEFT DELETING LEADING ''.
- CONCATENATE LWA_LINE-TDLINE L_JHTXT INTO GT_PO-TEXTL.
- ENDLOOP.
- IF GT_PO-TEXTL IS INITIAL.
- GT_PO-TEXTL = '项目无备注'.
- ENDIF.
- GT_PO-YUNSW = '物流确认'.
- *&取物料描述
- SELECT SINGLE MAKTX
- INTO GT_PO-MAKTX
- FROM MAKT
- WHERE MATNR EQ GT_PO-MATNR.
- *&取物料单位
- SELECT SINGLE MEINS
- INTO GT_PO-MEINS
- FROM MARA
- WHERE MATNR EQ GT_PO-MATNR.
- MODIFY GT_PO.
- CLEAR GT_PO.
- ENDLOOP.
- ENDFORM. " FRM_GET_DATA
- *&---------------------------------------------------------------------*
- *& Form FRM_ALV_DISPLAY
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_ALV_DISPLAY .
- * PERFORM FRM_BUILD_FIELDCAT.
- DATA: L_NN TYPE I.
- DEFINE ADD_FIELDCAT.
- CLEAR WA_FIELDCAT.
- WA_FIELDCAT-FIELDNAME = &1.
- WA_FIELDCAT-SELTEXT_L = &2.
- WA_FIELDCAT-KEY = &3.
- WA_FIELDCAT-COL_POS = L_NN + 1.
- WA_FIELDCAT-JUST = &4.
- WA_FIELDCAT-OUTPUTLEN = &5.
- WA_FIELDCAT-FIX_COLUMN = &6.
- WA_FIELDCAT-NO_ZERO = &7.
- WA_FIELDCAT-EDIT = &8.
- APPEND WA_FIELDCAT TO GT_FIELDCAT.
- END-OF-DEFINITION.
- CLEAR GT_FIELDCAT.
- REFRESH GT_FIELDCAT.
- ADD_FIELDCAT 'LIN' '序号' '' '' '' '' '' ''.
- ADD_FIELDCAT 'EBELN' '采购订单' '' '' '' '' '' ''.
- ADD_FIELDCAT 'LIFNR' '廠商編號' '' '' '' '' '' ''.
- ADD_FIELDCAT 'WAERS' '交易幣別' '' '' '' '' '' ''.
- ADD_FIELDCAT 'STCEG' '交易税别' '' '' '' '' '' ''.
- ADD_FIELDCAT 'EBELP' '项目号' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MATNR' '材料编号' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MENGE' '訂購數量' '' '' '' '' '' ''.
- ADD_FIELDCAT 'NETPR' '单价' '' '' '' '' '' ''.
- ADD_FIELDCAT 'KZWI ' '金额' '' '' '' '' '' ''.
- ADD_FIELDCAT 'PLIFZ' '预定交期' '' '' '' '' '' ''.
- ADD_FIELDCAT 'NAME1' '廠商簡稱' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TELF1' '公司電話' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TELFX' '公司傳真' '' '' '' '' '' ''.
- ADD_FIELDCAT 'NAME2' '聯絡人' '' '' '' '' '' ''.
- ADD_FIELDCAT 'SPERZ' '付款方式' '' '' '' '' '' ''.
- ADD_FIELDCAT 'ADRNR' '联系地址' '' '' '' '' '' ''.
- ADD_FIELDCAT 'YUNSW' '运送方式' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TEXT' '抬头備註' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MAKTX' '材料规格' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MEINS' '单位' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TEXTL' '项目备注' '' '' '' '' '' ''.
- GW_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
- GW_LAYOUT-BOX_FIELDNAME = 'SEL'.
- *&ALV输出
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- EXPORTING
- I_CALLBACK_PROGRAM = SY-REPID
- I_GRID_TITLE = LV_TITLE
- I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'
- I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
- IS_LAYOUT = GW_LAYOUT
- IT_FIELDCAT = GT_FIELDCAT
- I_SAVE = 'A'
- TABLES
- T_OUTTAB = GT_PO
- EXCEPTIONS
- PROGRAM_ERROR = 1
- OTHERS = 2.
- ENDFORM. " FRM_ALV_DISPLAY
- *&---------------------------------------------------------------------*
- *& Form FRM_DOWN_XML
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_DOWN_XML .
- ENDFORM. " FRM_DOWN_XMLS
- *&--------------------------------------------------------------------*
- *& 界面的功能按钮定义
- *&--------------------------------------------------------------------*
- FORM FRM_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
- SET PF-STATUS 'STANDARD' EXCLUDING EXTAB.
- ENDFORM. "SET_PF_STATUS
- *&---------------------------------------------------------------------*
- *& Form FRM_USER_COMMAND
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
- RS_SELFIELD TYPE SLIS_SELFIELD.
- DATA: LT_SORT TYPE SLIS_T_SORTINFO_ALV,
- LS_SORT TYPE LINE OF SLIS_T_SORTINFO_ALV.
- CASE R_UCOMM.
- WHEN '&XML_01'.
- *&形成PO item数据表
- PERFORM FRM_GET_ITEM.
- *&WAY1
- * PERFORM FRM_GET_XML01.
- *&WAY2
- * PERFORM FRM_GET_XML02.
- PERFORM FRM_GET_XML03.
- *&生成XML文件(传服务器)
- * PERFORM DOWNLOAD.
- WHEN '&XML_02'.
- * PERFORM FRM_READ_XML.
- *&下载解析
- PERFORM FRM_UPLOAD.
- WHEN OTHERS.
- ENDCASE.
- ENDFORM. "FRM_USER_COMMAND
- *&---------------------------------------------------------------------*
- *& Form FRM_GET_ITEM
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_GET_ITEM .
- * DATA:BEGIN OF GT_PO OCCURS 0,
- * LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
- * NAME1 LIKE LFA1-NAME1,"廠商簡稱
- * EBELN LIKE EKKO-EBELN,"SAP-PO
- * TELF1 LIKE LFA1-TELF1,"公司電話
- * TELFX LIKE LFA1-TELFX,"公司傳真
- * NAME2 LIKE LFA1-NAME2,"聯絡人
- * WAERS LIKE EKKO-WAERS,"交易幣別
- * SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
- ** TXJCD LIKE EKPO-TXJCD,"交易稅別
- * STCEG LIKE EKKO-STCEG,"交易税别
- * YUNSW TYPE STRING, "运送方式
- * ADRNR LIKE LFA1-ADRNR,"联系地址
- * TEXT(100) TYPE C, "抬头備註
- **&add
- * EBELP LIKE EKPO-EBELP, "项目号
- * MATNR LIKE EKPO-MATNR, "材料编号
- * MAKTX LIKE MAKT-MAKTX, "材料规格
- * MEINS LIKE MARA-MEINS, "单位
- * MENGE LIKE EKPO-MENGE, "訂購數量
- * NETPR LIKE EKPO-NETPR, "单价
- * KZWI LIKE EKPO-KZWI5, "金额
- * PLIFZ LIKE EKPO-PLIFZ, "預定交期
- * TEXTL(100) TYPE C, "项目備註
- * SEL TYPE C,
- * LIN TYPE I,
- * END OF GT_PO.
- *&表头和表体数据分开
- LOOP AT GT_PO.
- ON CHANGE OF GT_PO-EBELN.
- CLEAR IT_PO-ITEM.
- TMP_EBELN = GT_PO-EBELN.
- LOOP AT GT_PO WHERE EBELN = TMP_EBELN.
- WA_LINE-EBELP = GT_PO-EBELP.
- WA_LINE-MATNR = GT_PO-MATNR.
- WA_LINE-MAKTX = GT_PO-MAKTX.
- WA_LINE-MEINS = GT_PO-MEINS.
- WA_LINE-MENGE = GT_PO-MENGE.
- WA_LINE-NETPR = GT_PO-NETPR.
- WA_LINE-KZWI = GT_PO-KZWI.
- WA_LINE-PLIFZ = GT_PO-PLIFZ.
- WA_LINE-TEXTL = GT_PO-TEXTL.
- APPEND WA_LINE1 TO IT_PO-ITEM.
- ENDLOOP.
- SORT IT_PO-ITEM BY EBELP.
- IT_PO-EBELN = GT_PO-EBELN.
- IT_PO-LIFNR = GT_PO-LIFNR."SAP廠商編號
- IT_PO-NAME1 = GT_PO-NAME1."廠商簡稱
- IT_PO-TELF1 = GT_PO-TELF1."公司電話
- IT_PO-TELFX = GT_PO-TELFX."公司傳真
- IT_PO-NAME2 = GT_PO-NAME2."聯絡人
- IT_PO-WAERS = GT_PO-WAERS."交易幣別
- IT_PO-SPERZ = GT_PO-SPERZ."付款方式 (付款冻结)
- * TXJCD LIKE EKPO-TXJCD,"交易稅別
- IT_PO-STCEG = GT_PO-STCEG."交易税别
- IT_PO-YUNSW = GT_PO-YUNSW."运送方式
- IT_PO-ADRNR = GT_PO-ADRNR."联系地址
- IT_PO-TEXT = GT_PO-TEXT. "抬头備註
- APPEND IT_PO.
- ENDON.
- ENDLOOP.
- ENDFORM. " FRM_GET_ITEM
- *&---------------------------------------------------------------------*
- *& Form FRM_GET_XML
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_GET_XML01 .
- *&Way1. CALL METHOD(写节点) L_IXML.
- BREAK RAINY.
- * L_POHEAD TYPE REF TO IF_IXML_ELEMENT,
- DATA:L_FIELD TYPE REF TO IF_IXML_ELEMENT,
- L_TYPE TYPE REF TO IF_IXML_ELEMENT,
- L_DATA TYPE REF TO IF_IXML_ELEMENT.
- * L_DATA TYPE REF TO IF_IXML_ELEMENT,
- * L_DATA TYPE REF TO IF_IXML_ELEMENT,
- * L_DATA TYPE REF TO IF_IXML_ELEMENT.
- CLASS CL_IXML DEFINITION LOAD.
- L_IXML = CL_IXML=>CREATE( ).
- CALL METHOD L_IXML->CREATE_ENCODING
- EXPORTING
- BYTE_ORDER = 0
- CHARACTER_SET = 'UTF-8'
- RECEIVING
- RVAL = L_ENCODING.
- CALL METHOD L_IXML->CREATE_DOCUMENT
- RECEIVING
- RVAL = L_DOC.
- CALL METHOD L_DOC->SET_ENCODING
- EXPORTING
- ENCODING = L_ENCODING.
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = 'cpel'
- PARENT = L_DOC
- RECEIVING
- RVAL = L_ROOT.
- CALL METHOD L_ROOT->SET_ATTRIBUTE
- EXPORTING
- NAME = 'ATTRIBUTE' "ATTRIBUTE
- VALUE = 'sample'"sample
- RECEIVING
- RVAL = L_RVAL.
- CALL METHOD L_DOC->CREATE_COMMENT
- EXPORTING
- COMMENT = '''SAP產出此文件存在至corepress伺服器D:\Job\in\'''
- RECEIVING
- RVAL = L_COMMENT.
- CLEAR L_RVAL.
- * L_RVAL = '111'.
- * L_COMMENT = 'cpml_id'.
- CALL METHOD L_ROOT->APPEND_CHILD
- EXPORTING
- NEW_CHILD = L_COMMENT
- RECEIVING
- RVAL = L_RVAL.
- LOOP AT IT_PO.
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = 'job-datas'
- PARENT = L_ROOT
- RECEIVING
- RVAL = L_PO.
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = 'job-data'
- PARENT = L_PO
- RECEIVING
- RVAL = L_POHEAD.
- * STR = 'field6' .
- * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- * EXPORTING
- * NAME = 'field'
- * PARENT = L_POHEAD
- * VALUE = str
- * RECEIVING
- * RVAL = L_FIELD.
- *
- * STR = 'EBELN' .
- * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- * EXPORTING
- * NAME = 'type'
- * PARENT = L_FIELD
- * VALUE = str
- * RECEIVING
- * RVAL = L_TYPE.
- *
- * STR = 'SAP-PO' .
- * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- * EXPORTING
- * NAME = 'name'
- * PARENT = L_FIELD
- * VALUE = str
- * RECEIVING
- * RVAL = L_TYPE.
- *
- * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- * EXPORTING
- * NAME = 'data'
- * PARENT = L_TYPE
- * RECEIVING
- * RVAL = L_DATA.
- STR = IT_PO-EBELN .
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = 'ponumber'
- PARENT = L_POHEAD
- VALUE = STR
- RECEIVING
- RVAL = L_ELEMENT.
- STR = IT_PO-LIFNR.
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = 'LIFNR'
- PARENT = L_POHEAD
- VALUE = STR
- RECEIVING
- RVAL = L_ELEMENT.
- PERFORM FILL_ITAB2XML TABLES IT_PO-ITEM
- USING 'pobody'
- 'poitem'
- L_PO.
- ENDLOOP.
- CALL METHOD L_IXML->CREATE_STREAM_FACTORY
- RECEIVING
- RVAL = L_FACTORY.
- CALL METHOD L_FACTORY->CREATE_OSTREAM_ITABLE
- EXPORTING
- TABLE = XML_TABLE
- RECEIVING
- RVAL = L_OSTREAM.
- CALL METHOD L_DOC->RENDER
- EXPORTING
- OSTREAM = L_OSTREAM
- RECURSIVE = 'X'.
- CALL METHOD L_OSTREAM->GET_NUM_WRITTEN_RAW
- RECEIVING
- RVAL = XML_SIZE.
- *&Down 本机
- CALL FUNCTION 'GUI_DOWNLOAD'
- EXPORTING
- BIN_FILESIZE = XML_SIZE
- FILENAME = P_FILE
- FILETYPE = 'BIN'
- TABLES
- DATA_TAB = XML_TABLE.
- ENDFORM. " FRM_GET_XML01
- *&---------------------------------------------------------------------*
- *& Form FILL_ITAB2XML
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->P_IT_PO_ITEM text
- * -->P_1768 text
- * -->P_1769 text
- * -->P_L_PO text
- *----------------------------------------------------------------------*
- FORM FILL_ITAB2XML TABLES INTAB
- "插入正确名称 <...>
- USING NODE1NAME TYPE STRING
- NODE2NAME TYPE STRING
- L_PARENT TYPE REF TO IF_IXML_ELEMENT.
- DATA: BEGIN OF HEADTAB OCCURS 0 ,
- LENGTH TYPE I ,
- DECIMALS TYPE I,
- TYPE_KIND TYPE C,
- NAME(30) TYPE C,
- END OF HEADTAB.
- DATA DESCR_REF TYPE REF TO CL_ABAP_STRUCTDESCR.
- FIELD-SYMBOLS: <COMP_WA> TYPE ABAP_COMPDESCR ,
- <F_FIELD> ,
- <F_INTAB> TYPE ANY .
- DATA: N TYPE I ,
- STR TYPE STRING ,
- ITEMNAME TYPE STRING ,
- TEXT1 TYPE C ,
- L_NODE TYPE REF TO IF_IXML_ELEMENT ,
- L_ITEM TYPE REF TO IF_IXML_ELEMENT .
- DESCR_REF ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( INTAB ).
- LOOP AT DESCR_REF->COMPONENTS ASSIGNING <COMP_WA>.
- MOVE-CORRESPONDING <COMP_WA> TO HEADTAB.
- APPEND HEADTAB.
- ENDLOOP.
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = NODE1NAME
- PARENT = L_PARENT
- RECEIVING
- RVAL = L_NODE.
- DESCRIBE TABLE HEADTAB LINES N.
- LOOP AT INTAB ASSIGNING <F_INTAB>.
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = NODE2NAME
- PARENT = L_NODE
- RECEIVING
- RVAL = L_ITEM.
- DO N TIMES.
- ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F_INTAB> TO <F_FIELD>.
- STR = <F_FIELD>.
- READ TABLE HEADTAB INDEX SY-INDEX.
- IF HEADTAB-TYPE_KIND = 'I' OR HEADTAB-TYPE_KIND = 'P'
- OR HEADTAB-TYPE_KIND = 'F'.
- SEARCH STR FOR '-'.
- IF SY-SUBRC = 0 AND SY-FDPOS <> 0.
- SPLIT STR AT '-' INTO STR TEXT1.
- CONDENSE STR.
- CONCATENATE '-' STR INTO STR.
- ELSE.
- CONDENSE STR.
- ENDIF.
- ELSE.
- * SHIFT str LEFT DELETING LEADING '0' .
- ENDIF.
- ITEMNAME = HEADTAB-NAME .
- CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
- EXPORTING
- NAME = ITEMNAME
- PARENT = L_ITEM
- VALUE = STR
- RECEIVING
- RVAL = L_ELEMENT.
- ENDDO.
- ENDLOOP.
- ENDFORM. " FILL_ITAB2XML
- *&---------------------------------------------------------------------*
- *& Form FRM_GET_XML0
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_GET_XML02 .
- *&CALL Function to get XML.
- DATA:M_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT,
- W_STRING TYPE XSTRING,
- W_SIZE TYPE I,
- IT_XML TYPE DCXMLLINES.
- DATA: L_DOM TYPE REF TO IF_IXML_ELEMENT,
- G_IXML TYPE REF TO IF_IXML,
- W_RESULT TYPE I,
- W_LINE TYPE STRING,
- S_XML LIKE LINE OF IT_XML,
- W_RC LIKE SY-SUBRC.
- DATA:XML TYPE DCXMLLINES.
- DATA:RC TYPE SY-SUBRC,
- BEGIN OF XML_TAB OCCURS 0,
- D LIKE LINE OF XML,
- END OF XML_TAB.
- BREAK RAINY.
- *&加载XML
- CLASS CL_IXML DEFINITION LOAD.
- G_IXML = CL_IXML=>CREATE( ).
- CHECK NOT G_IXML IS INITIAL.
- M_DOCUMENT = G_IXML->CREATE_DOCUMENT( ).
- CHECK NOT M_DOCUMENT IS INITIAL.
- WRITE: / 'Converting DATA TO DOM 1:'.
- CALL FUNCTION 'SDIXML_DATA_TO_DOM'
- EXPORTING
- NAME = 'it_po'
- DATAOBJECT = IT_PO[]"GT_PO[]
- IMPORTING
- DATA_AS_DOM = L_DOM
- CHANGING
- DOCUMENT = M_DOCUMENT
- EXCEPTIONS
- ILLEGAL_NAME = 1
- OTHERS = 2.
- IF SY-SUBRC = 0.
- WRITE 'Ok'.
- ELSE.
- WRITE: 'Err =',
- SY-SUBRC.
- ENDIF.
- CHECK NOT L_DOM IS INITIAL.
- W_RC = M_DOCUMENT->APPEND_CHILD( NEW_CHILD = L_DOM ).
- IF W_RC IS INITIAL.
- WRITE 'Ok'.
- ELSE.
- WRITE: 'Err =',
- W_RC.
- ENDIF.
- *&函数生成 XML 格式文件字符串
- CALL FUNCTION 'SDIXML_DOM_TO_XML'
- EXPORTING
- DOCUMENT = M_DOCUMENT
- IMPORTING
- XML_AS_STRING = W_STRING
- SIZE = W_SIZE
- TABLES
- XML_AS_TABLE = IT_XML
- EXCEPTIONS
- NO_DOCUMENT = 1
- OTHERS = 2.
- IF SY-SUBRC = 0.
- WRITE 'Ok'.
- ELSE.
- WRITE: 'Err =',
- SY-SUBRC.
- ENDIF.
- *&生成供本地下载内表
- LOOP AT IT_XML INTO XML_TAB-D.
- APPEND XML_TAB.
- ENDLOOP.
- *&G1.将xml数据导出到本地
- CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
- EXPORTING
- BIN_FILESIZE = W_SIZE
- FILENAME = P_FILE "'C:\Users\ThinkPad\Desktop\生成文件\get_xml_02.xml' "P_FILE
- FILETYPE = 'BIN'
- CHANGING
- DATA_TAB = IT_XML"XML_TABLE
- EXCEPTIONS
- OTHERS = 24.
- IF SY-SUBRC <> 0.
- MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
- WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
- ENDIF.
- BREAK RAINY.
- *&G2.上传服务器
- *CONCATENATE P_SFILE S_EBELN-LOW 'P0 list.xml' INTO S_SFILE.
- CONCATENATE '/tmp/job/in/' SY-DATUM SY-UZEIT 'P0 list.xml' INTO S_SFILE.
- OPEN DATASET S_SFILE FOR OUTPUT IN BINARY MODE.
- IF SY-SUBRC EQ 0.
- TRANSFER W_STRING TO S_SFILE LENGTH W_SIZE.
- CLOSE DATASET S_SFILE.
- IF SY-SUBRC EQ 0.
- MESSAGE S001 WITH '文件处理成功!'.
- ENDIF.
- ELSE.
- MESSAGE 'OPEN ERROR!' TYPE 'E'.
- STOP.
- ENDIF.
- ENDFORM. " FRM_GET_XML02
- *&---------------------------------------------------------------------*
- *& Form FRM_GET_XML03
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_GET_XML03 .
- *&CALL TRANSFORMATION -》XML
- BREAK RAINY.
- LOOP AT GT_PO.
- WA_HEAD-ID = 'ab2c7f034c814175b1975cc099a2e583'.
- WA_HEAD-APP = 'admin'.
- WA_HEAD-START = '0'.
- WA_HEAD-FINISH = '72'.
- WA_HEAD-DATE = '1'.
- WA_HEAD-LIFN1 = 'field1'.
- WA_HEAD-LIFN2 = 'LIFNR'.
- WA_HEAD-LIFN3 = 'SAP廠商編號'.
- WA_HEAD-NAM1 = 'field3'.
- WA_HEAD-NAM2 = 'NAME1'.
- WA_HEAD-NAM3 = '廠商簡稱'.
- WA_HEAD-EBEL1 = 'field6'.
- WA_HEAD-EBEL2 = 'EBELN'.
- WA_HEAD-EBEL3 = 'SAP-PO'.
- WA_HEAD-TEL1 = 'field5'.
- WA_HEAD-TEL2 = 'TELF1'.
- WA_HEAD-TEL3 = '公司電話'.
- WA_HEAD-TEF1 = 'field7'.
- WA_HEAD-TEF2 = 'TELFX'.
- WA_HEAD-TEF3 = '公司傳真'.
- WA_HEAD-NAM6 = 'field8'.
- WA_HEAD-NAM7 = 'NAME2'.
- WA_HEAD-NAM8 = '聯絡人'.
- WA_HEAD-WAER1 = 'field9'.
- WA_HEAD-WAER2 = 'WAERS'.
- WA_HEAD-WAER3 = '交易幣別'.
- WA_HEAD-SPER1 = 'field10'.
- WA_HEAD-SPER2 = 'SPER3'.
- WA_HEAD-SPER3 = '付款方式'.
- WA_HEAD-STCE1 = 'field11'.
- WA_HEAD-STCE2 = 'STCEG'.
- WA_HEAD-STCE3 = '交易稅別'.
- WA_HEAD-YUNS1 = 'field12'.
- WA_HEAD-YUNS2 = 'YUNSW'.
- WA_HEAD-YUNS3 = '運送方式'.
- WA_HEAD-ADRN1 = 'field13'.
- WA_HEAD-ADRN2 = 'ADRNR'.
- WA_HEAD-ADRN3 = '聯繫地址'.
- WA_HEAD-TEXT1 = 'field14'.
- WA_HEAD-TEXT2 = 'TEXT'.
- WA_HEAD-TEXT3 = '備註'.
- WA_HEAD-FJIAN1 = 'field16'.
- WA_HEAD-FJIAN2 = 'string'.
- WA_HEAD-FJIAN3 = '附件'.
- WA_HEAD-FJIAN4 = 'www.sap.com.'.
- MOVE-CORRESPONDING GT_PO TO WA_HEAD.
- COLLECT WA_HEAD INTO ST_HEAD.
- WA_LINE-EBEL1 = 'field99'.
- WA_LINE-EBEL2 = 'EBELP'.
- WA_LINE-EBEL3 = '项目'.
- WA_LINE-MATN1 = 'field1'.
- WA_LINE-MATN2 = 'MATNR'.
- WA_LINE-MATN3 = '材料編碼'.
- WA_LINE-MAKT1 = 'field2'.
- WA_LINE-MAKT2 = 'MAKTX'.
- WA_LINE-MAKT3 = '材料規格'.
- WA_LINE-MEIN1 = 'field3'.
- WA_LINE-MEIN2 = 'MEINS'.
- WA_LINE-MEIN3 = '單位'.
- WA_LINE-MENG1 = 'field4'.
- WA_LINE-MENG2 = 'MENGE'.
- WA_LINE-MENG3 = '訂購數量'.
- WA_LINE-NETP1 = 'field5'.
- WA_LINE-NETP2 = 'NETPR'.
- WA_LINE-NETP3 = '单价'.
- WA_LINE-KZWI1 = 'field6'.
- WA_LINE-KZWI2 = 'KZWI'.
- WA_LINE-KZWI3 = '金额'.
- WA_LINE-PLIF1 = 'field7'.
- WA_LINE-PLIF2 = 'PLIFZ'.
- WA_LINE-PLIF3 = '預定交期'.
- WA_LINE-TET1 ='field8'.
- WA_LINE-TET2 ='TEXTL'.
- WA_LINE-TET3 ='项目備註'.
- MOVE-CORRESPONDING GT_PO TO WA_LINE.
- APPEND WA_LINE TO ST_LINE.
- ENDLOOP.
- BREAK RAINY.
- *&call transformation to xml
- CALL TRANSFORMATION ZMM3
- SOURCE CPEL = ST_HEAD "ITAB_MATNR
- ET-DATA-LIST = ST_LINE"ITAB_CLASS
- RESULT XML W_XML.
- *&xml string to it_XML
- CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
- EXPORTING
- TEXT = W_XML
- IMPORTING
- LENGTH = W_LEN
- TABLES
- FTEXT_TAB = IT_XML.
- *&1.DOWNloan local.
- CALL FUNCTION 'GUI_DOWNLOAD'
- EXPORTING
- FILENAME = P_FILE
- FILETYPE = 'BIN'
- IMPORTING
- FILELENGTH = W_LEN
- TABLES
- DATA_TAB = IT_XML.
- *&xml tab->string
- * CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
- * EXPORTING
- * INPUT_LENGTH = W_LEN
- * IMPORTING
- * BUFFER = XML_STRING
- * TABLES
- * BINARY_TAB = IT_XML.
- *&2.上传服务器
- *CONCATENATE P_SFILE S_EBELN-LOW 'P0 list.xml' INTO S_SFILE.
- CONCATENATE P_SFILE SY-DATUM '001.xml' INTO S_SFILE.
- OPEN DATASET S_SFILE FOR OUTPUT IN BINARY MODE.
- IF SY-SUBRC EQ 0.
- TRANSFER W_XML TO S_SFILE. " LENGTH W_SIZE."W_STRING
- CLOSE DATASET S_SFILE.
- IF SY-SUBRC EQ 0.
- MESSAGE S001 WITH '文件处理成功!'.
- ENDIF.
- ELSE.
- MESSAGE 'OPEN ERROR!' TYPE 'E'.
- STOP.
- ENDIF.
- ENDFORM. " FRM_GET_XML03
- *&---------------------------------------------------------------------*
- *& Form FRM_WRITE_OUT
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_WRITE_OUT .
- DATA: L_NN TYPE I.
- DEFINE ADD_FIELDCAT.
- CLEAR WA_FIELDCAT.
- WA_FIELDCAT-FIELDNAME = &1.
- WA_FIELDCAT-SELTEXT_L = &2.
- WA_FIELDCAT-KEY = &3.
- WA_FIELDCAT-COL_POS = L_NN + 1.
- WA_FIELDCAT-JUST = &4.
- WA_FIELDCAT-OUTPUTLEN = &5.
- WA_FIELDCAT-FIX_COLUMN = &6.
- WA_FIELDCAT-NO_ZERO = &7.
- WA_FIELDCAT-EDIT = &8.
- APPEND WA_FIELDCAT TO GT_FIELDCAT.
- END-OF-DEFINITION.
- CLEAR GT_FIELDCAT.
- REFRESH GT_FIELDCAT.
- ADD_FIELDCAT 'LIN' '序号' '' '' '' '' '' ''.
- ADD_FIELDCAT 'EBELN' '采购订单' '' '' '' '' '' ''.
- ADD_FIELDCAT 'LIFNR' '廠商編號' '' '' '' '' '' ''.
- ADD_FIELDCAT 'WAERS' '交易幣別' '' '' '' '' '' ''.
- ADD_FIELDCAT 'STCEG' '交易税别' '' '' '' '' '' ''.
- ADD_FIELDCAT 'EBELP' '项目号' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MATNR' '材料编号' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MENGE' '訂購數量' '' '' '' '' '' ''.
- ADD_FIELDCAT 'NETPR' '单价' '' '' '' '' '' ''.
- ADD_FIELDCAT 'KZWI ' '金额' '' '' '' '' '' ''.
- ADD_FIELDCAT 'PLIFZ' '预定交期' '' '' '' '' '' ''.
- ADD_FIELDCAT 'NAME1' '廠商簡稱' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TELF1' '公司電話' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TELFX' '公司傳真' '' '' '' '' '' ''.
- ADD_FIELDCAT 'NAME2' '聯絡人' '' '' '' '' '' ''.
- ADD_FIELDCAT 'SPERZ' '付款方式' '' '' '' '' '' ''.
- ADD_FIELDCAT 'ADRNR' '联系地址' '' '' '' '' '' ''.
- ADD_FIELDCAT 'YUNSW' '运送方式' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TEXT' '抬头備註' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MAKTX' '材料规格' '' '' '' '' '' ''.
- ADD_FIELDCAT 'MEINS' '单位' '' '' '' '' '' ''.
- ADD_FIELDCAT 'TEXTL' '项目备注' '' '' '' '' '' ''.
- GW_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
- GW_LAYOUT-BOX_FIELDNAME = 'SEL'.
- *&ALV输出
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- EXPORTING
- I_CALLBACK_PROGRAM = SY-REPID
- I_GRID_TITLE = LV_TITLE
- * I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'
- * I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
- IS_LAYOUT = GW_LAYOUT
- IT_FIELDCAT = GT_FIELDCAT
- I_SAVE = 'A'
- TABLES
- T_OUTTAB = IT_PO
- EXCEPTIONS
- PROGRAM_ERROR = 1
- OTHERS = 2.
- ENDFORM. " FRM_WRITE_OUT
- *&---------------------------------------------------------------------*
- *& Form FRM_ALV_XMLTAB
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_ALV_XMLTAB .
- DATA:GT_XM TYPE SLIS_T_FIELDCAT_ALV,
- WA_XM TYPE SLIS_FIELDCAT_ALV,
- XM_LAYOUT TYPE SLIS_LAYOUT_ALV.
- DATA: L_NN TYPE I.
- DEFINE ADD_FIELDCAT.
- CLEAR WA_FIELDCAT.
- WA_FIELDCAT-FIELDNAME = &1.
- WA_FIELDCAT-SELTEXT_L = &2.
- WA_FIELDCAT-KEY = &3.
- WA_FIELDCAT-COL_POS = L_NN + 1.
- WA_FIELDCAT-JUST = &4.
- WA_FIELDCAT-OUTPUTLEN = &5.
- WA_FIELDCAT-FIX_COLUMN = &6.
- WA_FIELDCAT-NO_ZERO = &7.
- WA_FIELDCAT-EDIT = &8.
- APPEND WA_XM TO GT_XM.
- END-OF-DEFINITION.
- CLEAR GT_XM.
- REFRESH GT_XM.
- ADD_FIELDCAT 'CNAME' '栏位' '' '' '' '' '' ''.
- ADD_FIELDCAT 'CVALUE' '值' '' '' '' '' '' ''.
- XM_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- EXPORTING
- I_CALLBACK_PROGRAM = SY-REPID
- I_STRUCTURE_NAME = 'SMUM_XMLTB'
- * I_GRID_TITLE = LV_TITLE
- ** I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'
- ** I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
- IS_LAYOUT = XM_LAYOUT
- * IT_FIELDCAT = GT_XM
- * I_SAVE = 'A'
- TABLES
- T_OUTTAB = RESULT_XML[]
- EXCEPTIONS
- PROGRAM_ERROR = 1
- OTHERS = 2.
- ENDFORM. " FRM_ALV_XMLTAB
- *&---------------------------------------------------------------------*
- *& Form FRM_DYNAMIC_TABLE
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_DYNAMIC_TABLE .
- FIELD-SYMBOLS:<DYN_TABLE> TYPE STANDARD TABLE,
- <DYN_WA>,
- <DYN_FIELD>.
- DATA: DY_TABLE TYPE REF TO DATA,
- DY_LINE TYPE REF TO DATA,
- IT_STRUCTURE TYPE LVC_T_FCAT,
- WA_STR TYPE LVC_S_FCAT.
- DATA:WA_NEW_LINE TYPE REF TO DATA.
- DATA:LS_LAYOUT TYPE LVC_S_LAYO.
- DATA:L_GET TYPE I.
- *CNAME
- *CVALUE
- * FIELDNAME
- * CFIELDNAME
- LOOP AT RESULT_XML INTO WA_XML.
- CLEAR L_GET.
- WA_STR-COL_POS = SY-TABIX.
- L_GET = WA_STR-COL_POS MOD 2.
- IF L_GET NE 0.
- WA_STR-TABNAME = 'X'.
- ENDIF.
- IF WA_XML-CNAME = 'type'.
- WA_STR-FIELDNAME = WA_XML-CVALUE.
- ENDIF.
- IF WA_XML-CNAME = 'data'.
- WA_STR-CFIELDNAME = WA_XML-CVALUE.
- ENDIF.
- APPEND WA_STR TO IT_STRUCTURE.
- CLEAR WA_STR-TABNAME.
- ENDLOOP.
- DELETE IT_STRUCTURE WHERE TABNAME EQ 'X'.
- *&转化动态内表
- "表类型指针 <dyn_table> 指向 数据对象的内容.
- CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
- EXPORTING
- IT_FIELDCATALOG = IT_STRUCTURE
- IMPORTING
- EP_TABLE = DY_TABLE.
- ASSIGN DY_TABLE->* TO <DYN_TABLE>.
- CREATE DATA WA_NEW_LINE LIKE LINE OF <DYN_TABLE>.
- *建立一个与动态内表结构相同的数据对象,且数据对象为是一个结构
- "用<dyn_wa>指针指向该结构
- ASSIGN WA_NEW_LINE->* TO <DYN_WA>.
- BREAK RAINY.
- LOOP AT IT_STRUCTURE INTO WA_STR.
- * J = J + 1.
- ASSIGN COMPONENT WA_STR-FIELDNAME OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
- IF SY-SUBRC EQ 0.
- <DYN_FIELD> = WA_STR-CFIELDNAME.
- ENDIF.
- * " 用指针<DYN_FIELD>指向工作区<DYN_WA>中的一个字段,字段名为WA_STRUCTURE-FIELDNAME.
- * CONCATENATE I J INTO <DYN_FIELD>." 给指针指向的字段赋值
- APPEND <DYN_WA> TO <DYN_TABLE>.
- ENDLOOP.
- * 栏位信息
- * PERFORM frm_build_fieldcat.
- * 格式信息
- LS_LAYOUT-ZEBRA = 'X'.
- LS_LAYOUT-CWIDTH_OPT = 'X'.
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
- EXPORTING
- I_CALLBACK_PROGRAM = SY-REPID
- IS_LAYOUT_LVC = LS_LAYOUT
- IT_FIELDCAT_LVC = GT_FIELDCAT
- I_SAVE = 'A'
- TABLES
- T_OUTTAB = <DYN_TABLE>
- EXCEPTIONS
- PROGRAM_ERROR = 1
- OTHERS = 2.
- ENDFORM. " FRM_DYNAMIC_TABLE
- *&---------------------------------------------------------------------*
- *& Form FRM_UPLOAD
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM FRM_UPLOAD .
- DATA XMLBIN_TAB TYPE TABLE OF X255.
- DATA: XML_XSTR TYPE XSTRING,
- XML_STR TYPE STRING.
- DATA: LEN TYPE I,
- LENTH TYPE I.
- *&上传文件:
- *&=========================================
- *&文件上传
- CALL FUNCTION 'GUI_UPLOAD'
- EXPORTING
- FILENAME = P_FILE
- FILETYPE = 'BIN'
- IMPORTING
- FILELENGTH = LEN
- TABLES
- DATA_TAB = XMLBIN_TAB.
- *&XML格式转化string
- CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
- EXPORTING
- INPUT_LENGTH = LEN
- IMPORTING
- BUFFER = XML_XSTR
- TABLES
- BINARY_TAB = XMLBIN_TAB.
- *&得到结果内表
- CALL FUNCTION 'SMUM_XML_PARSE'
- EXPORTING
- XML_INPUT = XML_XSTR
- TABLES
- XML_TABLE = RESULT_XML
- RETURN = RETURN.
- *&XConvert XSTRING to STRING
- CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
- EXPORTING:
- BUFFER = XML_XSTR
- IMPORTING
- OUTPUT_LENGTH = LEN
- TABLES
- BINARY_TAB = XMLBIN_TAB.
- CALL FUNCTION 'SCMS_BINARY_TO_STRING'
- EXPORTING
- INPUT_LENGTH = LEN
- IMPORTING
- TEXT_BUFFER = XML_STR
- OUTPUT_LENGTH = LENTH
- TABLES
- BINARY_TAB = XMLBIN_TAB.
- DELETE RESULT_XML WHERE TYPE NE 'V'.
- DELETE RESULT_XML WHERE CNAME NE 'type' AND CNAME NE 'data'.
- DELETE RESULT_XML WHERE CVALUE EQ ''.
- BREAK RAINY.
- *&==========================================
- *将 XML 文件转化成SAP内表数据
- CALL TRANSFORMATION ZMM3_R
- SOURCE XML XML_STR"XML_XSTR
- RESULT CPEL = ST_HEAD
- ET-DATA-LIST = ST_LINE.
- *&dynamic table处理得数据表
- ENDFORM. " FRM_UPLOAD
PO 审批及生成xml文件的更多相关文章
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- Java生成XML文件
我们在数据库中的数据可以将其提取出来生成XML文件,方便传输.例如数据库中有Admin这张表: 我们写一个java类表示admin数据: package xmlDom.vo; import java. ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- C# 生成xml文件
本篇文章旨在.net环境下生成xml文件,以控制台应用程序为例进行说明. 1.在vs中新建控制台应用程序CreateXml 2.CreateXmlFile:主要生成xml的函数 public void ...
- 视频播放实时记录日志并生成XML文件
需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- LINQ to XML 从逗号分隔值 (CSV) 文件生成 XML 文件
参考:http://msdn.microsoft.com/zh-cn/library/bb387090.aspx 本示例演示如何使用 语言集成查询 (LINQ) 和 LINQ to XML 从逗号分隔 ...
- 生成XML文件,通过实体生成XML文件
实体 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xm ...
- PHP中的生成XML文件的4种方法(转)
<?xml version="1.0" encoding="utf-8"?> <article> <item> <ti ...
随机推荐
- perfect-scrollbar 轻量级滚动插件
它是一个轻量级的jquery插件. 需要引入的文件: css: #box { position: absolute; overflow: hidden; height: 200px; width: 2 ...
- babel转码神器babel-preset-env
简介 现如今不同的浏览器和平台chrome, opera, edge, firefox, safari, ie, ios, android, node, electron 不同的模块 "am ...
- POJ 3171 区间覆盖最小值&&线段树优化dp
Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4715 Accepted: 1590 D ...
- 洛谷——P2149 [SDOI2009]Elaxia的路线
P2149 [SDOI2009]Elaxia的路线 题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每 ...
- BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- 类加载器在加载类 的时候就已经对类的static代码块和static变量进行了初始化
类装载器ClassLoader 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导 ...
- Windows10下Apache2.4配置Django
开发环境 Windows 10 x64 Apache 2.4 x64 Python 2.7.11 x64 Django 1.9.6+ 下载和安装mod_wsgi 到 http://download.c ...
- 【搞机】9.7英寸iPad Pro 上手开箱(图文)
前言 话说,去年就一直想买个iPad ,可是苦于iPad air 2 出的太早,立即就要更新了,就没有买. 今年出了9.7英寸的iPad Pro .看到添加了这么多新特性.就按耐不住心情预订了~ 还刻 ...
- Android 音频的播放之二MediaPlayer
MediaPlayer类可用于控制音频/视频文件或流的播放.关于怎样使用这个类的方法还能够阅读VideoView类的文档. 1.状态图 对播放音频/视频文件和流的控制是通过一个状态机来管理的. 下图显 ...
- Java如何Attachment源码
该文章教你如何在Eclipse中Attachment源码,学到了不少东西. http://jingyan.baidu.com/article/1709ad80b107f64635c4f040.html ...