客户想要和CKM3一样的数据展示,之前用过取表的方式,但是代码找不到了,就用了其他方式。等以后找到取表逻辑再做补充。
直接上代码。
有种是在CKM3里做增强,用BDC的方式取CKM3数据,速度比较慢,但是数据准。
下面这种是调用CKM3的部分逻辑,数据的准确性自行校验。
*&---------------------------------------------------------------------*
*& Form SUB_GET_DATA
*&---------------------------------------------------------------------*
* 此方法是把CKM3对应的函数中的部分代码拷贝出来做修改 ,
*速度比调用稍快,但*数据不能保证完全准确。
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_get_data_v2 .
CLEAR:gt_out .
DATA:ls_mlkey TYPE mlkey.
DATA:lt_out TYPE TABLE OF zsfi_ckm3_out WITH HEADER LINE.
SELECT mara~matnr, werks FROM mara
INNER JOIN marc ON marc~matnr = mara~matnr
INTO TABLE @DATA(lt_mara)
WHERE mara~matnr IN @so_matnr
AND mara~matkl IN @so_matkl
AND werks = @pa_werks .
if lt_mara is INITIAL .
MESSAGE '没有满足条件的数据' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE TO LIST-PROCESSING .
endif.
sort lt_mara by matnr werks .
LOOP AT lt_mara INTO DATA(ls_mara).
CLEAR:ls_mlkey.
REFRESH:lt_out .
ls_mlkey-matnr = ls_mara-matnr.
ls_mlkey-werks_ml_productive = ls_mlkey-BWKEY = ls_mara-werks.
ls_mlkey-poper = pa_monat .
ls_mlkey-bdatj = pa_gjahr .
ls_mlkey-STATUS = '30'.
ls_mlkey-CURTP = '10'.
ls_mlkey-WAERS = 'CNY'.
select SINGLE kalnr from ckmlhd
into ls_mlkey-kalnr
where matnr = ls_mara-matnr and bwkey = ls_mara-werks .
select SINGLE bukrs from t001k into ls_mlkey-bukrs
where BWKEY = ls_mara-werks .
"主要获取方式
call function 'ZFI003_GET_CKM3_DATA'
TABLES
it_data = lt_out
changing
c_mlkey = ls_mlkey
.
LOOP AT lt_out .
if sy-tabix = 1 .lt_out-matnr = ls_mara-matnr . endif.
APPEND lt_out TO gt_out .
ENDLOOP .
ENDLOOP .
ENDFORM. " SUB_GET_DATA
FORM sub_set_fieldcat USING pt_fcat.
DATA:wa_fieldcat TYPE lvc_s_fcat .
DATA:lt_fieldcat TYPE lvc_t_fcat .
DATA:lt_fieldcat2 TYPE lvc_t_fcat .
FIELD-SYMBOLS:<fs_fcat> TYPE lvc_s_fcat.
DEFINE mac_add_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = &1.
wa_fieldcat-coltext = &2.
APPEND wa_fieldcat TO lt_fieldcat.
END-OF-DEFINITION.
*****需要输出的字段
* mac_add_fieldcat:
* 'SEL' '选择',
* 'ICON' '状态',
* 'MSG' '消息'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSFI_CKM3_OUT'
CHANGING
ct_fieldcat = lt_fieldcat2.
APPEND LINES OF lt_fieldcat2 TO lt_fieldcat .
LOOP AT lt_fieldcat ASSIGNING <fs_fcat> .
CASE <fs_fcat>-fieldname .
WHEN 'SEL'.
<fs_fcat>-checkbox = 'X'.
<fs_fcat>-edit = 'X'.
WHEN 'ZZTEXT'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '项目' .
WHEN 'ELM001'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '材料成本' .
WHEN 'ELM002'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '辅料成本' .
WHEN 'ELM003'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '直接人工' .
WHEN 'ELM004'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '间接人工' .
WHEN 'ELM005'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '折旧摊销费用' .
WHEN 'ELM006'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '动能费' .
WHEN 'ELM007'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '制造费用(固定)' .
WHEN 'ELM008'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '制造费用(变动)' .
WHEN 'ELM009'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '委托加工及半成品与成品' .
WHEN 'ELM010'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '在制品' .
WHEN 'ELM011'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '废品' .
WHEN 'ELM012'.<fs_fcat>-coltext = <fs_fcat>-scrtext_l = <fs_fcat>-scrtext_m = <fs_fcat>-scrtext_s = '生产成本转出' .
ENDCASE .
ENDLOOP .
pt_fcat = lt_fieldcat .
ENDFORM. " SUB_SET_FIELDCAT
zsfi_ckm3_out结构
1.函数 zfi003_get_ckm3_data
FUNCTION zfi003_get_ckm3_data .
*"----------------------------------------------------------------------
*"*"本地接口:
*" TABLES
*" IT_DATA STRUCTURE ZSFI_CKM3_OUT
*" CHANGING
*" REFERENCE(C_MLKEY) TYPE MLKEY
*"----------------------------------------------------------------------
* Global data declarations
DATA:ls_data TYPE zsfi_ckm3_out.
mlkey = c_mlkey .CLEAR:s_wrong_input.
MOVE-CORRESPONDING mlkey TO gs_ccskey.
gs_ccskey-keart = 'H'.
MOVE-CORRESPONDING mlkey TO cki_wwo_ml.
PERFORM get_ml_data_0055_pbo .
PERFORM modify_screen_ccs_pbo USING mlkey-bwkey.
PERFORM clear_data_global_300.
PERFORM modify_global_300_pbo .
PERFORM get_data_pbo_300.
* BREAK zhuangxian .
LOOP AT t_list INTO DATA(ls_list) WHERE SORT NE '0004' AND SORT NE '0005' and SORT NE '0006' .
MOVE-CORRESPONDING ls_list TO ls_data .
ls_data-zztext = ls_list-sort .
COLLECT ls_data INTO it_data.
CLEAR:ls_data .
ENDLOOP .
loop at it_data ASSIGNING FIELD-SYMBOL(<fs_data>).
read TABLE t_list into ls_list with key sort = <fs_data>-zztext .
IF sy-subrc = 0 .
<fs_data>-PRICE = ls_list-price .
ENDIF.
case <fs_data>-zztext.
when '0000'.<fs_data>-zztext = '期初'.
when '0002'.<fs_data>-zztext = '本期增加'.
when '0007'.<fs_data>-zztext = '本期减少'.
when '0008'.<fs_data>-zztext = '期末'.
ENDCASE .
ENDLOOP .
*
*
PERFORM fcode_back.
* it_data = t_list .
ENDFUNCTION.
函数FUNCTION-POOL
FUNCTION-POOL ZCKM8H
NO STANDARD PAGE HEADING
MESSAGE-ID c+
LINE-SIZE 100.
**********************************************************************
* *
* Für die Datendefinitionen gelten folgende Vereinbarungen: *
* *
* F_... : Feldleisten *
* H_... : Hilfsfelder; sie sind über mehrere Module, Form- *
* Routinen gültig (global). *
* I_... : Indextabelle; interne Tabelle, die einen Index auf eine *
* andere interne Tabelle bildet. *
* K_... : tempor#re Felder; Inhalt nur innerhalb einer Form- *
* Routine gesichert (mehrfach genutzt lokal) *
* P_... : Reportparameter *
* R_... : Returncodes *
* S_... : Schalter; nur 'X' oder ' ' *
* T_... : interne Tabelle *
* Y_... : Konstanten *
* *
**********************************************************************
*----------------------------------------------------------------------*
* INCLUDES *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Typen *
*----------------------------------------------------------------------*
TYPE-POOLS: slis,
ckm8,
ckm8n,
vrm,
ckmd,
ckmv0,
ckmv3,
icon.
*----------------------------------------------------------------------*
* Tabellen (DDIC) *
*----------------------------------------------------------------------*
TABLES:
ckmlhd,
ckmlpr,
ckmlpp,
ckmlcr,
mlkey,
ckmlcur,
mbew,
ebew,
qbew,
obew, " Subcontracting Japan
marv,
mara,
makt,
auak,
coep,
rseg,
t001,
t001k,
t001w,
tcurm,
mtcom,
cki_wwo_ml,
ckmlrunperiod.
*----------------------------------------------------------------------*
* Tabellen *
*----------------------------------------------------------------------*
DATA: t_curtp LIKE cki_ml_cty OCCURS 0 WITH HEADER LINE,
t_curtp_run LIKE cki_ml_cty OCCURS 0 WITH HEADER LINE,
t_ckmlhd LIKE ckmlhd OCCURS 0 WITH HEADER LINE,
t_ckmlpr LIKE ckmlpr OCCURS 0 WITH HEADER LINE,
t_ckmlpp LIKE ckmlpp OCCURS 0 WITH HEADER LINE,
t_ckmlcr LIKE ckmlcr OCCURS 0 WITH HEADER LINE.
DATA: t_dynpread LIKE dynpread OCCURS 2 WITH HEADER LINE.
* Feldnamentabelle für HELP_VALUES_GET
DATA: BEGIN OF f4ftab OCCURS 0.
INCLUDE STRUCTURE help_value.
DATA: END OF f4ftab.
* Wertetabelle für HELP_VALUES_GET
DATA: BEGIN OF f4vtab OCCURS 0,
line(100),
END OF f4vtab.
* Feldnamentabelle für F4 auf Bewertungsart
DATA: BEGIN OF f4bwtar_fields OCCURS 0.
INCLUDE STRUCTURE help_value.
DATA: END OF f4bwtar_fields.
* Wertetabelle für F4 auf Bewertungsart
DATA: BEGIN OF f4bwtar_values OCCURS 0,
line(100).
DATA: END OF f4bwtar_values.
* Tabelle aller Bewertungsarten zum Schieben in f4bwtar_values
DATA: BEGIN OF t_all_bwtar OCCURS 0.
INCLUDE STRUCTURE bwtar.
DATA: END OF t_all_bwtar.
* Feldnamentabelle für F4 auf Werk
DATA: BEGIN OF f4werk_fields OCCURS 0.
INCLUDE STRUCTURE help_value.
DATA: END OF f4werk_fields.
* Wertetabelle für F4 auf Werk
DATA: BEGIN OF f4werk_values OCCURS 0,
line(100).
DATA: END OF f4werk_values.
* Tabelle aller Werke zum Schieben in f4werk_values
DATA: BEGIN OF t_t001w OCCURS 0.
INCLUDE STRUCTURE t001w.
DATA: END OF t_t001w.
* Tabelle aller ML-aktiven Bewertungskreise
DATA: BEGIN OF t_t001k OCCURS 0.
INCLUDE STRUCTURE t001k.
DATA: END OF t_t001k.
** Tabelle für Kundenauftr#ge
*DATA: BEGIN OF t_ebew OCCURS 0,
* vbeln LIKE ebew-vbeln,
* posnr LIKE ebew-posnr.
*DATA: END OF t_ebew.
*
** Tabelle für PSP-Elemente
*DATA: BEGIN OF t_qbew OCCURS 0,
* pspnr LIKE qbew-pspnr.
*DATA: END OF t_qbew.
*----------------------------------------------------------------------*
* Feldleisten *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Schalter *
*----------------------------------------------------------------------*
DATA: s_first_call LIKE boole-boole VALUE 'X',
s_wrong_input LIKE boole-boole VALUE 'X',
s_ph_for_mlast3 LIKE boole-boole,
s_ph_for_mlast2 LIKE boole-boole VALUE 'X',
s_ps_for_mlast3 LIKE boole-boole,
s_ps_for_mlast2 LIKE boole-boole,
s_plan_on LIKE boole-boole,
s_weda_on LIKE boole-boole,
s_refresh TYPE boole_d,
s_noheader TYPE boole_d,
s_plan_act_compare TYPE boole_d,
s_ccs_view TYPE boole_d,
s_new_material TYPE boole_d VALUE 'X',
s_new_la TYPE boole_d VALUE 'X',
s_qstree_show TYPE boole_d,
s_qstree_change TYPE boole_d,
s_wip_active TYPE boole_d.
*----------------------------------------------------------------------*
* Globale Feldvariablen
*----------------------------------------------------------------------*
DATA: l_dynnr LIKE sy-dynnr.
DATA: h_bdatj LIKE ckmlpp-bdatj,
h_poper LIKE ckmlpp-poper,
h_curtp LIKE ckmlcr-curtp,
h_xauth TYPE c,
h_waers LIKE ckmlcr-waers,
h_maktx LIKE makt-maktx,
h_lines TYPE i,
h_text1(40),
h_text2(40),
h_text3(40),
h_bwkey_fieldname(30),
h_var_values(50),
h_var_texts(50).
DATA: h_url(255) TYPE c.
* Checkman:
DATA: fcode TYPE sy-ucomm.
*----------------------------------------------------------------------*
* Konstanten *
*----------------------------------------------------------------------*
CONSTANTS:
y_x VALUE 'X',
y_curtp_lc(2) VALUE '10',
y_mlast_2 LIKE mbew-mlast VALUE '2', "vorgangsbezogen
y_mlast_3 LIKE mbew-mlast VALUE '3', "ein-/mehrstufig
y_glvor_order_settlement LIKE mlhd-glvor VALUE 'KOAE',
*---- Wertehilfe für Werk --------------------------------- "P30K049582
y_tabname_t001w LIKE help_value-tabname VALUE 'T001W',
y_fieldname_werks LIKE help_value-fieldname VALUE 'WERKS',
y_fieldname_name1 LIKE help_value-fieldname VALUE 'NAME1',
y_fieldname_ort01 LIKE help_value-fieldname VALUE 'ORT01',
*---------------------------------------------------------- "P30K049582
*---- Wertehilfe für Bewertungsart ------------------------ "P30K102100
y_tabname_mbew LIKE help_value-tabname VALUE 'MBEW',
y_fieldname_bwtar LIKE help_value-fieldname VALUE 'BWTAR'.
*---------------------------------------------------------- "P30K102100
*----------------------------------------------------------------------*
* Klassen *
*----------------------------------------------------------------------*
CLASS cl_aggregation_header_ckml DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_dialogbox_container DEFINITION LOAD.
*---------------------------------------------------------------------*
* CLASS lcl_alv_grid_status DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_alv_grid_status DEFINITION INHERITING FROM cl_gui_alv_grid.
PUBLIC SECTION.
METHODS: switch_scrollbars_off,
optimize_cols,
no_resize_cols,
clear_select.
ENDCLASS. "lcl_alv_grid_status DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_alv_grid_status IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_alv_grid_status IMPLEMENTATION.
METHOD switch_scrollbars_off.
CALL METHOD me->set_horizontal_scrollbars
EXPORTING
enable = 0.
CALL METHOD me->set_vertical_scrollbars
EXPORTING
enable = 0.
ENDMETHOD. "switch_scrollbars_off
METHOD optimize_cols.
CALL METHOD me->optimize_all_cols.
ENDMETHOD. "optimize_cols
METHOD no_resize_cols.
CALL METHOD me->set_resize_cols
EXPORTING
enable = 0.
ENDMETHOD. "no_resize_cols
METHOD clear_select.
CALL METHOD me->clear_selection.
ENDMETHOD. "clear_select
ENDCLASS. "lcl_alv_grid_status IMPLEMENTATION
*---------------------------------------------------------------------*
* CLASS lcl_dialogbox_event_handler DEFINITION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_dialogbox_event_handler DEFINITION.
PUBLIC SECTION.
METHODS handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender.
ENDCLASS. "lcl_dialogbox_event_handler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_dialogbox_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_dialogbox_event_handler IMPLEMENTATION.
METHOD handle_close.
PERFORM handle_dialogbox_close USING sender.
ENDMETHOD. "handle_close
ENDCLASS. "lcl_dialogbox_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
* Referenzvariablen *
*----------------------------------------------------------------------*
DATA:
status TYPE REF TO cl_gui_custom_container,
dialogbox TYPE REF TO cl_gui_dialogbox_container,
alv_grid_plan TYPE REF TO cl_gui_alv_grid,
dbox_event_handler TYPE REF TO lcl_dialogbox_event_handler,
alv_grid_status TYPE REF TO lcl_alv_grid_status,
qstree TYPE REF TO cl_qstree_ckml.
DATA: style TYPE i.
*----------------------------------------------------------------------*
* Data variables for screen 80 - display of Settlement document
*----------------------------------------------------------------------*
DATA: g_last_changed_on_date TYPE cpudt,
g_last_changed_on_time TYPE cputm,
g_costing_level_sender TYPE ck_kalst,
g_costing_level_receiver TYPE ck_kalst,
g_cycle_no_sender TYPE ck_cyclenr,
g_cycle_no_receiver TYPE ck_cyclenr,
g_input_desc TYPE lvc_value,
g_output_desc TYPE lvc_value,
g_object TYPE char10,
g_object_in TYPE char10,
g_object_out TYPE char10,
g_object_desc TYPE lvc_value,
g_cycle_no_object TYPE ck_cyclenr,
g_costing_level_object TYPE ck_kalst.
*----------------------------------------------------------------------*
* Spezielle globale Variablen *
*----------------------------------------------------------------------*
INCLUDE lckm8ntoa. "allgemein Transaktion CKM3
INCLUDE lckm8htob. "AVL-TREE ML-Abrechnungsschema
INCLUDE lckm8Htod. "GRID-ALV Preishistorie
INCLUDE lckm8ntod. "ALV-TREE Istschichtung
INCLUDE lckm8ntoe. "ALV-TREE Plan/Ist-Vergleich
INCLUDE lckm8ntof. "CKM8N_DOCUMENT_REPORT
INCLUDE fckgloba. "Konstanten für Istschchtung
INCLUDE lckmdtop_feldgruppen.
INCLUDE lckm4top_periodenarten.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Global from HANA DB MLDOC, MLDOCCCS
*----------------------------------------------------------------------*
include LCKM8HTOH.