SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Внести в запрос таблицу и используемые в ней ЭД и домены



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Transport and Upgrade | Транспорт и Обновления
View previous topic :: View next topic  
Author Message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Thu Dec 18, 2008 2:22 pm    Post subject: Внести в запрос таблицу и используемые в ней ЭД и домены Reply with quote

Программа очень полезна когда нужно в другую систему утащить таблицу или структуру, которой там отродясь не было. Кладет в запрос указанную таблицу, все элементы данных что к ней относятся и все домены, что относятся к положенным элементам данных.
Есть некоторые глюки и недоработки:
- не разворачиваются инклуды
- по кнопке 'Создать запрос' запрос не создается
- по выбору существующего запроса не подвязан SH
Так что желающие доработать - велкам.
Автор не я, 'я только разместил объяву'. Была или написана нашими базисниками, или найдена в инете в незапамятные времена, точнее выяснить уже сложно.
Причесывать код не стал, выложил как есть - может кому сгодится прямо сейчас. Внешний вид и текстовые элементы см. на картинке во вложении

Code:
REPORT Z00S_CREATE_REQ_FOR_TABLE .

TABLES: TADIR, DD02L, DD03L, DD04D, SSCRFIELDS.
TYPE-POOLS TRWBO.


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.

START-OF-SELECTION.




Внести таблицу в запрос.jpg
 Description:
Внешний вид
 Filesize:  51.42 KB
 Viewed:  14023 Time(s)

Внести таблицу в запрос.jpg


Back to top
View user's profile Send private message Blog
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Transport and Upgrade | Транспорт и Обновления All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.