To do so you first need to ensure that the following 5 tables are in synch.
1) VBAP: In your append structure you specify your ZZFIELD with the data type as needed
2) BAPE_VBAP: In the append structure here also add the ZZFIELD with the data type as needed with limitations. No decimals. Try and stick to char characters
3) BAPE_VBAPX: In the append structure add the field ZZFIELD of type BAPIUPDATE
(NOTE: (2) and (3) must have the same number of fields in the same order)
                        4) VBAPKOZ: In the append structure here also add the ZZFIELD with the data type as needed with limitations. No decimals. Try and stick to char characters
5) VBAPKOZX: In the append structure add the field ZZFIELD of type BAPIUPDATE
(NOTE: (4) and (5) must have the same number of fields in the same order)
(Note: A great tip from Hendrik Maas: Use Data element CHAR1 instead of BAPIUPDATE as it will not work for BAPI_SALESDOCUMENT_CHANGE)
Similarly do for VBAK, BAPE_VBAK, BAPE_VBAKX, VBAKKOZ and VBAKKOZX.
Next we get to the code to fill in the structure EXTENSIONIN
                        I will demonstrate how to call the create sales order BAPI with custom fields.
* Local definitions
                          DATA: wa_extensionin TYPE bapiparex,
                                wa_bape_vbap   TYPE bape_vbap,
                                wa_bape_vbapx  TYPE bape_vbapx,
                                wa_bape_vbak   TYPE bape_vbak,
                                wa_bape_vbakx  TYPE bape_vbakx,
                                lv_posnr       TYPE posnr.
* Processing the header extension
                          CLEAR wa_bape_vbak.
                          wa_bape_vbak-ZZFIELD     = ‘HDRTEST’.
                          wa_extensionin-structure = ‘BAPE_VBAK’.
                          wa_extensionin+30(960)   = wa_bape_vbak.
                          append wa_extensionin to lt_extensionin.
                          clear wa_extensionin.
* Processing the line extension
                        LOOP AT line_items INTO wa_lineitems.
  ADD 10 TO lv_posnr.   
                          CLEAR wa_bape_vbap.
                          wa_bape_vbap-ZZFIELD     = ‘TEST’.
                          wa_extensionin-structure = ‘BAPE_VBAP’.
                          wa_bape_vbap-posnr       = lv_posnr.
                          wa_extensionin+30(960)   = wa_bape_vbap.
                          append wa_extensionin to lt_extensionin.
                          clear wa_extensionin.
  CLEAR wa_bape_vbapx.
                          wa_bape_vbapx-ZZFIELD    = ‘X’.
                          wa_extensionin-structure = ‘BAPE_VBAPX’.
                          wa_bape_vbapx-posnr      = lv_posnr.
                          wa_extensionin+30(960)   = wa_bape_vbapx.
                          append wa_extensionin to lt_extensionin.
                          clear wa_extensionin.
ENDLOOP.
* Then the call to the BAPI
                              CALL FUNCTION ‘BAPI_SALESORDER_CREATEFROMDAT2’
                                EXPORTING
                                  order_header_in  = ls_order_header_in
                                  order_header_inx = ls_order_header_inx
                                IMPORTING
                                  salesdocument    = lv_salesdocument
                                TABLES
                                  return           = lt_ret2
                                  order_items_in   = lt_order_items_in
                                  order_items_inx  = lt_order_items_inx
                                  order_partners   = lt_order_partners
                                  order_keys       = lt_order_keys
                                  extensionin      = lt_extensionin.
Note: If you have a need to force a different Business Object type or wish to see the extension return fields then use the function SD_SALESDOCUMENT_CREATE instead.
      CALL FUNCTION ‘SD_SALESDOCUMENT_CREATE’
                                EXPORTING
                                  sales_header_in     = ls_order_header_in
                                  sales_header_inx    = ls_order_header_inx
                                  business_object     = ‘BUS2032’
                                IMPORTING
                                  salesdocument_ex    = lv_salesdocument
                                  sales_header_out    = lv_sales_header_out
                                  sales_header_status = lv_sales_header_status
                                TABLES
                                  return              = lt_ret2
                                  sales_items_in      = lt_order_items_in
                                  sales_items_inx     = lt_order_items_inx
                                  sales_partners      = lt_order_partners
                                  sales_keys          = lt_order_keys
                                  extensionin         = lt_extensionin
                                  incomplete_log      = lt_incomplete_log
                                  extensionex         = lt_extensionex.
New NetWeaver Information at SAP.com
Very Helpfull