Skip to Content
Author's profile photo Former Member

Full flexibility for PNR creation in SAP online booking


This will be helpful for the ones of you using SAP internal GDS access:

You can check command lines in transaction AMADEUS.

You can write ANY item to PNR if you have valid AMADEUS command for command line. SAP standard unfortunately is restricted to certain objects, as types of PNR elements are restricted in some domain to RM*, RMS* and others, but e.g. not SSR elements – the ones you will need for full TMC compliance.

To write valid AMADEUS command to AMADEUS command line, you need to go with BADI as follows, feeding field “a_command” with any input you like. In your case, add details for other services instead of xxxxxx – you need to the read them before, which is not part of this sample.

Enjoy, Michael



METHOD if_ex_fitp_cust_remarks~create_rm.

  data: lt_bapirettab type bapirettab.


* Daten der PNR


    pnr_acknowledgement type standard table of ftps_api_pnr_ack_data,

    pnr_main_out type standard table of ftps_api_pnr_main,

    pnr_flight_out type standard table of ftps_api_pnr_flight,

    pnr_hotel_out type standard table of ftps_api_pnr_hotel,

    pnr_car_out type standard table of ftps_api_pnr_car,

    pnr_other_service_out type standard table of


    pnr_auxiliary_out type standard table of ftps_api_pnr_auxiliary,

    pnr_name_out type standard table of ftps_api_pnr_name,

    pnr_address_out type standard table of ftps_api_pnr_address,

    pnr_phone_out type standard table of ftps_api_pnr_phone,

    pnr_fop_out type standard table of ftps_api_pnr_fop,

    pnr_remarks_out type standard table of ftps_api_pnr_remarks,

    pnr_remarks_to_del type standard table of ftpt_pnr_remarks,

    pnr_fqtv_out type standard table of ftps_api_pnr_fqtv,

    pnr_seat_out type standard table of ftps_api_pnr_seat,

    pnr_seat_details_out type standard table of


    pnr_misc_ssr_out type standard table of ftps_api_pnr_ssr_misc,

    pnr_ssr_out type standard table of ftps_api_pnr_ssr_misc,

    pnr_osi_out type standard table of ftps_api_pnr_osi,

    pnr_tk_element_out type standard table of ftps_api_pnr_tk_elem,

    pnr_seg_assoc_out type standard table of ftps_api_pnr_seg_assoc,

    wa_flight type ftps_api_pnr_flight.


* Für Verbindung


   a_t_output       type table of ftps_api-text initial size 0,

   a_error_type     type ftps_api-error_type,

   a_error_code     type ftps_api-error_code,

*   p_rc             TYPE i,

   a_destination    type rfcdes-rfcdest,

   a_contexthandler type ftps_api-ctxtid,

   a_changed(1)     value space,

*   a_lines_of_table TYPE i VALUE 0,

   a_command(100)   type c value space,

*   a_once           TYPE c VALUE ‘Y’,

   a_msg_text(80)   type c.

  DATA wa_cust_remarks TYPE ftpt_pnr_remarks.


  call function ‘FITP_RETRIEVE_PNR’


      variant                 = wa_variant-variant

      record_locator          = wa_variant-rec_locator

      operation_mode          = ‘R’

      sw_portal               = ‘ ‘


      t_return                = lt_bapirettab


      pnr_main_out            = pnr_main_out

      pnr_name_out            = pnr_name_out

      pnr_flight_out          = pnr_flight_out

      pnr_hotel_out           = pnr_hotel_out

      pnr_car_out             = pnr_car_out

      pnr_other_service_out   = pnr_other_service_out

      pnr_auxiliary_out       = pnr_auxiliary_out

      pnr_address_out         = pnr_address_out

      pnr_phone_out           = pnr_phone_out

      pnr_fop_out             = pnr_fop_out

      pnr_remarks_out         = pnr_remarks_out

      pnr_fqtv_out            = pnr_fqtv_out

      pnr_seat_out            = pnr_seat_out

      pnr_seat_details_out    = pnr_seat_details_out

      pnr_misc_ssr_out        = pnr_misc_ssr_out

      pnr_osi_out             = pnr_osi_out

      pnr_tk_element_out      = pnr_tk_element_out

      pnr_segment_association = pnr_seg_assoc_out

      pnr_acknowledgement     = pnr_acknowledgement


      no_pnr_found            = 1

      others                  = 2.

*   Check/Establish connection

  call function ‘TP_START_STOP_CONNECTION’


      variant              = wa_variant-variant

      start_connection     = ‘X’


      destination          = a_destination

      contexthandler       = a_contexthandler

      changed              = a_changed


      no_destination_found = 1

      no_valid_variant     = 2

      others               = 3.


*   Verbindung o.k. ?


  if sy-subrc is initial.


clear: a_command.




* Befehl füllen_001

        concatenate ‘SSR xxxxxxxx’

                    into a_command.

* AMADEUS-Befehl erzeugen

        call function ‘FITP_AMADEUS_ENTRY’ destination a_destination


            command               = a_command

            context_handler       = a_contexthandler


            error_type            = a_error_type

            error_code            = a_error_code


            t_output              = a_t_output


            communication_failure = 1  message a_msg_text

            system_failure        = 2  message a_msg_text.








Regards, Michael

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Lukas Weigelt
      Lukas Weigelt

      Thanks for the code snippet, Michael! We are currently not using Amadeus, but since I am one of those poor sods who use FI-TV-PL, at some point we might ending up doing so and this will then come in handy.

      Cheers, Lukas

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Hi Lukas,

      I do not think so....

      ...pls read my other blog post with alternatives carefully between the lines.



      Author's profile photo Lukas Weigelt
      Lukas Weigelt

      Hi Michael,

      I'm well aware of your overview blog and of the current possibilities available on the market. However, I don't think our company will switch solutions in the next X years for several reason I will not utter here.

      Cheers, Lukas