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

Вопрос по полю для ввода текста


Goto page Previous  1, 2
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Feb 12, 2008 3:05 pm    Post subject: Reply with quote

Все, я окончательно запутался в этих дебрях...

В FORM f4_etnr сделал после F4IF_INT_TABLE_VALUE_REQUEST добавление:
пробую получить выбранное значение D200-ZZKDETNR через DYNP_VALUES_READ (чтобы потом определить с помощью SELECT соответствующий этому значению текст ну и затем через DYNP_VALUES_UPDATE вставить его в D200-KDTEXT)...

Но получаю, что в D200-ZZKDETNR пусто
Кроме того почему-то при использовании DYNP_VALUES_READ у меня вообще перестает показываться выбранный D200-ZZKDETNR
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 80
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Feb 12, 2008 3:47 pm    Post subject: Reply with quote

Выкладывайте исходники, что делаете?
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Feb 12, 2008 4:22 pm    Post subject: Reply with quote

Code:
FORM f4_etnr.

 DATA: dynpfields LIKE dynpread OCCURS 1 WITH HEADER LINE.
 DATA: field_value LIKE LINE OF dynpfields.
 
 DATA: progname TYPE sy-repid,
           dynnum   TYPE sy-dynnr.
 
 DATA: x_etnr TYPE zetk-etnr.

  progname = sy-cprog. 
  dynnum   = sy-dynnr.

  CLEAR: it_etnr[], w_etnr.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE it_etnr
           FROM zetk.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield     = 'ETKNR'
      dynpprog     = 'SAPMZVKDINFO'
      dynpnr       = '0200'
      dynprofield  = 'D200-ZZKDETNR'
      window_title = 'Nr'
      value_org    = 'S'
    TABLES
      value_tab    = it_etnr
    EXCEPTIONS
      OTHERS       = 0.

*-------------------------------

  REFRESH dynpfields.
  CLEAR: dynpfields.

  dynpfields-fieldname = 'D200-ZZKDETNR'.
  APPEND dynpfields.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname               = progname
      dynumb               = dynnum
    TABLES
      dynpfields           = dynpfields
    EXCEPTIONS
      invalid_abapworkarea = 01
      invalid_dynprofield  = 02
      invalid_dynproname   = 03
      invalid_dynpronummer = 04
      invalid_request      = 05
      no_fielddescription  = 06
      undefind_error       = 07.

  IF sy-subrc <> 0.
    MESSAGE 'Error by DYNP_VALUES_READ' TYPE 'E'.
  ENDIF.

  CHECK NOT dynpfields-fieldvalue IS INITIAL.

  x_etnr = dynpfields-fieldvalue.

  MESSAGE i019(zcl_message_test) WITH x_etnr.


Вот пока собственно и все. Застрял на том, что не могу выяснить значение выбранного по F4 номера - оно пустое получается


Last edited by cbw07 on Tue Feb 12, 2008 5:54 pm; edited 1 time in total
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 80
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Feb 12, 2008 5:11 pm    Post subject: Reply with quote

cbw07 wrote:
Code:

  CHECK NOT dynpro_fields-fieldvalue IS INITIAL.

  x_etnr = dynpro_fields-fieldvalue.



По коду не видно, что за таблица или структура dynpro_fields
и в каких параметрах 'DYNP_VALUES_READ' она используется?
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Feb 12, 2008 5:53 pm    Post subject: Reply with quote

dynpro_fields - осталась от прежних тестов... Тут конечно же должно стоять

CHECK NOT dynpfields-fieldvalue IS INITIAL.

x_etnr = dynpfields-fieldvalue.


Подправил код в пред. посте
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 80
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Feb 12, 2008 6:28 pm    Post subject: Reply with quote

Получается, что dynpfields - это таблица. Вы не прочитав из нее ни одной записи, проверяете содержимое в рабочей области. Что в таблице возвращается, посмотрите значения в отладчике?
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Feb 12, 2008 6:53 pm    Post subject: Reply with quote

Code:
DATA: field_value LIKE LINE OF dynpfields.
......
READ TABLE dynpro_fields INDEX 1 INTO field_value.
CHECK NOT field_value-fieldvalue IS INITIAL.
x_etnr = field_value-fieldvalue.


Но все равно пусто
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 80
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Feb 12, 2008 9:07 pm    Post subject: Reply with quote

cbw07 wrote:
Code:

READ TABLE dynpro_fields INDEX 1 INTO field_value.


Но все равно пусто

А если так? Smile

READ TABLE dynpfields INDEX 1 INTO field_value.
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Feb 13, 2008 11:24 am    Post subject: Reply with quote

Собственно у меня так и написано...
Code:
READ TABLE dynpfields INDEX 1 INTO field_value.

Просто описка...
Тем не менее, вопрос остается открытым...
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 80
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Wed Feb 13, 2008 12:09 pm    Post subject: Reply with quote

Рабочий пример.
На 100 экране два поля:
EKKO-EBELN
EKKO-AEDAT
При выборе из таблицы значения EKKO-EBELN обновляется второе поле.

Code:
REPORT Z_VGA_SCREEN.

TABLES: EKKO.
data:  FCODE TYPE sy-ucomm,
       SCODE TYPE sy-ucomm.

INITIALIZATION.

START-OF-SELECTION.
CALL SCREEN 100.

* populate screen field from within PROCESS ON VALUE-REQUEST(F4) call
*&------------------------------------------------------------------*
*&      Module  help_responsibility  INPUT
*&------------------------------------------------------------------*
*       text
*-------------------------------------------------------------------*
MODULE help_EKKO INPUT.

 DATA: dynpfields LIKE dynpread OCCURS 1 WITH HEADER LINE.
 DATA: field_value LIKE LINE OF dynpfields.
 DATA: return_values LIKE ddshretval OCCURS 0 WITH HEADER LINE.

 DATA: progname TYPE sy-repid,
       dynnum   TYPE sy-dynnr.

 DATA: BEGIN OF it_etnr OCCURS 0,
         EBELN TYPE EKKO-EBELN,
       END OF it_etnr.

  progname = sy-cprog.
  dynnum   = sy-dynnr.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE it_etnr
           FROM ekko.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield     = 'EKKO-EBELN'
      dynpprog     = progname
      dynpnr       = dynnum
      dynprofield  = 'EKKO-EBELN'
      window_title = 'Nr'
      value_org    = 'S'
    TABLES
      value_tab    = it_etnr
      return_tab      = return_values
   EXCEPTIONS
      OTHERS       = 0.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

*-------------------------------
  READ TABLE return_values WITH KEY RETFIELD = 'EKKO-EBELN'.
  CHECK sy-subrc IS INITIAL.
  EKKO-EBELN = return_values-fieldval.

  DATA: l_stepl LIKE  sy-stepl.
* Adjust for scroling within table control
  CALL FUNCTION 'DYNP_GET_STEPL'
    IMPORTING
      povstepl        = l_stepl
    EXCEPTIONS
      stepl_not_found = 0
      OTHERS          = 0.

  SELECT SINGLE * FROM EKKO WHERE ebeln = EKKO-EBELN.

  REFRESH dynpfields.
  CLEAR   dynpfields.
  dynpfields-fieldname  = 'EKKO-EBELN'.
  dynpfields-fieldvalue = EKKO-EBELN.
  dynpfields-stepl      = l_stepl.
  APPEND dynpfields.
  dynpfields-fieldname  = 'EKKO-AEDAT'.
  WRITE EKKO-AEDAT TO dynpfields-fieldvalue.
  dynpfields-stepl      = l_stepl.
  APPEND dynpfields.


  CALL FUNCTION 'DYNP_VALUES_UPDATE'
    EXPORTING
      dyname     = progname    "Program name
      dynumb     = dynnum      "Screen number
    TABLES
      dynpfields = dynpfields
    EXCEPTIONS
      OTHERS     = 0.

ENDMODULE.                 " help_EKKO  INPUT

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module STATUS_0100 output.
  SET PF-STATUS 'STATUS_100'.
*  SET TITLEBAR 'xxx'.
endmodule.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module USER_COMMAND_0100 input.

  SCODE = FCODE.
  CLEAR FCODE.

  CASE SCODE.
  WHEN 'EXIT' OR 'CANC'.
    LEAVE PROGRAM.
  WHEN 'BACK'.
    SET SCREEN 0.
  ENDCASE.

endmodule.                 " USER_COMMAND_0100  INPUT


PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.

PROCESS ON VALUE-REQUEST. "F4
  FIELD EKKO-EBELN MODULE help_ekko.



screen_100_ebeln_aedat.png
 Description:
 Filesize:  4.46 KB
 Viewed:  15580 Time(s)

screen_100_ebeln_aedat.png


Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Feb 13, 2008 1:57 pm    Post subject: Reply with quote

спасибо за хороший пример.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
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.