Add new data

Add an extension on item level for a declaration procedure

DATA:
    dlv_dos      TYPE /aeb/if_aes_pb_delivery_do=>tt_delivery_do,
    dlv_do       TYPE REF TO /aeb/if_aes_pb_delivery_do,
    itm_dos      TYPE /aeb/if_aes_pb_delivery_itm_do=>tt_delivery_item_do,
    itm_do       TYPE REF TO /aeb/if_aes_pb_delivery_itm_do,
    itm_ext_do   TYPE REF TO /aeb/if_aes_pb_ditm_extd_do,
    itm_exp_se   TYPE REF TO /aeb/if_aes_pb_ditm_eu_do,
    pref_data    TYPE REF TO /aeb/if_aes_pb_pref_data_eu_do,
    prod_doc_dos TYPE /aeb/if_aes_pb_prod_doc_eu_do=>tt_prod_doc_eu_do,
    prod_doc_do  TYPE REF TO /aeb/if_aes_pb_prod_doc_eu_do.

  dlv_dos = im_value->get_deliveries( ).
  LOOP AT dlv_dos INTO dlv_do.
    itm_dos = dlv_do->get_items( ).
    LOOP AT itm_dos INTO itm_do.
*     Instantiate the extension of type Export SE
      itm_ext_do = im_cons_data_object_factory->new_aes_pb_ditm_extd_do( ).
      itm_do->set_extension( itm_ext_do ).
      itm_exp_se = im_cons_data_object_factory->new_aes_pb_ditm_eu_do( ).
      itm_ext_do->set_export_se( itm_exp_se ).

*     Fill the nature of transaction code
      itm_exp_se->set_transaction_nature_code( im_nullable_value_factory->char_2( '22' ) ).

*     Fill the preferential data
      pref_data = im_cons_data_object_factory->new_aes_pb_pref_data_eu_do( ).
      itm_exp_se->set_preferential_data( pref_data ).
      pref_data->set_preference_type( im_nullable_value_factory->char_3( '333' ) ).

*     Add a document
      prod_doc_do = im_cons_data_object_factory->new_aes_pb_prod_doc_eu_do( ).
      CLEAR prod_doc_dos.
      APPEND prod_doc_do TO prod_doc_dos.
      itm_exp_se->set_produced_documents( prod_doc_dos ).
      
      prod_doc_do->set_amount( im_cons_data_object_factory->new_aes_pb_aom_do_v1( 
        im_currency_iso = 'EUR'
        im_value        = im_nullable_value_factory->dec_17_2( '5000.00' ) ) ).
      prod_doc_do->set_complementary_info( im_nullable_value_factory->char_26( 'This is a info' ) ).
      prod_doc_do->set_document_part( im_nullable_value_factory->char_5( '10002' ) ).
      prod_doc_do->set_information_date( im_cons_data_object_factory->new_01_pb_date_and_zone_do( 
        im_date_in_timezone = '20190522120000'
        im_timezone         = 'UTC' ) ).
      prod_doc_do->set_quantity( im_cons_data_object_factory->new_01_quantity_do(
        im_unit  = 'ST'
        im_value = '1' ) ).
      prod_doc_do->set_reference( im_nullable_value_factory->char_35( '35000' ) ).
      prod_doc_do->set_status_code( im_nullable_value_factory->char_2( '22' ) ).
      prod_doc_do->set_type_code( im_nullable_value_factory->char_9( 'Y901' ) ).
    ENDLOOP.
  ENDLOOP.

Add equipment with container information

DATA:
    dlv_dos          TYPE /aeb/if_aes_pb_delivery_do=>tt_delivery_do,
    dlv_do           TYPE REF TO /aeb/if_aes_pb_delivery_do,
    equipment_dos    TYPE /aeb/if_aes_pb_trsprt_equip_do=>tt_transport_equip_do,
    equipment_do     TYPE REF TO /aeb/if_aes_pb_trsprt_equip_do,
    container_number TYPE /aeb/if_aes_pb_trsprt_equip_do=>t_identification.

  dlv_dos = im_value->get_deliveries( ).
  LOOP AT dlv_dos INTO dlv_do.
    equipment_dos = dlv_do->get_transport_equipments( ).

    container_number = im_vttk-signi.
    equipment_do = im_cons_data_object_factory->new_aes_pb_trsprt_equip_do( im_equipment_type = 'CONTAINER'
                                                                            im_identification = container_number ).
    APPEND equipment_do TO equipment_dos.

    dlv_do->set_transport_equipments( equipment_dos ).
  ENDLOOP.

Add an additional reference for the port booking number

DATA:
    dlv_dos                  TYPE /aeb/if_aes_pb_delivery_do=>tt_delivery_do,
    dlv_do                   TYPE REF TO /aeb/if_aes_pb_delivery_do,
    additional_reference_dos TYPE /aeb/if_aes_pb_add_ref_do=>tt_add_reference_do,
    additional_reference_do  TYPE REF TO /aeb/if_aes_pb_add_ref_do,
    port_booking_number      TYPE /aeb/if_aes_pb_add_ref_do=>t_reference.

  dlv_dos = im_value->get_deliveries( ).
  LOOP AT dlv_dos INTO dlv_do.
    additional_reference_dos = dlv_do->get_additional_references( ).

    port_booking_number = im_vttk-tndr_trkid.
    additional_reference_do = im_cons_data_object_factory->new_aes_pb_add_ref_do( im_reference_type = 'PORT_BOOKING_NUMBER'
                                                                                    im_reference = port_booking_number ).
                                                                                    
		APPEND additional_reference_do TO additional_reference_dos.
    dlv_do->set_additional_references( additional_reference_dos ).
  ENDLOOP.

Add client specific fields

Client specific specific fields can for example be used for template determination based on very specific fields, which are not part of the standard consignment. Client specific fields exist on delivery and item level. Note that the client specific fields have to be defined in the customs management engine.

DATA:
    dlv_dos               TYPE /aeb/if_aes_pb_delivery_do=>tt_delivery_do,
    dlv_do                TYPE REF TO /aeb/if_aes_pb_delivery_do,
    client_specific_field TYPE REF TO /aeb/if_aes_pb_clsp_fld_do,
    fields                TYPE /aeb/if_aes_pb_clsp_fld_do=>tt_aes_pb_clnt_spec_fld_do,
    clnt_specific_fields  TYPE REF TO /aeb/if_aes_pb_clsp_flds_do.

  dlv_dos = im_value->get_deliveries( ).
  LOOP AT dlv_dos INTO dlv_do.
    client_specific_field = im_cons_data_object_factory->new_aes_pb_clsp_field_do( ).
    clnt_specific_fields = im_cons_data_object_factory->new_aes_pb_clsp_fields_do( ).
  
  	client_specific_field->set_customs_process( 'EXPORT_DE' ).
    client_specific_field->set_ident_code( 'DOC_TYPE' ).
    client_specific_field->set_value( 'DLV' ).
    APPEND client_specific_field TO fields.
    clnt_specific_fields->set_fields( fields ).
    dlv_do->set_client_specific_fields( clnt_specific_fields ).
  ENDLOOP.