Batch input

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Carlitros36
    Member
    • ago
    • 32

    #1

    Batch input

    Hola tengo este batch input:

    report ZDAGO_VL02
    no standard page heading line-size 255.

    include bdcrecx1.

    parameters: dataset(132) lower case.
    *** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
    *
    * If it is nessesary to change the data section use the rules:
    * 1.) Each definition of a field exists of two lines
    * 2.) The first line shows exactly the comment
    * '* data element: ' followed with the data element
    * which describes the field.
    * If you don't have a data element use the
    * comment without a data element name
    * 3.) The second line shows the fieldname of the
    * structure, the fieldname must consist of
    * a fieldname and optional the character '_' and
    * three numbers and the field length in brackets
    * 4.) Each field must be type C.
    *
    *** Generated data section with specific formatting - DO NOT CHANGE ***
    data: begin of record,
    * data element: VBELN_VL
    VBELN_001(025),
    * data element: BLDAT
    BLDAT_002(010),
    * data element: WADAK
    WADAT_003(010),
    * data element: WAUHR
    WAUHR_004(008),
    * data element: GSGEW
    BTGEW_005(019),
    * data element: GEWEI
    GEWEI_006(003),
    * data element: ANZPK
    ANZPK_007(005),
    * data element: BLDAT
    BLDAT_008(010),
    * data element: WADAK
    WADAT_009(010),
    * data element: WAUHR
    WAUHR_010(008),
    * data element: GSGEW
    BTGEW_011(019),
    * data element: GEWEI
    GEWEI_012(003),
    * data element: ANZPK
    ANZPK_013(005),
    end of record.

    *** End generated data section ***

    start-of-selection.

    perform open_dataset using dataset.
    perform open_group.

    do.

    read dataset dataset into record.
    if sy-subrc <> 0. exit. endif.

    perform bdc_dynpro using 'SAPMV50A' '4004'.
    perform bdc_field using 'BDC_CURSOR'
    'LIKP-VBELN'.
    perform bdc_field using 'BDC_OKCODE'
    '/00'.
    perform bdc_field using 'LIKP-VBELN'
    record-VBELN_001.
    perform bdc_dynpro using 'SAPMV50A' '1000'.
    perform bdc_field using 'BDC_OKCODE'
    '/00'.
    perform bdc_field using 'LIKP-BLDAT'
    record-BLDAT_002.
    perform bdc_field using 'BDC_CURSOR'
    'LIKP-ANZPK'.
    perform bdc_field using 'LIKP-WADAT'
    record-WADAT_003.
    perform bdc_field using 'LIKP-WAUHR'
    record-WAUHR_004.
    perform bdc_field using 'LIKP-BTGEW'
    record-BTGEW_005.
    perform bdc_field using 'LIKP-GEWEI'
    record-GEWEI_006.
    perform bdc_field using 'LIKP-ANZPK'
    record-ANZPK_007.
    perform bdc_dynpro using 'SAPMV50A' '1000'.
    perform bdc_field using 'BDC_OKCODE'
    '=SICH_T'.
    perform bdc_field using 'LIKP-BLDAT'
    record-BLDAT_008.
    perform bdc_field using 'BDC_CURSOR'
    'LIPS-MATNR(02)'.
    perform bdc_field using 'LIKP-WADAT'
    record-WADAT_009.
    perform bdc_field using 'LIKP-WAUHR'
    record-WAUHR_010.
    perform bdc_field using 'LIKP-BTGEW'
    record-BTGEW_011.
    perform bdc_field using 'LIKP-GEWEI'
    record-GEWEI_012.
    perform bdc_field using 'LIKP-ANZPK'
    record-ANZPK_013.
    perform bdc_transaction using 'VL02N'.

    enddo.

    perform close_group.
    perform close_dataset using dataset.

    Debo hacer un programa que mediante 2 parametros:
    p_guia like likp-vbeln.
    p_bultos like likp-anzpk.

    modifique esos valores usando esa transaccion antrior de batch input, que hice cree un nuevo programa agregue esos parámetros y copie ese mismo programa, no se si ma falta algo mas porque no me ejecuta bien, alguien me podria ayudar por favor?...
  • diegogui
    Member
    • dic
    • 33

    #2
    Declariones para que funcione el batch input
    * Estructuratye_mensaje TYPE bdcmsgcoll.
    * TABLAS INTERNASTYPES tyt_mensaje TYPE STANDARD TABLE OF tye_mensaje,
    tyt_bdcdata TYPE STANDARD TABLE OF bdcdata,
    * TABLAS INTERNASDATA: gt_mensaje TYPE tyt_mensaje, " se muestra mensajes de error
    gt_bdcdata TYPE tyt_bdcdata, " Se graba las grabaciones

    FORM f_batch_input (se pasan los valores necesarios).

    DATA: lv_trans TYPE char4 VALUE 'FB03'.

    * Diferentes pantallas

    PERFORM f_fill_bdcdata USING:
    'X' 'SAPMF05L' '0100',
    ' ' 'BDC_CURSOR' 'RF05L-GJAHR',
    ' ' 'BDC_OKCODE' '/00',
    ' ' 'RF05L-BELNR' pvi_documento,
    ' ' 'RF05L-BUKRS' pvi_sociedad,
    ' ' 'RF05L-GJAHR' ' '.


    * Se ejecuta el proceso por cada documento
    PERFORM f_call_transaction USING gt_bdcdata
    lv_trans
    CHANGING gt_mensaje.
    CLEAR gt_bdcdata.

    ENDFORM. "f_ba_contable

    FORM f_fill_bdcdata USING pvi_dynbegin TYPE c
    pvi_name TYPE c
    pvi_value TYPE c.

    DATA: le_bdcdata TYPE bdcdata.
    * "X" Indica si es una pantalla
    IF pvi_dynbegin = 'X'.
    CLEAR le_bdcdata.
    le_bdcdata-program = pvi_name.
    le_bdcdata-dynpro = pvi_value .
    le_bdcdata-dynbegin = pvi_dynbegin.
    APPEND le_bdcdata TO gt_bdcdata.
    ELSE.
    CLEAR le_bdcdata.
    le_bdcdata-fnam = pvi_name.
    le_bdcdata-fval = pvi_value.
    APPEND le_bdcdata TO gt_bdcdata.
    ENDIF.

    ENDFORM. "f_fill_bdcdata

    FORM f_call_transaction USING pvi_tipo_tran TYPE char4
    CHANGING pte_messages TYPE tyt_mensaje.

    *A=Visualizar Todo
    *E=Visualizar pantallas sólo si hay errores
    *N=No visualizar pantallas

    DATA: lv_mode TYPE c VALUE 'N',
    lv_update TYPE c VALUE 'L'.

    CALL TRANSACTION pvi_tipo_tran USING gt_bdcdata
    MODE lv_mode
    UPDATE lv_update
    MESSAGES INTO pte_messages.

    ENDFORM. "f_call_transaction

    FORM f_show_messages USING pti_messages TYPE tyt_mensaje
    CHANGING pte_error TYPE tyt_error .

    DATA: lv_error TYPE c VALUE 'E', "Error
    lv_correcto TYPE c VALUE 'S', "Correcto
    lv_n_error TYPE char3 VALUE '126',"Número Error
    lv_n_advertencia TYPE char3 VALUE '060'."Número advertencia


    DATA: lv_msgid TYPE sy-msgid,
    lv_msgno TYPE sy-msgno,
    le_messages TYPE tye_mensaje,
    le_final_message TYPE message.
    DATA: le_error TYPE tye_error.

    LOOP AT pti_messages INTO le_messages.

    lv_msgid = le_messages-msgid.
    lv_msgno = le_messages-msgnr.

    CALL FUNCTION 'WRITE_MESSAGE'
    EXPORTING
    msgid = lv_msgid
    msgno = lv_msgno
    msgty = le_messages-msgtyp
    msgv1 = le_messages-msgv1
    msgv2 = le_messages-msgv2
    msgv3 = le_messages-msgv3
    msgv4 = le_messages-msgv4
    IMPORTING
    messg = le_final_message.

    IF sy-Subrc = 0.
    WRITE: / le_final_message
    ENDIF.

    ENDFORM. " f_show_messages

    f_call_transaction ejecuta la transacción que estas necesitando y la tabla cargada con el batch input . la rutina f_fill_bdcdata se encarga de hacer un append de las secuencias del batch input, la rutina f_show_messages se encarga de guardar los mensajes de error o éxito
    Pasos.
    1 - f_fill_bdcdata
    2 - f_call_transaction
    3 - f_show_messages

    Bueno espero que te sirva.

    Saludos

    Diego G.
    Desarrollador SAP

    Comentario

    Trabajando...