2023年12月21日发(作者:)

* TT_ITEM1 TYPE TABLE OF TS_ITEM1.**TYPES:* BEGIN OF TS_LINES1,* ITEM TYPE TT_ITEM1.*TYPES: END OF TS_LINES1.**TYPES: BEGIN OF TS_SOLDTABLE,* MESSAGE TYPE CHAR100,* LINES TYPE TS_LINES1.*TYPES:END OF TS_SOLDTABLE.****************************************TYPES:* BEGIN OF TS_ITEM2,* SHIPSEARCHTERM TYPE CHAR10,* SHIPPOSTALCODE TYPE CHAR10,* SHIPCITY TYPE CHAR10,* SHIPCOUNTRY TYPE CHAR20,* SHIPCUSTOMERCODE TYPE CHAR10,* END OF TS_ITEM2,* TT_ITEM2 TYPE TABLE OF TS_ITEM2.**TYPES:* BEGIN OF TS_LINES2,* ITEM TYPE TT_ITEM2.*TYPES: END OF TS_LINES2.**TYPES: BEGIN OF TS_SHIPTABLE,* MESSAGE TYPE CHAR100,* LINES TYPE TS_LINES2.*TYPES:END OF TS_SHIPTABLE.********************************************TYPES:* BEGIN OF TS_ITEM3,* BILLSEARCHTERM TYPE CHAR10,* BILLPOSTALCODE TYPE CHAR10,* BILLCITY TYPE CHAR10,* BILLCOUNTRY TYPE CHAR20,* BILLCUSTOMERCODE TYPE CHAR10,* END OF TS_ITEM3,* TT_ITEM3 TYPE TABLE OF TS_ITEM3.**TYPES:* BEGIN OF TS_LINES3,* ITEM TYPE TT_ITEM3.*TYPES: END OF TS_LINES3.**TYPES: BEGIN OF TS_BILLTABLE,* MESSAGE TYPE CHAR100,* LINES TYPE TS_LINES3.*TYPES:END OF TS_BILLTABLE.*******************************************TYPES:BEGIN OF TS_POHEADER,* PONUM TYPE CHAR10,* PODATE TYPE CHAR10,* SHIPPINGTYPE TYPE CHAR10,* CURRENCY TYPE CHAR10,* INCOTERM1 TYPE CHAR10,* INCOTERM2 TYPE CHAR10,* PAYMENT TYPE CHAR10,* SOHEADERNOTE TYPE CHAR10,* END OF TS_POHEADER.*

*********************************************TYPES: BEGIN OF TS_ITEM4,* POITEM TYPE CHAR10,* DELTAMATERIALNUM TYPE CHAR20,* QTY TYPE CHAR20,* MATERIALNUM TYPE CHAR10,* ETADATE TYPE CHAR10,* UNITPRICE TYPE CHAR10,* UNIT TYPE CHAR10,* AMOUNT TYPE CHAR10,* SOITEMNOTE TYPE CHAR10,* END OF TS_ITEM4,* TT_ITEM4 TYPE TABLE OF TS_ITEM4.**TYPES:* BEGIN OF TS_LINES4,* ITEM TYPE TS_ITEM4.*TYPES: END OF TS_LINES4.**TYPES: BEGIN OF TS_TABLEFILEDS,* LINES TYPE TS_LINES4,* END OF TS_TABLEFILEDS.**TYPES:* BEGIN OF TS_DATA,* DOCSETID TYPE CHAR10,* DOCUMENTID TYPE CHAR50,* IMPFILENAME TYPE CHAR50,* EXPFILENAME TYPE CHAR50,* DOCCATEGORY TYPE CHAR10,* FACTORY TYPE CHAR10,* PLANTCODE TYPE CHAR10,* SHIPTOCODE TYPE CHAR10,* SOLDTO TYPE CHAR50,* SOLDTOADD TYPE CHAR50,* SHIPTO TYPE CHAR50,* SHIPTOADD TYPE CHAR50,* BILLTO TYPE CHAR50,* BILLTOADD TYPE CHAR50,* SOLDTABLE TYPE TS_SOLDTABLE,* SHIPTABLE TYPE TS_SHIPTABLE,* BILLTABLE TYPE TS_BILLTABLE,* POHEADER TYPE TS_POHEADER,* TABLEFILEDS TYPE TS_TABLEFILEDS,* END OF TS_: is_itab3 TYPE zlian_test_xml, is_item TYPE zlian_soldtable_lines_item, it_item TYPE TABLE OF zlian_soldtable_lines__itab3-docsetid = 'test'.is_itab3-documentid = 'A'.is_itab3-poheader-podate = '20202020'.is_itab3-poheader-ponum = '12345'.is_itab3-soldtable-message = 'liantest'.is_item-soldpostalcode = 'item1'.is_item-soldsearchterm = 'item1'.APPEND is_item TO it__item-soldpostalcode = 'item2'.is_item-soldsearchterm = 'item2'.APPEND is_item TO it__itab3-soldtable-lines-item = it_ION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TERS: rd_1 RADIOBUTTON GROUP rd1 DEFAULT 'X', rd_2 RADIOBUTTON GROUP rd1, rd_3 RADIOBUTTON GROUP rd1, rd_4 RADIOBUTTON GROUP rd1, rd_5 RADIOBUTTON GROUP rd1, rd_6 RADIOBUTTON GROUP ION-SCREEN END OF BLOCK * FROM spfli INTO TABLE lt_ * FROM sflight INTO TABLE lt_-OF-SELECTION. IF rd_1 = 'X'. PERFORM create_xml_data. PERFORM download. ELSEIF rd_2 = 'X'. PERFORM create_xml_data. PERFORM upload_ftp. ELSEIF rd_3 = 'X'. PERFORM download_ftp. PERFORM write_table. ELSEIF rd_4 = 'X'. PERFORM download_ftp. PERFORM download. ELSEIF rd_5 = 'X'. PERFORM upload_file. PERFORM upload_ftp. ELSEIF rd_6 = 'X'. PERFORM download_ftp. PERFORM write_table2. ENDIF.*&---------------------------------------------------------------------**& Form CREATE_XML_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM create_xml_data . DATA: lo_writer TYPE REF TO cl_sxml_string_writer. lo_writer = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_xml10 encoding = `UTF-8` ). CALL TRANSFORMATION id SOURCE spfli = lt_itab sflight = lt_itab2* CALL TRANSFORMATION id* SOURCE it_data = is_itab3 RESULT XML lo_writer. lv_xml = lo_writer->get_output( ).* cl_proxy_xml_transform=>abap_to_xml_xstring(* EXPORTING* abap_data = is_itab3* ddic_type = 'ZLIAN_TEST_XML' " Name of Dictionary Type** ext_xml = ABAP_FALSE** xml_header = 'no'

** root_element =** svar_name = " Proxy Generation: Name of an Object in R/3* RECEIVING* xml = lv_xml ).* CATCH cx_proxy_fault. " Proxy Fault* CATCH cx_transformation_error. " General Error When Performing CALL TRANSFORMATION CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_xml IMPORTING output_length = lv_size TABLES binary_tab = lt_M. " CREATE_XML_DATA*&---------------------------------------------------------------------**& Form DOWNLOAD*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM download . CALL METHOD cl_gui_frontend_services=>gui_download EXPORTING bin_filesize = lv_size filename = 'C:' " Name of file filetype = 'BIN' " File type (ASCII, binary ...) CHANGING data_tab = lt_xml. IF sy-subrc = 0. MESSAGE s000(ys) WITH 'download successful'. M. " DOWNLOAD*&---------------------------------------------------------------------**& Form UPLOAD_FTP*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM upload_ftp . DATA: shdl TYPE i, it_result TYPE STANDARD TABLE OF ty_result WITH HEADER LINE, w_rfcdoc3 TYPE rfcdoc_d, "environment prd/dev/qas lv_fname(60) TYPE c, lv_filelength TYPE i. "FTP Connect CALL FUNCTION 'FTP_CONNECT' EXPORTING user = 'SRV-IDELTAFILE' password = '8FF92E7B776B3D575E' " host = '' rfc_destination = 'SAPFTPA' IMPORTING handle = shdl EXCEPTIONS not_connected = 1 OTHERS = 2.

EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4. CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = shdl command = 'get DEV-lian_' TABLES data = it_result EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4.* CALL FUNCTION 'FTP_R3_TO_SERVER'* EXPORTING* handle = shdl* fname = lv_fname* blob_length = lv_size* TABLES* blob = lt_xml* EXCEPTIONS* tcpip_error = 1* command_error = 2* data_error = 3* OTHERS = 4. IF sy-subrc = 0. MESSAGE s000 WITH 'UPLOAD FILE SUCCESSFUL'. ELSE. MESSAGE s000 WITH 'UPLOAD FILE FAIL' DISPLAY LIKE 'E'. RETURN. ENDIF.* CALL FUNCTION 'FTP_COMMAND'* EXPORTING* handle = shdl* command = 'mkdir test1'* TABLES* data = it_result* EXCEPTIONS* tcpip_error = 1* command_error = 2* data_error = 3* OTHERS = 4. ELSE. MESSAGE s000 WITH 'UPLOAD FILE FAIL' DISPLAY LIKE 'E'. RETURN. ENDIF. ENDIF. CALL FUNCTION 'FTP_DISCONNECT' EXPORTING handle = M. " UPLOAD_FTP*&---------------------------------------------------------------------**& Form DOWNLOAD_FTP*&---------------------------------------------------------------------*

* text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM download_ftp . DATA: shdl TYPE i, it_result TYPE STANDARD TABLE OF ty_result WITH HEADER LINE, w_rfcdoc3 TYPE rfcdoc_d, "environment prd/dev/qas lv_fname(60) TYPE c, lv_filelength TYPE i. "FTP Connect CALL FUNCTION 'FTP_CONNECT' EXPORTING user = 'SRV-IDELTAFILE' password = '8FF92E7B776B3D575F' host = '' rfc_destination = 'SAPFTPA' IMPORTING handle = shdl EXCEPTIONS not_connected = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE s000 WITH 'FTP connect failed!' DISPLAY LIKE 'E'. RETURN. ELSE. CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = shdl command = 'cd TEST' TABLES data = it_result EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4. IF sy-subrc = 0. CLEAR:lv_fname. CALL FUNCTION 'Y_LOCAL_LOGICSYS_INFO_GET' IMPORTING description3 = w_rfcdoc3. CASE w_rfcdoc3. WHEN 'PRD'. lv_fname = 'lian_test02' && '.xml'. WHEN 'QAS'. lv_fname = 'QAS-' && 'lian_test02' && '.xml'. WHEN 'DEV'. lv_fname = 'DEV-' && 'lian_test02' && '.xml'. ENDCASE. CALL FUNCTION 'FTP_SERVER_TO_R3' EXPORTING handle = shdl fname = lv_fname IMPORTING blob_length = lv_size TABLES blob = lt_xml EXCEPTIONS

tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4. IF sy-subrc = 0. ENDIF. ELSE. MESSAGE s000 WITH 'Can not find file!' DISPLAY LIKE 'E'. ENDIF. CALL FUNCTION 'FTP_DISCONNECT' EXPORTING handle = shdl. M. " DOWNLOAD_FTP*&---------------------------------------------------------------------**& Form WRITE_TABLE*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM write_table . CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' EXPORTING input_length = lv_size IMPORTING buffer = lv_xml TABLES binary_tab = lt_xml EXCEPTIONS failed = 1 OTHERS = 2. CALL TRANSFORMATION id SOURCE XML lv_xml RESULT it_data = is_itab3. WRITE:/ 'TABLE: it_data'. WRITE: / is_itab3-docsetid,is_itab3-documentid. WRITE: / is_itab3-poheader-podate,is_itab3-poheader-ponum. WRITE: / is_itab3-soldtable-message. LOOP AT is_itab3-soldtable-lines-item INTO is_item. WRITE: / is_item-soldpostalcode,is_item-soldsearchterm. M. " WRITE_TABLE*&---------------------------------------------------------------------**& Form UPLOAD_FILE*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM upload_file . DATA:lv_file TYPE string. CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = lv_file " Name of file

filename = lv_file " Name of file filetype = 'BIN' " File Type (ASCII, Binary)* has_field_separator = SPACE " Columns Separated by Tabs in Case of ASCII Upload* header_length = 0 " Length of Header for Binary Data* read_by_line = 'X' " File Written Line-By-Line to the Internal Table* dat_mode = SPACE " Numeric and date fields are in DAT format in WS_DOWNLOAD* codepage = SPACE " Character Representation for Output* ignore_cerr = ABAP_TRUE " Specifies whether errors converting char. sets are ignored* replacement = '#' " Replacement Character for Non-Convertible Characters* virus_scan_profile = " Virus Scan Profile* isdownload = SPACE " Is a download scenario IMPORTING filelength = lv_size* header = " File Header in Case of Binary Upload CHANGING data_tab = lt_M. " UPLOAD_FILE*&---------------------------------------------------------------------**& Form WRITE_TABLE2*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM write_table2 . CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' EXPORTING input_length = lv_size IMPORTING buffer = lv_xml TABLES binary_tab = lt_xml EXCEPTIONS failed = 1 OTHERS = 2. CALL TRANSFORMATION id SOURCE XML lv_xml RESULT spfli = lt_itab sflight = lt_M. " WRITE_TABLE2