Автор Тема: Как выгрузить (и потом загрузить) GUI-статус в файл?  (Прочитано 21726 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Тут вот возникла надобность выгрузить пару программ (типа бекап), выгрузить код смог, смартформы тоже, тексты критереев выбора просто скопировал в файлик, а вот что делать с GUI-статусом? Как его выгрузить что бы потом можно было загрузить повторно?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Скриншотом делал. Хотя может кто и знает другие способы. ???

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
Скриншотом делал. Хотя может кто и знает другие способы. ???
думаю, это один из самых неудобных способов .... ну если уже ты ничего не нашел (с твоими 7 лет опыта) 
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
думаю, это один из самых неудобных способов .... ну если уже ты ничего не нашел (с твоими 7 лет опыта) 
Дело в том, что не искал просто. ;)

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
поможет ?
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Интересно.... удем пробывать .....


Кстати, падает в дамп ......
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
поможет ?
You are not allowed to view links. Register or Login
Эхх, системы под рукой нет - в отпуске.
2 Паганель: а по поводу 7 лет опыта... Уставать начинаешь от кода, типовых задач и т.д., особенно когда сниться все это дело начинает. Особенно когда консультантов приходится учить еще правильно тестировать... Ну это так, лирика, навеяло во время перепахивания 24-х PDF-формуляров. ;D

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
Эхх, системы под рукой нет - в отпуске.
2 Паганель: а по поводу 7 лет опыта... Уставать начинаешь от кода, типовых задач и т.д., особенно когда сниться все это дело начинает. Особенно когда консультантов приходится учить еще правильно тестировать... Ну это так, лирика, навеяло во время перепахивания 24-х PDF-формуляров. ;D

Знаю, сам так часто себя чувствую, я в свое время перешел с програмизма в консальт, думал менше буду програмировать  ;-)
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
у меня отлично,
выгрузил,
кучу файликов...
что дамп говорит ?

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Прогу подправил, сейчас тут выложу подправленный исходник и на форуме автора тоже напишу ..... мол начал пользоватся, валится в ошибку .... исправил ....

Ошибка
Код: You are not allowed to view links. Register or Login
ДинамОшибка            READ_REPORT_LINE_TOO_LONG        
ОсобСит.               CX_SY_READ_SRC_LINE_TOO_LONG    
Дата и время           28.05.2009 13:12:14              

Валилось на строке 182
Код: You are not allowed to view links. Register or Login
................
* Таблицы программы
  IF cbprog = 'X'.
    APPEND atr.

    READ REPORT   repid INTO prg.
......
Странно, в моей системе, по похожей ошибке валилась прога Димы.
You are not allowed to view links. Register or Login

Исправление:
Вместо
Код: You are not allowed to view links. Register or Login
DATA: BEGIN OF PRG OCCURS 0, " Иначе WS_Download
  LINE(100) TYPE C,     " неправильно работает
END   OF PRG.
Надо
Код: You are not allowed to view links. Register or Login
DATA: BEGIN OF PRG OCCURS 0, " Иначе WS_Download
  LINE(500) TYPE C,     " неправильно работает
END   OF PRG.

Весь код, думаю автор не будет против,
скопированно с You are not allowed to view links. Register or Login

Код: You are not allowed to view links. Register or Login
REPORT  YDK_PROGS.

TABLES: EUDB, TRDIR, TADIR, D020T.

SELECT-options: sprog FOR sy-repid obligatory NO INTERVALS.

selection-SCREEN SKIP.

PARAMETERS: saveinc AS CHECKBOX.
SELECT-options: incmask FOR sy-repid NO INTERVALS.

selection-SCREEN SKIP.

PARAMETERS: dir(132) TYPE C obligatory.

selection-SCREEN SKIP.

PARAMETERS rbdl RADIOBUTTON GROUP rbl.
PARAMETERS rbul RADIOBUTTON GROUP rbl.

selection-SCREEN SKIP.

PARAMETERS: cbprog AS CHECKBOX DEFAULT 'X'.
PARAMETERS: cbcua  AS CHECKBOX DEFAULT 'X'.
PARAMETERS: cbdyn  AS CHECKBOX DEFAULT 'X'.

DATA: repid LIKE sy-repid.

DATA: itprog LIKE sy-repid OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF PRG OCCURS 0, " Иначе WS_Download
  LINE(500) TYPE C,     " неправильно работает
END   OF PRG.

DATA: txt LIKE  TEXTPOOL OCCURS 0 WITH HEADER LINE.
DATA: atr LIKE  trdir    OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF INC OCCURS 0, " Иначе WS_Download
  repid LIKE sy-repid,     " неправильно работает
END   OF INC.

DATA: inct LIKE LINE OF inc OCCURS 0 WITH HEADER LINE.

DATA: STA LIKE  RSMPE_STAT OCCURS 0 WITH HEADER LINE.
DATA: FUN LIKE  RSMPE_FUNT OCCURS 0 WITH HEADER LINE.
DATA: MEN LIKE  RSMPE_MEN  OCCURS 0 WITH HEADER LINE.
DATA: MTX LIKE  RSMPE_MNLT OCCURS 0 WITH HEADER LINE.
DATA: ACT LIKE  RSMPE_ACT  OCCURS 0 WITH HEADER LINE.
DATA: BUT LIKE  RSMPE_BUT  OCCURS 0 WITH HEADER LINE.
DATA: PFK LIKE  RSMPE_PFK  OCCURS 0 WITH HEADER LINE.
DATA: SET LIKE  RSMPE_STAF OCCURS 0 WITH HEADER LINE.
DATA: DOC LIKE  RSMPE_ATRT OCCURS 0 WITH HEADER LINE.
DATA: TIT LIKE  RSMPE_TITT OCCURS 0 WITH HEADER LINE.
DATA: ADM LIKE  RSMPE_ADM  OCCURS 0 WITH HEADER LINE.
DATA: BIV LIKE  RSMPE_BUTS OCCURS 0 WITH HEADER LINE.

DATA: DYNNAME(44) TYPE C.

DATA: dyn LIKE D020S OCCURS 0 WITH HEADER LINE.

DATA: H LIKE D020S.
DATA: F LIKE D021S OCCURS 0 WITH HEADER LINE.
DATA: E LIKE D022S OCCURS 0 WITH HEADER LINE.
DATA: M LIKE D023S OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF DYNH OCCURS 0.
  INCLUDE STRUCTURE D020S.
  DATA:   DTXT LIKE D020T-DTXT,
END   OF DYNH.

DATA: BEGIN OF dynf OCCURS 0,
  prog LIKE D020S-PROG,
  dnum LIKE D020S-DNUM.
  INCLUDE STRUCTURE D021S.
DATA: END   OF dynf.

DATA: BEGIN OF dyne OCCURS 0,
  prog LIKE D020S-PROG,
  dnum LIKE D020S-DNUM.
  INCLUDE STRUCTURE D022S.
DATA: END   OF dyne.

DATA: BEGIN OF dynm OCCURS 0,
  prog LIKE D020S-PROG,
  dnum LIKE D020S-DNUM.
  INCLUDE STRUCTURE D023S.
DATA: END   OF dynm.

DATA: ittab(10) TYPE C OCCURS 0 WITH HEADER LINE.
FIELD-symbols <tab> TYPE TABLE.

INITIALIZATION.
FIELD-symbols <fs>.
LOOP AT SCREEN.
  CHECK SCREEN-INPUT = 0.
  IF SCREEN-name CP '*SPROG*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'Programm, include, ...'.
  ENDIF.
  IF SCREEN-name CP '*SAVEINC*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'Include Unload/Download'.
  ENDIF.
  IF SCREEN-name CP '*INCMASK*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'Include mask'.
  ENDIF.
  IF SCREEN-name CP '*DIR*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'File directory'.
  ENDIF.
  IF SCREEN-name CP '*RBDL*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'From file to SAP'.
  ENDIF.
  IF SCREEN-name CP '*RBUL*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'From SAP to file'.
  ENDIF.
  IF SCREEN-name CP '*CBPROG*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'Program'.
  ENDIF.
  IF SCREEN-name CP '*CBCUA*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'GUI Status'.
  ENDIF.
  IF SCREEN-name CP '*CBDYN*'.
    ASSIGN (SCREEN-name) TO <fs>.
    <fs> = 'Dynpro'.
  ENDIF.
ENDLOOP.

start-OF-selection.

PERFORM add_tab USING:
      'PRG', 'TXT',  'ATR',  'INC',
      'STA', 'FUN',  'MEN',  'MTX',  'ACT', 'BUT', 'PFK', 'SET',
      'DOC', 'TIT',  'ADM',
      'DYN', 'DYNH', 'DYNF', 'DYNE', 'DYNM'.

CASE 'X'.
WHEN rbul. " Выгрузка
  SELECT name INTO TABLE itprog
  FROM trdir
  WHERE name IN sprog.
  CHECK sy-subrc = 0.

  LOOP AT itprog.
    PERFORM save_prog USING itprog.
    IF saveinc = 'X' AND cbprog = 'X'.
      inct[] = inc[].
      LOOP AT inct.
        PERFORM save_prog USING inct-repid.
      ENDLOOP.
    ENDIF.
  ENDLOOP.
  WHEN rbdl. " Загрузка
  LOOP AT sprog WHERE SIGN   = 'I'
  AND option = 'EQ'.
    PERFORM load_prog USING sprog-low.
    IF saveinc = 'X' AND cbprog = 'X'.
      inct[] = inc[].
      LOOP AT inct WHERE repid IN incmask.
        PERFORM load_prog USING inct-repid.
      ENDLOOP.
    ENDIF.
  ENDLOOP.
ENDCASE.

FORM save_prog USING arepid.
  repid = arepid.

  PERFORM refresh_tabs.

  SELECT SINGLE * INTO atr
  FROM TRDIR
  WHERE NAME  = repid.
  CHECK sy-subrc = 0
  AND atr-subc CA '1MFI'. " Типы программ.

* Таблицы программы
  IF cbprog = 'X'.
    APPEND atr.

    READ REPORT   repid INTO prg.

    IF atr-subc = 'I'. " Include
      PERFORM save_tabs.
      EXIT.
    ENDIF.

    READ TEXTPOOL repid INTO txt LANGUAGE SY-LANGU.

    IF saveinc = 'X'.
      CALL FUNCTION 'RS_GET_ALL_INCLUDES'
      EXPORTING
        PROGRAM                      = repid
      TABLES
        INCLUDETAB                   = inc
      EXCEPTIONS
        NOT_EXISTENT                 = 1
        NO_PROGRAM                   = 2
        OTHERS                       = 3.

      IF NOT incmask[] IS INITIAL.
        DELETE inc WHERE NOT repid IN incmask.
      ENDIF.
    ENDIF.
  ENDIF.

  CHECK atr-subc CA '1MF'. " Типы программ.

* Таблицы GUI статуса
  IF cbcua = 'X'.
    CALL FUNCTION 'RS_CUA_INTERNAL_FETCH'
    EXPORTING
      PROGRAM   = REPID
      LANGUAGE  = SY-LANGU
    IMPORTING
      ADM       = ADM
    TABLES
      STA       = STA
      FUN       = FUN
      MEN       = MEN
      MTX       = MTX
      ACT       = ACT
      BUT       = BUT
      PFK       = PFK
      SET       = SET
      DOC       = DOC
      TIT       = TIT
      BIV       = BIV
    EXCEPTIONS
      NOT_FOUND = 1
      OTHERS    = 2.

    IF SY-SUBRC = 0.
      APPEND ADM.
    ENDIF.
  ENDIF.

* Таблицы экранов
  IF cbdyn = 'X'.
    SELECT * INTO TABLE dyn
    FROM D020S
    WHERE PROG = REPID.

    DELETE dyn WHERE TYPE CA 'SW'. " Sel screen

    LOOP AT dyn.
      DYNNAME(40)   = DYN-PROG.
      DYNNAME+40(4) = DYN-DNUM.

      REFRESH: F, E.
      CLEAR: H, F, E.
      IMPORT DYNPRO H F E M ID DYNNAME.

      dynh = H.

      SELECT SINGLE DTXT INTO DYNH-DTXT
      FROM D020T
      WHERE PROG = DYN-PROG
      AND DYNR = DYN-DNUM
      AND LANG = SY-LANGU.

      APPEND dynh.

      LOOP AT f.
        dynf-prog = dyn-prog.
        dynf-dnum = dyn-dnum.
        MOVE-corresponding f TO dynf.
        APPEND dynf.
      ENDLOOP.

      LOOP AT e.
        dyne-prog = dyn-prog.
        dyne-dnum = dyn-dnum.
        MOVE-corresponding e TO dyne.
        APPEND dyne.
      ENDLOOP.

      LOOP AT M.
        dynm-prog = dyn-prog.
        dynm-dnum = dyn-dnum.
        MOVE-corresponding M TO dynm.
        APPEND dynm.
      ENDLOOP.
    ENDLOOP.
  ENDIF.

  PERFORM save_tabs.
ENDFORM.


FORM load_prog USING arepid.
  DATA: TRKEY LIKE TRKEY.
  repid = arepid.

  PERFORM load_tabs.

* Программа
  IF cbprog = 'X' AND NOT prg[] IS INITIAL.
    INSERT REPORT repid   FROM prg.
    PERFORM UPDATE_TRDIR.

    IF NOT txt[] IS INITIAL.
      INSERT TEXTPOOL repid FROM txt LANGUAGE SY-LANGU.
    ENDIF.
  ENDIF.

* GUI статус
  IF cbcua = 'X' AND NOT sta[] IS INITIAL.
    READ TABLE adm INDEX 1.

    TRKEY-DEVCLASS = '$TMP'.
    TRKEY-OBJ_TYPE = 'PROG'.
    TRKEY-OBJ_NAME = repid.
    TRKEY-SUB_TYPE = 'CUAD'.
    TRKEY-SUB_NAME = repid.

    CALL FUNCTION 'RS_CUA_INTERNAL_WRITE'
    EXPORTING
      PROGRAM         = repid
      LANGUAGE        = sy-langu
      TR_KEY          = TRKEY
      ADM             = adm
      STATE           = 'I'
    TABLES
      STA             = sta
      FUN             = fun
      MEN             = men
      MTX             = mtx
      ACT             = act
      BUT             = but
      PFK             = pfk
      SET             = SET
      DOC             = doc
      TIT             = tit
      BIV             = biv
    EXCEPTIONS
      NOT_FOUND       = 1
      OTHERS          = 2.
  ENDIF.

* Экраны
  IF cbdyn = 'X' AND NOT dyn[] IS INITIAL.
    LOOP AT dyn WHERE TYPE NA 'SW'.
      REFRESH: F, E, M.

      DYNNAME(40)   = DYN-PROG.
      DYNNAME+40(4) = DYN-DNUM.

      READ TABLE dynh WITH KEY prog = dyn-prog dnum = dyn-dnum.
      h = dynh.

      LOOP AT dynf WHERE prog = dyn-prog
      AND dnum = dyn-dnum.
        MOVE-corresponding dynf TO f.
        APPEND f.
      ENDLOOP.

      LOOP AT dyne WHERE prog = dyn-prog
      AND dnum = dyn-dnum.
        MOVE-corresponding dyne TO e.
        APPEND e.
      ENDLOOP.

      LOOP AT dynm WHERE prog = dyn-prog
      AND dnum = dyn-dnum.
        MOVE-corresponding dynm TO M.
        APPEND M.
      ENDLOOP.

      EXPORT DYNPRO H F E M ID DYNNAME.

      D020T-PROG = dyn-prog.
      D020T-DYNR = dyn-dnum.
      D020T-LANG = sy-langu.
      D020T-DTXT = dynh-dtxt.
      MODIFY D020T. " Подругому ввести текст экрана не получается
    ENDLOOP.
  ENDIF.
ENDFORM.

FORM UPDATE_TRDIR.
  READ TABLE atr INDEX 1.
  CHECK sy-subrc = 0.

  TRDIR = atr.
  MODIFY TRDIR.

  SELECT SINGLE *
  FROM TADIR
  WHERE PGMID    = 'R3TR'
  AND OBJECT   = 'PROG'
  AND OBJ_NAME = TRDIR-NAME.
  IF SY-SUBRC NE 0. " Иначе не будет записи каталога объектов
    TADIR-PGMID      = 'R3TR'.
    TADIR-OBJECT     = 'PROG'.
    TADIR-OBJ_NAME   = TRDIR-NAME.
    TADIR-DEVCLASS   = '$TMP'.
    TADIR-CPROJECT   = 'L'.
    TADIR-MASTERLANG = SY-LANGU.
    TADIR-SRCSYSTEM  = SY-SYSID.
    INSERT TADIR.
  ENDIF.
ENDFORM.

FORM add_tab USING tab.
  CONCATENATE tab '[]' INTO ittab.
  APPEND ittab.
ENDFORM.

FORM refresh_tabs.
  LOOP AT ittab.
    ASSIGN (ittab) TO <tab>.
    CHECK sy-subrc = 0.
    REFRESH <tab>.
  ENDLOOP.
ENDFORM.

FORM save_tabs.
  DATA: FILENAME LIKE  RLGRAP-FILENAME.
  LOOP AT ittab.
    ASSIGN (ittab) TO <tab>.
    CHECK sy-subrc = 0.
    CHECK NOT <tab> IS INITIAL.

    TRANSLATE ittab USING '[ ] '. " Убираем []
    CONCATENATE dir '\' repid '.' ittab INTO filename.

    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
      FILENAME                      = filename
      FILETYPE                      = 'DAT'
    TABLES
      DATA_TAB                      = <tab>
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_WRITE_ERROR              = 2
      INVALID_FILESIZE              = 3
      INVALID_TYPE                  = 4
      NO_BATCH                      = 5
      UNKNOWN_ERROR                 = 6
      INVALID_TABLE_WIDTH           = 7
      GUI_REFUSE_FILETRANSFER       = 8
      CUSTOMER_ERROR                = 9
      NO_AUTHORITY                  = 10
      OTHERS                        = 11.
  ENDLOOP.
ENDFORM.

FORM load_tabs.
  DATA: FILENAME LIKE  RLGRAP-FILENAME.
  LOOP AT ittab.
    ASSIGN (ittab) TO <tab>.
    CHECK sy-subrc = 0.
    REFRESH <tab>.

    TRANSLATE ittab USING '[ ] '. " Убираем []
    CONCATENATE dir '\' repid '.' ittab INTO filename.

    CASE ittab.
    WHEN 'DYNF'.
      PERFORM load_tabx TABLES <tab> USING filename.
    WHEN OTHERS.
      CALL FUNCTION 'WS_UPLOAD'
      EXPORTING
        FILENAME                      = filename
        FILETYPE                      = 'DAT'
      TABLES
        DATA_TAB                      = <tab>
      EXCEPTIONS
        CONVERSION_ERROR              = 1
        FILE_OPEN_ERROR               = 2
        FILE_READ_ERROR               = 3
        INVALID_TYPE                  = 4
        NO_BATCH                      = 5
        UNKNOWN_ERROR                 = 6
        INVALID_TABLE_WIDTH           = 7
        GUI_REFUSE_FILETRANSFER       = 8
        CUSTOMER_ERROR                = 9
        NO_AUTHORITY                  = 10
        OTHERS                        = 11.
    ENDCASE.
  ENDLOOP.
ENDFORM.

* При выгрузке для полей с типом X перед значением ставится
* символ "X" врезультате ошибка при загрузке
* проявилось на таблице DYNF
FORM load_tabx TABLES tab USING filename.
  DATA: BEGIN OF itf OCCURS 0,
    LINE(2300) TYPE C,
  END   OF itf.

  DATA: itw(256) TYPE C OCCURS 0 WITH HEADER LINE.

  DATA: xtab(2) TYPE X VALUE '0900'.
  DATA: ctab TYPE C.
  DATA: typ TYPE C.

  FIELD-symbols <fs>.

  ASSIGN ctab TO <fs> TYPE 'X'.
  <fs> = xtab.

  CALL FUNCTION 'WS_UPLOAD'
  EXPORTING
    FILENAME                      = filename
    FILETYPE                      = 'ASC'
  TABLES
    DATA_TAB                      = itf
  EXCEPTIONS
    CONVERSION_ERROR              = 1
    FILE_OPEN_ERROR               = 2
    FILE_READ_ERROR               = 3
    INVALID_TYPE                  = 4
    NO_BATCH                      = 5
    UNKNOWN_ERROR                 = 6
    INVALID_TABLE_WIDTH           = 7
    GUI_REFUSE_FILETRANSFER       = 8
    CUSTOMER_ERROR                = 9
    NO_AUTHORITY                  = 10
    OTHERS                        = 11.

  LOOP AT itf.
    SPLIT itf AT ctab INTO TABLE itw.
    CLEAR tab.
    LOOP AT itw.
      ASSIGN COMPONENT sy-tabix OF STRUCTURE tab TO <fs>.
      IF sy-subrc <> 0. EXIT. ENDIF.
      DESCRIBE FIELD <fs> TYPE typ.
      IF typ = 'X'.
        <fs> = itw+1.
      ELSE.
        <fs> = itw.
      ENDIF.
    ENDLOOP.
    APPEND tab.
  ENDLOOP.
ENDFORM.

« Последнее редактирование: Май 28, 2009, 01:25:52 pm от Dmitriy »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

DKiyanov

  • Гость
Афтор не против  ;D
Но думаю писать проги с кодом длиннее 72 имхо не прилично
Найдутся те кому и 500 не хватит

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Афтор не против  ;D
Но думаю писать проги с кодом длиннее 72 имхо не прилично
Найдутся те кому и 500 не хватит
А там именно длина программы или программа + путь?

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
Афтор не против  ;D
Но думаю писать проги с кодом длиннее 72 имхо не прилично
Найдутся те кому и 500 не хватит
Если память мне ни с кем не изменяет ФМ 'REUSE_ALV_FIELDCATALOG_MERGE' до сих пор проверяет на длину строки, при формировании каталога полей по имеющейся объявленной вн.табличке. К тому же читать длинный по строке код не очень удобно. ;)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
формировании каталога полей по имеющейся объявленной вн.табличке. К тому же читать длинный по строке код не очень удобно.
А, понял... это старое ограничение редактора в 72 символа, которое отменили в новых редакторах кода...

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
А, понял... это старое ограничение редактора в 72 символа, которое отменили в новых редакторах кода...
Да, вот только в коде прог, проверяющих длину строки репорта, не везде исправлено. ;D ;)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Да, вот только в коде прог, проверяющих длину строки репорта, не везде исправлено. ;D ;)
Да это мы знаем... вообще было прикольно когда они только редактор сменили, на курсах известный абап-лектор В.К. показывая пример программы, чуток вылез за 72 символа (кстати перед этим он расхваливал новый редактор), причем в имени переменной, причем всего-то на пару букв, ну например имя было типа p_value., и вот эта последняя .(точка) и вылезла за 72. Ну система говорит, что дескать в строке такой-то типа то ли точки нет, то ли строка не завершена... ну он смотрит, да нет как бы вот есть... и так минут 15, пока не сделали структурную печать кода, которая и разбила эту строку на две...  после чего последовала фраза, что да... с новым редактором еще не все хорошо... так похоже что не все хорошо идет уже который год  :D

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
Да это мы знаем... вообще было прикольно когда они только редактор сменили, на курсах известный абап-лектор В.К. показывая пример программы, чуток вылез за 72 символа (кстати перед этим он расхваливал новый редактор), причем в имени переменной, причем всего-то на пару букв, ну например имя было типа p_value., и вот эта последняя .(точка) и вылезла за 72. Ну система говорит, что дескать в строке такой-то типа то ли точки нет, то ли строка не завершена... ну он смотрит, да нет как бы вот есть... и так минут 15, пока не сделали структурную печать кода, которая и разбила эту строку на две...  после чего последовала фраза, что да... с новым редактором еще не все хорошо... так похоже что не все хорошо идет уже который год  :D
Ну старым редактором пользовался мало, а вот отладчиком старым, достаточно «напользовался», у нас некоторые вещи в продуктиве только им и можно отлаживать,
там много полезных вещей есть, которых в новом отладчике/редакторе нету, например тот же WathList (так кажись),
хотя на современных экранах, он выглядит маленьким
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
Ну старым редактором пользовался мало, а вот отладчиком старым, достаточно «напользовался», у нас некоторые вещи в продуктиве только им и можно отлаживать,
там много полезных вещей есть, которых в новом отладчике/редакторе нету, например тот же WathList (так кажись),
хотя на современных экранах, он выглядит маленьким
Кстати пользую "старый" debagger. Новый, на мой взгляд, перенаворочен. Но всегда можно переключиться. ;)
« Последнее редактирование: Май 29, 2009, 05:48:44 pm от Dmitriy »

Sapforum.Biz