FM: DYNP_VALUES_READ

在还没按F8前, selection-screen中的field所键入的值是取不到的.
PARAMETERS: pr_pro TYPE char3. 我们无法取得pr_pro的值, 在按F8执行后, pr_pro
的值就可以取到了.

那有没有可以在按F8前取到pr_pro里填的值呢? 那就要用FM: DYNP_VALUES_READ了


下面是应用的代码, 根据pr_pro所键入的省, 去确定pr_city里的search help

TYPES: BEGIN OF ty_test,
         pro TYPE char3,
       END OF ty_test.

TYPES: BEGIN OF ty_test2,
         city TYPE char3,
       END OF ty_test2.

DATA: lt_dynp_read TYPE TABLE OF dynpread,
      lw_dynp_read TYPE dynpread.

DATA: lt_value TYPE STANDARD TABLE OF ty_test,
      lw_value TYPE ty_test.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
PARAMETERS: pr_pro TYPE char3,
            pr_city TYPE char2.
SELECTION-SCREEN END OF BLOCK blk1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_pro.

  CLEAR lt_value.

  lw_value = '广东'.
  APPEND lw_value TO lt_value.

  lw_value = '浙江'.
  APPEND lw_value TO lt_value.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
    retfield               = 'PRO'
    dynpprog               = sy-repid
    dynpnr                 = sy-dynnr
    dynprofield            = 'PR_PRO'
    value_org              = 'S'
    TABLES
      value_tab              = lt_value
* EXCEPTIONS
*   PARAMETER_ERROR        = 1
*   NO_VALUES_FOUND        = 2
*   OTHERS                 = 3
            .
  IF sy-subrc <> 0.

  ENDIF.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_city.

  lw_dynp_read-fieldname = 'PR_PRO'.
  APPEND lw_dynp_read TO lt_dynp_read.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname               = sy-repid
      dynumb               = '1000'
    TABLES
      dynpfields           = lt_dynp_read
    EXCEPTIONS
      invalid_abapworkarea = 1
      invalid_dynprofield  = 2
      invalid_dynproname   = 3
      invalid_dynpronummer = 4
      invalid_request      = 5
      no_fielddescription  = 6
      invalid_parameter    = 7
      undefind_error       = 8
      double_conversion    = 9
      stepl_not_found      = 10
      OTHERS               = 11.

  READ TABLE lt_dynp_read INTO lw_dynp_read INDEX 1.

  IF lw_dynp_read-fieldvalue = '广东'.

    CLEAR lt_value.
    lw_value = '广州'.
    APPEND lw_value TO lt_value.

    lw_value = '东莞'.
    APPEND lw_value TO lt_value.

    lw_value = '汕头'.
    APPEND lw_value TO lt_value.

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
      retfield               = 'PRO'
      dynpprog               = sy-repid
      dynpnr                 = sy-dynnr
      dynprofield            = 'PR_PRO'
      value_org              = 'S'
      TABLES
        value_tab              = lt_value
* EXCEPTIONS
*   PARAMETER_ERROR        = 1
*   NO_VALUES_FOUND        = 2
*   OTHERS                 = 3
              .
    IF sy-subrc <> 0.

    ENDIF.


  ENDIF.

  IF lw_dynp_read-fieldvalue = '浙江'.

    CLEAR lt_value.
    lw_value = '杭州'.
    APPEND lw_value TO lt_value.

    lw_value = '温州'.
    APPEND lw_value TO lt_value.

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
      retfield               = 'PRO'
      dynpprog               = sy-repid
      dynpnr                 = sy-dynnr
      dynprofield            = 'PR_PRO'
      value_org              = 'S'
      TABLES
        value_tab              = lt_value
* EXCEPTIONS
*   PARAMETER_ERROR        = 1
*   NO_VALUES_FOUND        = 2
*   OTHERS                 = 3
              .
    IF sy-subrc <> 0.
    ENDIF.


  ENDIF.


REPORT Z_XTT_FILE_BROWSER. DATA: V_FILE_PATH TYPE STRING, V_DIR_PATH TYPE STRING. PARAMETERS: P_FILE TYPE RLGRAP-FILENAME DEFAULT 'C:\' OBLIGATORY, P_DIR TYPE RLGRAP-FILENAME DEFAULT 'C:\' OBLIGATORY. SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS: RB_FILE RADIOBUTTON GROUP GR1 DEFAULT 'X', RB_DIR RADIOBUTTON GROUP GR1. SELECTION-SCREEN END OF BLOCK B1. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. PERFORM FRM_GET_FILE_PATH. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DIR. PERFORM FRM_GET_DIR_PATH. FORM FRM_GET_FILE_PATH. DATA: LIT_FILES TYPE FILETABLE, LWA_FILE TYPE FILE_TABLE, V_RC TYPE I. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING WINDOW_TITLE = 'Select File' DEFAULT_EXTENSION = '*.*' MULTISELECTION = ABAP_FALSE CHANGING FILE_TABLE = LIT_FILES RC = V_RC EXCEPTIONS FILE_OPEN_DIALOG_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF SY-SUBRC = 0 AND V_RC = 1. READ TABLE LIT_FILES INTO LWA_FILE INDEX 1. IF SY-SUBRC = 0. P_FILE = LWA_FILE-FILENAME. ENDIF. ENDIF. ENDFORM. FORM FRM_GET_DIR_PATH. DATA: V_DIR TYPE STRING. CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE EXPORTING WINDOW_TITLE = 'Select Directory' INITIAL_FOLDER = 'C:\' CHANGING SELECTED_FOLDER = V_DIR EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 OTHERS = 4. IF SY-SUBRC = 0. P_DIR = V_DIR. ENDIF. ENDFORM. START-OF-SELECTION. IF RB_FILE = 'X'. V_FILE_PATH = P_FILE. WRITE: / 'Selected File:', V_FILE_PATH. ELSE. V_DIR_PATH = P_DIR. WRITE: / 'Selected Directory:', V_DIR_PATH. ENDIF. ### 问题: 如何创建一个SAP接口来获取国家特定的数字格式、日期格式和时间格式设置,包括可选的相关描述信息? ### 代码: REPORT ZGET_COUNTRY_FORMATS. TABLES: T005X. TYPES: BEGIN OF TY_COUNTRY_FORMAT, LAND1 TYPE T005X-LAND1, NUMCO TYPE T005X-NUMCO, DATFM TYPE T005X-DATFM, TIMEFM TYPE T005X-TIMEFM, LANDX TYPE T005X-LANDX, DATFMTXT TYPE T005X-DATFMTXT, TIMEFMTXT TYPE T005X-TIMEFMTXT, END OF TY_COUNTRY_FORMAT. DATA: IT_COUNTRY_FORMATS TYPE STANDARD TABLE OF TY_COUNTRY_FORMAT, WA_COUNTRY_FORMAT TYPE TY_COUNTRY_FORMAT. SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS: P_LAND1 TYPE T005X-LAND1 OBLIGATORY. SELECT-OPTIONS: S_NUMCO FOR T005X-NUMCO. PARAMETERS: CB_DESC AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK B1. START-OF-SELECTION. PERFORM FRM_GET_COUNTRY_FORMATS. FORM FRM_GET_COUNTRY_FORMATS. SELECT LAND1 NUMCO DATFM TIMEFM LANDX DATFMTXT TIMEFMTXT FROM T005X INTO TABLE IT_COUNTRY_FORMATS WHERE LAND1 = P_LAND1 AND NUMCO IN S_NUMCO. IF CB_DESC = 'X'. LOOP AT IT_COUNTRY_FORMATS INTO WA_COUNTRY_FORMAT. WRITE: / 'Country:', WA_COUNTRY_FORMAT-LAND1, / 'Numeric Format:', WA_COUNTRY_FORMAT-NUMCO, / 'Date Format:', WA_COUNTRY_FORMAT-DATFM, / 'Time Format:', WA_COUNTRY_FORMAT-TIMEFM, / 'Country Name:', WA_COUNTRY_FORMAT-LANDX, / 'Date Format Desc:', WA_COUNTRY_FORMAT-DATFMTXT, / 'Time Format Desc:', WA_COUNTRY_FORMAT-TIMEFMTXT. ENDLOOP. ELSE. LOOP AT IT_COUNTRY_FORMATS INTO WA_COUNTRY_FORMAT. WRITE: / 'Country:', WA_COUNTRY_FORMAT-LAND1, / 'Numeric Format:', WA_COUNTRY_FORMAT-NUMCO, / 'Date Format:', WA_COUNTRY_FORMAT-DATFM, / 'Time Format:', WA_COUNTRY_FORMAT-TIMEFM. ENDLOOP. ENDIF. ENDFORM. 上面代码用了CLASS,把他改成不用CLASS的方法
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值