1. ***********************************************************************
  2. * Report : YTST_RAINY_MM2 *
  3. * Application : MM   *
  4. * Subject : PO list *
  5. * Requested by : Rainy *
  6. * Execution : Online when required *
  7. * Ref no: : *
  8. * Author : *
  9. * Req Date : 20140722 *
  10. ***********************************************************************
  11. *     采购单审批信息查询 *
  12. ***********************************************************************
  13. *     设计主要逻辑与原理说明 *
  14. ***********************************************************************
  15. *1.取数:根据用户的输入单据编号、交货单类型、计划发货日期、实际发货日期*
  16. * *
  17. ***********************************************************************
  18. * MODIFICATIONS *
  19. * ------------------------------------------------------------------- *
  20. * REL DATE NAME (COMPANY) DESCRIPTION TASK-NO *
  21. * --- ---- ---- --------- ----------- ------- *
  22. ***********************************************************************
  23. REPORT YMM3 NO STANDARD PAGE HEADING MESSAGE-ID Z001.
  24.  
  25. *----------------------------------------------------------------------
  26. * TYPE-POOLS
  27. *----------------------------------------------------------------------
  28. TYPE-POOLS: SLIS. "ALV
  29.  
  30. TABLES:EKKO,
  31. EKPO,
  32. LFA1,
  33. MAKT.
  34.  
  35. *&------------------------------------------------------------------*
  36. *& Internal Table Definition
  37. *&------------------------------------------------------------------*
  38. *&3000000004
  39. DATA:BEGIN OF GT_ALL OCCURS 0,
  40. EBELN LIKE EKKO-EBELN,"SAP-PO
  41. LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
  42. WAERS LIKE EKKO-WAERS,"交易幣別
  43. * TXJCD LIKE EKKO-TXJCD,"交易稅別
  44. STCEG LIKE EKKO-STCEG,"交易税别
  45. EBELP LIKE EKPO-EBELP, "项目号
  46. MATNR LIKE EKPO-MATNR, "材料编号
  47. MENGE LIKE EKPO-MENGE, "訂購數量
  48. NETPR LIKE EKPO-NETPR, "单价
  49. KZWI LIKE EKPO-KZWI5, "金额
  50. PLIFZ LIKE EKPO-PLIFZ, "預定交期
  51.  
  52. NAME1 LIKE LFA1-NAME1,"廠商簡稱
  53. TELF1 LIKE LFA1-TELF1,"公司電話
  54. TELFX LIKE LFA1-TELFX,"公司傳真
  55. NAME2 LIKE LFA1-NAME2,"聯絡人
  56. SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
  57. ADRNR LIKE LFA1-ADRNR,"联系地址
  58. YUNSW TYPE STRING, "运送方式
  59. TEXT(100) TYPE C, "抬头備註
  60.  
  61. MAKTX LIKE MAKT-MAKTX, "材料规格
  62. MEINS LIKE MARA-MEINS, "单位
  63.  
  64. TEXTL(100) TYPE C, "项目備註
  65. SEL TYPE C,
  66. LIN TYPE I,
  67.  
  68. END OF GT_ALL.
  69.  
  70. *PO list
  71. DATA:BEGIN OF GT_PO OCCURS 0,
  72. LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
  73. NAME1 LIKE LFA1-NAME1,"廠商簡稱
  74. EBELN LIKE EKKO-EBELN,"SAP-PO
  75. TELF1 LIKE LFA1-TELF1,"公司電話
  76. TELFX LIKE LFA1-TELFX,"公司傳真
  77. NAME2 LIKE LFA1-NAME2,"聯絡人
  78. WAERS LIKE EKKO-WAERS,"交易幣別
  79. SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
  80. * TXJCD LIKE EKPO-TXJCD,"交易稅別
  81. STCEG LIKE EKKO-STCEG,"交易税别
  82. YUNSW TYPE STRING, "运送方式
  83. ADRNR LIKE LFA1-ADRNR,"联系地址
  84. TEXT(100) TYPE C, "抬头備註
  85. *&add
  86. EBELP LIKE EKPO-EBELP, "项目号
  87. MATNR LIKE EKPO-MATNR, "材料编号
  88. MAKTX LIKE MAKT-MAKTX, "材料规格
  89. MEINS LIKE MARA-MEINS, "单位
  90. MENGE LIKE EKPO-MENGE, "訂購數量
  91. NETPR LIKE EKPO-NETPR, "单价
  92. KZWI LIKE EKPO-KZWI5, "金额
  93. PLIFZ LIKE EKPO-PLIFZ, "預定交期
  94. TEXTL(100) TYPE C, "项目備註
  95. SEL TYPE C,
  96. LIN TYPE I,
  97. END OF GT_PO.
  98.  
  99. TYPES:BEGIN OF TY_ITEM,
  100. EBELP LIKE EKPO-EBELP, "项目号
  101. MATNR LIKE EKPO-MATNR, "材料编号
  102. MAKTX LIKE MAKT-MAKTX, "材料规格
  103. MEINS LIKE MARA-MEINS, "单位
  104. MENGE LIKE EKPO-MENGE, "訂購數量
  105. NETPR LIKE EKPO-NETPR, "单价
  106. KZWI LIKE EKPO-KZWI5, "金额
  107. PLIFZ LIKE EKPO-PLIFZ, "預定交期
  108. TEXTL(100) TYPE C, "项目備註S
  109. END OF TY_ITEM.
  110. TYPES:IT_ITEM TYPE STANDARD TABLE OF TY_ITEM WITH DEFAULT KEY.
  111. DATA: IT_LINE TYPE STANDARD TABLE OF TY_ITEM WITH HEADER LINE,
  112. WA_LINE1 LIKE IT_LINE.
  113.  
  114. TYPES:BEGIN OF TY_PO,
  115. LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
  116. NAME1 LIKE LFA1-NAME1,"廠商簡稱
  117. EBELN LIKE EKKO-EBELN,"SAP-PO
  118. TELF1 LIKE LFA1-TELF1,"公司電話
  119. TELFX LIKE LFA1-TELFX,"公司傳真
  120. NAME2 LIKE LFA1-NAME2,"聯絡人
  121. WAERS LIKE EKKO-WAERS,"交易幣別
  122. SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
  123. * TXJCD LIKE EKPO-TXJCD,"交易稅別
  124. STCEG LIKE EKKO-STCEG,"交易税别
  125. YUNSW TYPE STRING, "运送方式
  126. ADRNR LIKE LFA1-ADRNR,"联系地址
  127. TEXT(100) TYPE C, "抬头備註
  128. ITEM TYPE IT_ITEM,
  129. END OF TY_PO.
  130. DATA:IT_PO TYPE STANDARD TABLE OF TY_PO WITH HEADER LINE,
  131. WA_PO LIKE IT_PO.
  132. DATA:TMP_EBELN LIKE EKKO-EBELN.
  133.  
  134. TYPES:BEGIN OF TY_HEAD,
  135. LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
  136. NAME1 LIKE LFA1-NAME1,"廠商簡稱
  137. EBELN LIKE EKKO-EBELN,"SAP-PO
  138. TELF1 LIKE LFA1-TELF1,"公司電話
  139. TELFX LIKE LFA1-TELFX,"公司傳真
  140. NAME2 LIKE LFA1-NAME2,"聯絡人
  141. WAERS LIKE EKKO-WAERS,"交易幣別
  142. SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
  143. * TXJCD LIKE EKPO-TXJCD,"交易稅別
  144. STCEG LIKE EKKO-STCEG,"交易税别
  145. YUNSW TYPE STRING, "运送方式
  146. ADRNR LIKE LFA1-ADRNR,"联系地址
  147. TEXT(100) TYPE C, "抬头備註
  148. END OF TY_HEAD.
  149. DATA:IT_HEAD TYPE STANDARD TABLE OF TY_HEAD WITH HEADER LINE.
  150.  
  151. DATA:BEGIN OF TT_HEAD,
  152.  
  153. LIFN1 TYPE STRING VALUE 'field1',
  154. LIFN2 TYPE STRING VALUE 'LIFNR',
  155. LIFN3 TYPE STRING VALUE 'SAP廠商編號',
  156. LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
  157. NAM1 TYPE STRING VALUE 'field3',
  158. NAM2 TYPE STRING VALUE 'NAME1',
  159. NAM3 TYPE STRING VALUE '廠商簡稱',
  160. NAME1 LIKE LFA1-NAME1,"廠商簡稱
  161. EBEL1 TYPE STRING VALUE 'field6',
  162. EBEL2 TYPE STRING VALUE 'EBELN',
  163. EBEL3 TYPE STRING VALUE 'SAP-PO',
  164. EBELN LIKE EKKO-EBELN,"SAP-PO
  165. TEL1 TYPE STRING VALUE 'field5',
  166. TEL2 TYPE STRING VALUE 'TELF1',
  167. TEL3 TYPE STRING VALUE '公司電話',
  168. TELF1 LIKE LFA1-TELF1,"公司電話
  169. TEF1 TYPE STRING VALUE 'field7',
  170. TEF2 TYPE STRING VALUE 'TELFX',
  171. TEF3 TYPE STRING VALUE '公司傳真',
  172. TELFX LIKE LFA1-TELFX,"公司傳真
  173. NAM6 TYPE STRING VALUE 'field8',
  174. NAM7 TYPE STRING VALUE 'NAME2',
  175. NAM8 TYPE STRING VALUE '聯絡人',
  176. NAME2 LIKE LFA1-NAME2,"聯絡人
  177.  
  178. WAER1 TYPE STRING VALUE 'field9',
  179. WAER2 TYPE STRING VALUE 'WAERS',
  180. WAER3 TYPE STRING VALUE '交易幣別',
  181. WAERS LIKE EKKO-WAERS,"交易幣別
  182.  
  183. SPER1 TYPE STRING VALUE 'field10',
  184. SPER2 TYPE STRING VALUE 'SPER3',
  185. SPER3 TYPE STRING VALUE '付款方式',
  186. SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
  187. * TXJCD LIKE EKPO-TXJCD,"交易稅別
  188. STCE1 TYPE STRING VALUE 'field11',
  189. STCE2 TYPE STRING VALUE 'STCEG',
  190. STCE3 TYPE STRING VALUE '交易稅別',
  191. STCEG LIKE EKKO-STCEG,"交易税别
  192.  
  193. YUNS1 TYPE STRING VALUE 'field12',
  194. YUNS2 TYPE STRING VALUE 'YUNSW',
  195. YUNS3 TYPE STRING VALUE '運送方式',
  196. YUNSW TYPE STRING, "运送方式
  197.  
  198. ADRN1 TYPE STRING VALUE 'field13',
  199. ADRN2 TYPE STRING VALUE 'ADRNR',
  200. ADRN3 TYPE STRING VALUE '聯繫地址',
  201. ADRNR LIKE LFA1-ADRNR,"联系地址
  202.  
  203. TEXT1 TYPE STRING VALUE 'field14',
  204. TEXT2 TYPE STRING VALUE 'TEXT',
  205. TEXT3 TYPE STRING VALUE '備註',
  206. TEXT(100) TYPE C, "抬头備註
  207.  
  208. *&附件
  209. FJIAN1 TYPE STRING,
  210. FJIAN2 TYPE STRING,
  211. FJIAN3 TYPE STRING,
  212. FJIAN4 TYPE STRING,
  213. *&BPM固定格式抬头部分信息
  214. ID TYPE STRING,
  215. APP TYPE STRING,
  216. START TYPE STRING,
  217. FINISH TYPE STRING,
  218. DATE TYPE STRING,
  219.  
  220. END OF TT_HEAD.
  221. DATA:ST_HEAD LIKE TABLE OF TT_HEAD,
  222. WA_HEAD LIKE LINE OF ST_HEAD.
  223.  
  224. DATA:BEGIN OF TT_LINE,
  225.  
  226. EBEL1 TYPE STRING VALUE 'field99',
  227. EBEL2 TYPE STRING VALUE 'EBELP',
  228. EBEL3 TYPE STRING VALUE '项目',
  229. EBELP LIKE EKPO-EBELP, "项目号
  230.  
  231. MATN1 TYPE STRING VALUE 'field1',
  232. MATN2 TYPE STRING VALUE 'MATNR',
  233. MATN3 TYPE STRING VALUE '材料編碼',
  234. MATNR LIKE EKPO-MATNR, "材料编号
  235.  
  236. MAKT1 TYPE STRING VALUE 'field2',
  237. MAKT2 TYPE STRING VALUE 'MAKTX',
  238. MAKT3 TYPE STRING VALUE '材料規格',
  239. MAKTX LIKE MAKT-MAKTX, "材料规格
  240.  
  241. MEIN1 TYPE STRING VALUE 'field3',
  242. MEIN2 TYPE STRING VALUE 'MEINS',
  243. MEIN3 TYPE STRING VALUE '單位',
  244. MEINS LIKE MARA-MEINS, "单位
  245.  
  246. MENG1 TYPE STRING VALUE 'field4',
  247. MENG2 TYPE STRING VALUE 'MENGE',
  248. MENG3 TYPE STRING VALUE '訂購數量',
  249. MENGE LIKE EKPO-MENGE, "訂購數量
  250.  
  251. NETP1 TYPE STRING VALUE 'field5',
  252. NETP2 TYPE STRING VALUE 'NETPR',
  253. NETP3 TYPE STRING VALUE '单价',
  254. NETPR LIKE EKPO-NETPR, "单价
  255.  
  256. KZWI1 TYPE STRING VALUE 'field6',
  257. KZWI2 TYPE STRING VALUE 'KZWI',
  258. KZWI3 TYPE STRING VALUE '金额',
  259. KZWI LIKE EKPO-KZWI5, "金额
  260.  
  261. PLIF1 TYPE STRING VALUE 'field7',
  262. PLIF2 TYPE STRING VALUE 'PLIFZ',
  263. PLIF3 TYPE STRING VALUE '預定交期',
  264. PLIFZ LIKE EKPO-PLIFZ, "預定交期
  265.  
  266. TET1 TYPE STRING VALUE 'field8',
  267. TET2 TYPE STRING VALUE 'TEXTL',
  268. TET3 TYPE STRING VALUE '项目備註',
  269. TEXTL(100) TYPE C, "项目備註S
  270.  
  271. END OF TT_LINE.
  272. DATA:ST_LINE LIKE TABLE OF TT_LINE,
  273. WA_LINE LIKE LINE OF ST_LINE.
  274.  
  275. *&item data
  276. DATA:BEGIN OF GT_ITEM OCCURS 0,
  277. EBELP LIKE EKPO-EBELP, "项目号
  278. MATNR LIKE EKPO-MATNR, "材料编号
  279. MAKTX LIKE MAKT-MAKTX, "材料规格
  280. MEINS LIKE MARA-MEINS, "单位
  281. MENGE LIKE EKPO-MENGE, "訂購數量
  282. NETPR LIKE EKPO-NETPR, "单价
  283. KZWI LIKE EKPO-KZWI5, "金额
  284. PLIFZ LIKE EKPO-PLIFZ, "預定交期
  285. TEXTL(100) TYPE C, "项目備註
  286. END OF GT_ITEM.
  287.  
  288. *&for XML
  289. TYPES: BEGIN OF XML_LINE,
  290. DATA(256) TYPE X,
  291. END OF XML_LINE.
  292. DATA: XML_TABLE TYPE TABLE OF XML_LINE,
  293. IN_TABLE TYPE TABLE OF XML_LINE,
  294. WA_TABLE LIKE LINE OF IN_TABLE,
  295. XML_SIZE TYPE I.
  296. DATA:BEGIN OF GT_FILES OCCURS 0,
  297. HEAD TYPE STRING,
  298. ITEM TYPE STRING,
  299. END OF GT_FILES.
  300.  
  301. DATA: L_RVAL TYPE I.
  302. DATA: STR TYPE STRING .
  303. DATA: TMPEBELN LIKE EKKO-EBELN.
  304. DATA: L_IXML TYPE REF TO IF_IXML,
  305. L_ENCODING TYPE REF TO IF_IXML_ENCODING,
  306. L_COMMENT TYPE REF TO IF_IXML_COMMENT,
  307. L_DOC TYPE REF TO IF_IXML_DOCUMENT,
  308. L_ROOT TYPE REF TO IF_IXML_ELEMENT,
  309. L_PO TYPE REF TO IF_IXML_ELEMENT,
  310. L_POHEAD TYPE REF TO IF_IXML_ELEMENT,
  311. L_ITEM TYPE REF TO IF_IXML_ELEMENT,
  312. L_ELEMENT TYPE REF TO IF_IXML_ELEMENT,
  313. L_ATTRIBUTE TYPE REF TO IF_IXML_ATTRIBUTE,
  314. L_OSTREAM TYPE REF TO IF_IXML_OSTREAM,
  315. L_FACTORY TYPE REF TO IF_IXML_STREAM_FACTORY.
  316.  
  317. *&Variant
  318. DATA:G_LEN TYPE I.
  319. DATA:S_SFILE LIKE RLGRAP-FILENAME.
  320.  
  321. DATA: W_XML TYPE STRING,
  322. W_LEN TYPE I,
  323. XML_STRING TYPE STRING.
  324. DATA:BEGIN OF IT_XML OCCURS 0,
  325. LINE(100) TYPE C,
  326. END OF IT_XML.
  327. DATA:RESULT_XML TYPE STANDARD TABLE OF SMUM_XMLTB,
  328. RETURN TYPE STANDARD TABLE OF BAPIRET2,
  329. WA_XML TYPE SMUM_XMLTB.
  330.  
  331. *&------------------------------------------------------------------*
  332. *& Global Variants Definition
  333. *&------------------------------------------------------------------*
  334. *DATA:GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
  335. * GS_FIELDCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV.
  336. *&------------------------------------------------------------------*
  337. *& ALV
  338. *&------------------------------------------------------------------*
  339. DATA:LS_LAYOUT TYPE SLIS_LAYOUT_ALV,
  340. LV_TITLE TYPE LVC_TITLE.
  341. DATA:G_PROGRAM TYPE SY-REPID,
  342. GW_LAYOUT TYPE SLIS_LAYOUT_ALV,
  343. GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
  344. WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
  345. GT_EVENT TYPE SLIS_T_EVENT,
  346. WA_EVENT TYPE SLIS_ALV_EVENT.
  347.  
  348. ************************************************************************
  349. * Select Screen *
  350. ************************************************************************
  351. SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME.
  352.  
  353. SELECT-OPTIONS:S_EBELN FOR EKPO-EBELN OBLIGATORY,
  354. S_LIFNR FOR LFA1-LIFNR.
  355.  
  356. SELECTION-SCREEN SKIP 1.
  357. SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME.
  358.  
  359. PARAMETERS:P_BD AS CHECKBOX DEFAULT 'X',
  360. P_FW AS CHECKBOX,
  361. P_FILE TYPE STRING DEFAULT 'C:\Users\ThinkPad\Desktop\生成文件\xml\'. "NO-DISPLAY."RLGRAP-FILENAME.
  362.  
  363. PARAMETERS:P_SFILE LIKE RLGRAP-FILENAME DEFAULT '/tmp/job/in/',
  364. P_SFILE1 TYPE RLGRAP-FILENAME DEFAULT '/tmp/job/return/'.
  365.  
  366. SELECTION-SCREEN END OF BLOCK BLK2.
  367.  
  368. SELECTION-SCREEN END OF BLOCK BLK1.
  369.  
  370. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  371. *& 选择文件F4
  372. PERFORM FRM_FILE_OPEN_DIALOG CHANGING P_FILE.
  373.  
  374. INITIALIZATION.
  375.  
  376. AT SELECTION-SCREEN.
  377. * LOOP AT S_EKGRP WHERE SIGN = 'I'.
  378. * IF S_EKGRP-LOW(1) = 'P' OR S_EKGRP-HIGH(1) = 'P'.
  379. * MESSAGE E011 WITH '此输入不合条件。'.
  380. * ENDIF.
  381. * ENDLOOP.
  382.  
  383. START-OF-SELECTION.
  384. *&查询
  385. PERFORM FRM_GET_DATA.
  386.  
  387. IF P_BD EQ 'X'.
  388. *&显示
  389. PERFORM FRM_ALV_DISPLAY.
  390. ELSE.
  391. PERFORM FRM_DOWN_XML.
  392. ENDIF.
  393.  
  394. END-OF-SELECTION.
  395.  
  396. *&---------------------------------------------------------------------*
  397. *& Form FRM_FILE_OPEN_DIALOG
  398. *&---------------------------------------------------------------------*
  399. * text
  400. *----------------------------------------------------------------------*
  401. * <--P_P_FILE text
  402. *----------------------------------------------------------------------*
  403. FORM FRM_FILE_OPEN_DIALOG CHANGING P_FILE TYPE STRING.
  404.  
  405. DATA: LT_FILE TYPE TABLE OF FILE_TABLE,
  406. LS_FILE TYPE FILE_TABLE.
  407. DATA: LV_RC TYPE I,
  408. LV_TITLE TYPE STRING.
  409.  
  410. LV_TITLE = SY-TITLE.
  411.  
  412. *& 文件的F4
  413. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
  414. EXPORTING
  415. WINDOW_TITLE = LV_TITLE
  416. FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
  417. CHANGING
  418. FILE_TABLE = LT_FILE
  419. RC = LV_RC
  420. EXCEPTIONS
  421. FILE_OPEN_DIALOG_FAILED = 1
  422. CNTL_ERROR = 2
  423. ERROR_NO_GUI = 3
  424. NOT_SUPPORTED_BY_GUI = 4
  425. OTHERS = 5.
  426. IF SY-SUBRC <> 0.
  427. *--open file failed, show error message
  428. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  429. WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  430. ELSE.
  431. *--open file successful, get file name
  432. READ TABLE LT_FILE INTO LS_FILE INDEX 1.
  433. IF SY-SUBRC = 0 .
  434. P_FILE = LS_FILE-FILENAME.
  435. ENDIF.
  436. ENDIF.
  437.  
  438. ENDFORM. " FRM_FILE_OPEN_DIALOG
  439.  
  440. *&---------------------------------------------------------------------*
  441. *& Form FRM_GET_DATA
  442. *&---------------------------------------------------------------------*
  443. * text
  444. *----------------------------------------------------------------------*
  445. * --> p1 text
  446. * <-- p2 text
  447. *----------------------------------------------------------------------*
  448. FORM FRM_GET_DATA .
  449.  
  450. DATA:LT_LINE LIKE STANDARD TABLE OF TLINE,
  451. LWA_LINE LIKE LINE OF LT_LINE,
  452. LV_NAME LIKE THEAD-TDNAME,
  453. L_JHTXT TYPE STRING.
  454. *C~YUNSW
  455.  
  456. *&取数据:
  457. SELECT A~EBELN
  458. A~LIFNR
  459. A~WAERS
  460. A~STCEG
  461. B~EBELP
  462. B~MATNR
  463. B~MENGE
  464. B~NETPR
  465. B~KZWI5 AS KZWI
  466. B~PLIFZ
  467. C~NAME1
  468. C~TELF1
  469. C~TELFX
  470. C~NAME2
  471. C~SPERZ
  472. C~ADRNR
  473.  
  474. INTO CORRESPONDING FIELDS OF TABLE GT_PO
  475. FROM EKKO AS A
  476. JOIN EKPO AS B
  477. ON A~EBELN EQ B~EBELN
  478. JOIN LFA1 AS C
  479. ON A~LIFNR EQ C~LIFNR
  480. WHERE A~EBELN IN S_EBELN
  481. AND A~LIFNR IN S_LIFNR.
  482.  
  483. G_LEN = LINES( GT_PO[] ).
  484. IF G_LEN EQ 0.
  485. MESSAGE S001 WITH '找不到数据!'.
  486. ENDIF.
  487.  
  488. SORT GT_PO BY EBELN EBELP.
  489. LOOP AT GT_PO.
  490. GT_PO-LIN = SY-TABIX.
  491.  
  492. * GT_PO-TEXT = 'PO head text'.
  493. * GT_PO-TEXTL = 'PO_item text'.
  494.  
  495. CLEAR LV_NAME.
  496. MOVE GT_PO-EBELN TO LV_NAME.
  497. CALL FUNCTION 'READ_TEXT'
  498. EXPORTING
  499. CLIENT = SY-MANDT
  500. ID = 'F01'
  501. LANGUAGE = SY-LANGU
  502. NAME = LV_NAME "GT_PO-EBELN
  503. OBJECT = 'EKKO'
  504. TABLES
  505. LINES = LT_LINE
  506. EXCEPTIONS
  507. ID = 1
  508. LANGUAGE = 2
  509. NAME = 3
  510. NOT_FOUND = 4
  511. OBJECT = 5
  512. REFERENCE_CHECK = 6
  513. WRONG_ACCESS_TO_ARCHIVE = 7
  514. OTHERS = 8.
  515.  
  516. LOOP AT LT_LINE INTO LWA_LINE.
  517. SHIFT LWA_LINE-TDLINE LEFT DELETING LEADING ''.
  518. CONCATENATE LWA_LINE-TDLINE L_JHTXT INTO GT_PO-TEXT."l_jhtxt.
  519. ENDLOOP.
  520. IF GT_PO-TEXT IS INITIAL.
  521. GT_PO-TEXT = '抬头无备注'.
  522. ENDIF.
  523.  
  524. CLEAR LV_NAME.
  525. CONCATENATE GT_PO-EBELN GT_PO-EBELP INTO LV_NAME.
  526.  
  527. CALL FUNCTION 'READ_TEXT'
  528. EXPORTING
  529. CLIENT = SY-MANDT
  530. ID = 'F02'
  531. LANGUAGE = SY-LANGU
  532. NAME = LV_NAME
  533. OBJECT = 'EKPO'
  534. TABLES
  535. LINES = LT_LINE
  536. EXCEPTIONS
  537. ID = 1
  538. LANGUAGE = 2
  539. NAME = 3
  540. NOT_FOUND = 4
  541. OBJECT = 5
  542. REFERENCE_CHECK = 6
  543. WRONG_ACCESS_TO_ARCHIVE = 7
  544. OTHERS = 8.
  545.  
  546. LOOP AT LT_LINE INTO LWA_LINE.
  547. SHIFT LWA_LINE-TDLINE LEFT DELETING LEADING ''.
  548. CONCATENATE LWA_LINE-TDLINE L_JHTXT INTO GT_PO-TEXTL.
  549. ENDLOOP.
  550. IF GT_PO-TEXTL IS INITIAL.
  551. GT_PO-TEXTL = '项目无备注'.
  552. ENDIF.
  553.  
  554. GT_PO-YUNSW = '物流确认'.
  555.  
  556. *&取物料描述
  557. SELECT SINGLE MAKTX
  558. INTO GT_PO-MAKTX
  559. FROM MAKT
  560. WHERE MATNR EQ GT_PO-MATNR.
  561. *&取物料单位
  562. SELECT SINGLE MEINS
  563. INTO GT_PO-MEINS
  564. FROM MARA
  565. WHERE MATNR EQ GT_PO-MATNR.
  566. MODIFY GT_PO.
  567. CLEAR GT_PO.
  568.  
  569. ENDLOOP.
  570.  
  571. ENDFORM. " FRM_GET_DATA
  572. *&---------------------------------------------------------------------*
  573. *& Form FRM_ALV_DISPLAY
  574. *&---------------------------------------------------------------------*
  575. * text
  576. *----------------------------------------------------------------------*
  577. * --> p1 text
  578. * <-- p2 text
  579. *----------------------------------------------------------------------*
  580. FORM FRM_ALV_DISPLAY .
  581. * PERFORM FRM_BUILD_FIELDCAT.
  582. DATA: L_NN TYPE I.
  583.  
  584. DEFINE ADD_FIELDCAT.
  585. CLEAR WA_FIELDCAT.
  586. WA_FIELDCAT-FIELDNAME = &1.
  587. WA_FIELDCAT-SELTEXT_L = &2.
  588. WA_FIELDCAT-KEY = &3.
  589. WA_FIELDCAT-COL_POS = L_NN + 1.
  590. WA_FIELDCAT-JUST = &4.
  591. WA_FIELDCAT-OUTPUTLEN = &5.
  592. WA_FIELDCAT-FIX_COLUMN = &6.
  593. WA_FIELDCAT-NO_ZERO = &7.
  594. WA_FIELDCAT-EDIT = &8.
  595. APPEND WA_FIELDCAT TO GT_FIELDCAT.
  596. END-OF-DEFINITION.
  597.  
  598. CLEAR GT_FIELDCAT.
  599. REFRESH GT_FIELDCAT.
  600.  
  601. ADD_FIELDCAT 'LIN' '序号' '' '' '' '' '' ''.
  602.  
  603. ADD_FIELDCAT 'EBELN' '采购订单' '' '' '' '' '' ''.
  604. ADD_FIELDCAT 'LIFNR' '廠商編號' '' '' '' '' '' ''.
  605. ADD_FIELDCAT 'WAERS' '交易幣別' '' '' '' '' '' ''.
  606. ADD_FIELDCAT 'STCEG' '交易税别' '' '' '' '' '' ''.
  607. ADD_FIELDCAT 'EBELP' '项目号' '' '' '' '' '' ''.
  608. ADD_FIELDCAT 'MATNR' '材料编号' '' '' '' '' '' ''.
  609. ADD_FIELDCAT 'MENGE' '訂購數量' '' '' '' '' '' ''.
  610. ADD_FIELDCAT 'NETPR' '单价' '' '' '' '' '' ''.
  611. ADD_FIELDCAT 'KZWI ' '金额' '' '' '' '' '' ''.
  612. ADD_FIELDCAT 'PLIFZ' '预定交期' '' '' '' '' '' ''.
  613. ADD_FIELDCAT 'NAME1' '廠商簡稱' '' '' '' '' '' ''.
  614. ADD_FIELDCAT 'TELF1' '公司電話' '' '' '' '' '' ''.
  615. ADD_FIELDCAT 'TELFX' '公司傳真' '' '' '' '' '' ''.
  616. ADD_FIELDCAT 'NAME2' '聯絡人' '' '' '' '' '' ''.
  617. ADD_FIELDCAT 'SPERZ' '付款方式' '' '' '' '' '' ''.
  618. ADD_FIELDCAT 'ADRNR' '联系地址' '' '' '' '' '' ''.
  619. ADD_FIELDCAT 'YUNSW' '运送方式' '' '' '' '' '' ''.
  620. ADD_FIELDCAT 'TEXT' '抬头備註' '' '' '' '' '' ''.
  621. ADD_FIELDCAT 'MAKTX' '材料规格' '' '' '' '' '' ''.
  622. ADD_FIELDCAT 'MEINS' '单位' '' '' '' '' '' ''.
  623. ADD_FIELDCAT 'TEXTL' '项目备注' '' '' '' '' '' ''.
  624.  
  625. GW_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  626. GW_LAYOUT-BOX_FIELDNAME = 'SEL'.
  627.  
  628. *&ALV输出
  629. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  630. EXPORTING
  631. I_CALLBACK_PROGRAM = SY-REPID
  632. I_GRID_TITLE = LV_TITLE
  633. I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'
  634. I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
  635. IS_LAYOUT = GW_LAYOUT
  636. IT_FIELDCAT = GT_FIELDCAT
  637. I_SAVE = 'A'
  638. TABLES
  639. T_OUTTAB = GT_PO
  640. EXCEPTIONS
  641. PROGRAM_ERROR = 1
  642. OTHERS = 2.
  643.  
  644. ENDFORM. " FRM_ALV_DISPLAY
  645. *&---------------------------------------------------------------------*
  646. *& Form FRM_DOWN_XML
  647. *&---------------------------------------------------------------------*
  648. * text
  649. *----------------------------------------------------------------------*
  650. * --> p1 text
  651. * <-- p2 text
  652. *----------------------------------------------------------------------*
  653. FORM FRM_DOWN_XML .
  654.  
  655. ENDFORM. " FRM_DOWN_XMLS
  656. *&--------------------------------------------------------------------*
  657. *& 界面的功能按钮定义
  658. *&--------------------------------------------------------------------*
  659. FORM FRM_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
  660.  
  661. SET PF-STATUS 'STANDARD' EXCLUDING EXTAB.
  662.  
  663. ENDFORM. "SET_PF_STATUS
  664. *&---------------------------------------------------------------------*
  665. *& Form FRM_USER_COMMAND
  666. *&---------------------------------------------------------------------*
  667. * text
  668. *----------------------------------------------------------------------*
  669. FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
  670. RS_SELFIELD TYPE SLIS_SELFIELD.
  671.  
  672. DATA: LT_SORT TYPE SLIS_T_SORTINFO_ALV,
  673. LS_SORT TYPE LINE OF SLIS_T_SORTINFO_ALV.
  674.  
  675. CASE R_UCOMM.
  676. WHEN '&XML_01'.
  677. *&形成PO item数据表
  678. PERFORM FRM_GET_ITEM.
  679. *&WAY1
  680. * PERFORM FRM_GET_XML01.
  681. *&WAY2
  682. * PERFORM FRM_GET_XML02.
  683. PERFORM FRM_GET_XML03.
  684.  
  685. *&生成XML文件(传服务器)
  686. * PERFORM DOWNLOAD.
  687.  
  688. WHEN '&XML_02'.
  689. * PERFORM FRM_READ_XML.
  690. *&下载解析
  691. PERFORM FRM_UPLOAD.
  692.  
  693. WHEN OTHERS.
  694.  
  695. ENDCASE.
  696. ENDFORM. "FRM_USER_COMMAND
  697.  
  698. *&---------------------------------------------------------------------*
  699. *& Form FRM_GET_ITEM
  700. *&---------------------------------------------------------------------*
  701. * text
  702. *----------------------------------------------------------------------*
  703. * --> p1 text
  704. * <-- p2 text
  705. *----------------------------------------------------------------------*
  706. FORM FRM_GET_ITEM .
  707.  
  708. * DATA:BEGIN OF GT_PO OCCURS 0,
  709. * LIFNR LIKE EKKO-LIFNR,"SAP廠商編號
  710. * NAME1 LIKE LFA1-NAME1,"廠商簡稱
  711. * EBELN LIKE EKKO-EBELN,"SAP-PO
  712. * TELF1 LIKE LFA1-TELF1,"公司電話
  713. * TELFX LIKE LFA1-TELFX,"公司傳真
  714. * NAME2 LIKE LFA1-NAME2,"聯絡人
  715. * WAERS LIKE EKKO-WAERS,"交易幣別
  716. * SPERZ LIKE LFA1-SPERZ,"付款方式 (付款冻结)
  717. ** TXJCD LIKE EKPO-TXJCD,"交易稅別
  718. * STCEG LIKE EKKO-STCEG,"交易税别
  719. * YUNSW TYPE STRING, "运送方式
  720. * ADRNR LIKE LFA1-ADRNR,"联系地址
  721. * TEXT(100) TYPE C, "抬头備註
  722. **&add
  723. * EBELP LIKE EKPO-EBELP, "项目号
  724. * MATNR LIKE EKPO-MATNR, "材料编号
  725. * MAKTX LIKE MAKT-MAKTX, "材料规格
  726. * MEINS LIKE MARA-MEINS, "单位
  727. * MENGE LIKE EKPO-MENGE, "訂購數量
  728. * NETPR LIKE EKPO-NETPR, "单价
  729. * KZWI LIKE EKPO-KZWI5, "金额
  730. * PLIFZ LIKE EKPO-PLIFZ, "預定交期
  731. * TEXTL(100) TYPE C, "项目備註
  732. * SEL TYPE C,
  733. * LIN TYPE I,
  734. * END OF GT_PO.
  735.  
  736. *&表头和表体数据分开
  737. LOOP AT GT_PO.
  738. ON CHANGE OF GT_PO-EBELN.
  739.  
  740. CLEAR IT_PO-ITEM.
  741. TMP_EBELN = GT_PO-EBELN.
  742.  
  743. LOOP AT GT_PO WHERE EBELN = TMP_EBELN.
  744. WA_LINE-EBELP = GT_PO-EBELP.
  745. WA_LINE-MATNR = GT_PO-MATNR.
  746. WA_LINE-MAKTX = GT_PO-MAKTX.
  747. WA_LINE-MEINS = GT_PO-MEINS.
  748. WA_LINE-MENGE = GT_PO-MENGE.
  749. WA_LINE-NETPR = GT_PO-NETPR.
  750. WA_LINE-KZWI = GT_PO-KZWI.
  751. WA_LINE-PLIFZ = GT_PO-PLIFZ.
  752. WA_LINE-TEXTL = GT_PO-TEXTL.
  753. APPEND WA_LINE1 TO IT_PO-ITEM.
  754. ENDLOOP.
  755.  
  756. SORT IT_PO-ITEM BY EBELP.
  757. IT_PO-EBELN = GT_PO-EBELN.
  758.  
  759. IT_PO-LIFNR = GT_PO-LIFNR."SAP廠商編號
  760. IT_PO-NAME1 = GT_PO-NAME1."廠商簡稱
  761. IT_PO-TELF1 = GT_PO-TELF1."公司電話
  762. IT_PO-TELFX = GT_PO-TELFX."公司傳真
  763. IT_PO-NAME2 = GT_PO-NAME2."聯絡人
  764. IT_PO-WAERS = GT_PO-WAERS."交易幣別
  765. IT_PO-SPERZ = GT_PO-SPERZ."付款方式 (付款冻结)
  766. * TXJCD LIKE EKPO-TXJCD,"交易稅別
  767. IT_PO-STCEG = GT_PO-STCEG."交易税别
  768. IT_PO-YUNSW = GT_PO-YUNSW."运送方式
  769. IT_PO-ADRNR = GT_PO-ADRNR."联系地址
  770. IT_PO-TEXT = GT_PO-TEXT. "抬头備註
  771. APPEND IT_PO.
  772. ENDON.
  773.  
  774. ENDLOOP.
  775.  
  776. ENDFORM. " FRM_GET_ITEM
  777. *&---------------------------------------------------------------------*
  778. *& Form FRM_GET_XML
  779. *&---------------------------------------------------------------------*
  780. * text
  781. *----------------------------------------------------------------------*
  782. * --> p1 text
  783. * <-- p2 text
  784. *----------------------------------------------------------------------*
  785. FORM FRM_GET_XML01 .
  786. *&Way1. CALL METHOD(写节点) L_IXML.
  787.  
  788. BREAK RAINY.
  789. * L_POHEAD TYPE REF TO IF_IXML_ELEMENT,
  790. DATA:L_FIELD TYPE REF TO IF_IXML_ELEMENT,
  791. L_TYPE TYPE REF TO IF_IXML_ELEMENT,
  792. L_DATA TYPE REF TO IF_IXML_ELEMENT.
  793. * L_DATA TYPE REF TO IF_IXML_ELEMENT,
  794. * L_DATA TYPE REF TO IF_IXML_ELEMENT,
  795. * L_DATA TYPE REF TO IF_IXML_ELEMENT.
  796.  
  797. CLASS CL_IXML DEFINITION LOAD.
  798. L_IXML = CL_IXML=>CREATE( ).
  799.  
  800. CALL METHOD L_IXML->CREATE_ENCODING
  801. EXPORTING
  802. BYTE_ORDER = 0
  803. CHARACTER_SET = 'UTF-8'
  804. RECEIVING
  805. RVAL = L_ENCODING.
  806.  
  807. CALL METHOD L_IXML->CREATE_DOCUMENT
  808. RECEIVING
  809. RVAL = L_DOC.
  810.  
  811. CALL METHOD L_DOC->SET_ENCODING
  812. EXPORTING
  813. ENCODING = L_ENCODING.
  814. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  815. EXPORTING
  816. NAME = 'cpel'
  817. PARENT = L_DOC
  818. RECEIVING
  819. RVAL = L_ROOT.
  820. CALL METHOD L_ROOT->SET_ATTRIBUTE
  821. EXPORTING
  822. NAME = 'ATTRIBUTE' "ATTRIBUTE
  823. VALUE = 'sample'"sample
  824. RECEIVING
  825. RVAL = L_RVAL.
  826. CALL METHOD L_DOC->CREATE_COMMENT
  827. EXPORTING
  828. COMMENT = '''SAP產出此文件存在至corepress伺服器D:\Job\in\'''
  829. RECEIVING
  830. RVAL = L_COMMENT.
  831. CLEAR L_RVAL.
  832.  
  833. * L_RVAL = '111'.
  834. * L_COMMENT = 'cpml_id'.
  835. CALL METHOD L_ROOT->APPEND_CHILD
  836. EXPORTING
  837. NEW_CHILD = L_COMMENT
  838. RECEIVING
  839. RVAL = L_RVAL.
  840.  
  841. LOOP AT IT_PO.
  842. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  843. EXPORTING
  844. NAME = 'job-datas'
  845. PARENT = L_ROOT
  846. RECEIVING
  847. RVAL = L_PO.
  848.  
  849. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  850. EXPORTING
  851. NAME = 'job-data'
  852. PARENT = L_PO
  853. RECEIVING
  854. RVAL = L_POHEAD.
  855.  
  856. * STR = 'field6' .
  857. * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  858. * EXPORTING
  859. * NAME = 'field'
  860. * PARENT = L_POHEAD
  861. * VALUE = str
  862. * RECEIVING
  863. * RVAL = L_FIELD.
  864. *
  865. * STR = 'EBELN' .
  866. * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  867. * EXPORTING
  868. * NAME = 'type'
  869. * PARENT = L_FIELD
  870. * VALUE = str
  871. * RECEIVING
  872. * RVAL = L_TYPE.
  873. *
  874. * STR = 'SAP-PO' .
  875. * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  876. * EXPORTING
  877. * NAME = 'name'
  878. * PARENT = L_FIELD
  879. * VALUE = str
  880. * RECEIVING
  881. * RVAL = L_TYPE.
  882. *
  883. * CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  884. * EXPORTING
  885. * NAME = 'data'
  886. * PARENT = L_TYPE
  887. * RECEIVING
  888. * RVAL = L_DATA.
  889.  
  890. STR = IT_PO-EBELN .
  891. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  892. EXPORTING
  893. NAME = 'ponumber'
  894. PARENT = L_POHEAD
  895. VALUE = STR
  896. RECEIVING
  897. RVAL = L_ELEMENT.
  898.  
  899. STR = IT_PO-LIFNR.
  900. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  901. EXPORTING
  902. NAME = 'LIFNR'
  903. PARENT = L_POHEAD
  904. VALUE = STR
  905. RECEIVING
  906. RVAL = L_ELEMENT.
  907.  
  908. PERFORM FILL_ITAB2XML TABLES IT_PO-ITEM
  909. USING 'pobody'
  910. 'poitem'
  911. L_PO.
  912. ENDLOOP.
  913.  
  914. CALL METHOD L_IXML->CREATE_STREAM_FACTORY
  915. RECEIVING
  916. RVAL = L_FACTORY.
  917. CALL METHOD L_FACTORY->CREATE_OSTREAM_ITABLE
  918. EXPORTING
  919. TABLE = XML_TABLE
  920. RECEIVING
  921. RVAL = L_OSTREAM.
  922. CALL METHOD L_DOC->RENDER
  923. EXPORTING
  924. OSTREAM = L_OSTREAM
  925. RECURSIVE = 'X'.
  926. CALL METHOD L_OSTREAM->GET_NUM_WRITTEN_RAW
  927. RECEIVING
  928. RVAL = XML_SIZE.
  929.  
  930. *&Down 本机
  931. CALL FUNCTION 'GUI_DOWNLOAD'
  932. EXPORTING
  933. BIN_FILESIZE = XML_SIZE
  934. FILENAME = P_FILE
  935. FILETYPE = 'BIN'
  936. TABLES
  937. DATA_TAB = XML_TABLE.
  938.  
  939. ENDFORM. " FRM_GET_XML01
  940.  
  941. *&---------------------------------------------------------------------*
  942. *& Form FILL_ITAB2XML
  943. *&---------------------------------------------------------------------*
  944. * text
  945. *----------------------------------------------------------------------*
  946. * -->P_IT_PO_ITEM text
  947. * -->P_1768 text
  948. * -->P_1769 text
  949. * -->P_L_PO text
  950. *----------------------------------------------------------------------*
  951. FORM FILL_ITAB2XML TABLES INTAB
  952. "插入正确名称 <...>
  953. USING NODE1NAME TYPE STRING
  954. NODE2NAME TYPE STRING
  955. L_PARENT TYPE REF TO IF_IXML_ELEMENT.
  956.  
  957. DATA: BEGIN OF HEADTAB OCCURS 0 ,
  958. LENGTH TYPE I ,
  959. DECIMALS TYPE I,
  960. TYPE_KIND TYPE C,
  961. NAME(30) TYPE C,
  962. END OF HEADTAB.
  963. DATA DESCR_REF TYPE REF TO CL_ABAP_STRUCTDESCR.
  964. FIELD-SYMBOLS: <COMP_WA> TYPE ABAP_COMPDESCR ,
  965. <F_FIELD> ,
  966. <F_INTAB> TYPE ANY .
  967. DATA: N TYPE I ,
  968. STR TYPE STRING ,
  969. ITEMNAME TYPE STRING ,
  970. TEXT1 TYPE C ,
  971. L_NODE TYPE REF TO IF_IXML_ELEMENT ,
  972. L_ITEM TYPE REF TO IF_IXML_ELEMENT .
  973.  
  974. DESCR_REF ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( INTAB ).
  975. LOOP AT DESCR_REF->COMPONENTS ASSIGNING <COMP_WA>.
  976. MOVE-CORRESPONDING <COMP_WA> TO HEADTAB.
  977. APPEND HEADTAB.
  978. ENDLOOP.
  979.  
  980. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  981. EXPORTING
  982. NAME = NODE1NAME
  983. PARENT = L_PARENT
  984. RECEIVING
  985. RVAL = L_NODE.
  986. DESCRIBE TABLE HEADTAB LINES N.
  987.  
  988. LOOP AT INTAB ASSIGNING <F_INTAB>.
  989. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  990. EXPORTING
  991. NAME = NODE2NAME
  992. PARENT = L_NODE
  993. RECEIVING
  994. RVAL = L_ITEM.
  995.  
  996. DO N TIMES.
  997. ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F_INTAB> TO <F_FIELD>.
  998. STR = <F_FIELD>.
  999. READ TABLE HEADTAB INDEX SY-INDEX.
  1000. IF HEADTAB-TYPE_KIND = 'I' OR HEADTAB-TYPE_KIND = 'P'
  1001. OR HEADTAB-TYPE_KIND = 'F'.
  1002. SEARCH STR FOR '-'.
  1003. IF SY-SUBRC = 0 AND SY-FDPOS <> 0.
  1004. SPLIT STR AT '-' INTO STR TEXT1.
  1005. CONDENSE STR.
  1006. CONCATENATE '-' STR INTO STR.
  1007. ELSE.
  1008. CONDENSE STR.
  1009. ENDIF.
  1010. ELSE.
  1011. * SHIFT str LEFT DELETING LEADING '0' .
  1012. ENDIF.
  1013. ITEMNAME = HEADTAB-NAME .
  1014. CALL METHOD L_DOC->CREATE_SIMPLE_ELEMENT
  1015. EXPORTING
  1016. NAME = ITEMNAME
  1017. PARENT = L_ITEM
  1018. VALUE = STR
  1019. RECEIVING
  1020. RVAL = L_ELEMENT.
  1021. ENDDO.
  1022. ENDLOOP.
  1023.  
  1024. ENDFORM. " FILL_ITAB2XML
  1025. *&---------------------------------------------------------------------*
  1026. *& Form FRM_GET_XML0
  1027. *&---------------------------------------------------------------------*
  1028. * text
  1029. *----------------------------------------------------------------------*
  1030. * --> p1 text
  1031. * <-- p2 text
  1032. *----------------------------------------------------------------------*
  1033. FORM FRM_GET_XML02 .
  1034. *&CALL Function to get XML.
  1035. DATA:M_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT,
  1036. W_STRING TYPE XSTRING,
  1037. W_SIZE TYPE I,
  1038. IT_XML TYPE DCXMLLINES.
  1039. DATA: L_DOM TYPE REF TO IF_IXML_ELEMENT,
  1040. G_IXML TYPE REF TO IF_IXML,
  1041. W_RESULT TYPE I,
  1042. W_LINE TYPE STRING,
  1043. S_XML LIKE LINE OF IT_XML,
  1044. W_RC LIKE SY-SUBRC.
  1045. DATA:XML TYPE DCXMLLINES.
  1046. DATA:RC TYPE SY-SUBRC,
  1047. BEGIN OF XML_TAB OCCURS 0,
  1048. D LIKE LINE OF XML,
  1049. END OF XML_TAB.
  1050.  
  1051. BREAK RAINY.
  1052.  
  1053. *&加载XML
  1054. CLASS CL_IXML DEFINITION LOAD.
  1055. G_IXML = CL_IXML=>CREATE( ).
  1056.  
  1057. CHECK NOT G_IXML IS INITIAL.
  1058. M_DOCUMENT = G_IXML->CREATE_DOCUMENT( ).
  1059.  
  1060. CHECK NOT M_DOCUMENT IS INITIAL.
  1061. WRITE: / 'Converting DATA TO DOM 1:'.
  1062.  
  1063. CALL FUNCTION 'SDIXML_DATA_TO_DOM'
  1064. EXPORTING
  1065. NAME = 'it_po'
  1066. DATAOBJECT = IT_PO[]"GT_PO[]
  1067. IMPORTING
  1068. DATA_AS_DOM = L_DOM
  1069. CHANGING
  1070. DOCUMENT = M_DOCUMENT
  1071. EXCEPTIONS
  1072. ILLEGAL_NAME = 1
  1073. OTHERS = 2.
  1074. IF SY-SUBRC = 0.
  1075. WRITE 'Ok'.
  1076. ELSE.
  1077. WRITE: 'Err =',
  1078. SY-SUBRC.
  1079. ENDIF.
  1080.  
  1081. CHECK NOT L_DOM IS INITIAL.
  1082. W_RC = M_DOCUMENT->APPEND_CHILD( NEW_CHILD = L_DOM ).
  1083. IF W_RC IS INITIAL.
  1084. WRITE 'Ok'.
  1085. ELSE.
  1086. WRITE: 'Err =',
  1087. W_RC.
  1088. ENDIF.
  1089. *&函数生成 XML 格式文件字符串
  1090. CALL FUNCTION 'SDIXML_DOM_TO_XML'
  1091. EXPORTING
  1092. DOCUMENT = M_DOCUMENT
  1093. IMPORTING
  1094. XML_AS_STRING = W_STRING
  1095. SIZE = W_SIZE
  1096. TABLES
  1097. XML_AS_TABLE = IT_XML
  1098. EXCEPTIONS
  1099. NO_DOCUMENT = 1
  1100. OTHERS = 2.
  1101. IF SY-SUBRC = 0.
  1102. WRITE 'Ok'.
  1103. ELSE.
  1104. WRITE: 'Err =',
  1105. SY-SUBRC.
  1106. ENDIF.
  1107.  
  1108. *&生成供本地下载内表
  1109. LOOP AT IT_XML INTO XML_TAB-D.
  1110. APPEND XML_TAB.
  1111. ENDLOOP.
  1112.  
  1113. *&G1.将xml数据导出到本地
  1114. CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
  1115. EXPORTING
  1116. BIN_FILESIZE = W_SIZE
  1117. FILENAME = P_FILE "'C:\Users\ThinkPad\Desktop\生成文件\get_xml_02.xml' "P_FILE
  1118. FILETYPE = 'BIN'
  1119. CHANGING
  1120. DATA_TAB = IT_XML"XML_TABLE
  1121. EXCEPTIONS
  1122. OTHERS = 24.
  1123.  
  1124. IF SY-SUBRC <> 0.
  1125. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  1126. WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  1127. ENDIF.
  1128.  
  1129. BREAK RAINY.
  1130. *&G2.上传服务器
  1131. *CONCATENATE P_SFILE S_EBELN-LOW 'P0 list.xml' INTO S_SFILE.
  1132. CONCATENATE '/tmp/job/in/' SY-DATUM SY-UZEIT 'P0 list.xml' INTO S_SFILE.
  1133. OPEN DATASET S_SFILE FOR OUTPUT IN BINARY MODE.
  1134. IF SY-SUBRC EQ 0.
  1135. TRANSFER W_STRING TO S_SFILE LENGTH W_SIZE.
  1136. CLOSE DATASET S_SFILE.
  1137. IF SY-SUBRC EQ 0.
  1138. MESSAGE S001 WITH '文件处理成功!'.
  1139. ENDIF.
  1140. ELSE.
  1141. MESSAGE 'OPEN ERROR!' TYPE 'E'.
  1142. STOP.
  1143. ENDIF.
  1144.  
  1145. ENDFORM. " FRM_GET_XML02
  1146. *&---------------------------------------------------------------------*
  1147. *& Form FRM_GET_XML03
  1148. *&---------------------------------------------------------------------*
  1149. * text
  1150. *----------------------------------------------------------------------*
  1151. * --> p1 text
  1152. * <-- p2 text
  1153. *----------------------------------------------------------------------*
  1154. FORM FRM_GET_XML03 .
  1155. *&CALL TRANSFORMATION -》XML
  1156. BREAK RAINY.
  1157.  
  1158. LOOP AT GT_PO.
  1159.  
  1160. WA_HEAD-ID = 'ab2c7f034c814175b1975cc099a2e583'.
  1161. WA_HEAD-APP = 'admin'.
  1162. WA_HEAD-START = '0'.
  1163. WA_HEAD-FINISH = '72'.
  1164. WA_HEAD-DATE = '1'.
  1165.  
  1166. WA_HEAD-LIFN1 = 'field1'.
  1167. WA_HEAD-LIFN2 = 'LIFNR'.
  1168. WA_HEAD-LIFN3 = 'SAP廠商編號'.
  1169. WA_HEAD-NAM1 = 'field3'.
  1170. WA_HEAD-NAM2 = 'NAME1'.
  1171. WA_HEAD-NAM3 = '廠商簡稱'.
  1172. WA_HEAD-EBEL1 = 'field6'.
  1173. WA_HEAD-EBEL2 = 'EBELN'.
  1174. WA_HEAD-EBEL3 = 'SAP-PO'.
  1175.  
  1176. WA_HEAD-TEL1 = 'field5'.
  1177. WA_HEAD-TEL2 = 'TELF1'.
  1178. WA_HEAD-TEL3 = '公司電話'.
  1179. WA_HEAD-TEF1 = 'field7'.
  1180. WA_HEAD-TEF2 = 'TELFX'.
  1181. WA_HEAD-TEF3 = '公司傳真'.
  1182. WA_HEAD-NAM6 = 'field8'.
  1183. WA_HEAD-NAM7 = 'NAME2'.
  1184. WA_HEAD-NAM8 = '聯絡人'.
  1185.  
  1186. WA_HEAD-WAER1 = 'field9'.
  1187. WA_HEAD-WAER2 = 'WAERS'.
  1188. WA_HEAD-WAER3 = '交易幣別'.
  1189. WA_HEAD-SPER1 = 'field10'.
  1190. WA_HEAD-SPER2 = 'SPER3'.
  1191. WA_HEAD-SPER3 = '付款方式'.
  1192. WA_HEAD-STCE1 = 'field11'.
  1193. WA_HEAD-STCE2 = 'STCEG'.
  1194. WA_HEAD-STCE3 = '交易稅別'.
  1195.  
  1196. WA_HEAD-YUNS1 = 'field12'.
  1197. WA_HEAD-YUNS2 = 'YUNSW'.
  1198. WA_HEAD-YUNS3 = '運送方式'.
  1199. WA_HEAD-ADRN1 = 'field13'.
  1200. WA_HEAD-ADRN2 = 'ADRNR'.
  1201. WA_HEAD-ADRN3 = '聯繫地址'.
  1202. WA_HEAD-TEXT1 = 'field14'.
  1203. WA_HEAD-TEXT2 = 'TEXT'.
  1204. WA_HEAD-TEXT3 = '備註'.
  1205.  
  1206. WA_HEAD-FJIAN1 = 'field16'.
  1207. WA_HEAD-FJIAN2 = 'string'.
  1208. WA_HEAD-FJIAN3 = '附件'.
  1209. WA_HEAD-FJIAN4 = 'www.sap.com.'.
  1210. MOVE-CORRESPONDING GT_PO TO WA_HEAD.
  1211. COLLECT WA_HEAD INTO ST_HEAD.
  1212.  
  1213. WA_LINE-EBEL1 = 'field99'.
  1214. WA_LINE-EBEL2 = 'EBELP'.
  1215. WA_LINE-EBEL3 = '项目'.
  1216. WA_LINE-MATN1 = 'field1'.
  1217. WA_LINE-MATN2 = 'MATNR'.
  1218. WA_LINE-MATN3 = '材料編碼'.
  1219. WA_LINE-MAKT1 = 'field2'.
  1220. WA_LINE-MAKT2 = 'MAKTX'.
  1221. WA_LINE-MAKT3 = '材料規格'.
  1222.  
  1223. WA_LINE-MEIN1 = 'field3'.
  1224. WA_LINE-MEIN2 = 'MEINS'.
  1225. WA_LINE-MEIN3 = '單位'.
  1226. WA_LINE-MENG1 = 'field4'.
  1227. WA_LINE-MENG2 = 'MENGE'.
  1228. WA_LINE-MENG3 = '訂購數量'.
  1229. WA_LINE-NETP1 = 'field5'.
  1230. WA_LINE-NETP2 = 'NETPR'.
  1231. WA_LINE-NETP3 = '单价'.
  1232.  
  1233. WA_LINE-KZWI1 = 'field6'.
  1234. WA_LINE-KZWI2 = 'KZWI'.
  1235. WA_LINE-KZWI3 = '金额'.
  1236. WA_LINE-PLIF1 = 'field7'.
  1237. WA_LINE-PLIF2 = 'PLIFZ'.
  1238. WA_LINE-PLIF3 = '預定交期'.
  1239. WA_LINE-TET1 ='field8'.
  1240. WA_LINE-TET2 ='TEXTL'.
  1241. WA_LINE-TET3 ='项目備註'.
  1242.  
  1243. MOVE-CORRESPONDING GT_PO TO WA_LINE.
  1244. APPEND WA_LINE TO ST_LINE.
  1245. ENDLOOP.
  1246.  
  1247. BREAK RAINY.
  1248. *&call transformation to xml
  1249. CALL TRANSFORMATION ZMM3
  1250. SOURCE CPEL = ST_HEAD "ITAB_MATNR
  1251. ET-DATA-LIST = ST_LINE"ITAB_CLASS
  1252. RESULT XML W_XML.
  1253. *&xml string to it_XML
  1254. CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
  1255. EXPORTING
  1256. TEXT = W_XML
  1257. IMPORTING
  1258. LENGTH = W_LEN
  1259. TABLES
  1260. FTEXT_TAB = IT_XML.
  1261. *&1.DOWNloan local.
  1262. CALL FUNCTION 'GUI_DOWNLOAD'
  1263. EXPORTING
  1264. FILENAME = P_FILE
  1265. FILETYPE = 'BIN'
  1266. IMPORTING
  1267. FILELENGTH = W_LEN
  1268. TABLES
  1269. DATA_TAB = IT_XML.
  1270. *&xml tab->string
  1271. * CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
  1272. * EXPORTING
  1273. * INPUT_LENGTH = W_LEN
  1274. * IMPORTING
  1275. * BUFFER = XML_STRING
  1276. * TABLES
  1277. * BINARY_TAB = IT_XML.
  1278.  
  1279. *&2.上传服务器
  1280. *CONCATENATE P_SFILE S_EBELN-LOW 'P0 list.xml' INTO S_SFILE.
  1281. CONCATENATE P_SFILE SY-DATUM '001.xml' INTO S_SFILE.
  1282. OPEN DATASET S_SFILE FOR OUTPUT IN BINARY MODE.
  1283. IF SY-SUBRC EQ 0.
  1284. TRANSFER W_XML TO S_SFILE. " LENGTH W_SIZE."W_STRING
  1285. CLOSE DATASET S_SFILE.
  1286. IF SY-SUBRC EQ 0.
  1287. MESSAGE S001 WITH '文件处理成功!'.
  1288. ENDIF.
  1289. ELSE.
  1290. MESSAGE 'OPEN ERROR!' TYPE 'E'.
  1291. STOP.
  1292. ENDIF.
  1293.  
  1294. ENDFORM. " FRM_GET_XML03
  1295.  
  1296. *&---------------------------------------------------------------------*
  1297. *& Form FRM_WRITE_OUT
  1298. *&---------------------------------------------------------------------*
  1299. * text
  1300. *----------------------------------------------------------------------*
  1301. * --> p1 text
  1302. * <-- p2 text
  1303. *----------------------------------------------------------------------*
  1304. FORM FRM_WRITE_OUT .
  1305. DATA: L_NN TYPE I.
  1306.  
  1307. DEFINE ADD_FIELDCAT.
  1308. CLEAR WA_FIELDCAT.
  1309. WA_FIELDCAT-FIELDNAME = &1.
  1310. WA_FIELDCAT-SELTEXT_L = &2.
  1311. WA_FIELDCAT-KEY = &3.
  1312. WA_FIELDCAT-COL_POS = L_NN + 1.
  1313. WA_FIELDCAT-JUST = &4.
  1314. WA_FIELDCAT-OUTPUTLEN = &5.
  1315. WA_FIELDCAT-FIX_COLUMN = &6.
  1316. WA_FIELDCAT-NO_ZERO = &7.
  1317. WA_FIELDCAT-EDIT = &8.
  1318. APPEND WA_FIELDCAT TO GT_FIELDCAT.
  1319. END-OF-DEFINITION.
  1320.  
  1321. CLEAR GT_FIELDCAT.
  1322. REFRESH GT_FIELDCAT.
  1323.  
  1324. ADD_FIELDCAT 'LIN' '序号' '' '' '' '' '' ''.
  1325.  
  1326. ADD_FIELDCAT 'EBELN' '采购订单' '' '' '' '' '' ''.
  1327. ADD_FIELDCAT 'LIFNR' '廠商編號' '' '' '' '' '' ''.
  1328. ADD_FIELDCAT 'WAERS' '交易幣別' '' '' '' '' '' ''.
  1329. ADD_FIELDCAT 'STCEG' '交易税别' '' '' '' '' '' ''.
  1330. ADD_FIELDCAT 'EBELP' '项目号' '' '' '' '' '' ''.
  1331. ADD_FIELDCAT 'MATNR' '材料编号' '' '' '' '' '' ''.
  1332. ADD_FIELDCAT 'MENGE' '訂購數量' '' '' '' '' '' ''.
  1333. ADD_FIELDCAT 'NETPR' '单价' '' '' '' '' '' ''.
  1334. ADD_FIELDCAT 'KZWI ' '金额' '' '' '' '' '' ''.
  1335. ADD_FIELDCAT 'PLIFZ' '预定交期' '' '' '' '' '' ''.
  1336. ADD_FIELDCAT 'NAME1' '廠商簡稱' '' '' '' '' '' ''.
  1337. ADD_FIELDCAT 'TELF1' '公司電話' '' '' '' '' '' ''.
  1338. ADD_FIELDCAT 'TELFX' '公司傳真' '' '' '' '' '' ''.
  1339. ADD_FIELDCAT 'NAME2' '聯絡人' '' '' '' '' '' ''.
  1340. ADD_FIELDCAT 'SPERZ' '付款方式' '' '' '' '' '' ''.
  1341. ADD_FIELDCAT 'ADRNR' '联系地址' '' '' '' '' '' ''.
  1342. ADD_FIELDCAT 'YUNSW' '运送方式' '' '' '' '' '' ''.
  1343. ADD_FIELDCAT 'TEXT' '抬头備註' '' '' '' '' '' ''.
  1344. ADD_FIELDCAT 'MAKTX' '材料规格' '' '' '' '' '' ''.
  1345. ADD_FIELDCAT 'MEINS' '单位' '' '' '' '' '' ''.
  1346. ADD_FIELDCAT 'TEXTL' '项目备注' '' '' '' '' '' ''.
  1347.  
  1348. GW_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  1349. GW_LAYOUT-BOX_FIELDNAME = 'SEL'.
  1350.  
  1351. *&ALV输出
  1352. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  1353. EXPORTING
  1354. I_CALLBACK_PROGRAM = SY-REPID
  1355. I_GRID_TITLE = LV_TITLE
  1356. * I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'
  1357. * I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
  1358. IS_LAYOUT = GW_LAYOUT
  1359. IT_FIELDCAT = GT_FIELDCAT
  1360. I_SAVE = 'A'
  1361. TABLES
  1362. T_OUTTAB = IT_PO
  1363. EXCEPTIONS
  1364. PROGRAM_ERROR = 1
  1365. OTHERS = 2.
  1366.  
  1367. ENDFORM. " FRM_WRITE_OUT
  1368. *&---------------------------------------------------------------------*
  1369. *& Form FRM_ALV_XMLTAB
  1370. *&---------------------------------------------------------------------*
  1371. * text
  1372. *----------------------------------------------------------------------*
  1373. * --> p1 text
  1374. * <-- p2 text
  1375. *----------------------------------------------------------------------*
  1376. FORM FRM_ALV_XMLTAB .
  1377. DATA:GT_XM TYPE SLIS_T_FIELDCAT_ALV,
  1378. WA_XM TYPE SLIS_FIELDCAT_ALV,
  1379. XM_LAYOUT TYPE SLIS_LAYOUT_ALV.
  1380.  
  1381. DATA: L_NN TYPE I.
  1382.  
  1383. DEFINE ADD_FIELDCAT.
  1384. CLEAR WA_FIELDCAT.
  1385. WA_FIELDCAT-FIELDNAME = &1.
  1386. WA_FIELDCAT-SELTEXT_L = &2.
  1387. WA_FIELDCAT-KEY = &3.
  1388. WA_FIELDCAT-COL_POS = L_NN + 1.
  1389. WA_FIELDCAT-JUST = &4.
  1390. WA_FIELDCAT-OUTPUTLEN = &5.
  1391. WA_FIELDCAT-FIX_COLUMN = &6.
  1392. WA_FIELDCAT-NO_ZERO = &7.
  1393. WA_FIELDCAT-EDIT = &8.
  1394. APPEND WA_XM TO GT_XM.
  1395. END-OF-DEFINITION.
  1396.  
  1397. CLEAR GT_XM.
  1398. REFRESH GT_XM.
  1399.  
  1400. ADD_FIELDCAT 'CNAME' '栏位' '' '' '' '' '' ''.
  1401. ADD_FIELDCAT 'CVALUE' '' '' '' '' '' '' ''.
  1402.  
  1403. XM_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  1404.  
  1405. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  1406. EXPORTING
  1407. I_CALLBACK_PROGRAM = SY-REPID
  1408. I_STRUCTURE_NAME = 'SMUM_XMLTB'
  1409. * I_GRID_TITLE = LV_TITLE
  1410. ** I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'
  1411. ** I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
  1412. IS_LAYOUT = XM_LAYOUT
  1413. * IT_FIELDCAT = GT_XM
  1414. * I_SAVE = 'A'
  1415. TABLES
  1416. T_OUTTAB = RESULT_XML[]
  1417. EXCEPTIONS
  1418. PROGRAM_ERROR = 1
  1419. OTHERS = 2.
  1420.  
  1421. ENDFORM. " FRM_ALV_XMLTAB
  1422. *&---------------------------------------------------------------------*
  1423. *& Form FRM_DYNAMIC_TABLE
  1424. *&---------------------------------------------------------------------*
  1425. * text
  1426. *----------------------------------------------------------------------*
  1427. * --> p1 text
  1428. * <-- p2 text
  1429. *----------------------------------------------------------------------*
  1430. FORM FRM_DYNAMIC_TABLE .
  1431. FIELD-SYMBOLS:<DYN_TABLE> TYPE STANDARD TABLE,
  1432. <DYN_WA>,
  1433. <DYN_FIELD>.
  1434. DATA: DY_TABLE TYPE REF TO DATA,
  1435. DY_LINE TYPE REF TO DATA,
  1436. IT_STRUCTURE TYPE LVC_T_FCAT,
  1437. WA_STR TYPE LVC_S_FCAT.
  1438. DATA:WA_NEW_LINE TYPE REF TO DATA.
  1439. DATA:LS_LAYOUT TYPE LVC_S_LAYO.
  1440. DATA:L_GET TYPE I.
  1441.  
  1442. *CNAME
  1443. *CVALUE
  1444. * FIELDNAME
  1445. * CFIELDNAME
  1446. LOOP AT RESULT_XML INTO WA_XML.
  1447. CLEAR L_GET.
  1448. WA_STR-COL_POS = SY-TABIX.
  1449. L_GET = WA_STR-COL_POS MOD 2.
  1450.  
  1451. IF L_GET NE 0.
  1452. WA_STR-TABNAME = 'X'.
  1453. ENDIF.
  1454. IF WA_XML-CNAME = 'type'.
  1455. WA_STR-FIELDNAME = WA_XML-CVALUE.
  1456. ENDIF.
  1457.  
  1458. IF WA_XML-CNAME = 'data'.
  1459. WA_STR-CFIELDNAME = WA_XML-CVALUE.
  1460. ENDIF.
  1461. APPEND WA_STR TO IT_STRUCTURE.
  1462. CLEAR WA_STR-TABNAME.
  1463. ENDLOOP.
  1464.  
  1465. DELETE IT_STRUCTURE WHERE TABNAME EQ 'X'.
  1466.  
  1467. *&转化动态内表
  1468. "表类型指针 <dyn_table> 指向 数据对象的内容.
  1469. CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
  1470. EXPORTING
  1471. IT_FIELDCATALOG = IT_STRUCTURE
  1472. IMPORTING
  1473. EP_TABLE = DY_TABLE.
  1474. ASSIGN DY_TABLE->* TO <DYN_TABLE>.
  1475.  
  1476. CREATE DATA WA_NEW_LINE LIKE LINE OF <DYN_TABLE>.
  1477. *建立一个与动态内表结构相同的数据对象,且数据对象为是一个结构
  1478. "用<dyn_wa>指针指向该结构
  1479. ASSIGN WA_NEW_LINE->* TO <DYN_WA>.
  1480.  
  1481. BREAK RAINY.
  1482.  
  1483. LOOP AT IT_STRUCTURE INTO WA_STR.
  1484. * J = J + 1.
  1485. ASSIGN COMPONENT WA_STR-FIELDNAME OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  1486. IF SY-SUBRC EQ 0.
  1487. <DYN_FIELD> = WA_STR-CFIELDNAME.
  1488. ENDIF.
  1489. * " 用指针<DYN_FIELD>指向工作区<DYN_WA>中的一个字段,字段名为WA_STRUCTURE-FIELDNAME.
  1490. * CONCATENATE I J INTO <DYN_FIELD>." 给指针指向的字段赋值
  1491. APPEND <DYN_WA> TO <DYN_TABLE>.
  1492.  
  1493. ENDLOOP.
  1494.  
  1495. * 栏位信息
  1496. * PERFORM frm_build_fieldcat.
  1497.  
  1498. * 格式信息
  1499. LS_LAYOUT-ZEBRA = 'X'.
  1500. LS_LAYOUT-CWIDTH_OPT = 'X'.
  1501.  
  1502. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  1503. EXPORTING
  1504. I_CALLBACK_PROGRAM = SY-REPID
  1505. IS_LAYOUT_LVC = LS_LAYOUT
  1506. IT_FIELDCAT_LVC = GT_FIELDCAT
  1507. I_SAVE = 'A'
  1508. TABLES
  1509. T_OUTTAB = <DYN_TABLE>
  1510. EXCEPTIONS
  1511. PROGRAM_ERROR = 1
  1512. OTHERS = 2.
  1513.  
  1514. ENDFORM. " FRM_DYNAMIC_TABLE
  1515.  
  1516. *&---------------------------------------------------------------------*
  1517. *& Form FRM_UPLOAD
  1518. *&---------------------------------------------------------------------*
  1519. * text
  1520. *----------------------------------------------------------------------*
  1521. * --> p1 text
  1522. * <-- p2 text
  1523. *----------------------------------------------------------------------*
  1524. FORM FRM_UPLOAD .
  1525. DATA XMLBIN_TAB TYPE TABLE OF X255.
  1526. DATA: XML_XSTR TYPE XSTRING,
  1527. XML_STR TYPE STRING.
  1528. DATA: LEN TYPE I,
  1529. LENTH TYPE I.
  1530.  
  1531. *&上传文件:
  1532. *&=========================================
  1533. *&文件上传
  1534. CALL FUNCTION 'GUI_UPLOAD'
  1535. EXPORTING
  1536. FILENAME = P_FILE
  1537. FILETYPE = 'BIN'
  1538. IMPORTING
  1539. FILELENGTH = LEN
  1540. TABLES
  1541. DATA_TAB = XMLBIN_TAB.
  1542. *&XML格式转化string
  1543. CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
  1544. EXPORTING
  1545. INPUT_LENGTH = LEN
  1546. IMPORTING
  1547. BUFFER = XML_XSTR
  1548. TABLES
  1549. BINARY_TAB = XMLBIN_TAB.
  1550. *&得到结果内表
  1551. CALL FUNCTION 'SMUM_XML_PARSE'
  1552. EXPORTING
  1553. XML_INPUT = XML_XSTR
  1554. TABLES
  1555. XML_TABLE = RESULT_XML
  1556. RETURN = RETURN.
  1557.  
  1558. *&XConvert XSTRING to STRING
  1559. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  1560. EXPORTING:
  1561. BUFFER = XML_XSTR
  1562. IMPORTING
  1563. OUTPUT_LENGTH = LEN
  1564. TABLES
  1565. BINARY_TAB = XMLBIN_TAB.
  1566.  
  1567. CALL FUNCTION 'SCMS_BINARY_TO_STRING'
  1568. EXPORTING
  1569. INPUT_LENGTH = LEN
  1570. IMPORTING
  1571. TEXT_BUFFER = XML_STR
  1572. OUTPUT_LENGTH = LENTH
  1573. TABLES
  1574. BINARY_TAB = XMLBIN_TAB.
  1575.  
  1576. DELETE RESULT_XML WHERE TYPE NE 'V'.
  1577. DELETE RESULT_XML WHERE CNAME NE 'type' AND CNAME NE 'data'.
  1578. DELETE RESULT_XML WHERE CVALUE EQ ''.
  1579.  
  1580. BREAK RAINY.
  1581. *&==========================================
  1582. *将 XML 文件转化成SAP内表数据
  1583. CALL TRANSFORMATION ZMM3_R
  1584. SOURCE XML XML_STR"XML_XSTR
  1585. RESULT CPEL = ST_HEAD
  1586. ET-DATA-LIST = ST_LINE.
  1587.  
  1588. *&dynamic table处理得数据表
  1589.  
  1590. ENDFORM. " FRM_UPLOAD

PO 审批及生成xml文件的更多相关文章

  1. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  2. Java生成XML文件

    我们在数据库中的数据可以将其提取出来生成XML文件,方便传输.例如数据库中有Admin这张表: 我们写一个java类表示admin数据: package xmlDom.vo; import java. ...

  3. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  4. C# 生成xml文件

    本篇文章旨在.net环境下生成xml文件,以控制台应用程序为例进行说明. 1.在vs中新建控制台应用程序CreateXml 2.CreateXmlFile:主要生成xml的函数 public void ...

  5. 视频播放实时记录日志并生成XML文件

    需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...

  6. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  7. LINQ to XML 从逗号分隔值 (CSV) 文件生成 XML 文件

    参考:http://msdn.microsoft.com/zh-cn/library/bb387090.aspx 本示例演示如何使用 语言集成查询 (LINQ) 和 LINQ to XML 从逗号分隔 ...

  8. 生成XML文件,通过实体生成XML文件

    实体 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xm ...

  9. PHP中的生成XML文件的4种方法(转)

    <?xml version="1.0" encoding="utf-8"?> <article> <item> <ti ...

随机推荐

  1. perfect-scrollbar 轻量级滚动插件

    它是一个轻量级的jquery插件. 需要引入的文件: css: #box { position: absolute; overflow: hidden; height: 200px; width: 2 ...

  2. babel转码神器babel-preset-env

    简介 现如今不同的浏览器和平台chrome, opera, edge, firefox, safari, ie, ios, android, node, electron 不同的模块 "am ...

  3. POJ 3171 区间覆盖最小值&&线段树优化dp

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4715   Accepted: 1590 D ...

  4. 洛谷——P2149 [SDOI2009]Elaxia的路线

    P2149 [SDOI2009]Elaxia的路线 题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每 ...

  5. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  6. 类加载器在加载类 的时候就已经对类的static代码块和static变量进行了初始化

    类装载器ClassLoader 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导 ...

  7. 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 ...

  8. 【搞机】9.7英寸iPad Pro 上手开箱(图文)

    前言 话说,去年就一直想买个iPad ,可是苦于iPad air 2 出的太早,立即就要更新了,就没有买. 今年出了9.7英寸的iPad Pro .看到添加了这么多新特性.就按耐不住心情预订了~ 还刻 ...

  9. Android 音频的播放之二MediaPlayer

    MediaPlayer类可用于控制音频/视频文件或流的播放.关于怎样使用这个类的方法还能够阅读VideoView类的文档. 1.状态图 对播放音频/视频文件和流的控制是通过一个状态机来管理的. 下图显 ...

  10. Java如何Attachment源码

    该文章教你如何在Eclipse中Attachment源码,学到了不少东西. http://jingyan.baidu.com/article/1709ad80b107f64635c4f040.html ...