SAP SD BAPI VA01
From SapWiki
Ejemplo 1
FORM f_pedido_venta USING i_kunnr i_werks CHANGING p_documento TYPE vbak-vbeln o_datos_pedido LIKE gt_datos_pedido[]. DATA: ls_header TYPE bapisdhd1, lt_partners TYPE STANDARD TABLE OF bapiparnr, ls_partner TYPE bapiparnr, lt_items TYPE STANDARD TABLE OF bapisditm, ls_item TYPE bapisditm, lt_schedule TYPE STANDARD TABLE OF bapischdl, ls_schedule TYPE bapischdl, lt_condiciones TYPE STANDARD TABLE OF bapicond, ls_condicion TYPE bapicond, lt_return TYPE STANDARD TABLE OF bapiret2, ls_return TYPE bapiret2, posicion(6) TYPE n. DATA detalle LIKE LINE OF o_datos_pedido. CLEAR: ls_header, lt_items[], lt_condiciones[], lt_partners[], lt_schedule[], lt_return[]. ls_header-doc_type = 'PSER'. ls_header-sales_org = 'PTG'. ls_header-distr_chan = 'PT'. ls_header-division = 'PT'. ls_header-req_date_h = sy-datlo. ls_partner-partn_role = 'AG'. ls_partner-partn_numb = i_kunnr. APPEND ls_partner TO lt_partners. posicion = '0'. LOOP AT o_datos_pedido INTO detalle. CLEAR: ls_item, ls_condicion, ls_schedule. posicion = posicion + 10. ls_item-itm_number = posicion. ls_item-material = detalle-matnr. ls_item-short_text = detalle-maktx. ls_item-plant = i_werks. APPEND ls_item TO lt_items. ls_condicion-itm_number = posicion. ls_condicion-cond_type = 'PCOND'. DATA ld_monto LIKE bapicurr-bapicurr. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = detalle-waerk amount_internal = detalle-kwert IMPORTING amount_external = ld_monto. ls_condicion-cond_value = ld_monto. ls_condicion-currency = detalle-waerk. APPEND ls_condicion TO lt_condiciones. ls_schedule-itm_number = posicion. ls_schedule-req_qty = detalle-menge. APPEND ls_schedule TO lt_schedule. ENDLOOP. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header behave_when_error = space IMPORTING salesdocument = p_documento TABLES return = lt_return order_items_in = lt_items order_partners = lt_partners order_schedules_in = lt_schedule order_conditions_in = lt_condiciones. IF p_documento IS NOT INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X' IMPORTING return = ls_return. * Pedido de Venta grabado MESSAGE ID 'V1' TYPE 'S' NUMBER '311' WITH 'Pedido de Venta'(s01) p_documento. ELSE. LOOP AT lt_return INTO ls_return WHERE type = 'E'. MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number WITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4. EXIT. ENDLOOP. ENDIF. ENDFORM. "f_pedido_venta