#1
|
||||
|
||||
Subir Imagen
Trato de hacer un Call Transaction de la SE78 para subir unas imagenes a SAP. Hago la grabacion en la SM35 pero cuando trato de correr de nuevo la grabacion no me hace lo que yo hice cuando la grabe y no puedo subir imagenes....
Será que por la SE78 no se puede subir imagenes mediante calltransaction?? Alguien sabe por donde podria subirlas o si hay una bapi o funcion para hacerlo??? Úlima edición por DCErick fecha: 11/10/06 a las 22:54:06. |
#2
|
||||
|
||||
Holas.
Bueno como no me quedó de otra copie unos forms del programa LSTXBITMAPSF05 el cual tiene dos forms que en mi caso son los que necesité graphic_import_bds la cual manda llamar a import_bitmap_bds Y mande llamar el form como vá En este form hay un select a la tabla stxbitmaps para ver si la imagen ya existe posterior a eso hace una pregunta de si quieres modificar la imagen, en mi caso siempre se quiere subir pues es una carga masiva y opte por comentar el siguiente codigo: Y por ultimo modifique le agrege a la parte donde manda mensajes de error lo siguiente. De : MESSAGE e285 Quedaron en : MESSAGE e285(td) P.D. Viendo el codigo de estos forms podemos notar que no podremos correrlo en proceso de fondo (JOB).... Pues SAP carga la imagen con el WS_UPLOAD el cual no corre en (JOB) Espero que esto le ayude a alguien pues yo si que tarde algo en encontrarlo. Y si alguien tiene alguna otra solucion no dude en postear.
__________________
------------------- ¿Dudas para descargar manuales? Ver este tema -> |
#3
|
|||
|
|||
Hola Erick
Pues me has ahorrado el trabajo gracias, y cuando te das una vuelta por Mazatlán? Saludos desde Costa Rica. Sergio Leandro |
#4
|
||||
|
||||
jajaaj Saludos sergio,
Espero ir en semana santa.... Saludos desde regiolandia.
__________________
------------------- ¿Dudas para descargar manuales? Ver este tema -> |
#5
|
|||
|
|||
subir imágenes a color SE78 ABAP
Excelente bueno que sea solo copiar y pegar en definiciones globales:
* Globals and globals for dynpro fields data: g_objecttype(20) type c, g_new_resolution like stxbitmaps-resolution, g_stxbitmaps type stxbitmaps, g_stxh type stxh, g_techinfo type rsscg, t_size(40), bds_description like bapisignat-prop_value. CONSTANTS: c_true TYPE char1 VALUE 'X', c_false TYPE char1 VALUE space. TYPES: sbdst_logical_system LIKE bapibds01-log_system, sbdst_classname LIKE bapibds01-classname, sbdst_classtype LIKE bapibds01-classtype, sbdst_client LIKE bapibds01-client, sbdst_object_key LIKE bapibds01-objkey, sbdst_doc_id LIKE bapibds01-doc_id, sbdst_doc_ver_no LIKE bapibds01-doc_ver_no, sbdst_doc_var_id LIKE bapibds01-doc_var_id, sbdst_doc_var_tg LIKE bapibds01-doc_var_tg, sbdst_new_var_tg LIKE bapibds01-doc_var_tg, sbdst_url LIKE bapibds01-uri, sbdst_url_lifetime LIKE bapibds01-uri_life, sbdst_x LIKE bapibds01-x, sbdst_binary_flag LIKE bapibds01-x, sbdst_mimetype LIKE bapibds01-mimetype. CONSTANTS: c_stdtext LIKE thead-tdobject VALUE 'TEXT', c_graphics LIKE thead-tdobject VALUE 'GRAPHICS', c_bmon LIKE thead-tdid VALUE 'BMON', c_bcol LIKE thead-tdid VALUE 'BCOL'. CONSTANTS: c_bds_classname TYPE sbdst_classname VALUE 'DEVC_STXD_BITMAP', c_bds_classtype TYPE sbdst_classtype VALUE 'OT', " others c_bds_mimetype TYPE bds_mimetp VALUE 'application/octet-stream', c_bds_original TYPE sbdst_doc_var_tg VALUE 'OR'. y la función: FUNCTION ZSUBIR_IMAGEN . *"---------------------------------------------------------------------- *"*"Interfase local *" IMPORTING *" REFERENCE(GI_FILENAME) TYPE RLGRAP-FILENAME DEFAULT *" 'C:\mapa1.bmp' *" REFERENCE(GI_NAME) TYPE STXBITMAPS-TDNAME DEFAULT 'MAPA37' *" REFERENCE(GI_OBJECT) TYPE STXBITMAPS-TDOBJECT DEFAULT *" 'GRAPHICS' *" REFERENCE(GI_ID) TYPE STXBITMAPS-TDID DEFAULT 'BMAP' *" REFERENCE(GI_BTYPE) TYPE STXBITMAPS-TDBTYPE DEFAULT 'BCOL' *" REFERENCE(GI_TITLE) TYPE BAPISIGNAT-PROP_VALUE DEFAULT 'TITULO' *" REFERENCE(GI_RESIDENT) TYPE STXBITMAPS-RESIDENT DEFAULT SPACE *" REFERENCE(GI_AUTOHEIGHT) TYPE STXBITMAPS-AUTOHEIGHT DEFAULT 'X' *" REFERENCE(GI_BMCOMP) TYPE STXBITMAPS-BMCOMP DEFAULT 'X' *" CHANGING *" REFERENCE(GI_RESOLUTION) TYPE STXBITMAPS-RESOLUTION DEFAULT *" '000' *"---------------------------------------------------------------------- TABLES: stxbitmaps. FIELD-SYMBOLS <l>. DATA: l_extension TYPE rlgrap-filename, l_len TYPE i, l_question(400), l_answer(1), l_docid TYPE stxbitmaps-docid. * SELECT SINGLE * FROM stxbitmaps WHERE tdobject = gi_object * AND tdname = gi_name * AND tdid = gi_id * AND tdbtype = gi_btype. * IF sy-subrc = 0. * l_docid = stxbitmaps-docid. * l_question = text-q01. * l_len = STRLEN( gi_name ). * ASSIGN gi_name(l_len) TO <l>. * REPLACE '&1' WITH <l> INTO l_question. * CONCATENATE l_question text-q02 INTO l_question. * CALL FUNCTION 'POPUP_TO_CONFIRM' * EXPORTING * titlebar = text-t01 * text_question = l_question * text_button_1 = 'Ja'(006) * icon_button_1 = ' ' * text_button_2 = 'Nein'(007) * icon_button_2 = ' ' * default_button = '1' * IMPORTING * answer = l_answer. * IF l_answer = 'A'. * SET SCREEN sy-dynnr. * LEAVE SCREEN. * ELSEIF l_answer = '2'. * SET SCREEN 0. * LEAVE SCREEN. * ENDIF. * ELSE. * CLEAR l_docid. * ENDIF. PERFORM get_extension USING gi_filename CHANGING l_extension. TRANSLATE l_extension TO UPPER CASE. "#EC TRANSLANG CASE l_extension. WHEN 'TIF' OR 'TIFF' OR 'BMP'. PERFORM import_bitmap_bds USING gi_filename gi_name gi_object gi_id gi_btype l_extension gi_title gi_resident gi_autoheight gi_bmcomp CHANGING l_docid gi_resolution. WHEN OTHERS. * message e857 with gi_filename. ENDCASE. ENDFUNCTION. *&---------------------------------------------------------------------* *& Form import_bitmap_bds *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_FILENAME text * -->P_NAME text * -->P_OBJECT text * -->P_ID text * -->P_BTYPE text * -->P_FORMAT text * -->P_TITLE text * -->P_RESIDENT text * -->P_AUTOHEIGHT text * -->P_BMCOMP text * -->P_DOCID text * -->P_RESOLUTION text *----------------------------------------------------------------------* FORM import_bitmap_bds USING p_filename TYPE rlgrap-filename p_name TYPE stxbitmaps-tdname p_object TYPE stxbitmaps-tdobject p_id TYPE stxbitmaps-tdid p_btype TYPE stxbitmaps-tdbtype p_format TYPE c p_title LIKE bapisignat-prop_value p_resident TYPE stxbitmaps-resident p_autoheight TYPE stxbitmaps-autoheight p_bmcomp TYPE stxbitmaps-bmcomp CHANGING p_docid TYPE stxbitmaps-docid p_resolution TYPE stxbitmaps-resolution. DATA: l_object_key TYPE sbdst_object_key. DATA: l_tab TYPE ddobjname. DATA: BEGIN OF l_bitmap OCCURS 0, l(64) TYPE x, END OF l_bitmap. DATA: l_filename TYPE string, l_bytecount TYPE i, l_bds_bytecount TYPE i. DATA: l_color(1) TYPE c, l_width_tw TYPE stxbitmaps-widthtw, l_height_tw TYPE stxbitmaps-heighttw, l_width_pix TYPE stxbitmaps-widthpix, l_height_pix TYPE stxbitmaps-heightpix. DATA: l_bds_object TYPE REF TO cl_bds_document_set, l_bds_content TYPE sbdst_content, l_bds_components TYPE sbdst_components, wa_bds_components TYPE LINE OF sbdst_components, l_bds_signature TYPE sbdst_signature, wa_bds_signature TYPE LINE OF sbdst_signature, l_bds_properties TYPE sbdst_properties, wa_bds_properties TYPE LINE OF sbdst_properties. DATA wa_stxbitmaps TYPE stxbitmaps. * Enqueue PERFORM enqueue_graphic USING p_object p_name p_id p_btype. * File transfer l_filename = p_filename. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = l_filename filetype = 'BIN' IMPORTING filelength = l_bytecount TABLES data_tab = l_bitmap EXCEPTIONS file_open_error = 2 file_read_error = 3 no_batch = 1 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 OTHERS = 17. CASE sy-subrc. WHEN 0. WHEN 2. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e811 with p_filename. WHEN 3. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e812 with p_filename. WHEN OTHERS. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e813 with p_filename. ENDCASE. IF p_btype = c_bmon. l_color = c_false. ELSE. l_color = c_true. ENDIF. * Bitmap conversion CALL FUNCTION 'SAPSCRIPT_CONVERT_BITMAP_BDS' EXPORTING color = l_color format = p_format resident = p_resident bitmap_bytecount = l_bytecount compress_bitmap = p_bmcomp IMPORTING width_tw = l_width_tw height_tw = l_height_tw width_pix = l_width_pix height_pix = l_height_pix dpi = p_resolution bds_bytecount = l_bds_bytecount TABLES bitmap_file = l_bitmap bitmap_file_bds = l_bds_content EXCEPTIONS format_not_supported = 1 no_bmp_file = 2 bmperr_invalid_format = 3 bmperr_no_colortable = 4 bmperr_unsup_compression = 5 bmperr_corrupt_rle_data = 6 OTHERS = 7. IF sy-subrc <> 0. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING conversion_failed. ENDIF. * Save bitmap in BDS CREATE OBJECT l_bds_object. wa_bds_components-doc_count = '1'. wa_bds_components-comp_count = '1'. wa_bds_components-mimetype = c_bds_mimetype. wa_bds_components-comp_size = l_bds_bytecount. APPEND wa_bds_components TO l_bds_components. IF p_docid IS INITIAL. " graphic is new wa_bds_signature-doc_count = '1'. APPEND wa_bds_signature TO l_bds_signature. CALL METHOD l_bds_object->create_with_table EXPORTING classname = c_bds_classname classtype = c_bds_classtype components = l_bds_components content = l_bds_content CHANGING signature = l_bds_signature object_key = l_object_key EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e285 with p_name 'BDS'. ENDIF. READ TABLE l_bds_signature INDEX 1 INTO wa_bds_signature TRANSPORTING doc_id. IF sy-subrc = 0. p_docid = wa_bds_signature-doc_id. ELSE. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e285 with p_name 'BDS'. ENDIF. ELSE. " graphic already exists ********* read object_key for faster access ***** CLEAR l_object_key. SELECT SINGLE * FROM stxbitmaps INTO wa_stxbitmaps WHERE tdobject = p_object AND tdid = p_id AND tdname = p_name AND tdbtype = p_btype. SELECT SINGLE tabname FROM bds_locl INTO l_tab WHERE classname = c_bds_classname AND classtype = c_bds_classtype. IF sy-subrc = 0. SELECT SINGLE object_key FROM (l_tab) INTO l_object_key WHERE loio_id = wa_stxbitmaps-docid+10(32) AND classname = c_bds_classname AND classtype = c_bds_classtype. ENDIF. ******** read object_key end ******************** CALL METHOD l_bds_object->update_with_table EXPORTING classname = c_bds_classname classtype = c_bds_classtype object_key = l_object_key doc_id = p_docid doc_ver_no = '1' doc_var_id = '1' CHANGING components = l_bds_components content = l_bds_content EXCEPTIONS nothing_found = 1 OTHERS = 2. IF sy-subrc = 1. " inconsistency STXBITMAPS - BDS; repeat check in wa_bds_signature-doc_count = '1'. APPEND wa_bds_signature TO l_bds_signature. CALL METHOD l_bds_object->create_with_table EXPORTING classname = c_bds_classname classtype = c_bds_classtype components = l_bds_components content = l_bds_content CHANGING signature = l_bds_signature object_key = l_object_key EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e285 with p_name 'BDS'. ENDIF. READ TABLE l_bds_signature INDEX 1 INTO wa_bds_signature TRANSPORTING doc_id. IF sy-subrc = 0. p_docid = wa_bds_signature-doc_id. ELSE. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e285 with p_name 'BDS'. ENDIF. ELSEIF sy-subrc = 2. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. * message e285 with p_name 'BDS'. ENDIF. ENDIF. * Save bitmap header in STXBITPMAPS wa_stxbitmaps-tdname = p_name. wa_stxbitmaps-tdobject = p_object. wa_stxbitmaps-tdid = p_id. wa_stxbitmaps-tdbtype = p_btype. wa_stxbitmaps-docid = p_docid. wa_stxbitmaps-widthpix = l_width_pix. wa_stxbitmaps-heightpix = l_height_pix. wa_stxbitmaps-widthtw = l_width_tw. wa_stxbitmaps-heighttw = l_height_tw. wa_stxbitmaps-resolution = p_resolution. wa_stxbitmaps-resident = p_resident. wa_stxbitmaps-autoheight = p_autoheight. wa_stxbitmaps-bmcomp = p_bmcomp. INSERT INTO stxbitmaps VALUES wa_stxbitmaps. IF sy-subrc <> 0. UPDATE stxbitmaps FROM wa_stxbitmaps. IF sy-subrc <> 0. * message e285 with p_name 'STXBITMAPS'. ENDIF. ENDIF. * Set description in BDS attributes wa_bds_properties-prop_name = 'DESCRIPTION'. wa_bds_properties-prop_value = p_title. APPEND wa_bds_properties TO l_bds_properties. CALL METHOD l_bds_object->change_properties EXPORTING classname = c_bds_classname classtype = c_bds_classtype object_key = l_object_key doc_id = p_docid doc_ver_no = '1' doc_var_id = '1' CHANGING properties = l_bds_properties EXCEPTIONS OTHERS = 1. PERFORM dequeue_graphic USING p_object p_name p_id p_btype. ENDFORM. "import_bitmap_bds *&---------------------------------------------------------------------* *& Form dequeue_graphic *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_OBJECT text * -->P_NAME text * -->P_ID text * -->P_BTYPE text *----------------------------------------------------------------------* FORM dequeue_graphic USING p_object p_name p_id p_btype. CALL FUNCTION 'DEQUEUE_ESSGRABDS' EXPORTING * MODE_STXBITMAPS = 'E' * X_TDOBJECT = ' ' * X_TDNAME = ' ' * X_TDID = ' ' * X_TDBTYPE = ' ' * _SCOPE = '3' * _SYNCHRON = ' ' * _COLLECT = ' ' tdobject = p_object tdname = p_name tdid = p_id tdbtype = p_btype. ENDFORM. "dequeue_graphic *&---------------------------------------------------------------------* *& Form enqueue_graphic *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_OBJECT text * -->P_NAME text * -->P_ID text * -->P_BTYPE text *----------------------------------------------------------------------* FORM enqueue_graphic USING p_object p_name p_id p_btype. CALL FUNCTION 'ENQUEUE_ESSGRABDS' EXPORTING * MODE_STXBITMAPS = 'E' tdobject = p_object tdname = p_name tdid = p_id tdbtype = p_btype * X_TDOBJECT = ' ' * X_TDNAME = ' ' * X_TDID = ' ' * X_TDBTYPE = ' ' * _SCOPE = '2' * _WAIT = ' ' * _COLLECT = ' ' EXCEPTIONS foreign_lock = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING enqueue_failed. ENDIF. ENDFORM. "enqueue_graphic *&---------------------------------------------------------------------* *& Form GET_EXTENSION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_FILENAME text * -->P_EXTENSION text *----------------------------------------------------------------------* FORM get_extension USING p_filename TYPE rlgrap-filename CHANGING p_extension TYPE rlgrap-filename. FIELD-SYMBOLS: <help1>, <help2>. DATA: var1 TYPE i, var2 TYPE i, l_filename TYPE rlgrap-filename. l_filename = p_filename. var1 = STRLEN( l_filename ). IF var1 = 0. CLEAR p_extension. EXIT. ENDIF. ASSIGN l_filename(var1) TO <help2>. SUBTRACT 1 FROM var1. ASSIGN <help2>+var1(1) TO <help1>. DO. IF sy-index > var1. SHIFT <help2> RIGHT CIRCULAR. var2 = sy-index. EXIT. ENDIF. IF <help1> = '.'. var2 = sy-index - 1. EXIT. ENDIF. SHIFT <help2> RIGHT CIRCULAR. ENDDO. WRITE <help2> TO p_extension(var2). ENDFORM. " GET_EXTENSION |
#6
|
|||
|
|||
Me ha venido genial!!!!
Muchisimas gracias por el pedazo de aporte. Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|