Posted: Thu Dec 18, 2008 2:22 pm Post subject: Внести в запрос таблицу и используемые в ней ЭД и домены
Программа очень полезна когда нужно в другую систему утащить таблицу или структуру, которой там отродясь не было. Кладет в запрос указанную таблицу, все элементы данных что к ней относятся и все домены, что относятся к положенным элементам данных.
Есть некоторые глюки и недоработки:
- не разворачиваются инклуды
- по кнопке 'Создать запрос' запрос не создается
- по выбору существующего запроса не подвязан SH
Так что желающие доработать - велкам.
Автор не я, 'я только разместил объяву'. Была или написана нашими базисниками, или найдена в инете в незапамятные времена, точнее выяснить уже сложно.
Причесывать код не стал, выложил как есть - может кому сгодится прямо сейчас. Внешний вид и текстовые элементы см. на картинке во вложении
SELECT-OPTIONS TABNAME FOR DD02L-TABNAME.
*SELECT-OPTIONS elemdom FOR dd04d-rollname.
PARAMETERS NOT_SAP AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-B11.
SELECTION-SCREEN PUSHBUTTON /1(20) BCREA USER-COMMAND CREA.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 1(20) BUPDT USER-COMMAND UPDT.
SELECTION-SCREEN POSITION 25.
PARAMETERS MTKORR LIKE E070-TRKORR.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BL1.
SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-B12.
SELECTION-SCREEN PUSHBUTTON /1(50) BDEL USER-COMMAND BDEL.
SELECTION-SCREEN END OF BLOCK BL2.
INITIALIZATION.
MOVE 'Создать запрос' TO BCREA.
MOVE 'Внести в запрос' TO BUPDT.
MOVE 'Удалить ссылку на несуществ. провер. таблицы' TO BDEL.
AT SELECTION-SCREEN.
DATA: CNT TYPE I,
WE_TASK TYPE TRWBO_REQUEST_HEADER,
WT_E071K LIKE E071K OCCURS 0 WITH HEADER LINE,
WT_E071 LIKE E071 OCCURS 0 WITH HEADER LINE,
_T_E071 LIKE E071 OCCURS 0 WITH HEADER LINE,
BEGIN OF FLG_STRUCT OCCURS 0,
TABNAME LIKE DD02L-TABNAME,
TABCLASS LIKE DD02L-TABCLASS,
END OF FLG_STRUCT,
SRCSYST LIKE TADIR-SRCSYSTEM.
IF NOT_SAP IS INITIAL.
SRCSYST = '---'.
ELSE.
SRCSYST = 'SAP'.
ENDIF.
DESCRIBE TABLE TABNAME LINES CNT.
IF CNT > 0.
CASE SSCRFIELDS-UCOMM.
WHEN 'CREA' OR 'UPDT'.
*IF sscrfields-ucomm EQ 'CREA' OR sscrfields-ucomm EQ 'UPDT'.
SELECT * INTO CORRESPONDING FIELDS OF TABLE WT_E071 FROM TADIR
WHERE PGMID EQ 'R3TR' AND OBJECT EQ 'TABL'
AND OBJ_NAME IN TABNAME. "AND srcsystem NE 'SAP'.
SELECT TABNAME TABCLASS INTO TABLE FLG_STRUCT FROM DD02L
WHERE TABNAME IN TABNAME AND AS4LOCAL EQ 'A' AND AS4VERS EQ 0.
SORT FLG_STRUCT BY TABNAME.
LOOP AT WT_E071 WHERE PGMID EQ 'R3TR'.
READ TABLE FLG_STRUCT WITH KEY TABNAME = WT_E071-OBJ_NAME BINARY SEARCH.
IF SY-SUBRC EQ 0 AND FLG_STRUCT-TABCLASS NE 'INTTAB'.
WT_E071-PGMID = 'LIMU'.
WT_E071-OBJECT = 'TABD'.
APPEND WT_E071.
WT_E071-OBJECT = 'TABT'.
APPEND WT_E071.
ENDIF.
ENDLOOP.
IF SY-SUBRC EQ 0.
SELECT * INTO CORRESPONDING FIELDS OF TABLE _T_E071
FROM ( TADIR JOIN DD03L ON TADIR~OBJ_NAME EQ DD03L~DOMNAME )
WHERE TADIR~PGMID EQ 'R3TR' AND TADIR~OBJECT EQ 'DOMA'
AND DD03L~TABNAME IN TABNAME AND TADIR~SRCSYSTEM NE SRCSYST.
* dd03l~domname IN elemdom.
APPEND LINES OF _T_E071 TO WT_E071.
SELECT * INTO CORRESPONDING FIELDS OF TABLE _T_E071
FROM ( TADIR JOIN DD03L ON TADIR~OBJ_NAME EQ DD03L~ROLLNAME )
WHERE TADIR~PGMID EQ 'R3TR' AND TADIR~OBJECT EQ 'DTEL'
AND DD03L~TABNAME IN TABNAME AND TADIR~SRCSYSTEM NE SRCSYST.
* dd03l~rollname IN elemdom.
APPEND LINES OF _T_E071 TO WT_E071.
LOOP AT WT_E071 WHERE PGMID EQ 'R3TR' AND OBJECT EQ 'DTEL'.
WT_E071-PGMID = 'LIMU'.
WT_E071-OBJECT = 'DTED'.
APPEND WT_E071.
ENDLOOP.
DESCRIBE TABLE WT_E071 LINES CNT.
IF CNT GT 0.
IF SSCRFIELDS-UCOMM EQ 'CREA'.
CALL FUNCTION 'TR_REQUEST_MODIFY'
EXPORTING
IV_ACTION = 'CREA'
IV_NEW_REQUEST = ' '
IV_NEW_REQUEST_TYPE = 'T'
* IV_NEW_TASK_TYPE =
IV_NEW_TARSYSTEM = 'TCF'
* IV_REQUEST =
* IT_USERS =
* IV_START_COLUMN = 1
* IV_START_ROW = 4
IMPORTING
ES_NEW_REQUEST = WE_TASK
* ET_NEW_TASKS =
* EV_REQUEST_CHANGED =
* ES_REQUEST =
EXCEPTIONS
CANCELLED_BY_USER = 1
NO_AUTHORIZATION = 2
INVALID_ACTION = 3
INVALID_REQUEST = 4
INVALID_REQUEST_TYPE = 5
INVALID_TASK_TYPE = 6
REQUEST_NOT_CREATED = 7
REQUEST_NOT_DELETED = 8
ENQUEUE_FAILED = 9
DB_ACCESS_ERROR = 10
OTHERS = 11.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
WE_TASK-TRKORR = MTKORR.
ENDIF.
*upd
CALL FUNCTION 'TRINT_APPEND_COMM'
EXPORTING
WI_EXCLUSIVE = 'X'
WI_SEL_E071 = 'X'
* WI_SEL_E071K = ' '
WI_TRKORR = WE_TASK-TRKORR
* IMPORTING
* WE_KEYS_PHYSICAL_APPENDED =
* WE_OBJECTS_PHYSICAL_APPENDED =
TABLES
WT_E071 = WT_E071
WT_E071K = WT_E071K
EXCEPTIONS
E071K_APPEND_ERROR = 1
E071_APPEND_ERROR = 2
TRKORR_EMPTY = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
MESSAGE S002(SY) WITH 'Объекты успешно добавленны в запрос'.
ENDIF.
ENDIF.
ENDIF.
*ENDIF.
WHEN 'BDEL'.
UPDATE DD03L SET CHECKTABLE = ''
WHERE TABNAME IN TABNAME AND
CHECKTABLE NOT IN ( SELECT TABNAME FROM DD02L ).
IF SY-SUBRC EQ 0.
MESSAGE S002(SY) WITH 'Успешно удалены несуществующие провер таблицы'.
ENDIF.
ENDCASE.
ELSE.
MESSAGE S002(SY) WITH 'Введите таблицу(ы)'.
ENDIF.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.