TYPES: BEGIN OF bin_file, name TYPE string, size TYPE i, data TYPE solix_tab, END OF bin_file. * Dokumentart (TA DC10, Tabelle TDWA) PARAMETERS: p_type TYPE bapi_doc_aux-doctype OBLIGATORY. * Teildokument PARAMETERS: p_part TYPE bapi_doc_aux-docpart OBLIGATORY DEFAULT '000'. * Dokumentversion PARAMETERS: p_ver TYPE bapi_doc_aux-docversion OBLIGATORY DEFAULT '00'. * Beschreibung PARAMETERS: p_desc TYPE bapi_doc_drat-description DEFAULT 'Test 123'. * Ablagekategorie (TA OACT, Tabelle SDOKSTCAE, View V_SDOKSTCA) PARAMETERS: p_stor TYPE bapi_doc_files2-storagecategory OBLIGATORY. * Logisches Dokument/Workstation Application (TA S_ALR_87008829, Tabelle TDWP, Bild -> JPG) PARAMETERS: p_appl TYPE bapi_doc_files2-application_id OBLIGATORY DEFAULT 'JPG'. * Objekttyp (Material -> MARA) PARAMETERS: p_otype TYPE bapi_doc_drad-objecttype OBLIGATORY DEFAULT 'MARA'. * Objektkey (Material -> MATNR) PARAMETERS: p_okey TYPE bapi_doc_drad-objectkey OBLIGATORY DEFAULT '000000001122334455'. START-OF-SELECTION. TRY. DATA: lv_rc TYPE i. DATA: it_files TYPE filetable. DATA: lv_action TYPE i. * FileOpen-Dialog aufrufen cl_gui_frontend_services=>file_open_dialog( EXPORTING file_filter = |jpg (*.jpg)\|*.jpg\|{ cl_gui_frontend_services=>filetype_all }| CHANGING file_table = it_files rc = lv_rc user_action = lv_action ). IF lv_action = cl_gui_frontend_services=>action_ok. * wenn Datei ausgewählt wurde IF lines( it_files ) > 0. * Dateien auf den Appl.-Server hochladen DATA: lv_file TYPE bin_file. cl_gui_frontend_services=>gui_upload( EXPORTING filename = CONV #( it_files[ 1 ]-filename ) filetype = 'BIN' IMPORTING filelength = lv_file-size CHANGING data_tab = lv_file-data ). DATA: lv_xstring TYPE xstring. * Datei binär zu xstring wandeln CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' EXPORTING input_length = lv_file-size IMPORTING buffer = lv_xstring TABLES binary_tab = lv_file-data. * Dokumentinformationssatz DATA(lv_draw) = VALUE draw( dokar = p_type doktl = p_part dokvr = p_ver ). * DVS: Steuerung für APIS DATA(lv_api_control) = VALUE cvapi_api_control( no_update_task = abap_true ). * Kurztexte für Dokuinfosätze DATA: it_drat TYPE STANDARD TABLE OF dms_db_drat WITH DEFAULT KEY. it_drat = VALUE #( ( langu = sy-langu dktxt = p_desc ) ). * Verknüpfung Dokument-Objekt DATA: it_drad TYPE STANDARD TABLE OF dms_db_drad WITH DEFAULT KEY. it_drad = VALUE #( ( dokob = p_otype objky = p_okey ) ). * Originale für Dokumente (Dateianhang) DATA: it_bin_content TYPE STANDARD TABLE OF drao WITH DEFAULT KEY. DATA: lv_data_length TYPE i. DATA: it_content_raw TYPE STANDARD TABLE OF orblk WITH DEFAULT KEY. * xstring --> ORBLK (Binärformat mit Zeilenlänge 2550 Bytes) CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_xstring IMPORTING output_length = lv_data_length TABLES binary_tab = it_content_raw. * Datenaufbereitung LOOP AT it_content_raw ASSIGNING FIELD-SYMBOL(<raw>). APPEND VALUE #( zaehl = sy-tabix appnr = '1' dokar = p_type orln = lv_data_length * orbkl = 2550 orblk = <raw> ) TO it_bin_content. ENDLOOP. * DVS: Originale zu einem Dokument DATA: it_doc_files TYPE STANDARD TABLE OF cvapi_doc_file WITH DEFAULT KEY. it_doc_files = VALUE #( ( updateflag = 'I' appnr = '1' dappl = p_appl filename = it_files[ 1 ]-filename storage_cat = p_stor description = p_desc ) ). DATA(lv_message) = VALUE messages( ). DATA(lv_pfx_dokar) = VALUE draw-dokar( ). DATA(lv_pfx_doknr) = VALUE draw-doknr( ). DATA(lv_pfx_dokvr) = VALUE draw-dokvr( ). DATA(lv_pfx_doktl) = VALUE draw-doktl( ). * DVS: Dokument anlegen CALL FUNCTION 'CVAPI_DOC_CREATE' EXPORTING ps_draw = lv_draw ps_api_control = lv_api_control pf_content_provide = 'TBL' " Binärdaten des Files als Tabelle übergeben IMPORTING psx_message = lv_message pfx_dokar = lv_pfx_dokar pfx_doknr = lv_pfx_doknr pfx_dokvr = lv_pfx_dokvr pfx_doktl = lv_pfx_doktl TABLES pt_drad_x = it_drad pt_drat_x = it_drat pt_files_x = it_doc_files pt_content = it_bin_content. IF lv_message-msg_type CA 'EA'. * Rollback bei Fehler CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. * Daten verbuchen CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = abap_true. cl_demo_output=>write_data( lv_message ). cl_demo_output=>write_data( lv_pfx_dokar ). cl_demo_output=>write_data( lv_pfx_doknr ). cl_demo_output=>write_data( lv_pfx_dokvr ). cl_demo_output=>write_data( lv_pfx_doktl ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'CVAPI_DOC_CREATE' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space. ENDIF. ENDIF. ENDIF. CATCH cx_root INTO DATA(e_text). MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'. ENDTRY.
Kategorien
-
Neueste Beiträge
- [ABAP] Schlüsselspalten einer DB-Tabelle ermitteln
- [ABAP] SALV-Grid: Eventhandler für Klick auf eine Zelle (link_click, hotspot)
- [ABAP] Material-Ledger: Materialpreise für unterschiedliche Währungstypen pflegen
- [SAP] Material Ledger / Materialbewertung / Materialpreise
- [ABAP] Dokumente per URL im Document Viewer anzeigen
- [ABAP] Systeminformationen anzeigen
- [ABAP] XML-Editor in der SAPGUI anzeigen, XML-Daten editieren
- [ABAP] QR-Codes als Bitmap erzeugen
- [ABAP] Code128-Barcode als Bitmap erzeugen
- [ABAP] Mehrere interne Tabellen in eigenem Fullscreen-Fenster (cl_gui_dialogbox_container) anzeigen