#1
|
|||
|
|||
Adjuntar anexo en factura
Buenas, tengo el siguiente método para adjuntar un anexo en un documento (es una ZZ).
METHOD adjuntar_annexos_gefact. DATA: l_subrc TYPE sysubrc, l_objkey TYPE swo_typeid, l_id_extern TYPE zgf_gefact_id, lcl_efactura TYPE REF TO zgf_cl_ws_efactura, lr_message TYPE bapireturn1, lr_posicion TYPE zfit_058, lr_id_annex TYPE zgf_r_annex_ws, li_id_annex TYPE zgf_t_annex_ws, lr_folder_id TYPE sofdk, l_obj_data TYPE sood1, l_obj_id TYPE soodk, lr_document_id TYPE sofmk, li_objcont TYPE STANDARD TABLE OF soli, li_objhead TYPE STANDARD TABLE OF soli, lr_boridcomment TYPE borident, lr_boridproject TYPE borident, lo_obj_sofm_key TYPE sofmk, * lo_obj_sofm TYPE swc0_object, lo_obj_sofm TYPE swc_object, l_index TYPE n, l_id_annex_est TYPE zgf_gefact_id. * Creem l'objecte per la clase de missatges IF ps_mensajes IS NOT BOUND. CREATE OBJECT ps_mensajes. ENDIF. CALL METHOD me->get_id_gefact IMPORTING ps_id_gefact_extern = l_id_extern. LOOP AT me->posicions INTO lr_posicion WHERE estat_reg = zfi_cl_preregistre_fac=>estat_pos_conformada. CONCATENATE lr_posicion-bukrs_zz lr_posicion-belnr_zz lr_posicion-gjahr_zz INTO l_objkey. CREATE OBJECT lcl_efactura. CALL METHOD lcl_efactura->ws_obtenir_annex_pendents EXPORTING * pe_centre_receptor = pe_id_gefact = l_id_extern IMPORTING ps_msg = lr_message ts_annexos = li_id_annex[]. IF lr_message IS INITIAL. swc_container container. * swc0_create_container container. CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET' EXPORTING region = 'B' IMPORTING folder_id = lr_folder_id EXCEPTIONS OTHERS = 1. LOOP AT li_id_annex INTO lr_id_annex. CLEAR l_obj_data. l_index = sy-index. CALL FUNCTION 'ZGF_F_WF_GENERAR_ANNEX' EXPORTING pe_id_annex = lr_id_annex-id_annex TABLES ts_soli = li_objcont. IF sy-subrc = 0. CONCATENATE 'annex' l_index l_objkey INTO l_obj_data-objdes SEPARATED BY '_'. l_obj_data-file_ext = lr_id_annex-extensio. l_obj_data-objnam = 'SOFM'. l_obj_data-objla = sy-langu. l_obj_data-objlen = LINES( li_objcont ) * 255. CALL FUNCTION 'SO_OBJECT_INSERT' EXPORTING folder_id = lr_folder_id object_type = 'EXT' object_hd_change = l_obj_data IMPORTING object_id = l_obj_id TABLES objhead = li_objhead objcont = li_objcont EXCEPTIONS active_user_not_exist = 1 communication_failure = 2 component_not_available = 3 dl_name_exist = 4 folder_not_exist = 5 folder_no_authorization = 6 object_type_not_exist = 7 operation_no_authorization = 8 owner_not_exist = 9 parameter_error = 10 substitute_not_active = 11 substitute_not_defined = 12 system_failure = 13 x_error = 14 OTHERS = 15. IF sy-subrc = 0. COMMIT WORK AND WAIT. IF sy-subrc = 0. lr_document_id-foltp = lr_folder_id-foltp. lr_document_id-folyr = lr_folder_id-folyr. lr_document_id-folno = lr_folder_id-folno. lr_document_id-doctp = l_obj_id-objtp. lr_document_id-docyr = l_obj_id-objyr. lr_document_id-docno = l_obj_id-objno. ENDIF. * swc0_create_object lo_obj_sofm 'SOFM' lr_document_id. swc_create_object lo_obj_sofm 'SOFM' lr_document_id. IF sy-subrc = 0. * swc0_get_object_key lo_obj_sofm lo_obj_sofm_key. swc_get_object_key lo_obj_sofm lo_obj_sofm_key. lr_boridcomment-objkey = lo_obj_sofm_key. lr_boridcomment-objtype = 'MESSAGE'. MOVE zfi_cl_preregistre_fac=>gefact_adjunt_objtyp TO lr_boridproject. lr_boridproject-objtype = zfi_cl_preregistre_fac=>gefact_adjunt_objtyp. CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT' EXPORTING obj_rolea = lr_boridproject obj_roleb = lr_boridcomment relationtype = 'ATTA' EXCEPTIONS no_model = 1 internal_error = 2 unknown = 3 OTHERS = 4. IF sy-subrc = 0. COMMIT WORK AND WAIT. ELSE. * No s'han pogut annexar els fitxers. ENDIF. ELSE. * No s'han pogut annexar els fitxers. ENDIF. ELSE. * No s'han pogut annexar els fitxers. ENDIF. ELSE. ps_subrc = 1. CALL METHOD ps_mensajes->insertar_mensaje EXPORTING pe_tipo_msg = zfg_cl_mensajes=>tipo_mensaje_sap pe_type = lr_message-type pe_id = lr_message-id pe_number = lr_message-number pe_message_v1 = lr_message-message_v1 pe_message_v2 = lr_message-message_v2 pe_message_v3 = lr_message-message_v3 pe_message_v4 = lr_message-message_v4. ENDIF. ENDLOOP. ELSE. ps_subrc = 1. CALL METHOD ps_mensajes->insertar_mensaje EXPORTING pe_tipo_msg = zfg_cl_mensajes=>tipo_mensaje_sap pe_type = lr_message-type pe_id = lr_message-id pe_number = lr_message-number pe_message_v1 = lr_message-message_v1 pe_message_v2 = lr_message-message_v2 pe_message_v3 = lr_message-message_v3 pe_message_v4 = lr_message-message_v4. ENDIF. ENDLOOP. ENDMETHOD. Este código funciona perfectamente en una función, pero necesitábamos pasarlo a un método. La única diferencia respecto a la funcion es el siguiente include: INCLUDE <cntn01>. Este include no esta permitido en un método y en internet encontré estos dos para suplirlo, <CNTN02> and <CNTN03>. Aun así no me funciona, me recupera el anexo y parece que lo inserta pero luego no hace nada. Alguna sugerencia? |
Herramientas | Buscar en Tema |
Desplegado | |
|
|