目的是把CU50中的选择配置拿出来,再把最后BOM的结果拿出来。2023.10.13
一、CU50里面2个标准函数有修改:
- ----------LCUKOF01----函数----------------
-
- CALL FUNCTION 'CU01_DISPLAY_BOM'
- EXPORTING
- masterdata = rcuko-ukomp
- RESULT = rcuko-uaktk
- level_by_level = rcuko-dmstu
- all_components = rcuko-ucmpf
- no_masterdata = g_nomd
- no_result = g_nore
- include_header = incl1
- IMPORTING
- return_with_function = list_okcode
- TABLES
- bom_list_index = indx_clst
- bom_list = lt_clst.
-
- *{ INSERT S4DK913063 1
- DATA gs_ZCU50_LIST like ZCU50_LIST.
-
- DELETE FROM ZCU50_LIST.
- COMMIT WORK .
-
- LOOP AT gt_clst_for_list INTO DATA(gs400) WHERE INTENSIV = 'X' AND INSTP = '1'.
-
- gs_ZCU50_LIST-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).
- gs_ZCU50_LIST-TEXT = gs400-ZEILE.
-
- INSERT into ZCU50_LIST VALUES gs_ZCU50_LIST.
- CLEAR gs_ZCU50_LIST.
-
- ENDLOOP.
-
- *} INSERT
-
-
-
- -----------LCEI0F90函数--------------
-
- CALL FUNCTION 'CUTC_GET_SETTINGS'
- IMPORTING
- active = lv_ddb_trace.
-
- IF lv_ddb_trace IS INITIAL.
- ls_fcode-fcode = 'TRCD'.
- APPEND ls_fcode TO lt_fcode.
- ELSE.
- ls_fcode-fcode = 'TRCA'.
- APPEND ls_fcode TO lt_fcode.
- ENDIF.
- *{ INSERT S4DK913063 1
-
-
- DATA gs_ZVCOND_SD like ZVCOND_SD.
-
- DELETE FROM ZVCOND_SD.
- COMMIT WORK .
-
-
- gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).
- gs_ZVCOND_SD-VARCOND = GV_MATNR.
- INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.
- CLEAR gs_ZVCOND_SD.
-
- gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).
- gs_ZVCOND_SD-VARCOND = GV_WERKS.
- INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.
- CLEAR gs_ZVCOND_SD.
-
- gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).
- gs_ZVCOND_SD-VARCOND = GV_DATE.
- INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.
- CLEAR gs_ZVCOND_SD.
-
- LOOP AT GT_VCOND_SD INTO DATA(gs400).
-
- gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).
- gs_ZVCOND_SD-VARCOND = gs400-VARCOND.
-
- INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.
- CLEAR gs_ZVCOND_SD.
-
- ENDLOOP.
-
-
- *} INSERT
二、存数据的透明表:


三、处理程序:
-
-
-
-
-
- *&---------------------------------------------------------------------*
- *& Report ZPPR0016B
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- REPORT ZPPR0016B.
-
-
-
- TABLES:vbap,stko,ZCU50_LIST.
-
-
- DATA ls_write TYPE zspp_bominfo.
- DATA ls_head TYPE zspp_bominfo.
- DATA lt_head TYPE TABLE OF zspp_bominfo.
- DATA lv_rfcdest TYPE rfcdest.
- DATA lt_esb_com TYPE zsca_esb_com_tab.
- DATA lt_bomlist TYPE TABLE OF zspp_bomlist.
-
-
- DATA gt_stpo TYPE TABLE OF stpox.
- DATA:gs_layout TYPE lvc_s_layo, "#EC NEEDED
- gs_glay TYPE lvc_s_glay, "#EC NEEDED
- gt_fieldcat TYPE lvc_t_fcat. "#EC NEEDED
-
-
-
- TYPES: BEGIN OF ty_table,
- matnr(40) TYPE C,
- END OF ty_table.
-
- DATA gt_SAP TYPE TABLE OF ty_table.
- DATA gt_APS TYPE TABLE OF ty_table.
-
- DATA gs_gsgs TYPE ty_table.
-
-
-
-
- SELECTION-SCREEN BEGIN OF BLOCK a0 WITH FRAME TITLE TEXT-001.
-
-
- PARAMETERS:p_datuv TYPE stko-datuv DEFAULT sy-datum. "有效起始日期
-
- SELECTION-SCREEN END OF BLOCK a0.
-
-
- START-OF-SELECTION.
-
-
- PERFORM frm_SAP_data.
-
- PERFORM frm_APS_data.
-
- PERFORM frm_xxx.
-
-
-
- FORM frm_SAP_data.
-
- DATA GT_ZCU50_LIST TYPE TABLE OF ZCU50_LIST.
-
- SELECT * FROM ZCU50_LIST INTO TABLE GT_ZCU50_LIST.
-
- LOOP AT GT_ZCU50_LIST ASSIGNING FIELD-SYMBOL(
). -
- gs_gsgs-MATNR =
-TEXT+8(40) . -
- IF gs_gsgs-MATNR EQ 'F2'. CONTINUE. ENDIF.
- IF gs_gsgs-MATNR EQ 'F2PD'. CONTINUE. ENDIF.
- IF gs_gsgs-MATNR EQ 'F2BD'. CONTINUE. ENDIF.
-
- APPEND gs_gsgs to gt_SAP.
- CLEAR gs_gsgs.
-
- ENDLOOP.
-
- ENDFORM.
-
-
-
- FORM frm_APS_data.
-
- DATA GT_VCOND_SD TYPE TABLE OF ZVCOND_SD.
-
- SELECT * FROM ZVCOND_SD INTO TABLE GT_VCOND_SD.
-
- LOOP AT GT_VCOND_SD INTO DATA(line).
-
- "------PM--------------
- if cl_abap_list_utilities=>dynamic_output_length( line-VARCOND ) > 10. ls_head-ATWRT1 = line-VARCOND. ENDIF.
-
- "------CC--------------
- IF line-VARCOND+0(2) EQ 'CC' .
-
- ls_head-ATWRT2 = line-VARCOND.
-
- ENDIF.
-
- "------PA--------------
- IF line-VARCOND+0(2) EQ 'PA' .
-
- ls_head-ATWRT3 = line-VARCOND.
-
- ENDIF.
-
- "------P0--------------
- IF line-VARCOND+0(2) EQ 'P0' .
-
-
- IF ls_head-ATWRT4 is INITIAL.
-
- ls_head-ATWRT4 = line-VARCOND.
- ELSE.
- ls_head-ATWRT4 = ls_head-ATWRT4 && ';' && line-VARCOND.
-
- ENDIF.
- ENDIF.
- "------1003--------------
- IF line-VARCOND+0(3) EQ '100' .
-
- ls_head-werks = line-VARCOND.
-
- ENDIF.
-
- "------F2--------------
- IF line-VARCOND+0(2) EQ 'F2' .
-
- ls_head-matnr = line-VARCOND.
-
- ENDIF.
-
- "------20231013--------------
- IF line-VARCOND+0(3) EQ '202' .
-
- ls_head-badat = line-VARCOND.
-
- ENDIF.
-
- ENDLOOP.
-
-
-
-
- IF ls_head-matnr EQ 'F2'. ls_head-z_st = 'V'. ENDIF.
- IF ls_head-matnr EQ 'F2PD'. ls_head-z_st = 'P'. ENDIF.
- IF ls_head-matnr EQ 'F2BD'. ls_head-z_st = 'A'. ENDIF.
-
-
- APPEND ls_head TO lt_head .
-
- ls_write = ls_head.
- CLEAR ls_head.
-
- lv_rfcdest = zcl_ca_tools=>get_rfcdest( ).
-
- CALL FUNCTION 'ZSAP_PP_APS_BOMINFO_OUT' DESTINATION lv_rfcdest
- TABLES
- et_po_header = lt_head
- tt_esb_com = lt_esb_com
- tt_bomlist = lt_bomlist.
-
-
-
- ENDFORM.
-
-
-
-
-
-
-
-
- FORM frm_xxx.
-
-
-
- "----###############-----------
-
- WRITE:/ p_datuv && ':' && ls_head-ATWRT1 && ',' && ls_head-ATWRT2 && ',' && ls_head-ATWRT3 && ',' && ls_head-ATWRT4.
-
-
- DATA lv_l1 TYPE i VALUE 0.
- DATA lv_l2 TYPE i VALUE 0.
-
- lv_l1 = lines( lt_bomlist ).
- lv_l2 = lines( gt_SAP ).
-
- WRITE:/ 'APS: ' && lv_l1.
- WRITE:/ 'SAP: ' && lv_l2 .
-
-
-
- "----####?##?#-----------
-
-
-
- LOOP AT lt_bomlist INTO DATA(gs_2).
-
- gs_gsgs-MATNR = gs_2-MATNR.
-
- APPEND gs_gsgs to gt_APS.
- CLEAR gs_gsgs.
-
- ENDLOOP.
-
-
-
- SORT gt_SAP.
- SORT gt_APS.
-
-
- IF gt_SAP[] = gt_APS[].
- WRITE:/ 'every item same'.
- ELSE.
- WRITE:/ 'some item different'.
- ENDIF.
-
-
-
-
- CLEAR:gt_SAP[],gt_APS[],lt_bomlist[],gt_stpo[].
-
-
-
-
-
-
- ENDFORM.
-
-
-
-
-
-
-
- FORM frm_ALV.
-
-
-
-
-
- "#####?##
- TYPES: BEGIN OF ty_flight,
- TXT1(40) TYPE C,
- id TYPE i ,
- TXT2(40) TYPE C,
- TXT3(40) TYPE C,
- END OF ty_flight.
-
- "#####?#
- DATA gt_20 TYPE TABLE OF ty_flight.
- DATA gs_20 TYPE ty_flight.
-
-
- *
- *
- * LOOP AT gt_SAP INTO DATA(gs_s).
- *
- *
- * gs_20-TXT2 = gs_s-MATNR.
- * APPEND gs_20 to gt_20.
- * CLEAR gs_20.
- *
- *
- * ENDLOOP.
- *
- *
- *
- * LOOP AT gt_APS INTO DATA(gs_s).
- *
- *
- * gs_20-TXT3 = gs_s-MATNR.
- * APPEND gs_20 to gt_20.
- * CLEAR gs_20.
- *
- * ENDLOOP.
- *
-
-
-
-
-
-
- DATA: WS_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
- WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
- WS_LAYOUT TYPE SLIS_LAYOUT_ALV,
- WS_SORTFIELDS_TAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
- WS_EVENTS TYPE SLIS_T_EVENT.
- DATA: NN TYPE I VALUE 0.
- DATA: TITLE TYPE LVC_TITLE.
- DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
- *
- DEFINE HOUT.
- NN = NN + 1.
- WS_FIELDCAT-COL_POS = NN.
- WS_FIELDCAT-TABNAME = 'GT_20'.
- WS_FIELDCAT-KEY = &1.
- WS_FIELDCAT-FIELDNAME = &2.
- WS_FIELDCAT-SELTEXT_M = &3.
- WS_FIELDCAT-CFIELDNAME = &4.
- WS_FIELDCAT-DATATYPE = &5.
- WS_FIELDCAT-REF_TABNAME = &6.
- WS_FIELDCAT-REF_FIELDNAME = &7.
- WS_FIELDCAT-DO_SUM = &8.
- WS_FIELDCAT-HOTSPOT = &9.
- APPEND WS_FIELDCAT.
- CLEAR WS_FIELDCAT.
- END-OF-DEFINITION.
-
- HOUT:
-
-
- '' 'TXT1' '## ## ## ##' '' '' '' '' '' '',
- '' 'TXT2' ' SAP ' '' '' '' '' '' '',
- '' 'TXT3' ' APS ' '' '' '' '' '' ''.
-
-
-
- WS_LAYOUT-ZEBRA = 'X'.
- WS_LAYOUT-GET_SELINFOS = 'X'.
- WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
- WS_LAYOUT-DETAIL_POPUP = 'X'.
-
-
-
- CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
- EXPORTING
- I_CALLBACK_PROGRAM = SY-REPID
- IS_LAYOUT = WS_LAYOUT
- IT_FIELDCAT = WS_FIELDCAT[]
- IT_SPECIAL_GROUPS = WS_FIELDGROUPS_TAB[]
- IT_SORT = WS_SORTFIELDS_TAB[]
- IT_EVENTS = WS_EVENTS[]
- I_GRID_TITLE = TITLE
- I_DEFAULT = 'X'
- I_SAVE = 'A'
- TABLES
- T_OUTTAB = GT_20[]
- EXCEPTIONS
- PROGRAM_ERROR = 1
- OTHERS = 2.
-
-
-
-
-
- ENDFORM.