• F4搜索帮助


    需求: 搜索帮助的部分信息不作为查询条件使用,只做输出使用

    FORM SUB_SET_FPH_F4_DATA TABLES P_TAB_ZFI1003T STRUCTURE ZFI1003T
                              USING  P_PJH           TYPE ZFI1003T-ZPJH
                             CHANGING P_REC_ZFI1003T TYPE ZFI1003T.

      TYPES: BEGIN OF TYP_OUTPUT.
              INCLUDE STRUCTURE ZFI1003T.
      TYPES: SERIAL TYPE ZESERIAL.
      TYPES: END OF TYP_OUTPUT.

      TYPES: BEGIN OF TYP_PJH,
               SERIAL    TYPE ZESERIAL,            "---序号
               ZPJLX     TYPE ZFI1003T-ZPJLX,      "---票据类型
               ZPJLX_DES TYPE ZFI1004T-ZPJLX_DES,  "---票据类型描述
               ZPJH      TYPE ZFI1003T-ZPJH,       "---票据号
               ZQTFPH    TYPE ZFI1003T-ZQTFPH,     "---其它发票号
               ZFPRQ     TYPE ZFI1003T-ZFPRQ,      "---发票日期
               ZPJNR     TYPE ZFI1003T-ZPJNR,      "---发票内容
               ZKPDWN    TYPE ZFI1003T-ZKPDWN,     "---开票单位
               ZKPDW     TYPE ZEKPDW,              "---开票单位描述
               ZSPDWN    TYPE ZFI1003T-ZSPDWN,     "---收票单位
               ZSPDW     TYPE ZESPDW,              "---收票单位描述
               WRBTR     TYPE ZFI1003T-WRBTR,      "---发票金额
               WAERS     TYPE ZFI1003T-WAERS,      "---币种
               ZBCFP     TYPE ZFI1003T-ZBCFP,      "---关联发票
               ZFPZT     TYPE ZFI1003T-ZFPZT,
               ZFPZT_DES TYPE ZEFPZT_T,
             END OF TYP_PJH.


      DATA: REC_ZFI1003T TYPE ZFI1003T.

      DATA: REC_OUTPUT TYPE TYP_OUTPUT,
            TAB_OUTPUT TYPE TABLE OF TYP_OUTPUT.

      DATA: REC_PJH    TYPE TYP_PJH,
            TAB_PJH    TYPE TABLE OF TYP_PJH.

      DATA: L_SERIAL   TYPE ZESERIAL.

      DATA: REC_ZFI1004T TYPE ZFI1004T,
            TAB_ZFI1004T TYPE TABLE OF ZFI1004T.

      DATA: REC_T880     TYPE T880,
            TAB_T880     TYPE TABLE OF T880.


      DATA: L_WINDOW_TITLE(30) TYPE C.
      DATA: L_FIELDNAME        TYPE  LVC_FNAME.
      DATA: REC_RETURN         TYPE DDSHRETVAL,
            TAB_RETURN         TYPE TABLE OF DDSHRETVAL.


      CLEAR: L_SERIAL, REC_OUTPUT, TAB_OUTPUT.
      CLEAR: REC_PJH, TAB_PJH.
      LOOP AT P_TAB_ZFI1003T INTO REC_ZFI1003T.
        L_SERIAL = L_SERIAL + 1.
        MOVE-CORRESPONDING REC_ZFI1003T TO REC_OUTPUT.
        REC_OUTPUT-SERIAL = L_SERIAL.
        APPEND REC_OUTPUT TO TAB_OUTPUT.

        MOVE-CORRESPONDING REC_OUTPUT TO REC_PJH.
        APPEND REC_PJH TO TAB_PJH.
      ENDLOOP.

      "---查询单位描述
      IF TAB_PJH IS NOT INITIAL.
        SELECT * FROM ZFI1004T INTO TABLE TAB_ZFI1004T.

        SELECT * FROM T880 INTO TABLE TAB_T880
          FOR ALL ENTRIES IN TAB_PJH
          WHERE ( RCOMP = TAB_PJH-ZKPDWN OR
                  RCOMP = TAB_PJH-ZSPDWN ).
      ENDIF.

      "---更新单位描述
      LOOP AT TAB_PJH INTO REC_PJH.
        READ TABLE TAB_T880 INTO REC_T880 WITH KEY RCOMP = REC_PJH-ZKPDWN.
        IF SY-SUBRC = 0.
          REC_PJH-ZKPDW = REC_T880-NAME1.
        ENDIF.

        READ TABLE TAB_T880 INTO REC_T880 WITH KEY RCOMP = REC_PJH-ZSPDWN.
        IF SY-SUBRC = 0.
          REC_PJH-ZSPDW = REC_T880-NAME1.
        ENDIF.

        READ TABLE TAB_ZFI1004T INTO REC_ZFI1004T WITH KEY ZPJLX = REC_PJH-ZPJLX.
        IF SY-SUBRC = 0.
          REC_PJH-ZPJLX_DES = REC_ZFI1004T-ZPJLX_DES.
        ENDIF.

        CASE REC_PJH-ZFPZT.
          WHEN '1'.
            REC_PJH-ZFPZT_DES = '正常发票'.
          WHEN '2'.
            REC_PJH-ZFPZT_DES = '补差发票'.
          WHEN '3'.
            REC_PJH-ZFPZT_DES = '退回作废'.
          WHEN '4'.
            REC_PJH-ZFPZT_DES = '红字发票'.
          WHEN OTHERS.
        ENDCASE.

        MODIFY TAB_PJH FROM REC_PJH.
      ENDLOOP.


      "---票据号输入,且只存在一条信息时,直接输出并推出
      IF P_PJH IS NOT INITIAL.
        IF LINES( TAB_OUTPUT ) = 1.
          CLEAR: REC_ZFI1003T.
          READ TABLE P_TAB_ZFI1003T INTO REC_ZFI1003T INDEX 1.
          MOVE-CORRESPONDING REC_ZFI1003T TO P_REC_ZFI1003T.
          EXIT.
        ENDIF.
      ENDIF.

      "---未输入票据号或者票据号输入存在多条结果时,F4输出
      CLEAR: TAB_RETURN.
      L_FIELDNAME = 'SERIAL'.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD         = L_FIELDNAME
          DYNPPROG         = SY-REPID
          DYNPNR           = SY-DYNNR
          WINDOW_TITLE     = L_WINDOW_TITLE
          VALUE_ORG        = 'S'
          CALLBACK_PROGRAM = SY-REPID                  " <------- Current Program name
          CALLBACK_FORM    = 'SUB_F4CALLBACK_FP'       " <------ Form name
        TABLES
          VALUE_TAB        = TAB_PJH[]
          RETURN_TAB       = TAB_RETURN
        EXCEPTIONS
          PARAMETER_ERROR  = 1
          NO_VALUES_FOUND  = 2
          OTHERS           = 3.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.

      CLEAR: REC_RETURN.
      READ TABLE TAB_RETURN INTO REC_RETURN INDEX 1.

      CLEAR: REC_OUTPUT, REC_ZFI1003T.
      READ TABLE TAB_OUTPUT INTO REC_OUTPUT WITH KEY SERIAL = REC_RETURN-FIELDVAL.
      MOVE-CORRESPONDING REC_OUTPUT TO REC_ZFI1003T.
      MOVE-CORRESPONDING REC_ZFI1003T TO P_REC_ZFI1003T.

    ENDFORM.                    "sub_set_fph_f4_data


    *&---------------------------------------------------------------------*
    *&      Form  SUB_F4CALLBACK_fp
    *&---------------------------------------------------------------------*
    *       发票类型F4,取消查询界面部分查询输入字段
    *----------------------------------------------------------------------*
    *      -->RECORD_TAB   text
    *      -->SHLP         text
    *      -->CALLCONTROL  text
    *----------------------------------------------------------------------*
    FORM SUB_F4CALLBACK_FP  TABLES RECORD_TAB STRUCTURE SEAHLPRES
                             CHANGING SHLP TYPE SHLP_DESCR
                                      CALLCONTROL LIKE DDSHF4CTRL.

      SHLP-INTDESCR-DIALOGTYPE = 'C'.   "   <----
      CALLCONTROL-NO_MAXDISP = ''.       "   <----

      FIELD-SYMBOLS <FS> TYPE DDSHFPROP.
      LOOP AT  SHLP-FIELDPROP ASSIGNING <FS>.
        IF <FS>-FIELDNAME = 'F0001'.
          <FS>-SHLPINPUT = ''.
          <FS>-SHLPSELPOS = '00'.
        ELSEIF  <FS>-FIELDNAME = 'F0003'.
          <FS>-SHLPINPUT = ''.
          <FS>-SHLPSELPOS = '00'.
        ELSEIF  <FS>-FIELDNAME = 'F0007'.
          <FS>-SHLPINPUT = ''.
          <FS>-SHLPSELPOS = '00'.
        ELSEIF  <FS>-FIELDNAME = 'F0009'.
          <FS>-SHLPINPUT = ''.
          <FS>-SHLPSELPOS = '00'.
        ELSEIF  <FS>-FIELDNAME = 'F0011'.
          <FS>-SHLPINPUT = ''.
          <FS>-SHLPSELPOS = '00'.
        ELSEIF  <FS>-FIELDNAME = 'F0016'.
          <FS>-SHLPINPUT = ''.
          <FS>-SHLPSELPOS = '00'.
        ENDIF.
      ENDLOOP.

    *--------------------------------------------------------------------------------
    *  For getting Maximum no of hits tab
    ENDFORM.                    "SUB_F4CALLBACK_fp

  • 相关阅读:
    hadoop2.2.0伪分布式搭建
    HBase详解
    Hbase常用命令
    hbase读取数据原理
    约瑟夫环
    哈希表设计
    哈夫曼树的建立
    TCP的连接和释放
    什么是Kmp算法?
    什么是https
  • 原文地址:https://www.cnblogs.com/lnu2471/p/3707171.html
Copyright © 2020-2023  润新知