Coding Example

This example shows the coding required to produce the following dynamic document:

It uses a screen (100) on which is placed a Custom Container ('CONTAINER100'). The flow logic of the screen contains a single PBO module called create_dd . The table is implemented as a standard table.

REPORT  JM_DYNAMIC_DOCUMENTS_TABLE    .

* Declare reference variables for document, table in document,

* and each column of the table

data: document type ref to cl_dd_document,

      doctable type ref to cl_dd_table_element,

      column1 type ref to cl_dd_area,

      column2 type ref to cl_dd_area,

      column3 type ref to cl_dd_area.

start-of-selection.

call screen 100.

*&---------------------------------------------------------------------*

*&      Module  create_dd  OUTPUT

*&---------------------------------------------------------------------

module create_dd output.

check document is initial.

* Instantiate dynamic document

create object document.

call method document->add_text

     exporting text = 'Dynamic Document with Table'

               sap_style = cl_dd_area=>heading.

call method document->new_line.

call method document->underline.

* Insert table into document

call method document->add_table

     exporting no_of_columns = 3

               cell_background_transparent = ' '

     importing table = doctable.

* Use doctable parameter for any operations at table level

call method  doctable->add_column

         importing column = column1.

call method doctable->add_column

          importing column = column2.

call method doctable->add_column

          importing column = column3.

* Use the relevant column parameter for any operations at cell level

* Set style for the heading row

call method doctable->set_row_style

          exporting row_no = 1

                     sap_style = cl_dd_area=>heading.

* Construct first line of table by addressing the relevant column

call method column1->add_text

          exporting text = 'Column1'.

call method column2->add_text

          exporting text = 'Column2'.

call method column3->add_text

          exporting text = 'Column3'.

* First line finished. Once I call new_row, I can't change it any more

call method doctable->new_row.

* Method calls to the columns now apply to the second row of the table

* I can add any number of elements to each column - in this case, a text and an icon

call method column1->add_icon

          exporting sap_icon = 'ICON_RED_LIGHT'.

call method column1->add_text

          exporting text = 'R1 C1'.

call method column2->add_icon

          exporting sap_icon = 'ICON_YELLOW_LIGHT'.

call method column2->add_text

          exporting text = 'R1 C2'.

call method column3->add_icon

          exporting sap_icon = 'ICON_GREEN_LIGHT'.

call method column3->add_text

          exporting text = 'R1 C3'.

* Second row finished

call method doctable->new_row.

* In the third row, I want to merge the three columns into one

call method doctable->span_columns

         exporting col_start_span = column1

                   no_of_cols = 3.

* I can now insert a text by addressing the first column

call method column1->add_text

    exporting text = 'The cells in this row have been merged'.

* End of table

* Merge and display document

call method document->merge_document.

call method document->display_document

     exporting container = 'CONTAINER100'.

endmodule.                 " create_dd  OUTPUT