F4检索帮助出口

1.定义检所帮助SE11



2.出口程序ZKJ_MM_F4SERHLP



TYPE-POOLS shlp.
TYPES:
BEGIN OF gtt_zkp090t,
WERKS TYPE zkp090t-WERKS,
MATNR TYPE zkp090t-MATNR,
FELD1 TYPE zkp090t-FELD1,
FELD2 TYPE zkp090t-FELD2,
FELD3 TYPE zkp090t-FELD3,
MAKTG TYPE MAKT-MAKTG,
SPRAS TYPE MAKT-SPRAS,
END OF gtt_zkp090t.

DATA: gdt_zkp090t TYPE TABLE OF gtt_zkp090t,
gds_zkp090t TYPE gtt_zkp090t,
wa_selopt TYPE ddshselopt,
wa_fielddescr TYPE dfies.
DATA:
rc TYPE i,
v_tabix LIKE sy-tabix.
DATA:
      GDT_MAKT TYPE STANDARD TABLE OF MAKT WITH HEADER LINE,
      GDT_MAKT_RANGE TYPE STANDARD TABLE OF MAKT WITH HEADER LINE,
      GDT_ZKP110T_1 TYPE STANDARD TABLE OF ZKP110T WITH HEADER LINE
      .
RANGES: S_WERKS FOR kna1-WERKS,
S_FELD1 FOR zkp090t-FELD1,
S_FELD2 FOR zkp090t-FELD2,
S_FELD3 FOR zkp090t-FELD3,
S_MATNR FOR zkp090t-MATNR,
S_MAKTG FOR MAKT-MAKTG,
S_SPRAS FOR MAKT-SPRAS.

FUNCTION ZKJ_MM_F4SERHLP.
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*"  TABLES
*"      SHLP_TAB TYPE  SHLP_DESCT
*"      RECORD_TAB STRUCTURE  SEAHLPRES
*"  CHANGING
*"     VALUE(SHLP) TYPE  SHLP_DESCR
*"     VALUE(CALLCONTROL) LIKE  DDSHF4CTRL STRUCTURE  DDSHF4CTRL
*"----------------------------------------------------------------------
* EXIT immediately, if you do not want to handle this step

  CASE callcontrol-step.

    WHEN 'SELECT'.
* Change column header texts appearing on the search help hit list
      LOOP AT shlp-fielddescr INTO wa_fielddescr."输出制造表头
        v_tabix = sy-tabix.
        CASE wa_fielddescr-fieldname.
          WHEN 'WERKS'.
            wa_fielddescr-fieldtext = 'プラント'.
            wa_fielddescr-reptext = 'プラント'.
            wa_fielddescr-scrtext_s = 'プラント'.
            wa_fielddescr-scrtext_m = 'プラント'.
            wa_fielddescr-scrtext_l = 'プラント'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
          WHEN 'FELD1'.
            wa_fielddescr-reptext = '親図'.
            wa_fielddescr-fieldtext = '親図'.
            wa_fielddescr-scrtext_s = '親図'.
            wa_fielddescr-scrtext_m = '親図'.
            wa_fielddescr-scrtext_l = '親図'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
          WHEN 'FELD2'.
            wa_fielddescr-fieldtext = '加工図1'.
            wa_fielddescr-reptext = '加工図1'.
            wa_fielddescr-scrtext_s = '加工図1'.
            wa_fielddescr-scrtext_m = '加工図1'.
            wa_fielddescr-scrtext_l = '加工図1'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
          WHEN 'FELD3'.
            wa_fielddescr-fieldtext = '加工図2'.
            wa_fielddescr-reptext = '加工図2'.
            wa_fielddescr-scrtext_s = '加工図2'.
            wa_fielddescr-scrtext_m = '加工図2'.
            wa_fielddescr-scrtext_l = '加工図2'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
          WHEN 'MATNR'.
            wa_fielddescr-fieldtext = '品目コード'.
            wa_fielddescr-reptext = '品目コード'.
            wa_fielddescr-scrtext_s = '品目コード'.
            wa_fielddescr-scrtext_m = '品目コード'.
            wa_fielddescr-scrtext_l = '品目コード'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
          WHEN 'MAKTG'.
            wa_fielddescr-fieldtext = '品目テキスト'.
            wa_fielddescr-reptext = '品目テキスト'.
            wa_fielddescr-scrtext_s = '品目テキスト'.
            wa_fielddescr-scrtext_m = '品目テキスト'.
            wa_fielddescr-scrtext_l = '品目テキスト'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
          WHEN 'SPRAS'.
            wa_fielddescr-fieldtext = '言語キー'.
            wa_fielddescr-reptext = '言語キー'.
            wa_fielddescr-scrtext_s = '言語キー'.
            wa_fielddescr-scrtext_m = '言語キー'.
            wa_fielddescr-scrtext_l = '言語キー'.
            MODIFY shlp-fielddescr FROM wa_fielddescr
            INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s
            scrtext_m scrtext_l.
        ENDCASE.
      ENDLOOP.
* Select the Bill to party customer based on the select options
      REFRESH S_FELD1.
      REFRESH S_FELD2.
      REFRESH S_FELD3.
      REFRESH S_MATNR.
      REFRESH S_MAKTG.
      REFRESH S_SPRAS.
      LOOP AT shlp-selopt INTO wa_selopt."构造选择屏幕RANGE
* Build a Range for the 5 selection options of the search help
        CASE wa_selopt-shlpfield.
          WHEN 'WERKS'.
            S_WERKS-sign = wa_selopt-sign.
            S_WERKS-option = wa_selopt-option.
            S_WERKS-low = wa_selopt-low.
            S_WERKS-high = wa_selopt-high.
            APPEND S_WERKS.
            CLEAR S_WERKS.
          WHEN 'MATNR'.
            S_MATNR-sign = wa_selopt-sign.
            S_MATNR-option = wa_selopt-option.
            S_MATNR-low = wa_selopt-low.
            S_MATNR-high = wa_selopt-high.
            APPEND S_MATNR.
            CLEAR S_MATNR.
          WHEN 'FELD1'.
            S_FELD1-sign = wa_selopt-sign.
            S_FELD1-option = wa_selopt-option.
            S_FELD1-low = wa_selopt-low.
            S_FELD1-high = wa_selopt-high.
            APPEND S_FELD1.
            CLEAR S_FELD1.
          WHEN 'FELD2'.
            S_FELD2-sign = wa_selopt-sign.
            S_FELD2-option = wa_selopt-option.
            S_FELD2-low = wa_selopt-low.
            S_FELD2-high = wa_selopt-high.
            APPEND S_FELD2.
            CLEAR S_FELD2.
          WHEN 'FELD3'.
            S_FELD3-sign = wa_selopt-sign.
            S_FELD3-option = wa_selopt-option.
            S_FELD3-low = wa_selopt-low.
            S_FELD3-high = wa_selopt-high.
            APPEND S_FELD3.
            CLEAR S_FELD3.
          WHEN 'MATNR'.
            S_MATNR-sign = wa_selopt-sign.
            S_MATNR-option = wa_selopt-option.
            S_MATNR-low = wa_selopt-low.
            S_MATNR-high = wa_selopt-high.
            APPEND S_MATNR.
            CLEAR S_MATNR.
          WHEN 'MAKTG'.
            S_MAKTG-sign = wa_selopt-sign.
            S_MAKTG-option = wa_selopt-option.
            S_MAKTG-low = wa_selopt-low.
            S_MAKTG-high = wa_selopt-high.
            APPEND S_MAKTG.
            CLEAR S_MAKTG.
          WHEN 'SPRAS'.
            S_SPRAS-sign = wa_selopt-sign.
            S_SPRAS-option = wa_selopt-option.
            S_SPRAS-low = wa_selopt-low.
            S_SPRAS-high = wa_selopt-high.
            APPEND S_SPRAS.
            CLEAR S_SPRAS.
        ENDCASE.
      ENDLOOP.
* Retrieve data from KNVP table for the above selected ranges
* Doing query to retrieve data for the search help
      IF SY-UNAME = 'HAND04'.
        "BREAK-POINT.
      ENDIF.
      "取数逻辑
      IF S_MAKTG[] IS NOT INITIAL.
        SELECT * FROM MAKT INTO CORRESPONDING FIELDS OF TABLE GDT_MAKT_RANGE
         WHERE MATNR IN S_MATNR
         AND   SPRAS IN S_SPRAS
         AND   MAKTG IN S_MAKTG
         .
        IF GDT_MAKT_RANGE[] IS NOT INITIAL.
          SELECT * FROM ZKP090T INTO CORRESPONDING FIELDS OF TABLE gdt_zkp090t UP TO CALLCONTROL-MAXRECORDS ROWS
          FOR ALL ENTRIES IN GDT_MAKT_RANGE
          WHERE WERKS IN S_WERKS
          AND MATNR = GDT_MAKT_RANGE-MATNR
          AND MATNR IN S_MATNR
          AND FELD1 IN S_FELD1
          AND FELD2 IN S_FELD2
          AND FELD3 IN S_FELD3.
        ENDIF.
      ELSE.
        SELECT * FROM ZKP090T INTO CORRESPONDING FIELDS OF TABLE gdt_zkp090t UP TO CALLCONTROL-MAXRECORDS ROWS
        WHERE WERKS IN S_WERKS
        AND MATNR IN S_MATNR
        AND FELD1 IN S_FELD1
        AND FELD2 IN S_FELD2
        AND FELD3 IN S_FELD3.
      ENDIF.

      CHECK sy-subrc = 0.
      IF gdt_zkp090t IS NOT INITIAL.
        SELECT * FROM MAKT INTO CORRESPONDING FIELDS OF TABLE GDT_MAKT
          FOR ALL ENTRIES IN gdt_zkp090t
          WHERE MATNR = gdt_zkp090t-MATNR
          AND   SPRAS IN S_SPRAS
          AND   MAKTG IN S_MAKTG
          .
        SELECT * FROM ZKP110T INTO CORRESPONDING FIELDS OF TABLE GDT_ZKP110T_1
          FOR ALL ENTRIES IN gdt_zkp090t
          WHERE FELD1 = gdt_zkp090t-FELD1
          OR    FELD1 = gdt_zkp090t-FELD2
          OR    FELD1 = gdt_zkp090t-FELD3
          .
        LOOP AT gdt_zkp090t INTO gds_zkp090t.
          READ TABLE GDT_MAKT WITH KEY MATNR = gds_zkp090t-MATNR.
          IF SY-subrc NE 0.
            "DELETE gdt_zkp090t.
          ELSE.
            gds_zkp090t-MAKTG = GDT_MAKT-MAKTG.
            gds_zkp090t-SPRAS = GDT_MAKT-SPRAS.
            MODIFY gdt_zkp090t FROM gds_zkp090t.
          ENDIF.
        ENDLOOP.

        LOOP AT gdt_zkp090t INTO gds_zkp090t.
          CLEAR GDT_ZKP110T_1.
          READ TABLE GDT_ZKP110T_1 WITH KEY FELD1 = gdS_zkp090t-FELD1.
          IF gdS_zkp090t-FELD1 IS NOT INITIAL.
            IF GDT_ZKP110T_1 IS NOT INITIAL.
              CONCATENATE GDT_ZKP110T_1-FELD5 gdS_zkp090t-FELD1 ':' GDT_ZKP110T_1-FELD2 INTO gdS_zkp090t-FELD1.
            ELSE.
              gdS_zkp090t-FELD1 = gdS_zkp090t-FELD1.
            ENDIF.
          ENDIF.
          CLEAR GDT_ZKP110T_1.
          READ TABLE GDT_ZKP110T_1 WITH KEY FELD1 = gdS_zkp090t-FELD2.
          IF gdS_zkp090t-FELD2 IS NOT INITIAL.
            IF GDT_ZKP110T_1 IS NOT INITIAL.
              CONCATENATE GDT_ZKP110T_1-FELD5 gdS_zkp090t-FELD2 ':' GDT_ZKP110T_1-FELD2 INTO gdS_zkp090t-FELD2.
            ELSE.
              gdS_zkp090t-FELD2 = gdS_zkp090t-FELD2.
            ENDIF.
          ENDIF.
          CLEAR GDT_ZKP110T_1.
          READ TABLE GDT_ZKP110T_1 WITH KEY FELD1 = gdS_zkp090t-FELD3.
          IF gdS_zkp090t-FELD3 IS NOT INITIAL.
            IF GDT_ZKP110T_1 IS NOT INITIAL.
              CONCATENATE GDT_ZKP110T_1-FELD5 gdS_zkp090t-FELD3 ':' GDT_ZKP110T_1-FELD2 INTO gdS_zkp090t-FELD3.
            ELSE.
              gdS_zkp090t-FELD3 = gdS_zkp090t-FELD3.
            ENDIF.
          ENDIF.
          MODIFY gdt_zkp090t FROM gds_zkp090t.
        ENDLOOP.
      ENDIF.
* Move all the selected records to Record_Tab
      REFRESH record_tab.
      LOOP AT gdt_zkp090t INTO gdS_zkp090t.
        v_tabix = sy-tabix.
        MOVE gdS_zkp090t TO record_tab-string.
        APPEND record_tab.
        CLEAR record_tab.
      ENDLOOP.
      callcontrol-step = 'DISP'.
      EXIT.
    WHEN 'PRESEL1'.
    WHEN 'DISP'.
    WHEN OTHERS.
  ENDCASE.
ENDFUNCTION.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值