在alv报告输出中,我只得到8位数字,但表中有10位数字.. !!

2020-08-17 17:02发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在alv报告输出中,我仅得到8位数字,但表中有更多数字.. !! 如何获得表中的确切输出。
 *&------------------------------------------------  --------------------- *
 *&报告Z_FI_GLACC
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 报告z_fi_glacc没有标准页标题。

 表格:bseg,bkpf,skat。

 类型:开始于ty_final,
          sel,
          prctr TYPE prctr,
          hkont TYPE hkont,
          belnr TYPE belnr,
          TYPE budat,
          TYPE BLDAT,
          augcp TYPE augcp,
          pswsl TYPE pswsl,
          xref1类型xref1,
          sgxtx TYPE sgtxt,
          dzuonr TYPE dzuonr,
          wrbtr TYPE wrbtr,
          bktxt TYPE bktxt,
          cpudt TYPE cpudt,
          saknr TYPE saknr,
          txt50 TYPE txt50,

        ty_final结束。

 数据:gt ty_final类型表,
       gwa TYPE ty_final,
       it_fcat TYPE slis_t_fieldcat_alv,
       wa_fcat TYPE slis_fieldcat_alv,
       gs_layout TYPE slis_layout_alv,
       gs_varient TYPE变量,
       v_prog TYPE sy-repid,
       v_name TYPE sy-uname,
       rs_selfield TYPE slis_selfield,
       v_selfield TYPE slis_selfield值,
       r_ucomm TYPE sy-ucomm。

 初始化。
   v_prog = sy-repid。
   v_name = sy-uname。

   带有标题标题文本001的b1块的选择屏幕开始。
   选择选项:s_hkont for bseg-hkont," gl帐号
                    s_budat FOR bseg-h_budat,"发布数据
                    s_prctr FOR bseg-prctr。 利润中心
   块b的选择屏幕结束。

 选择开始。
   执行get_data。

 选择结束。
   执行fcat。
   执行alvcall。
   使用r_ucomm更改rs_selfield来执行usercmd。

 FORM get_data。

   SELECT prctr,
        赫康特
        belnr,
        h_budat,
        h_bldat,
        奥格,
        pswsl,
        外部参照1,
        sgtxt,
        zuonr,
        从bseg到表@DATA(l_bseg)中的wrbtr
        在@s_hkont的hkont
        AND h_budat IN @s_budat
 * AND koart ='S''A资产
 ** D客户
 ** K供应商
 ** M材质
 **总账科目

   和prctr IN @s_prctr。

   检查sy-subrc EQ 0。

   SELECT bktxt,
           cpudt,
           贝恩
           从bkpf到表@DATA(l_bkpf)中所有@l_bseg中的条目
           在哪里belnr EQ @ l_bseg-belnr
   与@@ s_budat中的好友。

   如果l_bseg []不初始化。

     SELECT saknr,
            txt50
            从skat到表@DATA(l_skat)中所有@l_bseg中的条目
     在哪里saknr EQ @ l_bseg-hkont。

   万一。

   排序:l_bseg BY belnr,
         l_bkpf BY belnr。

   循环到l_bseg INTO DATA(w_bseg)。
     gwa-prctr = w_bseg-prctr。
     gwa-hkont = w_bseg-hkont。
     gwa-belnr = w_bseg-belnr。
     gwa-budat = w_bseg-h_budat。
     gwa-bldat = w_bseg-h_bldat。
     gwa-augcp = w_bseg-augcp。
     gwa-pswsl = w_bseg-pswsl。
     gwa-xref1 = w_bseg-xref1。
     gwa-sgxtx = w_bseg-sgtxt。
     gwa-dzuonr = w_bseg-zuonr。
     gwa-wrbtr = w_bseg-wrbtr。

     使用键belnr = w_bseg-belnr二进制搜索将表l_bkpf读入DATA(w_bkpf)。

     如果sy-subrc EQ 0。
       gwa-bktxt = w_bkpf-bktxt。
       gwa-cpudt = w_bkpf-cpudt。
     万一。

     使用键saknr = w_bseg-hkont二进制搜索将表l_skat读入DATA(w_skat)。

     如果sy-subrc EQ 0。
       gwa-saknr = w_skat-saknr。
       gwa-txt50 = w_skat-txt50。
     万一。

     将gwa附加到gt。
     清除gwa。
   结局。

 ENDFORM。

 表格fcat。

   gs_layout-colwidth_optimize ='X'。
   gs_layout-box_fieldname ='SEL'。
   gs_varient-report = sy-repid。

   wa_fcat-fieldname ='BELNR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='文件编号'。
   wa_fcat-hotspot ='X'。
   wa_fcat-outputlen ='15'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='SGTXT'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='项目文本'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='PRCTR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='利润中心'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='BUDAT'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='发布日期'。
   wa_fcat-datatype ='DATS'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='BLDAT'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='文档日期'。
   wa_fcat-datatype ='DATS'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='CPUDT'。
   wa_fcat-ref_tabname ='BKPF'。
   wa_fcat-seltext_m ='输入日期'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='WRBTR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='凭证货币金额'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='PSWSL'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='货币'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='DZUONR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='指派人'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='BKTXT'。
   wa_fcat-ref_tabname ='BKPF'。
   wa_fcat-seltext_m ='标题文本'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='SAKNR'。
   wa_fcat-ref_tabname ='SKA1'。
   wa_fcat-seltext_m ='总账科目'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='XREF1'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='商业伙伴'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='TXT50_SKAT'。
   wa_fcat-ref_tabname ='SKAT'。
   wa_fcat-seltext_m ='说明'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

 *将wa_fcat附加到it_fcat。
 *清除wa_fcat。


 ENDFORM。


 FORM alvcall。

   通话功能'REUSE_ALV_GRID_DISPLAY'
     出口
       i_callback_program = v_prog
       i_callback_user_command ='USERCMD'
       i_grid_title ='总帐科目明细'
       is_layout = gs_layout
       it_fieldcat = it_fcat
       is_variant = gs_varient
     桌子
       t_outtab = gt。


 ENDFORM。


 FORM usercmd使用r_ucoma TYPE sy-ucomm更改rs_selfield TYPE slis_selfield。
   案例r_ucoma。
     当"&IC1"时。
       案例rs_selfield-fieldname。
         当" BELNR"。
           设置参数ID'BLN'
           FIELD rs_selfield值。
           呼叫交易" FS00"并跳过第一屏。
       结束。
   结束。
 ENDFORM。

bseg.jpg (44.7 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在alv报告输出中,我仅得到8位数字,但表中有更多数字.. !! 如何获得表中的确切输出。
 *&------------------------------------------------  --------------------- *
 *&报告Z_FI_GLACC
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 报告z_fi_glacc没有标准页标题。

 表格:bseg,bkpf,skat。

 类型:开始于ty_final,
          sel,
          prctr TYPE prctr,
          hkont TYPE hkont,
          belnr TYPE belnr,
          TYPE budat,
          TYPE BLDAT,
          augcp TYPE augcp,
          pswsl TYPE pswsl,
          xref1类型xref1,
          sgxtx TYPE sgtxt,
          dzuonr TYPE dzuonr,
          wrbtr TYPE wrbtr,
          bktxt TYPE bktxt,
          cpudt TYPE cpudt,
          saknr TYPE saknr,
          txt50 TYPE txt50,

        ty_final结束。

 数据:gt ty_final类型表,
       gwa TYPE ty_final,
       it_fcat TYPE slis_t_fieldcat_alv,
       wa_fcat TYPE slis_fieldcat_alv,
       gs_layout TYPE slis_layout_alv,
       gs_varient TYPE变量,
       v_prog TYPE sy-repid,
       v_name TYPE sy-uname,
       rs_selfield TYPE slis_selfield,
       v_selfield TYPE slis_selfield值,
       r_ucomm TYPE sy-ucomm。

 初始化。
   v_prog = sy-repid。
   v_name = sy-uname。

   带有标题标题文本001的b1块的选择屏幕开始。
   选择选项:s_hkont for bseg-hkont," gl帐号
                    s_budat FOR bseg-h_budat,"发布数据
                    s_prctr FOR bseg-prctr。 利润中心
   块b的选择屏幕结束。

 选择开始。
   执行get_data。

 选择结束。
   执行fcat。
   执行alvcall。
   使用r_ucomm更改rs_selfield来执行usercmd。

 FORM get_data。

   SELECT prctr,
        赫康特
        belnr,
        h_budat,
        h_bldat,
        奥格,
        pswsl,
        外部参照1,
        sgtxt,
        zuonr,
        从bseg到表@DATA(l_bseg)中的wrbtr
        在@s_hkont的hkont
        AND h_budat IN @s_budat
 * AND koart ='S''A资产
 ** D客户
 ** K供应商
 ** M材质
 **总账科目

   和prctr IN @s_prctr。

   检查sy-subrc EQ 0。

   SELECT bktxt,
           cpudt,
           贝恩
           从bkpf到表@DATA(l_bkpf)中所有@l_bseg中的条目
           在哪里belnr EQ @ l_bseg-belnr
   与@@ s_budat中的好友。

   如果l_bseg []不初始化。

     SELECT saknr,
            txt50
            从skat到表@DATA(l_skat)中所有@l_bseg中的条目
     在哪里saknr EQ @ l_bseg-hkont。

   万一。

   排序:l_bseg BY belnr,
         l_bkpf BY belnr。

   循环到l_bseg INTO DATA(w_bseg)。
     gwa-prctr = w_bseg-prctr。
     gwa-hkont = w_bseg-hkont。
     gwa-belnr = w_bseg-belnr。
     gwa-budat = w_bseg-h_budat。
     gwa-bldat = w_bseg-h_bldat。
     gwa-augcp = w_bseg-augcp。
     gwa-pswsl = w_bseg-pswsl。
     gwa-xref1 = w_bseg-xref1。
     gwa-sgxtx = w_bseg-sgtxt。
     gwa-dzuonr = w_bseg-zuonr。
     gwa-wrbtr = w_bseg-wrbtr。

     使用键belnr = w_bseg-belnr二进制搜索将表l_bkpf读入DATA(w_bkpf)。

     如果sy-subrc EQ 0。
       gwa-bktxt = w_bkpf-bktxt。
       gwa-cpudt = w_bkpf-cpudt。
     万一。

     使用键saknr = w_bseg-hkont二进制搜索将表l_skat读入DATA(w_skat)。

     如果sy-subrc EQ 0。
       gwa-saknr = w_skat-saknr。
       gwa-txt50 = w_skat-txt50。
     万一。

     将gwa附加到gt。
     清除gwa。
   结局。

 ENDFORM。

 表格fcat。

   gs_layout-colwidth_optimize ='X'。
   gs_layout-box_fieldname ='SEL'。
   gs_varient-report = sy-repid。

   wa_fcat-fieldname ='BELNR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='文件编号'。
   wa_fcat-hotspot ='X'。
   wa_fcat-outputlen ='15'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='SGTXT'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='项目文本'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='PRCTR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='利润中心'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='BUDAT'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='发布日期'。
   wa_fcat-datatype ='DATS'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='BLDAT'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='文档日期'。
   wa_fcat-datatype ='DATS'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='CPUDT'。
   wa_fcat-ref_tabname ='BKPF'。
   wa_fcat-seltext_m ='输入日期'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='WRBTR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='凭证货币金额'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='PSWSL'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='货币'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='DZUONR'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='指派人'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='BKTXT'。
   wa_fcat-ref_tabname ='BKPF'。
   wa_fcat-seltext_m ='标题文本'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='SAKNR'。
   wa_fcat-ref_tabname ='SKA1'。
   wa_fcat-seltext_m ='总账科目'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='XREF1'。
   wa_fcat-ref_tabname ='BSEG'。
   wa_fcat-seltext_m ='商业伙伴'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

   wa_fcat-fieldname ='TXT50_SKAT'。
   wa_fcat-ref_tabname ='SKAT'。
   wa_fcat-seltext_m ='说明'。
   将wa_fcat附加到it_fcat。
   清除wa_fcat。

 *将wa_fcat附加到it_fcat。
 *清除wa_fcat。


 ENDFORM。


 FORM alvcall。

   通话功能'REUSE_ALV_GRID_DISPLAY'
     出口
       i_callback_program = v_prog
       i_callback_user_command ='USERCMD'
       i_grid_title ='总帐科目明细'
       is_layout = gs_layout
       it_fieldcat = it_fcat
       is_variant = gs_varient
     桌子
       t_outtab = gt。


 ENDFORM。


 FORM usercmd使用r_ucoma TYPE sy-ucomm更改rs_selfield TYPE slis_selfield。
   案例r_ucoma。
     当"&IC1"时。
       案例rs_selfield-fieldname。
         当" BELNR"。
           设置参数ID'BLN'
           FIELD rs_selfield值。
           呼叫交易" FS00"并跳过第一屏。
       结束。
   结束。
 ENDFORM。

bseg.jpg (44.7 kB)
付费偷看设置
发送
6条回答
半个程序猿
1楼 · 2020-08-17 17:26.采纳回答

您好 Manoj Kumar

在您使用源代码更新问题时,我可以 您更详细的答案。 我可以看到以下声明的问题:

 TYPES:开头为ty_final,
          sel,
          prctr TYPE prctr,
          hkont TYPE hkont,
          belnr TYPE belnr,
          TYPE budat,
          TYPE BLDAT,
          augcp TYPE augcp,
          pswsl TYPE pswsl,
          xref1类型xref1,
          sgxtx TYPE sgtxt,
          dzuonr TYPE dzuonr,
          wrbtr TYPE wrbtr,
          bktxt TYPE bktxt,
          cpudt TYPE cpudt,
          saknr TYPE saknr,
          txt50 TYPE txt50,

        结束于ty_final。

将其更改为:

类型:开始于ty_final,
          sel,
          prctr TYPE prctr,
          hkont TYPE hkont,
          belnr TYPE belnr_d,"使用belnr_d数据元素更改此行
          TYPE budat,
          TYPE BLDAT,
          augcp TYPE augcp,
          pswsl TYPE pswsl,
          xref1类型xref1,
          sgxtx TYPE sgtxt,
          dzuonr TYPE dzuonr,
          wrbtr TYPE wrbtr,
          bktxt TYPE bktxt,
          cpudt TYPE cpudt,
          saknr TYPE saknr,
          txt50 TYPE txt50,

        ty_final结束。

HTH,BR

Dominik Tylczynski

SAP小菜
2楼-- · 2020-08-17 17:29

Hello Manoj

您需要检查您的定义 用于ALV的结构。 字段"文档编号"可能定义不正确。 如果找不到错误,请使用注释编辑器的CODE选项将报告的代码作为注释添加到问题中。

请问候,
Mateusz
浮生未央
3楼-- · 2020-08-17 17:36

作为Dominik 说,您定义了错误的类型。 对于属性BELNR,您使用TYPE BELNR而不是BELNR_D!

  • 类型BELNR是具有两个字段ZEILE和EBELP的结构,总共8个字符(数字)
  • 类型BELNR_D是BSEG-BELNR的正确类型,实际上您选择的长度为10个字符( char)

=>您需要在类型ty_final中更正BELNR的类型,该类型用作ALV表变量gt的结构。

类型:BEGIN  OF ty_final,
          ...
         
          belnr TYPE belnr_d,"类型belnr_d是正确的
         " belnr TYPE belnr,"类型belnr错误(删除或注释行)
          ...
        ty_final结束。

绿领巾童鞋
4楼-- · 2020-08-17 17:26

Mateusz Adamus Manoj Kumar

字段目录中的字段名称必须与要显示的内部表的字段名称相对应。 它不必与数据库表中的字段名称相同。 因此,SGXTX在这里起作用,因为在字段目录和内部表声明中使用了相同的名称。

nice_wp
5楼-- · 2020-08-17 17:41

你好 Manoj Kumar

仅凭确切的问题很难说清楚

但是,您应该使用ALV字段"文档编号"检查要显示的内部表的声明。 最有可能将其定义为8个字符的字段。

最诚挚的问候

Dominik Tylczynski

打一壶酱油
6楼-- · 2020-08-17 17:18

谢谢我明白了

# p#

一周热门 更多>