Bapi_0050_create

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • camaron
    Junior Member
    • jul
    • 14

    #1

    Bapi_0050_create

    Hola muchachos:
    Aca les dejo un reporte para la ceacion de documentos de presupuestacion transaccion FMBB utilizando la BAPI_0050_CREATE, por si a alguien le interesa
    REPORT zfm_in_modif_presupuestaria.
    INCLUDE zfm_in_modif_presup_top.
    INCLUDE zfm_in_modif_presup_rut.
    *----------------------------------------------------------------------*
    * AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_dir.
    *----------------------------------------------------------------------*
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_dir.
    CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
    window_title = 'Modificacion Presupuestaria'
    CHANGING
    file_table = it_filetable
    rc = l_rc
    EXCEPTIONS
    file_open_dialog_failed = 1
    cntl_error = 2
    error_no_gui = 3
    not_supported_by_gui = 4
    OTHERS = 5.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    READ TABLE it_filetable INDEX 1 INTO l_filename.
    pa_dir = l_filename.
    *----------------------------------------------------------------------*
    * INICIO
    *----------------------------------------------------------------------*
    START-OF-SELECTION.
    PERFORM get_data.
    IF l_popup_value EQ 1.
    PERFORM input_data.
    ENDIF.
    END-OF-SELECTION.
    *&---------------------------------------------------------------------*
    * TOP
    *&---------------------------------------------------------------------*
    TYPES: BEGIN OF e_data, "Estructura de la Plantilla
    movimiento(10) TYPE c,
    process_ui TYPE buku_process_ui, "Proceso
    budcat TYPE buku_budcat, "Cat. Presupuesto
    doctype TYPE bued_doctype, "Clase de Documento
    version TYPE buku_version, "Version
    docdate(10) TYPE c, "Fecha del Documento
    * docdate TYPE bp_bldat, "Fecha del Documento
    sfiscyear TYPE gjahr, "Ejercicio
    sbudtype TYPE buku_budtype, "Clase de Presupuesto
    rperiod TYPE buku_period, "Periodo Destinatario
    speriod TYPE buku_period, "Periodo
    item_text TYPE sgtxt, "Textoç
    fund TYPE bp_geber, "Fondos
    funcarea TYPE fm_farea, "Area Funcional
    fundsctr TYPE fistl, "Centro Gestor
    cmmtitem TYPE fm_fipex, "Posicion Presupuestaria
    docstate TYPE bued_docstate, "Signo XXXXXXX
    amount TYPE bapicurr_d, "Importe
    END OF e_data.
    TYPES: BEGIN OF i_data,
    fm_area TYPE fikrs,
    version TYPE buku_version,
    docdate(10) TYPE c,
    pstng_date TYPE budat,
    doctype TYPE bued_doctype,
    docstate TYPE bued_docstate,
    process TYPE buku_process_ui,
    external_number TYPE bued_ext_docnr,
    END OF i_data.
    DATA: it_datatable TYPE STANDARD TABLE OF e_data,
    wa_data TYPE e_data,
    * wa_header_data TYPE bapi_0050_header,
    i_data type STANDARD TABLE OF bapi_0050_header,
    wa_header_data TYPE BAPI_0050_HEADER, "i_data,
    wa_header_data_add TYPE bapi_0050_header_add,
    l_total_records TYPE string,
    it_return2 TYPE bapiret2,
    wa_return TYPE bapiret2,
    it_return TYPE STANDARD TABLE OF bapiret2,
    ti_return TYPE STANDARD TABLE OF bapiret2,
    it_period_data TYPE STANDARD TABLE OF bapi_0050_period,
    wa_period_data TYPE bapi_0050_period,
    it_sender_item_data TYPE STANDARD TABLE OF bapi_0050_item,
    wa_sender_item_data TYPE bapi_0050_item,
    it_sender_period_data TYPE STANDARD TABLE OF bapi_0050_period,
    wa_sender_period_data TYPE bapi_0050_period,
    it_item_data TYPE STANDARD TABLE OF bapi_0050_item,
    wa_item_data TYPE bapi_0050_item,
    ti_long TYPE STANDARD TABLE OF bapi_0050_longtext,
    wa_long TYPE bapi_0050_longtext,
    ti_ext TYPE STANDARD TABLE OF bapiparex,
    wa_ext TYPE bapiparex,
    l_current_record TYPE i,
    l_text_popup TYPE string,
    l_popup_value TYPE c,
    it_filetable TYPE filetable,
    l_rc TYPE i,
    l_current_record_s TYPE string,
    l_filename TYPE string.
    * Tabla de resultados
    DATA: it_messages TYPE STANDARD TABLE OF bdcmsgcoll,
    wa_messages TYPE bdcmsgcoll,
    it_mjes_aux TYPE STANDARD TABLE OF bdcmsgcoll.

    DATA: contador1 TYPE i.
    DATA: v_new TYPE c,
    v_end TYPE c.
    ************************************************** **********************
    * CONSTANTS *
    ************************************************** **********************
    CONSTANTS: t_code TYPE sy-tcode VALUE 'FMBB'. "Codigo de Transaccion
    *----------------------------------------------------------------------*
    * SCREEN
    *----------------------------------------------------------------------*
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: pa_dir(1024) TYPE c OBLIGATORY,
    p_test AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK b1.
    *&---------------------------------------------------------------------*
    *& Form GET_DATA
    *&---------------------------------------------------------------------*
    FORM get_data .
    IF l_filename IS INITIAL AND pa_dir IS NOT INITIAL.
    l_filename = pa_dir.
    ENDIF.
    * Cargar Archivo Plano a la Tabla Interna
    CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
    filename = l_filename
    filetype = 'ASC'
    has_field_separator = 'X'
    read_by_line = 'X'
    CHANGING
    data_tab = it_datatable
    EXCEPTIONS
    file_open_error = 1
    file_read_error = 2
    no_batch = 3
    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
    not_supported_by_gui = 17
    error_no_gui = 18
    OTHERS = 19.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    * Obtener el No. de rergistros a cargar
    DESCRIBE TABLE it_datatable LINES l_total_records.
    CONCATENATE 'Se cargarán'
    l_total_records
    'registros en el mandante'
    sy-mandt
    '.'
    'Desea Continuar?'
    INTO l_text_popup SEPARATED BY space.
    *Mostrar Dialogo de Confirmacion
    CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
    titlebar = 'Confirmación'
    text_question = l_text_popup
    IMPORTING
    answer = l_popup_value
    EXCEPTIONS
    text_not_found = 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.
    ENDIF.
    ENDFORM. " GET_DATA

    *&---------------------------------------------------------------------*
    *& Form INPUT_DATA
    *&---------------------------------------------------------------------*
    FORM input_data .
    DATA: v_item(6) TYPE n.
    * break hbravo.
    LOOP AT it_datatable INTO wa_data.
    AT NEW doctype.
    CLEAR: v_item.
    CLEAR: wa_header_data.
    CLEAR: it_item_data, it_item_data.
    REFRESH: it_item_data, it_sender_item_data.
    v_new = 'X'.
    ENDAT.
    IF v_new EQ 'X'.
    wa_header_data-fm_area = ' '.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
    input = wa_data-version
    IMPORTING
    output = wa_header_data-version.
    CONCATENATE wa_data-docdate+6(4)
    wa_data-docdate+3(2)
    wa_data-docdate(2) into
    wa_header_data-docdate. "Fecha de documento
    wa_header_data-doctype = wa_data-doctype. "Clase documento de entrada presup.
    wa_header_data-docstate = '1'.
    wa_header_data-process = wa_data-process_ui. "Proceso presupuestación
    ENDIF.
    CLEAR: v_new.
    AT END OF doctype.
    v_end = 'X'.
    ENDAT.
    CLEAR: ti_return. REFRESH: ti_return.
    ADD 1 TO v_item.
    IF wa_data-docstate EQ '-'.
    CLEAR: wa_item_data.
    wa_item_data-item_num = v_item. "Línea documento en documento entrada presupuesto
    wa_item_data-fisc_year = wa_data-sfiscyear. "Ejercicio
    wa_item_data-budcat = wa_data-budcat. "Categoría de presupuesto
    wa_item_data-budtype = wa_data-sbudtype. "Clase de presupuesto
    wa_item_data-fund = wa_data-fund. "Fondo
    wa_item_data-funds_ctr = wa_data-fundsctr. "Centro gestor
    wa_item_data-cmmt_item = wa_data-cmmtitem. "Posición presupuestaria
    wa_item_data-func_area = wa_data-funcarea. "Área funcional
    wa_item_data-trans_curr = 'USD'.
    wa_item_data-total_amount = wa_data-amount. "Importe
    wa_item_data-item_text = wa_data-item_text.
    wa_item_data-valtype = 'B1'.
    wa_item_data-distkey = '0'.
    APPEND wa_item_data TO it_item_data.
    ELSE.
    CLEAR: wa_sender_item_data.
    wa_sender_item_data-item_num = v_item. "Línea documento en documento entrada presupuesto
    wa_sender_item_data-fisc_year = wa_data-sfiscyear. "Ejercicio
    wa_sender_item_data-budcat = wa_data-budcat. "Categoría de presupuesto
    wa_sender_item_data-budtype = wa_data-sbudtype. "Clase de presupuesto
    wa_sender_item_data-fund = wa_data-fund. "Fondo
    wa_sender_item_data-funds_ctr = wa_data-fundsctr. "Centro gestor
    wa_sender_item_data-cmmt_item = wa_data-cmmtitem. "Posición presupuestaria
    wa_sender_item_data-func_area = wa_data-funcarea. "Área funcional
    wa_sender_item_data-trans_curr = 'USD'.
    wa_sender_item_data-total_amount = wa_data-amount. "Importe
    wa_sender_item_data-item_text = wa_data-item_text.
    wa_sender_item_data-valtype = 'B1'.
    wa_sender_item_data-distkey = '0'.
    APPEND wa_sender_item_data TO it_sender_item_data.
    ENDIF.
    IF v_end EQ 'X'.
    CLEAR: ti_return. REFRESH: ti_return.

    CALL FUNCTION 'BAPI_0050_CREATE'
    EXPORTING
    language = sy-langu
    header_data = wa_header_data
    header_data_add = wa_header_data_add
    testrun = p_test
    TABLES
    item_data = it_item_data
    sender_item_data = it_sender_item_data
    period_data = it_period_data
    sender_period_data = it_sender_period_data
    long_text = ti_long
    extension_in = ti_ext
    return = ti_return.
    LOOP AT ti_return INTO wa_return.
    wa_messages-msgtyp = wa_return-type.
    wa_messages-msgspra = sy-langu.
    wa_messages-msgid = wa_return-id.
    wa_messages-msgnr = wa_return-number.
    wa_messages-msgv1 = wa_return-message_v1.
    wa_messages-msgv2 = wa_return-message_v2.
    wa_messages-msgv3 = wa_return-message_v3.
    wa_messages-msgv4 = wa_return-message_v4.
    APPEND wa_messages TO it_messages.
    ENDLOOP.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    wait = 'X'
    IMPORTING
    return = it_return2.
    ENDIF.
    CLEAR: v_end.
    ENDLOOP.
    * MOSTRAR RESULTADOS
    CALL FUNCTION 'ZDEFU_BDC_SHOW_RESULTS_ALV'
    EXPORTING
    progn = sy-repid
    tcode = sy-tcode
    filep = l_filename
    regsp = l_current_record_s
    TABLES
    it_messages = it_messages.
    ENDFORM. " INPUT_DATA


    Saludo2
  • tita87
    Junior Member
    • oct
    • 3

    #2
    Error

    Hola Oie Fijate Qu Eme Manda Un Error Ya Que Entra A La Funcion De La Creacion.. No Se Que Es Lo Que Pasa

    Comentario

    Trabajando...