*---------------------------------------------------------------------*
* Report Z_GEN_LAENDER
*---------------------------------------------------------------------*
* Erzeugen einer Dictionary-Struktur
* o Für jedes Land in der Ländertabelle, dessen Länderkürzel mit "D"
* beginnt, wird ein Feldname angelegt beginnend mit LAND_
* o Die Struktur wird der Entwicklungsklasse aus dem Selektionsbild
* zugeordnet
* o Die Struktur wird in einen Transportauftrag aufgenommen
*---------------------------------------------------------------------*
REPORT z_GEN_LAENDER.
DATA lt_t005 TYPE STANDARD TABLE OF t005.
DATA ls_t005 TYPE t005.
PARAMETERS: p_tab TYPE tabname DEFAULT 'Z_LAENDER',
p_dcl type devclass default 'Z_VERKAUF'.
START-OF-SELECTION.
PERFORM selection.
PERFORM structure.
PERFORM tadirentry.
PERFORM transport.
MESSAGE s000(vz) WITH 'Struktur wurde angelegt'.
*&---------------------------------------------------------------------*
*& Form selection
*&---------------------------------------------------------------------*
FORM selection.
*** Alle Länder, deren Kürzel mit D beginnt einlesen
SELECT * FROM t005 INTO TABLE lt_t005
WHERE land1 LIKE 'D%'.
*** Sort
SORT lt_t005.
ENDFORM. "selection
*&---------------------------------------------------------------------*
*& Form structure
*&---------------------------------------------------------------------*
FORM structure.
DATA ls_dd02v TYPE dd02v.
DATA ls_dd09l TYPE dd09l.
DATA lt_dd03p TYPE STANDARD TABLE OF dd03p.
DATA ls_dd03p TYPE dd03p.
*** Struktur
CLEAR ls_dd02v.
ls_dd02v-tabname = p_tab.
ls_dd02v-ddlanguage = 'D'.
ls_dd02v-tabclass = 'INTTAB'.
ls_dd02v-ddtext = 'Automatically generated structure'.
ls_dd02v-applclass = 'VIEW'.
ls_dd02v-as4user = sy-uname.
ls_dd02v-as4date = sy-datum.
ls_dd02v-as4time = sy-uzeit.
ls_dd02v-exclass = '3'.
*** Technische Einstellungen werden für eine Struktur nicht benötigt
CLEAR ls_dd09l.
*** Felder
CLEAR lt_dd03p.
LOOP AT lt_t005 INTO ls_t005.
CLEAR ls_dd03p.
ls_dd03p-tabname = p_tab.
CONCATENATE 'LAND_' ls_t005-land1 INTO ls_dd03p-fieldname.
ls_dd03p-position = sy-tabix.
ls_dd03p-rollname = 'LAND1'.
ls_dd03p-domname = 'LAND1'.
APPEND ls_dd03p TO lt_dd03p.
ENDLOOP.
*** Struktur erzeugen
CALL FUNCTION 'DD_TABL_PUT'
EXPORTING
dd02v_wa = ls_dd02v
dd09l_wa = ls_dd09l
put_state = 'A'
tabl_name = p_tab
TABLES
dd03p_tab = lt_dd03p
EXCEPTIONS
db_access_failure = 1
object_inconsistent = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'Fehler bei DD_TABL_PUT', sy-subrc.
STOP.
ENDIF.
ENDFORM. "structure
*&---------------------------------------------------------------------*
*& Form tadirentry
*&---------------------------------------------------------------------*
FORM tadirentry.
DATA lv_srcsystem TYPE srcsystem.
DATA lv_obj_name TYPE sobj_name.
*** Originalsystem
lv_srcsystem = sy-sysid.
*** Name der Struktur:
lv_obj_name = p_tab.
*** TADIR-Eintrag erzeugen
CALL FUNCTION 'TR_TADIR_INTERFACE'
EXPORTING
wi_test_modus = ' '
wi_tadir_pgmid = 'R3TR'
wi_tadir_object = 'TABL'
wi_tadir_obj_name = lv_obj_name
wi_tadir_srcsystem = lv_srcsystem
wi_tadir_author = sy-uname
wi_tadir_devclass = p_dcl
wi_set_genflag = 'X'
EXCEPTIONS
OTHERS = 25.
IF sy-subrc <> 0.
WRITE: / 'Fehler bei TR_TADIR_INTERFACE'.
STOP.
ENDIF.
ENDFORM. "tadirentry
*&---------------------------------------------------------------------*
*& Form transport
*&---------------------------------------------------------------------*
FORM transport.
*** Data
DATA: iko200 TYPE ko200,
iorder TYPE trkorr,
itask TYPE trkorr.
*** Object
iko200-pgmid = 'R3TR'.
iko200-object = 'TABL'.
iko200-objfunc = space.
iko200-obj_name = p_tab.
*** Auftrag abfragen
CALL FUNCTION 'TR_ORDER_CHOICE_CORRECTION'
EXPORTING
iv_category = 'SYST'
IMPORTING
ev_order = iorder
ev_task = itask
EXCEPTIONS
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'Fehler TR_ORDER_CHOICE_CORRECTION'.
STOP.
ENDIF.
*** Prüfen der Objekte
CALL FUNCTION 'TR_OBJECT_CHECK'
EXPORTING
wi_ko200 = iko200
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'Fehler TR_OBJECT_CHECK'.
STOP.
ELSE.
*** Einfügen des Objektes in den Auftrag
CALL FUNCTION 'TR_OBJECT_INSERT'
EXPORTING
wi_order = itask
wi_ko200 = iko200
EXCEPTIONS
cancel_edit_other_error = 1
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc > 0.
WRITE: / 'Fehler TR_OBJECT_INSERT'.
ELSE.
COMMIT WORK.
ENDIF.
ENDIF.
ENDFORM. "transport