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

posted on 2014-05-04 15:35  帅帅爸  阅读(1085)  评论(0编辑  收藏  举报

导航