SAP BW中的CKM3N

2020-08-23 10:25发布

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

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


大家好!

我正在尝试将信息从CKM3N加载到SAP BW。

我已经使用了标准数据源,并且已经掌握了部分信息。

从0CO_PC_ACT_1和0CO_PC_ACT_10获得以下信息:

在绿色方块中,我能够从事务CKM3N提取Bv的LvL1和2。

现在,我需要在红场中获得LvL 3和Lv 4:

我找不到任何数据源来对其进行匹配。

有人做过吗? 还是有人知道哪种方式可以达到此要求?

预先感谢

Enio。

CKM3N-1级和2.jpg (169.9 kB)

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

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


大家好!

我正在尝试将信息从CKM3N加载到SAP BW。

我已经使用了标准数据源,并且已经掌握了部分信息。

从0CO_PC_ACT_1和0CO_PC_ACT_10获得以下信息:

在绿色方块中,我能够从事务CKM3N提取Bv的LvL1和2。

现在,我需要在红场中获得LvL 3和Lv 4:

我找不到任何数据源来对其进行匹配。

有人做过吗? 还是有人知道哪种方式可以达到此要求?

预先感谢

Enio。

CKM3N-1级和2.jpg (169.9 kB)
付费偷看设置
发送
2条回答
Alawn_Xu
1楼 · 2020-08-23 11:17.采纳回答

嗨Enio,

尝试检查上述数据源序列。

即数据源名称(如0CO_PC_ACT_ *),您可能会在源端找到可用的数据源,T代码RSA5。 检查每个数据源都有您需要的字段。

如果没有标准数据源,那么您需要考虑自定义通用数据源。

谢谢

# p#

感谢 Korrapati ,我将对其进行检查。

骆驼绵羊
2楼-- · 2020-08-23 11:21

嗨,

没有任何标准质量报告和标准BW数据源可将CKM3N值显示为质量报告

在ERP端创建基于Z自定义的功能模块,并且可以使用以下代码。

功能zbw_cklmqs_data_ag。

 *" ------------------------------------------------  ----------------------

 *" *"本地接口:

 *"正在导入

 *" REFERENCE(I_REQUNR)类型SRSC_S_IF_SIMPLE-REQUNR可选

 *" REFERENCE(I_DSOURCE)类型SRSC_S_IF_SIMPLE-DSOURCE可选

 *" REFERENCE(I_MAXSIZE)类型SRSC_S_IF_SIMPLE-MAXSIZE默认

 *" 10000

 *" REFERENCE(I_INITFLAG)类型SRSC_S_IF_SIMPLE-INITFLAG可选

 *" REFERENCE(I_READ_ONLY)类型SRSC_S_IF_SIMPLE-READONLY可选

 *" REFERENCE(I_REMOTE_CALL)TYPE SBIWA_FLAG可选

 *"表格

 *" E_T_DATA结构ZSTRU_CKLMQS_DATA_AG可选

 *" I_T_SELECT TYPE SRSC_S_IF_SIMPLE-T_SELECT可选

 *" I_T_FIELDS类型SRSC_S_IF_SIMPLE-T_FIELDS可选

 *" Z_T_DATA结构ZSTRU_CKLMQS_DATA_AG可选

 *"例外情况

 *" NO_MORE_DATA

 *" ERROR_PASSED_TO_MESS_HANDLER


 *" ------------------------------------------------  ----------------------



   静态值:s_s_if类型srsc_s_if_simple,

              s_counter_datapakid类似于sy-tabix,

              s_cursor类型的游标。



   数据:from_index类型i,

         to_index类型i,

         lv_subrc类型为sysubrc,

         i_lines输入i。



   范围:用于zstru_cklmqs_data_ag-bdatj的l_r_bdatj。"

   范围:zstru_cklmqs_data_ag-curtp的l_r_curtp。"

   范围:zstru_cklmqs_data_ag-poper的l_r_poper。"

   范围:zstru_cklmqs_data_ag-werks的l_r_werks。"

   范围:用于zstru_cklmqs_data_ag-matnr的l_r_matnr。"



   data:l_r_s_bdatj像l_r_bdatj的行。"

   数据:l_r_s_curtp,就像l_r_curtp的行一样。"

   data:l_r_s_poper像l_r_poper行。"

   数据:l_r_s_werks就像l_r_werks的行。"

   数据:l_r_s_matnr类似于l_r_matnr的行。"



   数据:ls_mlkey类型mlkey。

   数据:qstree类型引用到cl_qstree_ckml。

   数据:lcl_node类型引用到cl_qsnode_material_ckml,

          lcl_node1类型为cl_qsnode的ref,

          lcl_node2类型ref到cl_qsnode,

          lcl_value类型ckmlqs_fields。



   数据:lt_ckmlqs的开头出现100,

            seqnr类型i,

            kalnr类型ck_kalnr1,

            Matnr型Matnr,

            text(30)类型c,

            数量类型menge_pos,

            单位类型

            bewer类型kkb_ml_bewer,

            abwe输入kkb_ml_abwe,

            ges类型kkb_ml_ges,

            preis类型kkb_ml_preis,

            货币类型,

            资源类型kkek_ress,

            peinh类型ck_peinh_1,

            bdatj类型bdatj,

            curtp类型curtp,

            poper类型poper,

            werks类型werks_d,

          lt_ckmlqs的末尾。



   数据:lv_seqnr类型i。



   数据:lt_inputs的开头出现10,

            seqnr类型i,

            qsnode类型ref到cl_qsnode,

          lt_inputs的末尾。

   数据:st_t001w类型t001w。



   data:t_marc类型的marc标准表。

   data:s_marc类型marc。



   数据:l_counter类型int2。



   数据:z_s_data类型为zstru_cklmqs_data_ag。



   数据:l_s_select类型srsc_s_select。"



   数据:ld_e_offline类型为int4。





   如果i_initflag = sbiwa_c_flag_on。

     s_s_if-requnr = i_requnr。

     s_s_if-dsource = i_dsource。

     s_s_if-maxsize = i_maxsize。



   其他。

     如果s_counter_datapakid = 0。



       将i_t_select的行附加到s_s_if-t_select。



       在s_s_if-t_select处循环进入l_s_select

             其中fieldnm ='BDATJ'。"seçimkriteri广告?



         l_s_select-option ='EQ'。

         l_s_select-sign ='I'。

         将对应的l_s_select移动到l_r_bdatj。

         附加l_r_bdatj。

       结束循环。



       在s_s_if-t_select处循环进入l_s_select

           其中fieldnm ='CURTP'。"seçimkriteri广告?



         l_s_select-option ='EQ'。

         l_s_select-sign ='I'。

         将对应的l_s_select移动到l_r_curtp。

         附加l_r_curtp。

       结束循环。



       在s_s_if-t_select处循环进入l_s_select

           其中fieldnm ='POPER'。"seçimkriteri广告?



         l_s_select-option ='EQ'。

         l_s_select-sign ='I'。

         将对应的l_s_select移动到l_r_poper。

         附加l_r_poper。

       结束循环。



       在s_s_if-t_select处循环进入l_s_select

         其中fieldnm ='WERKS'。"seçimkriteri广告?



         l_s_select-option ='EQ'。

         l_s_select-sign ='I'。

         将对应的l_s_select移动到l_r_werks。

         附加l_r_werks。

       结束循环。



       在s_s_if-t_select处循环进入l_s_select

       " where fieldnm ='MATNR'。"seçimkriteri广告?



       " l_s_select-option ='EQ'。

       " l_s_select-sign ='I'。

       将对应的l_s_select移动到l_r_matnr。

       "追加l_r_matnr。

       "。



       l_r_matnr-low ='0002 *'。

       l_r_matnr-sign ='I'。

       l_r_matnr-option ='CP'。

       附加l_r_matnr。



       l_r_matnr-low ='0003 *'。

       l_r_matnr-sign ='I'。

       l_r_matnr-option ='CP'。

       附加l_r_matnr。



       选择单*

         从t001w

         进入st_t001w

        在l_r_werks中怪异的地方。



       选择Matrr Werks

         从马克

         到表t_marc的对应字段中

        其中l_r_matnr中的matnr

          和l_r_werks中的怪癖。



       在t_marc循环到s_marc。



         ls_mlkey-matnr = s_marc-matnr。

         ls_mlkey-werks = s_marc-werks。

         ls_mlkey-bwkey = st_t001w-bwkey。

         ls_mlkey-werks_ml_productive = s_marc-werks。



         将表l_r_curtp读入l_r_s_curtp索引1。

         将表l_r_bdatj读入l_r_s_bdatj索引1。

         将表l_r_poper读入l_r_s_poper索引1。

         将表l_r_werks读入l_r_s_werks索引1。



         ls_mlkey-curtp = l_r_s_curtp-low。

         ls_mlkey-bdatj = l_r_s_bdatj-low。

         ls_mlkey-poper = l_r_s_poper-low。



         调用方法cl_qstree_ckml => create_docking_tree

           出口

             is_mlkey = ls_mlkey

           输入

             er_qstree = qstree

           例外情况

             container_already_exists = 1

             treecontrol_already_exists = 2

             object_create_error = 3

             container_create_error = 4

             kalnr_notfound = 5

             treecontrol_create_error = 6

             其他= 7。



         检查sy-subrc = 0。



         lcl_node = qstree-> mr_rootnode。

         将表lcl_node-> t_inputs读入lcl_node1索引1。

         将1加到lv_seqnr。

         lt_inputs-seqnr = lv_seqnr。

         lt_inputs-qsnode = lcl_node。



         附加lt_inputs。



         在lt_inputs处循环。

           调用方法lt_inputs-qsnode-> expand_inputs。

           lcl_node1 = lt_inputs-qsnode。

           在lcl_node1-> t_inputs处循环进入lcl_node2。

             如果sy-tabix = 1。

               将1加到lv_seqnr。

               lt_inputs-seqnr = lv_seqnr。

             万一。

             lt_inputs-qsnode = lcl_node2。

             附加lt_inputs。

           结束循环。

         结束循环。



         在lt_inputs处循环。



           lt_ckmlqs-seqnr = lt_inputs-seqnr。

           lt_ckmlqs-kalnr = lt_inputs-qsnode-> kalnr。

           lt_ckmlqs-text = lt_inputs-qsnode-> text。

           lt_ckmlqs-quantity = lt_inputs-qsnode-> quantity。

           lt_ckmlqs-unit = lt_inputs-qsnode-> unit。



           lt_ckmlqs-matnr = s_marc-matnr。

           lt_ckmlqs-werks = s_marc-werks。





           清除lcl_value。



           将表lt_inputs-qsnode-> t_values读入lcl_value

           关键字curtp = l_r_s_curtp-low。



           lt_ckmlqs-bewer = lcl_value-bewer。

           lt_ckmlqs-abwe = lcl_value-abwe。

           lt_ckmlqs-ges = lcl_value-ges。

           lt_ckmlqs-preis = lcl_value-preis。

           lt_ckmlqs-currency = lcl_value-currency。

           lt_ckmlqs-ressource = lcl_value-ressource。

           lt_ckmlqs-peinh = lcl_value-peinh。

           lt_ckmlqs-bdatj = l_r_s_bdatj-low。

           lt_ckmlqs-curtp = l_r_s_curtp-low。

           lt_ckmlqs-poper = l_r_s_poper-low。

 * lt_ckmlqs-werks = l_r_s_werks-low。



           将对应的lt_ckmlqs移动到z_s_data。



           将z_s_data附加到z_t_data。

           附加lt_ckmlqs。

           清除:lt_ckmlqs,z_s_data。

         结束循环。



         清除:lt_inputs,ls_mlkey,qstree,lv_seqnr。

         刷新:lt_inputs。



         清除:s_marc。

       结束循环。



       将z_t_data导出到内存ID" ZCKLMQS"。



     万一。



     从内存ID" ZCKLMQS"导入z_t_data。



     i_lines =行(z_t_data)。

     from_index =(s_counter_datapakid * s_s_if-maxsize)+ 1。

     to_index = from_index + s_s_if-maxsize-1。

     如果i_lines在from_index和to_index之间。

       to_index = i_lines。

     万一。

     清除z_t_data。

     从from_index到to_index在z_t_data循环。

       将对应的z_t_data移动到e_t_data。

       附加e_t_data。

     结束循环。

     lv_subrc = sy-subrc。

     s_counter_datapakid = s_counter_datapakid + 1。

     如果lv_subrc ne 0。

       提出no_more_data。

     万一。

   万一。



 最终功能。

此致

Cihan Ekin

一周热门 更多>